Title: [253620] trunk
Revision
253620
Author
you...@apple.com
Date
2019-12-17 03:33:17 -0800 (Tue, 17 Dec 2019)

Log Message

WebKitTestRunner should report service worker process crashes
https://bugs.webkit.org/show_bug.cgi?id=205267

Reviewed by Chris Dumez.

Source/WebKit:

Expose a way for WTR to be notified of service worker process crashes.

* UIProcess/API/C/WKContext.h:
* UIProcess/WebContextClient.cpp:
(WebKit::WebContextClient::serviceWorkerProcessDidCrash):
* UIProcess/WebContextClient.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::serviceWorkerProcessCrashed):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

Tools:

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::generatePageConfiguration):
(WTR::TestController::serviceWorkerProcessDidCrash):
* WebKitTestRunner/TestController.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (253619 => 253620)


--- trunk/Source/WebKit/ChangeLog	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/ChangeLog	2019-12-17 11:33:17 UTC (rev 253620)
@@ -1,3 +1,22 @@
+2019-12-17  youenn fablet  <you...@apple.com>
+
+        WebKitTestRunner should report service worker process crashes
+        https://bugs.webkit.org/show_bug.cgi?id=205267
+
+        Reviewed by Chris Dumez.
+
+        Expose a way for WTR to be notified of service worker process crashes.
+
+        * UIProcess/API/C/WKContext.h:
+        * UIProcess/WebContextClient.cpp:
+        (WebKit::WebContextClient::serviceWorkerProcessDidCrash):
+        * UIProcess/WebContextClient.h:
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::serviceWorkerProcessCrashed):
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
+
 2019-12-17  Chris Dumez  <cdu...@apple.com>
 
         Improve release logging in NetworkResourceLoader

Modified: trunk/Source/WebKit/UIProcess/API/C/WKContext.h (253619 => 253620)


--- trunk/Source/WebKit/UIProcess/API/C/WKContext.h	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/UIProcess/API/C/WKContext.h	2019-12-17 11:33:17 UTC (rev 253620)
@@ -91,6 +91,21 @@
 
 } WKContextClientV2;
 
+typedef struct WKContextClientV3 {
+    WKContextClientBase                                                 base;
+
+    // Version 0.
+    WKContextPlugInAutoStartOriginHashesChangedCallback                 plugInAutoStartOriginHashesChanged;
+    WKContextNetworkProcessDidCrashCallback                             networkProcessDidCrash;
+    WKContextPlugInInformationBecameAvailableCallback                   plugInInformationBecameAvailable;
+
+    // Version 1.
+    void                                                                (*copyWebCryptoMasterKey_unavailable)(void);
+
+    // Version2.
+    WKContextChildProcessDidCrashCallback                               serviceWorkerProcessDidCrash;
+} WKContextClientV3;
+
 // FIXME: Remove these once support for Mavericks has been dropped.
 enum {
     kWKProcessModelSharedSecondaryProcess = 0,

Modified: trunk/Source/WebKit/UIProcess/WebContextClient.cpp (253619 => 253620)


--- trunk/Source/WebKit/UIProcess/WebContextClient.cpp	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/UIProcess/WebContextClient.cpp	2019-12-17 11:33:17 UTC (rev 253620)
@@ -46,4 +46,12 @@
     m_client.networkProcessDidCrash(toAPI(processPool), m_client.base.clientInfo);
 }
 
+void WebContextClient::serviceWorkerProcessDidCrash(WebProcessPool* processPool)
+{
+    if (!m_client.serviceWorkerProcessDidCrash)
+        return;
+
+    m_client.serviceWorkerProcessDidCrash(toAPI(processPool), m_client.base.clientInfo);
+}
+
 } // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/WebContextClient.h (253619 => 253620)


--- trunk/Source/WebKit/UIProcess/WebContextClient.h	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/UIProcess/WebContextClient.h	2019-12-17 11:33:17 UTC (rev 253620)
@@ -32,7 +32,7 @@
 
 namespace API {
 template<> struct ClientTraits<WKContextClientBase> {
-    typedef std::tuple<WKContextClientV0, WKContextClientV1, WKContextClientV2> Versions;
+    typedef std::tuple<WKContextClientV0, WKContextClientV1, WKContextClientV2, WKContextClientV3> Versions;
 };
 }
 
@@ -45,6 +45,7 @@
 public:
     void plugInAutoStartOriginHashesChanged(WebProcessPool*);
     void networkProcessDidCrash(WebProcessPool*);
+    void serviceWorkerProcessDidCrash(WebProcessPool*);
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (253619 => 253620)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2019-12-17 11:33:17 UTC (rev 253620)
@@ -694,6 +694,13 @@
 #endif
 }
 
+void WebProcessPool::serviceWorkerProcessCrashed(WebProcessProxy& proxy)
+{
+#if ENABLE(SERVICE_WORKER)
+    m_client.serviceWorkerProcessDidCrash(this);
+#endif
+}
+
 void WebProcessPool::getNetworkProcessConnection(WebProcessProxy& webProcessProxy, Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&& reply)
 {
     ensureNetworkProcess();

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (253619 => 253620)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2019-12-17 11:33:17 UTC (rev 253620)
@@ -407,6 +407,7 @@
     bool hasServiceWorkerForegroundActivityForTesting() const;
     bool hasServiceWorkerBackgroundActivityForTesting() const;
 #endif
+    void serviceWorkerProcessCrashed(WebProcessProxy&);
 
 #if PLATFORM(COCOA)
     bool processSuppressionEnabled() const;

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (253619 => 253620)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2019-12-17 11:33:17 UTC (rev 253620)
@@ -762,6 +762,9 @@
         ASSERT(!m_isInProcessCache);
     }
 
+    if (isStandaloneServiceWorkerProcess())
+        processPool().serviceWorkerProcessCrashed(*this);
+
     shutDown();
 
 #if ENABLE(PUBLIC_SUFFIX_LIST)

Modified: trunk/Tools/ChangeLog (253619 => 253620)


--- trunk/Tools/ChangeLog	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Tools/ChangeLog	2019-12-17 11:33:17 UTC (rev 253620)
@@ -1,3 +1,15 @@
+2019-12-17  youenn fablet  <you...@apple.com>
+
+        WebKitTestRunner should report service worker process crashes
+        https://bugs.webkit.org/show_bug.cgi?id=205267
+
+        Reviewed by Chris Dumez.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::generatePageConfiguration):
+        (WTR::TestController::serviceWorkerProcessDidCrash):
+        * WebKitTestRunner/TestController.h:
+
 2019-12-17  Carlos Garcia Campos  <cgar...@igalia.com>
 
         Unreviewed. WebDriver: set doc_root in WebDriverW3CExecutor server config

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (253619 => 253620)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2019-12-17 11:33:17 UTC (rev 253620)
@@ -575,12 +575,13 @@
     };
     WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient.base);
 
-    WKContextClientV2 contextClient = {
-        { 2, this },
+    WKContextClientV3 contextClient = {
+        { 3, this },
         0, // plugInAutoStartOriginHashesChanged
         networkProcessDidCrash,
         0, // plugInInformationBecameAvailable
         0, // copyWebCryptoMasterKey
+        serviceWorkerProcessDidCrash
     };
     WKContextSetClient(m_context.get(), &contextClient.base);
 
@@ -1826,6 +1827,11 @@
     static_cast<TestController*>(const_cast<void*>(clientInfo))->networkProcessDidCrash();
 }
 
+void TestController::serviceWorkerProcessDidCrash(WKContextRef context, const void *clientInfo)
+{
+    static_cast<TestController*>(const_cast<void*>(clientInfo))->serviceWorkerProcessDidCrash();
+}
+
 void TestController::didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef messageBodyDictionary, bool synchronous)
 {
     WKRetainPtr<WKStringRef> keyKey = adoptWK(WKStringCreateWithUTF8CString("Key"));
@@ -2185,6 +2191,13 @@
     exit(1);
 }
 
+void TestController::serviceWorkerProcessDidCrash()
+{
+    fprintf(stderr, "#CRASHED - ServiceWorkerProcess\n");
+    if (m_shouldExitWhenWebProcessCrashes)
+        exit(1);
+}
+
 // WKPageNavigationClient
 
 void TestController::didCommitNavigation(WKPageRef page, WKNavigationRef navigation, WKTypeRef, const void* clientInfo)

Modified: trunk/Tools/WebKitTestRunner/TestController.h (253619 => 253620)


--- trunk/Tools/WebKitTestRunner/TestController.h	2019-12-17 11:20:38 UTC (rev 253619)
+++ trunk/Tools/WebKitTestRunner/TestController.h	2019-12-17 11:33:17 UTC (rev 253620)
@@ -407,6 +407,8 @@
     // WKContextClient
     static void networkProcessDidCrash(WKContextRef, const void*);
     void networkProcessDidCrash();
+    static void serviceWorkerProcessDidCrash(WKContextRef, const void*);
+    void serviceWorkerProcessDidCrash();
 
     // WKPageNavigationClient
     static void didCommitNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to