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*);