<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[209975] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/209975">209975</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2016-12-18 13:09:34 -0800 (Sun, 18 Dec 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Expose a way for MiniBrowser to simulate header and footer banners
https://bugs.webkit.org/show_bug.cgi?id=166005
Reviewed by Wenson Hsieh.
Source/WebKit2:
Expose testing SPI that allows a client to simulate the presence of header
and footer banners. These are simply plumbed through to set FrameView's
m_headerHeight and m_footerHeight.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setHeaderBannerHeightForTesting:]):
(-[WKWebView _setFooterBannerHeightForTesting:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setHeaderBannerHeightForTesting):
(WebKit::WebPageProxy::setFooterBannerHeightForTesting):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setHeaderBannerHeightForTesting):
(WebKit::WebPage::setFooterBannerHeightForTesting):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
Tools:
Add a MiniBrowser menu item and setting to toggle adding space for header and footer
banners. This only works in WebKit2.
We need to reset these on each navigation, since newly created FrameViews
don't re-fetch the header and footer height stored on Page.
Also fix the signature of webView:didFinishNavigation: to follow API changes,
as well as fixing webViewWebContentProcessDidTerminate:
* MiniBrowser/mac/SettingsController.h:
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleReserveSpaceForBanners:]):
(-[SettingsController isSpaceReservedForBanners]):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController didChangeSettings]):
(-[WK2BrowserWindowController webView:didFinishNavigation:]):
(-[WK2BrowserWindowController webViewWebContentProcessDidTerminate:]):
(-[WK2BrowserWindowController webView:didFinishLoadingNavigation:]): Deleted.
(-[WK2BrowserWindowController _webViewWebProcessDidCrash:]): Deleted.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewPrivateh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsMiniBrowsermacSettingsControllerh">trunk/Tools/MiniBrowser/mac/SettingsController.h</a></li>
<li><a href="#trunkToolsMiniBrowsermacSettingsControllerm">trunk/Tools/MiniBrowser/mac/SettingsController.m</a></li>
<li><a href="#trunkToolsMiniBrowsermacWK2BrowserWindowControllerm">trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/ChangeLog        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2016-12-18 Simon Fraser <simon.fraser@apple.com>
+
+ Expose a way for MiniBrowser to simulate header and footer banners
+ https://bugs.webkit.org/show_bug.cgi?id=166005
+
+ Reviewed by Wenson Hsieh.
+
+ Expose testing SPI that allows a client to simulate the presence of header
+ and footer banners. These are simply plumbed through to set FrameView's
+ m_headerHeight and m_footerHeight.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _setHeaderBannerHeightForTesting:]):
+ (-[WKWebView _setFooterBannerHeightForTesting:]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::setHeaderBannerHeightForTesting):
+ (WebKit::WebPageProxy::setFooterBannerHeightForTesting):
+ * UIProcess/WebPageProxy.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::setHeaderBannerHeightForTesting):
+ (WebKit::WebPage::setFooterBannerHeightForTesting):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
</ins><span class="cx"> 2016-12-16 Dave Hyatt <hyatt@apple.com>
</span><span class="cx">
</span><span class="cx"> [CSS Values] Make separate wrapper classes for the deprecated CSS Values OM
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -4863,6 +4863,17 @@
</span><span class="cx"> {
</span><span class="cx"> [self insertText:string replacementRange:replacementRange];
</span><span class="cx"> }
</span><ins>+
+- (void)_setHeaderBannerHeight:(int)height
+{
+ _page->setHeaderBannerHeightForTesting(height);
+}
+
+- (void)_setFooterBannerHeight:(int)height
+{
+ _page->setFooterBannerHeightForTesting(height);
+}
+
</ins><span class="cx"> #endif // PLATFORM(MAC)
</span><span class="cx">
</span><span class="cx"> - (void)_setPageScale:(CGFloat)scale withOrigin:(CGPoint)origin
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -312,6 +312,9 @@
</span><span class="cx"> - (void)_handleActiveNowPlayingSessionInfoResponse:(BOOL)hasActiveSession title:(NSString *)title duration:(double)duration elapsedTime:(double)elapsedTime WK_API_AVAILABLE(macosx(WK_MAC_TBA));
</span><span class="cx">
</span><span class="cx"> - (void)_insertText:(id)string replacementRange:(NSRange)replacementRange WK_API_AVAILABLE(macosx(WK_MAC_TBA));
</span><ins>+
+- (void)_setHeaderBannerHeight:(int)height WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+- (void)_setFooterBannerHeight:(int)height WK_API_AVAILABLE(macosx(WK_MAC_TBA));
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> - (void)_setPageScale:(CGFloat)scale withOrigin:(CGPoint)origin WK_API_AVAILABLE(ios(WK_IOS_TBA));
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -6574,6 +6574,17 @@
</span><span class="cx"> {
</span><span class="cx"> m_pageClient.didHandleAcceptedCandidate();
</span><span class="cx"> }
</span><ins>+
+void WebPageProxy::setHeaderBannerHeightForTesting(int height)
+{
+ m_process->send(Messages::WebPage::SetHeaderBannerHeightForTesting(height), m_pageID);
+}
+
+void WebPageProxy::setFooterBannerHeightForTesting(int height)
+{
+ m_process->send(Messages::WebPage::SetFooterBannerHeightForTesting(height), m_pageID);
+}
+
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::imageOrMediaDocumentSizeChanged(const WebCore::IntSize& newSize)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -1088,6 +1088,9 @@
</span><span class="cx">
</span><span class="cx"> void handleAcceptedCandidate(WebCore::TextCheckingResult);
</span><span class="cx"> void didHandleAcceptedCandidate();
</span><ins>+
+ void setHeaderBannerHeightForTesting(int);
+ void setFooterBannerHeightForTesting(int);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if PLATFORM(EFL) && HAVE(ACCESSIBILITY) && defined(HAVE_ECORE_X)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -1833,6 +1833,21 @@
</span><span class="cx"> if (m_footerBanner)
</span><span class="cx"> m_footerBanner->showIfHidden();
</span><span class="cx"> }
</span><ins>+
+void WebPage::setHeaderBannerHeightForTesting(int height)
+{
+#if ENABLE(RUBBER_BANDING)
+ corePage()->addHeaderWithHeight(height);
+#endif
+}
+
+void WebPage::setFooterBannerHeightForTesting(int height)
+{
+#if ENABLE(RUBBER_BANDING)
+ corePage()->addFooterWithHeight(height);
+#endif
+}
+
</ins><span class="cx"> #endif // !PLATFORM(IOS)
</span><span class="cx">
</span><span class="cx"> void WebPage::takeSnapshot(IntRect snapshotRect, IntSize bitmapSize, uint32_t options, uint64_t callbackID)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -475,6 +475,8 @@
</span><span class="cx"> void hidePageBanners();
</span><span class="cx"> void showPageBanners();
</span><span class="cx">
</span><ins>+ void setHeaderBannerHeightForTesting(int);
+ void setFooterBannerHeightForTesting(int);
</ins><span class="cx"> #endif // !PLATFORM(IOS)
</span><span class="cx">
</span><span class="cx"> WebCore::IntPoint screenToRootView(const WebCore::IntPoint&);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -416,11 +416,16 @@
</span><span class="cx"> ImmediateActionDidUpdate()
</span><span class="cx"> ImmediateActionDidCancel()
</span><span class="cx"> ImmediateActionDidComplete()
</span><ins>+
</ins><span class="cx"> DataDetectorsDidPresentUI(WebCore::PageOverlay::PageOverlayID pageOverlay)
</span><span class="cx"> DataDetectorsDidChangeUI(WebCore::PageOverlay::PageOverlayID pageOverlay)
</span><span class="cx"> DataDetectorsDidHideUI(WebCore::PageOverlay::PageOverlayID pageOverlay)
</span><ins>+
</ins><span class="cx"> HandleAcceptedCandidate(struct WebCore::TextCheckingResult acceptedCandidate)
</span><span class="cx"> RequestActiveNowPlayingSessionInfo()
</span><ins>+
+ SetHeaderBannerHeightForTesting(int height);
+ SetFooterBannerHeightForTesting(int height);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> SetShouldDispatchFakeMouseMoveEvents(bool shouldDispatchFakeMouseMoveEvents)
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Tools/ChangeLog        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2016-12-18 Simon Fraser <simon.fraser@apple.com>
+
+ Expose a way for MiniBrowser to simulate header and footer banners
+ https://bugs.webkit.org/show_bug.cgi?id=166005
+
+ Reviewed by Wenson Hsieh.
+
+ Add a MiniBrowser menu item and setting to toggle adding space for header and footer
+ banners. This only works in WebKit2.
+
+ We need to reset these on each navigation, since newly created FrameViews
+ don't re-fetch the header and footer height stored on Page.
+
+ Also fix the signature of webView:didFinishNavigation: to follow API changes,
+ as well as fixing webViewWebContentProcessDidTerminate:
+
+ * MiniBrowser/mac/SettingsController.h:
+ * MiniBrowser/mac/SettingsController.m:
+ (-[SettingsController _populateMenu]):
+ (-[SettingsController validateMenuItem:]):
+ (-[SettingsController toggleReserveSpaceForBanners:]):
+ (-[SettingsController isSpaceReservedForBanners]):
+ * MiniBrowser/mac/WK2BrowserWindowController.m:
+ (-[WK2BrowserWindowController didChangeSettings]):
+ (-[WK2BrowserWindowController webView:didFinishNavigation:]):
+ (-[WK2BrowserWindowController webViewWebContentProcessDidTerminate:]):
+ (-[WK2BrowserWindowController webView:didFinishLoadingNavigation:]): Deleted.
+ (-[WK2BrowserWindowController _webViewWebProcessDidCrash:]): Deleted.
+
</ins><span class="cx"> 2016-12-17 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix iOS test results after r209967.
</span></span></pre></div>
<a id="trunkToolsMiniBrowsermacSettingsControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/MiniBrowser/mac/SettingsController.h (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/MiniBrowser/mac/SettingsController.h        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Tools/MiniBrowser/mac/SettingsController.h        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> @property (nonatomic, readonly) BOOL simpleLineLayoutDebugBordersEnabled;
</span><span class="cx"> @property (nonatomic, readonly) BOOL incrementalRenderingSuppressed;
</span><span class="cx"> @property (nonatomic, readonly) BOOL tiledScrollingIndicatorVisible;
</span><ins>+@property (nonatomic, readonly, getter=isSpaceReservedForBanners) BOOL spaceReservedForBanners;
</ins><span class="cx"> @property (nonatomic, readonly) BOOL resourceUsageOverlayVisible;
</span><span class="cx"> @property (nonatomic, readonly) BOOL nonFastScrollableRegionOverlayVisible;
</span><span class="cx"> @property (nonatomic, readonly) BOOL wheelEventHandlerRegionOverlayVisible;
</span></span></pre></div>
<a id="trunkToolsMiniBrowsermacSettingsControllerm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/MiniBrowser/mac/SettingsController.m (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/MiniBrowser/mac/SettingsController.m        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Tools/MiniBrowser/mac/SettingsController.m        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -40,6 +40,8 @@
</span><span class="cx"> static NSString * const LayerBordersVisiblePreferenceKey = @"LayerBordersVisible";
</span><span class="cx"> static NSString * const SimpleLineLayoutDebugBordersEnabledPreferenceKey = @"SimpleLineLayoutDebugBordersEnabled";
</span><span class="cx"> static NSString * const TiledScrollingIndicatorVisiblePreferenceKey = @"TiledScrollingIndicatorVisible";
</span><ins>+static NSString * const ReserveSpaceForBannersPreferenceKey = @"ReserveSpaceForBanners";
+
</ins><span class="cx"> static NSString * const ResourceUsageOverlayVisiblePreferenceKey = @"ResourceUsageOverlayVisible";
</span><span class="cx"> static NSString * const LoadsAllSiteIconsKey = @"LoadsAllSiteIcons";
</span><span class="cx"> static NSString * const UsesGameControllerFrameworkKey = @"UsesGameControllerFramework";
</span><span class="lines">@@ -135,6 +137,7 @@
</span><span class="cx">
</span><span class="cx"> [self _addHeaderWithTitle:@"WebKit2-only Settings"];
</span><span class="cx">
</span><ins>+ [self _addItemWithTitle:@"Reserve Space For Banners" action:@selector(toggleReserveSpaceForBanners:) indented:YES];
</ins><span class="cx"> [self _addItemWithTitle:@"Show Tiled Scrolling Indicator" action:@selector(toggleShowTiledScrollingIndicator:) indented:YES];
</span><span class="cx"> [self _addItemWithTitle:@"Use UI-Side Compositing" action:@selector(toggleUseUISideCompositing:) indented:YES];
</span><span class="cx"> [self _addItemWithTitle:@"Disable Per-Window Web Processes" action:@selector(togglePerWindowWebProcessesDisabled:) indented:YES];
</span><span class="lines">@@ -213,6 +216,8 @@
</span><span class="cx"> [menuItem setState:[self animatedImageAsyncDecodingEnabled] ? NSOnState : NSOffState];
</span><span class="cx"> else if (action == @selector(toggleVisualViewportEnabled:))
</span><span class="cx"> [menuItem setState:[self visualViewportEnabled] ? NSOnState : NSOffState];
</span><ins>+ else if (action == @selector(toggleReserveSpaceForBanners:))
+ [menuItem setState:[self isSpaceReservedForBanners] ? NSOnState : NSOffState];
</ins><span class="cx"> else if (action == @selector(toggleShowTiledScrollingIndicator:))
</span><span class="cx"> [menuItem setState:[self tiledScrollingIndicatorVisible] ? NSOnState : NSOffState];
</span><span class="cx"> else if (action == @selector(toggleShowResourceUsageOverlay:))
</span><span class="lines">@@ -360,6 +365,11 @@
</span><span class="cx"> return [[NSUserDefaults standardUserDefaults] boolForKey:DisplayListDrawingEnabledPreferenceKey];
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+- (void)toggleReserveSpaceForBanners:(id)sender
+{
+ [self _toggleBooleanDefault:ReserveSpaceForBannersPreferenceKey];
+}
+
</ins><span class="cx"> - (void)toggleShowTiledScrollingIndicator:(id)sender
</span><span class="cx"> {
</span><span class="cx"> [self _toggleBooleanDefault:TiledScrollingIndicatorVisiblePreferenceKey];
</span><span class="lines">@@ -400,6 +410,11 @@
</span><span class="cx"> [self _toggleBooleanDefault:NetworkCacheSpeculativeRevalidationDisabledKey];
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+- (BOOL)isSpaceReservedForBanners
+{
+ return [[NSUserDefaults standardUserDefaults] boolForKey:ReserveSpaceForBannersPreferenceKey];
+}
+
</ins><span class="cx"> - (BOOL)tiledScrollingIndicatorVisible
</span><span class="cx"> {
</span><span class="cx"> return [[NSUserDefaults standardUserDefaults] boolForKey:TiledScrollingIndicatorVisiblePreferenceKey];
</span></span></pre></div>
<a id="trunkToolsMiniBrowsermacWK2BrowserWindowControllerm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m (209974 => 209975)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m        2016-12-18 19:04:20 UTC (rev 209974)
+++ trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m        2016-12-18 21:09:34 UTC (rev 209975)
</span><span class="lines">@@ -43,6 +43,8 @@
</span><span class="cx"> #import <WebKit/_WKUserInitiatedAction.h>
</span><span class="cx">
</span><span class="cx"> static void* keyValueObservingContext = &keyValueObservingContext;
</span><ins>+static const int testHeaderBannerHeight = 42;
+static const int testFooterBannerHeight = 58;
</ins><span class="cx">
</span><span class="cx"> @interface WK2BrowserWindowController () <WKNavigationDelegate, WKUIDelegate, _WKIconLoadingDelegate>
</span><span class="cx"> @end
</span><span class="lines">@@ -408,6 +410,9 @@
</span><span class="cx"> visibleOverlayRegions |= _WKWheelEventHandlerRegion;
</span><span class="cx">
</span><span class="cx"> preferences._visibleDebugOverlayRegions = visibleOverlayRegions;
</span><ins>+
+ [_webView _setHeaderBannerHeight:[settings isSpaceReservedForBanners] ? testHeaderBannerHeight : 0];
+ [_webView _setFooterBannerHeight:[settings isSpaceReservedForBanners] ? testFooterBannerHeight : 0];
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (void)updateTitle:(NSString *)title
</span><span class="lines">@@ -617,9 +622,15 @@
</span><span class="cx"> [self updateTitle:nil];
</span><span class="cx"> }
</span><span class="cx">
</span><del>-- (void)webView:(WKWebView *)webView didFinishLoadingNavigation:(WKNavigation *)navigation
</del><ins>+- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
</ins><span class="cx"> {
</span><del>- LOG(@"didFinishLoadingNavigation: %@", navigation);
</del><ins>+ LOG(@"didFinishNavigation: %@", navigation);
+
+ // Banner heights don't persist across page loads (oddly, since Page stores them), so reset on every page load.
+ if ([[SettingsController shared] isSpaceReservedForBanners]) {
+ [_webView _setHeaderBannerHeight:testHeaderBannerHeight];
+ [_webView _setFooterBannerHeight:testFooterBannerHeight];
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *__nullable credential))completionHandler
</span><span class="lines">@@ -633,7 +644,7 @@
</span><span class="cx"> LOG(@"didFailNavigation: %@, error %@", navigation, error);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-- (void)_webViewWebProcessDidCrash:(WKWebView *)webView
</del><ins>+- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView
</ins><span class="cx"> {
</span><span class="cx"> NSLog(@"WebContent process crashed; reloading");
</span><span class="cx"> [self reload:nil];
</span></span></pre>
</div>
</div>
</body>
</html>