<!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>[190335] 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/190335">190335</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2015-09-29 18:20:23 -0700 (Tue, 29 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebKitTestRunner fails to apply &quot;useFlexibleViewport&quot; when it's specified in a file comment
https://bugs.webkit.org/show_bug.cgi?id=149650

Reviewed by Tim Horton.

TestInvocation::invoke() consulted shouldMakeViewportFlexible(), but that only
looks at the file path, and not the custom options that come from file comments.

Fix by computing TestOptions before making the TestInvocation, and setting them
as const TestInvocation data. This meant changing various call sites to take
the std::string pathOrURL, rather than the TestInvocation itself.

Also initialize TestInvocation with a WKURLRef, rather than a std::string.

* WebKitTestRunner/CMakeLists.txt:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::testPath):
(WTR::createTestURL):
(WTR::updateTestOptionsFromTestHeader):
(WTR::TestController::testOptionsForTest):
(WTR::TestController::updateWebViewSizeForTest):
(WTR::TestController::updateWindowScaleForTest):
(WTR::TestController::runTest):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::TestInvocation):
(WTR::TestInvocation::invoke):
(WTR::createWKURL): Deleted.
(WTR::TestInvocation::shouldMakeViewportFlexible): Deleted.
(WTR::TestInvocation::shouldUseFixedLayout): Deleted.
* WebKitTestRunner/TestInvocation.h:
(WTR::TestInvocation::options):
* WebKitTestRunner/TestOptions.cpp: Copied from Tools/WebKitTestRunner/TestOptions.h.
(WTR::pathContains):
(WTR::shouldMakeViewportFlexible):
(WTR::shouldUseFixedLayout):
(WTR::isSVGTestPath):
(WTR::isHiDPITestPath):
(WTR::TestOptions::TestOptions):
* WebKitTestRunner/TestOptions.h:
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* WebKitTestRunner/efl/TestControllerEfl.cpp:
(WTR::pathContains):
(WTR::shouldUseFixedLayout):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest):
* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::updatePlatformSpecificTestOptionsForTest):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::updatePlatformSpecificTestOptionsForTest):
* WebKitTestRunner/mac/TestControllerMac.mm:
(WTR::TestController::updatePlatformSpecificTestOptionsForTest):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunnerCMakeListstxt">trunk/Tools/WebKitTestRunner/CMakeLists.txt</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllercpp">trunk/Tools/WebKitTestRunner/TestController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllerh">trunk/Tools/WebKitTestRunner/TestController.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestInvocationcpp">trunk/Tools/WebKitTestRunner/TestInvocation.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestInvocationh">trunk/Tools/WebKitTestRunner/TestInvocation.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestOptionsh">trunk/Tools/WebKitTestRunner/TestOptions.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerWebKitTestRunnerxcodeprojprojectpbxproj">trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkToolsWebKitTestRunnereflTestControllerEflcpp">trunk/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnergtkTestControllerGtkcpp">trunk/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosTestControllerIOSmm">trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunnermacTestControllerMacmm">trunk/Tools/WebKitTestRunner/mac/TestControllerMac.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkToolsWebKitTestRunnerTestOptionscpp">trunk/Tools/WebKitTestRunner/TestOptions.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/ChangeLog        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -1,3 +1,58 @@
</span><ins>+2015-09-29  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        WebKitTestRunner fails to apply &quot;useFlexibleViewport&quot; when it's specified in a file comment
+        https://bugs.webkit.org/show_bug.cgi?id=149650
+
+        Reviewed by Tim Horton.
+        
+        TestInvocation::invoke() consulted shouldMakeViewportFlexible(), but that only
+        looks at the file path, and not the custom options that come from file comments.
+        
+        Fix by computing TestOptions before making the TestInvocation, and setting them
+        as const TestInvocation data. This meant changing various call sites to take
+        the std::string pathOrURL, rather than the TestInvocation itself.
+        
+        Also initialize TestInvocation with a WKURLRef, rather than a std::string.
+
+        * WebKitTestRunner/CMakeLists.txt:
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::ensureViewSupportsOptionsForTest):
+        (WTR::testPath):
+        (WTR::createTestURL):
+        (WTR::updateTestOptionsFromTestHeader):
+        (WTR::TestController::testOptionsForTest):
+        (WTR::TestController::updateWebViewSizeForTest):
+        (WTR::TestController::updateWindowScaleForTest):
+        (WTR::TestController::runTest):
+        * WebKitTestRunner/TestController.h:
+        * WebKitTestRunner/TestInvocation.cpp:
+        (WTR::TestInvocation::TestInvocation):
+        (WTR::TestInvocation::invoke):
+        (WTR::createWKURL): Deleted.
+        (WTR::TestInvocation::shouldMakeViewportFlexible): Deleted.
+        (WTR::TestInvocation::shouldUseFixedLayout): Deleted.
+        * WebKitTestRunner/TestInvocation.h:
+        (WTR::TestInvocation::options):
+        * WebKitTestRunner/TestOptions.cpp: Copied from Tools/WebKitTestRunner/TestOptions.h.
+        (WTR::pathContains):
+        (WTR::shouldMakeViewportFlexible):
+        (WTR::shouldUseFixedLayout):
+        (WTR::isSVGTestPath):
+        (WTR::isHiDPITestPath):
+        (WTR::TestOptions::TestOptions):
+        * WebKitTestRunner/TestOptions.h:
+        * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
+        * WebKitTestRunner/efl/TestControllerEfl.cpp:
+        (WTR::pathContains):
+        (WTR::shouldUseFixedLayout):
+        (WTR::TestController::updatePlatformSpecificTestOptionsForTest):
+        * WebKitTestRunner/gtk/TestControllerGtk.cpp:
+        (WTR::TestController::updatePlatformSpecificTestOptionsForTest):
+        * WebKitTestRunner/ios/TestControllerIOS.mm:
+        (WTR::TestController::updatePlatformSpecificTestOptionsForTest):
+        * WebKitTestRunner/mac/TestControllerMac.mm:
+        (WTR::TestController::updatePlatformSpecificTestOptionsForTest):
+
</ins><span class="cx"> 2015-09-29  Aakash Jain  &lt;aakash_jain@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Flakiness dashboard should support OS X El Capitan
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/CMakeLists.txt (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/CMakeLists.txt        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/CMakeLists.txt        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -12,6 +12,7 @@
</span><span class="cx">     ${WEBKIT_TESTRUNNER_DIR}/PixelDumpSupport.cpp
</span><span class="cx">     ${WEBKIT_TESTRUNNER_DIR}/TestController.cpp
</span><span class="cx">     ${WEBKIT_TESTRUNNER_DIR}/TestInvocation.cpp
</span><ins>+    ${WEBKIT_TESTRUNNER_DIR}/TestOptions.cpp
</ins><span class="cx">     ${WEBKIT_TESTRUNNER_DIR}/WebNotificationProvider.cpp
</span><span class="cx">     ${WEBKIT_TESTRUNNER_DIR}/WorkQueueManager.cpp
</span><span class="cx">     ${WEBKIT_TESTRUNNER_UISCRIPTCONTEXT_DIR}/UIScriptContext.cpp
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.cpp        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -58,6 +58,7 @@
</span><span class="cx"> #include &lt;runtime/InitializeThreading.h&gt;
</span><span class="cx"> #include &lt;stdlib.h&gt;
</span><span class="cx"> #include &lt;string&gt;
</span><ins>+#include &lt;unistd.h&gt;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> #include &lt;wtf/TemporaryChange.h&gt;
</span><span class="lines">@@ -585,7 +586,7 @@
</span><span class="cx"> 
</span><span class="cx"> void TestController::ensureViewSupportsOptionsForTest(const TestInvocation&amp; test)
</span><span class="cx"> {
</span><del>-    auto options = testOptionsForTest(test);
</del><ins>+    auto options = test.options();
</ins><span class="cx"> 
</span><span class="cx">     if (m_mainWebView) {
</span><span class="cx">         if (m_mainWebView-&gt;viewSupportsOptions(options))
</span><span class="lines">@@ -807,7 +808,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static std::string testPath(const WKURLRef url)
</del><ins>+static std::string testPath(WKURLRef url)
</ins><span class="cx"> {
</span><span class="cx">     auto scheme = adoptWK(WKURLCopyScheme(url));
</span><span class="cx">     if (WKStringIsEqualToUTF8CStringIgnoringCase(scheme.get(), &quot;file&quot;)) {
</span><span class="lines">@@ -819,6 +820,39 @@
</span><span class="cx">     return std::string();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static WKURLRef createTestURL(const char* pathOrURL)
+{
+    if (strstr(pathOrURL, &quot;http://&quot;) || strstr(pathOrURL, &quot;https://&quot;) || strstr(pathOrURL, &quot;file://&quot;))
+        return WKURLCreateWithUTF8CString(pathOrURL);
+
+    // Creating from filesytem path.
+    size_t length = strlen(pathOrURL);
+    if (!length)
+        return 0;
+
+    const char separator = '/';
+    bool isAbsolutePath = pathOrURL[0] == separator;
+    const char* filePrefix = &quot;file://&quot;;
+    static const size_t prefixLength = strlen(filePrefix);
+
+    std::unique_ptr&lt;char[]&gt; buffer;
+    if (isAbsolutePath) {
+        buffer = std::make_unique&lt;char[]&gt;(prefixLength + length + 1);
+        strcpy(buffer.get(), filePrefix);
+        strcpy(buffer.get() + prefixLength, pathOrURL);
+    } else {
+        buffer = std::make_unique&lt;char[]&gt;(prefixLength + PATH_MAX + length + 2); // 1 for the separator
+        strcpy(buffer.get(), filePrefix);
+        if (!getcwd(buffer.get() + prefixLength, PATH_MAX))
+            return 0;
+        size_t numCharacters = strlen(buffer.get());
+        buffer[numCharacters] = separator;
+        strcpy(buffer.get() + numCharacters + 1, pathOrURL);
+    }
+
+    return WKURLCreateWithUTF8CString(buffer.get());
+}
+
</ins><span class="cx"> static bool parseBooleanTestHeaderValue(const std::string&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (value == &quot;true&quot;)
</span><span class="lines">@@ -830,9 +864,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void updateTestOptionsFromTestHeader(TestOptions&amp; testOptions, const TestInvocation&amp; test)
</del><ins>+static void updateTestOptionsFromTestHeader(TestOptions&amp; testOptions, const std::string&amp; pathOrURL)
</ins><span class="cx"> {
</span><del>-    std::string filename = testPath(test.url());
</del><ins>+    // Gross. Need to reduce conversions between all the string types and URLs.
+    WKRetainPtr&lt;WKURLRef&gt; wkURL(AdoptWK, createTestURL(pathOrURL.c_str()));
+    std::string filename = testPath(wkURL.get());
</ins><span class="cx">     if (filename.empty())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -874,29 +910,24 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TestOptions TestController::testOptionsForTest(const TestInvocation&amp; test) const
</del><ins>+TestOptions TestController::testOptionsForTest(const std::string&amp; pathOrURL) const
</ins><span class="cx"> {
</span><del>-    TestOptions options;
</del><ins>+    TestOptions options(pathOrURL);
</ins><span class="cx"> 
</span><span class="cx">     options.useRemoteLayerTree = m_shouldUseRemoteLayerTree;
</span><span class="cx">     options.shouldShowWebView = m_shouldShowWebView;
</span><del>-    options.useFixedLayout = test.shouldUseFixedLayout();
-    options.useFlexibleViewport = test.shouldMakeViewportFlexible();
</del><span class="cx"> 
</span><del>-    updatePlatformSpecificTestOptionsForTest(options, test);
</del><ins>+    updatePlatformSpecificTestOptionsForTest(options, pathOrURL);
+    updateTestOptionsFromTestHeader(options, pathOrURL);
</ins><span class="cx"> 
</span><del>-    updateTestOptionsFromTestHeader(options, test);
-
</del><span class="cx">     return options;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestController::updateWebViewSizeForTest(const TestInvocation&amp; test)
</span><span class="cx"> {
</span><del>-    bool isSVGW3CTest = test.urlContains(&quot;svg/W3C-SVG-1.1&quot;) || test.urlContains(&quot;svg\\W3C-SVG-1.1&quot;);
-
</del><span class="cx">     unsigned width = viewWidth;
</span><span class="cx">     unsigned height = viewHeight;
</span><del>-    if (isSVGW3CTest) {
</del><ins>+    if (test.options().isSVGTest) {
</ins><span class="cx">         width = w3cSVGViewWidth;
</span><span class="cx">         height = w3cSVGViewHeight;
</span><span class="cx">     }
</span><span class="lines">@@ -906,8 +937,7 @@
</span><span class="cx"> 
</span><span class="cx"> void TestController::updateWindowScaleForTest(PlatformWebView* view, const TestInvocation&amp; test)
</span><span class="cx"> {
</span><del>-    bool needsHighDPIWindow = test.urlContains(&quot;/hidpi-&quot;);
-    view-&gt;changeWindowScaleIfNeeded(needsHighDPIWindow ? 2 : 1);
</del><ins>+    view-&gt;changeWindowScaleIfNeeded(test.options().isHiDPITest ? 2 : 1);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestController::configureViewForTest(const TestInvocation&amp; test)
</span><span class="lines">@@ -1009,8 +1039,12 @@
</span><span class="cx">     TestCommand command = parseInputLine(std::string(inputLine));
</span><span class="cx"> 
</span><span class="cx">     m_state = RunningTest;
</span><ins>+    
+    TestOptions options = testOptionsForTest(command.pathOrURL);
</ins><span class="cx"> 
</span><del>-    m_currentInvocation = std::make_unique&lt;TestInvocation&gt;(command.pathOrURL);
</del><ins>+    WKRetainPtr&lt;WKURLRef&gt; wkURL(AdoptWK, createTestURL(command.pathOrURL.c_str()));
+    m_currentInvocation = std::make_unique&lt;TestInvocation&gt;(wkURL.get(), options);
+
</ins><span class="cx">     if (command.shouldDumpPixels || m_shouldDumpPixelsForAllTests)
</span><span class="cx">         m_currentInvocation-&gt;setIsPixelTest(command.expectedPixelHash);
</span><span class="cx">     if (command.timeout &gt; 0)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.h (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.h        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/TestController.h        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -158,8 +158,8 @@
</span><span class="cx">     void initializeTestPluginDirectory();
</span><span class="cx"> 
</span><span class="cx">     void ensureViewSupportsOptionsForTest(const TestInvocation&amp;);
</span><del>-    TestOptions testOptionsForTest(const TestInvocation&amp;) const;
-    void updatePlatformSpecificTestOptionsForTest(TestOptions&amp;, const TestInvocation&amp;) const;
</del><ins>+    TestOptions testOptionsForTest(const std::string&amp; pathOrURL) const;
+    void updatePlatformSpecificTestOptionsForTest(TestOptions&amp;, const std::string&amp; pathOrURL) const;
</ins><span class="cx"> 
</span><span class="cx">     void updateWebViewSizeForTest(const TestInvocation&amp;);
</span><span class="cx">     void updateWindowScaleForTest(PlatformWebView*, const TestInvocation&amp;);
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestInvocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestInvocation.cpp (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -51,57 +51,16 @@
</span><span class="cx"> #include &lt;WebKit/WKPagePrivateMac.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#include &lt;unistd.h&gt; // For getcwd.
-
</del><span class="cx"> using namespace JSC;
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> using namespace std;
</span><span class="cx"> 
</span><span class="cx"> namespace WTR {
</span><span class="cx"> 
</span><del>-static WKURLRef createWKURL(const char* pathOrURL)
</del><ins>+TestInvocation::TestInvocation(WKURLRef url, const TestOptions&amp; options)
+    : m_options(options)
+    , m_url(url)
</ins><span class="cx"> {
</span><del>-    if (strstr(pathOrURL, &quot;http://&quot;) || strstr(pathOrURL, &quot;https://&quot;) || strstr(pathOrURL, &quot;file://&quot;))
-        return WKURLCreateWithUTF8CString(pathOrURL);
-
-    // Creating from filesytem path.
-    size_t length = strlen(pathOrURL);
-    if (!length)
-        return 0;
-
-    const char separator = '/';
-    bool isAbsolutePath = pathOrURL[0] == separator;
-    const char* filePrefix = &quot;file://&quot;;
-    static const size_t prefixLength = strlen(filePrefix);
-
-    std::unique_ptr&lt;char[]&gt; buffer;
-    if (isAbsolutePath) {
-        buffer = std::make_unique&lt;char[]&gt;(prefixLength + length + 1);
-        strcpy(buffer.get(), filePrefix);
-        strcpy(buffer.get() + prefixLength, pathOrURL);
-    } else {
-        buffer = std::make_unique&lt;char[]&gt;(prefixLength + PATH_MAX + length + 2); // 1 for the separator
-        strcpy(buffer.get(), filePrefix);
-        if (!getcwd(buffer.get() + prefixLength, PATH_MAX))
-            return 0;
-        size_t numCharacters = strlen(buffer.get());
-        buffer[numCharacters] = separator;
-        strcpy(buffer.get() + numCharacters + 1, pathOrURL);
-    }
-
-    return WKURLCreateWithUTF8CString(buffer.get());
-}
-
-TestInvocation::TestInvocation(const std::string&amp; pathOrURL)
-    : m_url(AdoptWK, createWKURL(pathOrURL.c_str()))
-    , m_dumpPixels(false)
-    , m_timeout(0)
-    , m_gotInitialResponse(false)
-    , m_gotFinalMessage(false)
-    , m_gotRepaint(false)
-    , m_error(false)
-    , m_webProcessIsUnresponsive(false)
-{
</del><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; urlString = adoptWK(WKURLCopyString(m_url.get()));
</span><span class="cx"> 
</span><span class="cx">     size_t stringLength = WKStringGetLength(urlString.get());
</span><span class="lines">@@ -144,21 +103,6 @@
</span><span class="cx">     return urlContains(&quot;globalhistory/&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool TestInvocation::shouldMakeViewportFlexible() const
-{
-    return urlContains(&quot;viewport/&quot;);
-}
-
-bool TestInvocation::shouldUseFixedLayout() const
-{
-#if ENABLE(CSS_DEVICE_ADAPTATION)
-    if (urlContains(&quot;device-adapt/&quot;) || urlContains(&quot;device-adapt\\&quot;))
-        return true;
-#endif
-
-    return false;
-}
-
</del><span class="cx"> void TestInvocation::invoke()
</span><span class="cx"> {
</span><span class="cx">     TestController::singleton().configureViewForTest(*this);
</span><span class="lines">@@ -181,7 +125,7 @@
</span><span class="cx">     WKDictionarySetItem(beginTestMessageBody.get(), dumpFrameLoadDelegatesKey.get(), dumpFrameLoadDelegatesValue.get());
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; useFlexibleViewportKey = adoptWK(WKStringCreateWithUTF8CString(&quot;UseFlexibleViewport&quot;));
</span><del>-    WKRetainPtr&lt;WKBooleanRef&gt; useFlexibleViewportValue = adoptWK(WKBooleanCreate(shouldMakeViewportFlexible()));
</del><ins>+    WKRetainPtr&lt;WKBooleanRef&gt; useFlexibleViewportValue = adoptWK(WKBooleanCreate(options().useFlexibleViewport));
</ins><span class="cx">     WKDictionarySetItem(beginTestMessageBody.get(), useFlexibleViewportKey.get(), useFlexibleViewportValue.get());
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; dumpPixelsKey = adoptWK(WKStringCreateWithUTF8CString(&quot;DumpPixels&quot;));
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestInvocationh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestInvocation.h (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestInvocation.h        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/TestInvocation.h        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -27,8 +27,8 @@
</span><span class="cx"> #define TestInvocation_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSWrappable.h&quot;
</span><ins>+#include &quot;TestOptions.h&quot;
</ins><span class="cx"> #include &quot;UIScriptContext.h&quot;
</span><del>-#include &lt;JavaScriptCore/JSRetainPtr.h&gt;
</del><span class="cx"> #include &lt;WebKit/WKRetainPtr.h&gt;
</span><span class="cx"> #include &lt;string&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="lines">@@ -39,11 +39,13 @@
</span><span class="cx"> class TestInvocation : public UIScriptContextDelegate {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(TestInvocation);
</span><span class="cx"> public:
</span><del>-    explicit TestInvocation(const std::string&amp; pathOrURL);
</del><ins>+    explicit TestInvocation(WKURLRef, const TestOptions&amp;);
</ins><span class="cx">     ~TestInvocation();
</span><span class="cx"> 
</span><span class="cx">     WKURLRef url() const;
</span><span class="cx">     bool urlContains(const char*) const;
</span><ins>+    
+    const TestOptions&amp; options() const { return m_options; }
</ins><span class="cx"> 
</span><span class="cx">     void setIsPixelTest(const std::string&amp; expectedPixelHash);
</span><span class="cx"> 
</span><span class="lines">@@ -63,9 +65,6 @@
</span><span class="cx">     void didEndSwipe();
</span><span class="cx">     void didRemoveSwipeSnapshot();
</span><span class="cx"> 
</span><del>-    bool shouldMakeViewportFlexible() const;
-    bool shouldUseFixedLayout() const;
-
</del><span class="cx"> private:
</span><span class="cx">     void dumpResults();
</span><span class="cx">     static void dump(const char* textToStdout, const char* textToStderr = 0, bool seenError = false);
</span><span class="lines">@@ -90,27 +89,30 @@
</span><span class="cx">     // UIScriptContextDelegate
</span><span class="cx">     void uiScriptDidComplete(WKStringRef result, unsigned callbackID) override;
</span><span class="cx"> 
</span><ins>+    const TestOptions m_options;
+    
</ins><span class="cx">     WKRetainPtr&lt;WKURLRef&gt; m_url;
</span><span class="cx">     WTF::String m_urlString;
</span><span class="cx"> 
</span><del>-    bool m_dumpPixels;
-    bool m_pixelResultIsPending { false };
</del><span class="cx">     std::string m_expectedPixelHash;
</span><span class="cx"> 
</span><del>-    int m_timeout;
</del><ins>+    int m_timeout { 0 };
</ins><span class="cx"> 
</span><span class="cx">     // Invocation state
</span><del>-    bool m_gotInitialResponse;
-    bool m_gotFinalMessage;
-    bool m_gotRepaint;
-    bool m_error;
</del><ins>+    bool m_gotInitialResponse { false };
+    bool m_gotFinalMessage { false };
+    bool m_gotRepaint { false };
+    bool m_error { false };
</ins><span class="cx"> 
</span><ins>+    bool m_dumpPixels { false };
+    bool m_pixelResultIsPending { false };
+    bool m_webProcessIsUnresponsive { false };
+
</ins><span class="cx">     StringBuilder m_textOutput;
</span><span class="cx">     WKRetainPtr&lt;WKDataRef&gt; m_audioResult;
</span><span class="cx">     WKRetainPtr&lt;WKImageRef&gt; m_pixelResult;
</span><span class="cx">     WKRetainPtr&lt;WKArrayRef&gt; m_repaintRects;
</span><span class="cx">     std::string m_errorMessage;
</span><del>-    bool m_webProcessIsUnresponsive;
</del><span class="cx">     
</span><span class="cx">     std::unique_ptr&lt;UIScriptContext&gt; m_UIScriptContext;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestOptionscppfromrev190334trunkToolsWebKitTestRunnerTestOptionsh"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/TestOptions.cpp (from rev 190334, trunk/Tools/WebKitTestRunner/TestOptions.h) (0 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestOptions.cpp                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/TestOptions.cpp        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;TestOptions.h&quot;
+
+#include &lt;string&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+namespace WTR {
+
+static bool pathContains(const std::string&amp; pathOrURL, const char* substring)
+{
+    String path(pathOrURL.c_str());
+    return path.contains(substring); // Case-insensitive.
+}
+
+static bool shouldMakeViewportFlexible(const std::string&amp; pathOrURL)
+{
+    return pathContains(pathOrURL, &quot;viewport/&quot;);
+}
+
+static bool shouldUseFixedLayout(const std::string&amp; pathOrURL)
+{
+#if ENABLE(CSS_DEVICE_ADAPTATION)
+    if (pathContains(pathOrURL, &quot;device-adapt/&quot;) || pathContains(pathOrURL, &quot;device-adapt\\&quot;))
+        return true;
+#endif
+    return false;
+}
+
+static bool isSVGTestPath(const std::string&amp; pathOrURL)
+{
+    return pathContains(pathOrURL, &quot;svg/W3C-SVG-1.1&quot;) || pathContains(pathOrURL, &quot;svg\\W3C-SVG-1.1&quot;);
+}
+
+static bool isHiDPITestPath(const std::string&amp; pathOrURL)
+{
+    return pathContains(pathOrURL, &quot;/hidpi-&quot;);
+}
+
+TestOptions::TestOptions(const std::string&amp; pathOrURL)
+    : useFlexibleViewport(shouldMakeViewportFlexible(pathOrURL))
+    , useFixedLayout(shouldUseFixedLayout(pathOrURL))
+    , isSVGTest(isSVGTestPath(pathOrURL))
+    , isHiDPITest(isHiDPITestPath(pathOrURL))
+{
+}
+
+}
</ins></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestOptionsh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestOptions.h (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestOptions.h        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/TestOptions.h        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -37,7 +37,12 @@
</span><span class="cx">     bool shouldShowWebView { false };
</span><span class="cx">     bool useFlexibleViewport { false };
</span><span class="cx">     bool useFixedLayout { false };
</span><ins>+    bool isSVGTest { false };
+    bool isHiDPITest { false };
+
</ins><span class="cx">     Vector&lt;String&gt; overrideLanguages;
</span><ins>+    
+    TestOptions(const std::string&amp; pathOrURL);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerWebKitTestRunnerxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXBuildFile section */
</span><span class="cx">                 0F5169CC1445222D00E0A9D7 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F5169CA1445222D00E0A9D7 /* WebKit.framework */; };
</span><ins>+                0F622CE91BBB3A1A00838AD3 /* TestOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F622CE81BBB3A1A00838AD3 /* TestOptions.cpp */; settings = {ASSET_TAGS = (); }; };
</ins><span class="cx">                 0F73B5511BA78968004B3EF4 /* JSUIScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F73B54F1BA78968004B3EF4 /* JSUIScriptController.cpp */; };
</span><span class="cx">                 0F73B5521BA78968004B3EF4 /* JSUIScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F73B5501BA78968004B3EF4 /* JSUIScriptController.h */; };
</span><span class="cx">                 0F73B55A1BA792FF004B3EF4 /* JSWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC952C0C11F3B965003398B4 /* JSWrapper.cpp */; };
</span><span class="lines">@@ -170,6 +171,7 @@
</span><span class="cx"> /* Begin PBXFileReference section */
</span><span class="cx">                 0F2109C7189C650D00F879A3 /* BaseTarget.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BaseTarget.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F5169CA1445222D00E0A9D7 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
</span><ins>+                0F622CE81BBB3A1A00838AD3 /* TestOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestOptions.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 0F73B54F1BA78968004B3EF4 /* JSUIScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSUIScriptController.cpp; path = DerivedSources/WebKitTestRunner/JSUIScriptController.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 0F73B5501BA78968004B3EF4 /* JSUIScriptController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSUIScriptController.h; path = DerivedSources/WebKitTestRunner/JSUIScriptController.h; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 0F73B5571BA7929E004B3EF4 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
</span><span class="lines">@@ -406,6 +408,7 @@
</span><span class="cx">                                 BC79342F118F7F19005EA8E2 /* TestController.h */,
</span><span class="cx">                                 BCD7D2F711921278006DB7EE /* TestInvocation.cpp */,
</span><span class="cx">                                 BCD7D2F611921278006DB7EE /* TestInvocation.h */,
</span><ins>+                                0F622CE81BBB3A1A00838AD3 /* TestOptions.cpp */,
</ins><span class="cx">                                 1A3326051B75396500F89F62 /* TestOptions.h */,
</span><span class="cx">                                 BC251A1711D16774002EBC01 /* WebKitTestRunnerPrefix.h */,
</span><span class="cx">                                 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */,
</span><span class="lines">@@ -935,6 +938,7 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                0F622CE91BBB3A1A00838AD3 /* TestOptions.cpp in Sources */,
</ins><span class="cx">                                 0F73B55A1BA792FF004B3EF4 /* JSWrapper.cpp in Sources */,
</span><span class="cx">                                 A18510441B9AE14A00744AEB /* WorkQueueManager.cpp in Sources */,
</span><span class="cx">                                 A185103F1B9AE12900744AEB /* GeolocationProviderMock.cpp in Sources */,
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnereflTestControllerEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -134,23 +134,24 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool shouldUseFixedLayout(const TestInvocation&amp; test)
</del><ins>+static bool pathContains(const std::string&amp; pathOrURL, const char* substring)
</ins><span class="cx"> {
</span><del>-#if ENABLE(CSS_DEVICE_ADAPTATION)
-    if (test.urlContains(&quot;device-adapt/&quot;) || test.urlContains(&quot;device-adapt\\&quot;))
-        return true;
-#endif
</del><ins>+    String path(pathOrURL.c_str());
+    return path.contains(substring); // Case-insensitive.
+}
</ins><span class="cx"> 
</span><ins>+static bool shouldUseFixedLayout(const std::string&amp; pathOrURL)
+{
</ins><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><del>-    if (test.urlContains(&quot;sticky/&quot;) || test.urlContains(&quot;sticky\\&quot;))
</del><ins>+    if (pathContains(pathOrURL, &quot;sticky/&quot;) || pathContains(pathOrURL, &quot;sticky\\&quot;))
</ins><span class="cx">         return true;
</span><span class="cx"> #endif
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp; testOptions, const TestInvocation&amp; test) const
</del><ins>+void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp; testOptions, const std::string&amp; pathOrURL) const
</ins><span class="cx"> {
</span><del>-    testOptions.useFixedLayout = shouldUseFixedLayout(test);
</del><ins>+    testOptions.useFixedLayout = shouldUseFixedLayout(pathOrURL);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestController::platformConfigureViewForTest(const TestInvocation&amp;)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnergtkTestControllerGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx">     m_mainWebView-&gt;dismissAllPopupMenus();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp;, const TestInvocation&amp;) const
</del><ins>+void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp;, const std::string&amp;) const
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosTestControllerIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/ios/TestControllerIOS.mm        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> 
</span><span class="cx"> void TestController::platformConfigureViewForTest(const TestInvocation&amp; test)
</span><span class="cx"> {
</span><del>-    if (test.shouldMakeViewportFlexible()) {
</del><ins>+    if (test.options().useFlexibleViewport) {
</ins><span class="cx">         const unsigned phoneViewHeight = 480;
</span><span class="cx">         const unsigned phoneViewWidth = 320;
</span><span class="cx"> 
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp;, const TestInvocation&amp;) const
</del><ins>+void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp;, const std::string&amp;) const
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnermacTestControllerMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/mac/TestControllerMac.mm (190334 => 190335)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/mac/TestControllerMac.mm        2015-09-30 00:29:56 UTC (rev 190334)
+++ trunk/Tools/WebKitTestRunner/mac/TestControllerMac.mm        2015-09-30 01:20:23 UTC (rev 190335)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp; options, const TestInvocation&amp; test) const
</del><ins>+void TestController::updatePlatformSpecificTestOptionsForTest(TestOptions&amp; options, const std::string&amp;) const
</ins><span class="cx"> {
</span><span class="cx">     options.useThreadedScrolling = true;
</span><span class="cx">     options.useRemoteLayerTree = shouldUseRemoteLayerTree();
</span></span></pre>
</div>
</div>

</body>
</html>