Title: [171880] trunk/Tools
Revision
171880
Author
[email protected]
Date
2014-07-31 12:21:28 -0700 (Thu, 31 Jul 2014)

Log Message

media/track/add-and-remove-track.html and media/media-fragments/TC0001.html are flaky
on Mac WK2 EWS, asserting under TestRunner::removeAllWebNotificationPermissions
https://bugs.webkit.org/show_bug.cgi?id=135418

Reviewed by Anders Carlsson.

This was only happening in shared web process mode, because WKBundlePostMessage
has different behavior then. When there is no process, the message is dropped on
the floor in multiple process mode, but it's stored to be delivered after launch
in shared process mode.

So, calling resetStateToConsistentValues() resulted in storing a Reset bundle message
that was delivered immediately after launch, when there was nothing to reset.

We don't actually need to reset anything at this point, as the previous call has
already reset everything UI process side, and web process is brand new. All we need
is to reattach the page to a process, as invoke() expects one to exist.

* WebKitTestRunner/TestController.cpp: (WTR::TestController::reattachPageToWebProcess):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::invoke):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (171879 => 171880)


--- trunk/Tools/ChangeLog	2014-07-31 19:21:10 UTC (rev 171879)
+++ trunk/Tools/ChangeLog	2014-07-31 19:21:28 UTC (rev 171880)
@@ -1,3 +1,27 @@
+2014-07-31  Alexey Proskuryakov  <[email protected]>
+
+        media/track/add-and-remove-track.html and media/media-fragments/TC0001.html are flaky
+        on Mac WK2 EWS, asserting under TestRunner::removeAllWebNotificationPermissions
+        https://bugs.webkit.org/show_bug.cgi?id=135418
+
+        Reviewed by Anders Carlsson.
+
+        This was only happening in shared web process mode, because WKBundlePostMessage
+        has different behavior then. When there is no process, the message is dropped on
+        the floor in multiple process mode, but it's stored to be delivered after launch
+        in shared process mode.
+
+        So, calling resetStateToConsistentValues() resulted in storing a Reset bundle message
+        that was delivered immediately after launch, when there was nothing to reset.
+
+        We don't actually need to reset anything at this point, as the previous call has
+        already reset everything UI process side, and web process is brand new. All we need
+        is to reattach the page to a process, as invoke() expects one to exist.
+
+        * WebKitTestRunner/TestController.cpp: (WTR::TestController::reattachPageToWebProcess):
+        * WebKitTestRunner/TestController.h:
+        * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::invoke):
+
 2014-07-31  Dan Bernstein  <[email protected]>
 
         [WK2] Regression tests can't load HTTPS pages with NetworkProcess due to self-signed certificate

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (171879 => 171880)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2014-07-31 19:21:10 UTC (rev 171879)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2014-07-31 19:21:28 UTC (rev 171880)
@@ -663,6 +663,14 @@
     WKPageTerminate(m_mainWebView->page());
 }
 
+void TestController::reattachPageToWebProcess()
+{
+    // Loading a web page is the only way to reattach an existing page to a process.
+    m_doneResetting = false;
+    WKPageLoadURL(m_mainWebView->page(), blankURL());
+    runUntil(m_doneResetting, LongTimeout);
+}
+
 void TestController::updateWebViewSizeForTest(const TestInvocation& test)
 {
     bool isSVGW3CTest = strstr(test.pathOrURL(), "svg/W3C-SVG-1.1") || strstr(test.pathOrURL(), "svg\\W3C-SVG-1.1");

Modified: trunk/Tools/WebKitTestRunner/TestController.h (171879 => 171880)


--- trunk/Tools/WebKitTestRunner/TestController.h	2014-07-31 19:21:10 UTC (rev 171879)
+++ trunk/Tools/WebKitTestRunner/TestController.h	2014-07-31 19:21:28 UTC (rev 171880)
@@ -98,6 +98,7 @@
     void resetPreferencesToConsistentValues();
 
     void terminateWebContentProcess();
+    void reattachPageToWebProcess();
 
     WorkQueueManager& workQueueManager() { return m_workQueueManager; }
 

Modified: trunk/Tools/WebKitTestRunner/TestInvocation.cpp (171879 => 171880)


--- trunk/Tools/WebKitTestRunner/TestInvocation.cpp	2014-07-31 19:21:10 UTC (rev 171879)
+++ trunk/Tools/WebKitTestRunner/TestInvocation.cpp	2014-07-31 19:21:28 UTC (rev 171880)
@@ -205,7 +205,8 @@
         // The process froze while loading about:blank, let's start a fresh one.
         // It would be nice to report that the previous test froze after dumping results, but we have no way to do that.
         TestController::shared().terminateWebContentProcess();
-        TestController::shared().resetStateToConsistentValues();
+        // Make sure that we have a process, as invoke() will need one to send bundle messages for the next test.
+        TestController::shared().reattachPageToWebProcess();
     }
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to