<!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>[204929] trunk/Tools</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/204929">204929</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2016-08-24 13:53:22 -0700 (Wed, 24 Aug 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS DRT] Make iOS DRT use the same window size as WebKitTestRunner for flexible viewport tests
https://bugs.webkit.org/show_bug.cgi?id=161124

Reviewed by Daniel Bates.

Use the main UIScreen's bounds for the size of the window in flexible viewport mode,
and remove the 'phoneBrowserAddressBarOffset' hack, so that it matches WTR.

Remove some unnecessary zero initializations of static variables.

Change _setVisibleSize to use the window size, which should not be a behavior change
because this it just used for text autosizing, which is disabled by default,
and only the width is consulted.

* DumpRenderTree/mac/DumpRenderTree.mm:
(adjustWebDocumentForFlexibleViewport):
(adjustWebDocumentForStandardViewport):
(createWebViewAndOffscreenWindow):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreemacDumpRenderTreemm">trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (204928 => 204929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-08-24 20:32:41 UTC (rev 204928)
+++ trunk/Tools/ChangeLog        2016-08-24 20:53:22 UTC (rev 204929)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2016-08-24  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        [iOS DRT] Make iOS DRT use the same window size as WebKitTestRunner for flexible viewport tests
+        https://bugs.webkit.org/show_bug.cgi?id=161124
+
+        Reviewed by Daniel Bates.
+        
+        Use the main UIScreen's bounds for the size of the window in flexible viewport mode,
+        and remove the 'phoneBrowserAddressBarOffset' hack, so that it matches WTR.
+        
+        Remove some unnecessary zero initializations of static variables.
+        
+        Change _setVisibleSize to use the window size, which should not be a behavior change
+        because this it just used for text autosizing, which is disabled by default,
+        and only the width is consulted.
+
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (adjustWebDocumentForFlexibleViewport):
+        (adjustWebDocumentForStandardViewport):
+        (createWebViewAndOffscreenWindow):
+
</ins><span class="cx"> 2016-08-24  Jonathan Bedard  &lt;jbedard@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WebKit2 needs layoutTestController.setDeferMainResourceDataLoad
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreemacDumpRenderTreemm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (204928 => 204929)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm        2016-08-24 20:32:41 UTC (rev 204928)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm        2016-08-24 20:53:22 UTC (rev 204929)
</span><span class="lines">@@ -177,19 +177,19 @@
</span><span class="cx"> 
</span><span class="cx"> volatile bool done;
</span><span class="cx"> 
</span><del>-NavigationController* gNavigationController = 0;
</del><ins>+NavigationController* gNavigationController = nullptr;
</ins><span class="cx"> RefPtr&lt;TestRunner&gt; gTestRunner;
</span><span class="cx"> 
</span><del>-WebFrame *mainFrame = 0;
</del><ins>+WebFrame *mainFrame = nullptr;
</ins><span class="cx"> // This is the topmost frame that is loading, during a given load, or nil when no load is 
</span><span class="cx"> // in progress.  Usually this is the same as the main frame, but not always.  In the case
</span><span class="cx"> // where a frameset is loaded, and then new content is loaded into one of the child frames,
</span><span class="cx"> // that child frame is the &quot;topmost frame that is loading&quot;.
</span><del>-WebFrame *topLoadingFrame = nil;     // !nil iff a load is in progress
</del><ins>+WebFrame *topLoadingFrame = nullptr; // !nil iff a load is in progress
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-CFMutableSetRef disallowedURLs = 0;
-static CFRunLoopTimerRef waitToDumpWatchdog = 0;
</del><ins>+CFMutableSetRef disallowedURLs= nullptr;
+static CFRunLoopTimerRef waitToDumpWatchdog;
</ins><span class="cx"> 
</span><span class="cx"> // Delegates
</span><span class="cx"> static FrameLoadDelegate *frameLoadDelegate;
</span><span class="lines">@@ -197,14 +197,14 @@
</span><span class="cx"> static EditingDelegate *editingDelegate;
</span><span class="cx"> static ResourceLoadDelegate *resourceLoadDelegate;
</span><span class="cx"> static HistoryDelegate *historyDelegate;
</span><del>-PolicyDelegate *policyDelegate;
-DefaultPolicyDelegate *defaultPolicyDelegate;
</del><ins>+PolicyDelegate *policyDelegate = nullptr;
+DefaultPolicyDelegate *defaultPolicyDelegate = nullptr;
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> static ScrollViewResizerDelegate *scrollViewResizerDelegate;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-static int dumpPixelsForAllTests = NO;
-static bool dumpPixelsForCurrentTest = false;
</del><ins>+static int dumpPixelsForAllTests;
+static bool dumpPixelsForCurrentTest;
</ins><span class="cx"> static int threaded;
</span><span class="cx"> static int dumpTree = YES;
</span><span class="cx"> static int useTimeoutWatchdog = YES;
</span><span class="lines">@@ -211,19 +211,15 @@
</span><span class="cx"> static int forceComplexText;
</span><span class="cx"> static int useAcceleratedDrawing;
</span><span class="cx"> static int gcBetweenTests;
</span><del>-static int showWebView = NO;
-static int printTestCount = NO;
</del><ins>+static int showWebView;
+static int printTestCount;
</ins><span class="cx"> static BOOL printSeparators;
</span><span class="cx"> static RetainPtr&lt;CFStringRef&gt; persistentUserStyleSheetLocation;
</span><span class="cx"> static std::set&lt;std::string&gt; allowedHosts;
</span><span class="cx"> 
</span><del>-static WebHistoryItem *prevTestBFItem = nil;  // current b/f item at the end of the previous test
</del><ins>+static WebHistoryItem *prevTestBFItem; // current b/f item at the end of the previous test
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-const unsigned phoneViewHeight = 480;
-const unsigned phoneViewWidth = 320;
-const unsigned phoneBrowserScrollViewHeight = 416;
-const unsigned phoneBrowserAddressBarOffset = 60;
</del><span class="cx"> const CGRect layoutTestViewportRect = { {0, 0}, {static_cast&lt;CGFloat&gt;(TestRunner::viewWidth), static_cast&lt;CGFloat&gt;(TestRunner::viewHeight)} };
</span><span class="cx"> UIWebBrowserView *gWebBrowserView = nil;
</span><span class="cx"> UIWebScrollView *gWebScrollView = nil;
</span><span class="lines">@@ -646,7 +642,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-void adjustWebDocumentForFlexibleViewport(UIWebBrowserView *webBrowserView, UIWebScrollView *scrollView)
</del><ins>+static void adjustWebDocumentForFlexibleViewport(UIWebBrowserView *webBrowserView, UIWebScrollView *scrollView)
</ins><span class="cx"> {
</span><span class="cx">     // These values match MobileSafari's, see -[TabDocument _createDocumentView].
</span><span class="cx">     [webBrowserView setMinimumScale:0.25f forDocumentTypes:UIEveryDocumentMask];
</span><span class="lines">@@ -659,18 +655,21 @@
</span><span class="cx">     [(DumpRenderTreeBrowserView *)webBrowserView setScrollingUsesUIWebScrollView:YES];
</span><span class="cx">     [webBrowserView setDelegate:scrollViewResizerDelegate];
</span><span class="cx"> 
</span><del>-    CGRect viewportRect = CGRectMake(0, 0, phoneViewWidth, phoneBrowserScrollViewHeight);
</del><ins>+    CGRect screenBounds = [UIScreen mainScreen].bounds;
+    CGRect viewportRect = CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height);
+
</ins><span class="cx">     [scrollView setBounds:viewportRect];
</span><span class="cx">     [scrollView setFrame:viewportRect];
</span><span class="cx"> 
</span><span class="cx">     [webBrowserView setMinimumSize:viewportRect.size];
</span><span class="cx">     [webBrowserView setAutoresizes:YES];
</span><del>-    CGRect browserViewFrame = [webBrowserView frame];
-    browserViewFrame.origin = CGPointMake(0, phoneBrowserAddressBarOffset);
-    [webBrowserView setFrame:browserViewFrame];
</del><ins>+    [webBrowserView setFrame:screenBounds];
+
+    // This just affects text autosizing.
+    [mainFrame _setVisibleSize:CGSizeMake(screenBounds.size.width, screenBounds.size.height)];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void adjustWebDocumentForStandardViewport(UIWebBrowserView *webBrowserView, UIWebScrollView *scrollView)
</del><ins>+static void adjustWebDocumentForStandardViewport(UIWebBrowserView *webBrowserView, UIWebScrollView *scrollView)
</ins><span class="cx"> {
</span><span class="cx">     [webBrowserView setMinimumScale:1.0f forDocumentTypes:UIEveryDocumentMask];
</span><span class="cx">     [webBrowserView setMaximumScale:5.0f forDocumentTypes:UIEveryDocumentMask];
</span><span class="lines">@@ -684,9 +683,11 @@
</span><span class="cx"> 
</span><span class="cx">     [webBrowserView setMinimumSize:layoutTestViewportRect.size];
</span><span class="cx">     [webBrowserView setAutoresizes:NO];
</span><del>-    CGRect browserViewFrame = [webBrowserView frame];
-    browserViewFrame.origin = CGPointZero;
-    [webBrowserView setFrame:browserViewFrame];
</del><ins>+    [webBrowserView setFrame:layoutTestViewportRect];
+
+    // This just affects text autosizing.
+    [mainFrame _setVisibleSize:CGSizeMake(layoutTestViewportRect.size.width, layoutTestViewportRect.size.height)];
+
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -843,7 +844,6 @@
</span><span class="cx">     NSBitmapImageRep *imageRep = [webView bitmapImageRepForCachingDisplayInRect:[webView bounds]];
</span><span class="cx">     [webView cacheDisplayInRect:[webView bounds] toBitmapImageRep:imageRep];
</span><span class="cx"> #else
</span><del>-    [[webView mainFrame] _setVisibleSize:CGSizeMake(phoneViewWidth, phoneViewHeight)];
</del><span class="cx">     [[webView preferences] _setTelephoneNumberParsingEnabled:NO];
</span><span class="cx"> 
</span><span class="cx">     // Initialize the global UIViews, and set the key UIWindow to be painted.
</span></span></pre>
</div>
</div>

</body>
</html>