Title: [196821] trunk
Revision
196821
Author
[email protected]
Date
2016-02-19 09:35:52 -0800 (Fri, 19 Feb 2016)

Log Message

Add "databaseProcessDidCrash" to the WKContextClient; Adopt it in WKTR.
https://bugs.webkit.org/show_bug.cgi?id=154428

Reviewed by Jer Noble.

Source/WebKit2:

* UIProcess/API/C/WKContext.h:
* UIProcess/API/C/mac/WKContextPrivateMac.h:
* UIProcess/API/C/mac/WKContextPrivateMac.mm:
(WKContextGetDatabaseProcessIdentifier):

* UIProcess/WebContextClient.cpp:
(WebKit::WebContextClient::databaseProcessDidCrash):
* UIProcess/WebContextClient.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::databaseProcessCrashed):
(WebKit::WebProcessPool::databaseProcessIdentifier):
* UIProcess/WebProcessPool.h:

Tools:

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

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (196820 => 196821)


--- trunk/Source/WebKit2/ChangeLog	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/ChangeLog	2016-02-19 17:35:52 UTC (rev 196821)
@@ -1,3 +1,24 @@
+2016-02-19  Brady Eidson  <[email protected]>
+
+        Add "databaseProcessDidCrash" to the WKContextClient; Adopt it in WKTR.
+        https://bugs.webkit.org/show_bug.cgi?id=154428
+
+        Reviewed by Jer Noble.
+
+        * UIProcess/API/C/WKContext.h:
+        * UIProcess/API/C/mac/WKContextPrivateMac.h:
+        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
+        (WKContextGetDatabaseProcessIdentifier):
+
+        * UIProcess/WebContextClient.cpp:
+        (WebKit::WebContextClient::databaseProcessDidCrash):
+        * UIProcess/WebContextClient.h:
+
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::databaseProcessCrashed):
+        (WebKit::WebProcessPool::databaseProcessIdentifier):
+        * UIProcess/WebProcessPool.h:
+
 2016-02-18  Gwang Yoon Hwang  <[email protected]>
 
         [GTK] Limit the number of tiles according to the visible area

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.h (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.h	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.h	2016-02-19 17:35:52 UTC (rev 196821)
@@ -45,10 +45,13 @@
 
 // Context Client
 typedef void (*WKContextPlugInAutoStartOriginHashesChangedCallback)(WKContextRef context, const void *clientInfo);
-typedef void (*WKContextNetworkProcessDidCrashCallback)(WKContextRef context, const void *clientInfo);
 typedef void (*WKContextPlugInInformationBecameAvailableCallback)(WKContextRef context, WKArrayRef plugIn, const void *clientInfo);
 typedef WKDataRef (*WKContextCopyWebCryptoMasterKeyCallback)(WKContextRef context, const void *clientInfo);
 
+typedef void (*WKContextChildProcessDidCrashCallback)(WKContextRef context, const void *clientInfo);
+typedef WKContextChildProcessDidCrashCallback WKContextNetworkProcessDidCrashCallback;
+typedef WKContextChildProcessDidCrashCallback WKContextDatabaseProcessDidCrashCallback;
+
 typedef struct WKContextClientBase {
     int                                                                 version;
     const void *                                                        clientInfo;
@@ -75,6 +78,21 @@
     WKContextCopyWebCryptoMasterKeyCallback                             copyWebCryptoMasterKey;
 } WKContextClientV1;
 
+typedef struct WKContextClientV2 {
+    WKContextClientBase                                                 base;
+
+    // Version 0.
+    WKContextPlugInAutoStartOriginHashesChangedCallback                 plugInAutoStartOriginHashesChanged;
+    WKContextNetworkProcessDidCrashCallback                             networkProcessDidCrash;
+    WKContextPlugInInformationBecameAvailableCallback                   plugInInformationBecameAvailable;
+
+    // Version 1.
+    WKContextCopyWebCryptoMasterKeyCallback                             copyWebCryptoMasterKey;
+
+    // Version 2.
+    WKContextDatabaseProcessDidCrashCallback                            databaseProcessDidCrash;
+} WKContextClientV2;
+
 // FIXME: Remove these once support for Mavericks has been dropped.
 enum {
     kWKProcessModelSharedSecondaryProcess = 0,

Modified: trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h	2016-02-19 17:35:52 UTC (rev 196821)
@@ -78,6 +78,7 @@
 WK_EXPORT bool WKContextShouldSuggestBlockWebGL();
 
 WK_EXPORT pid_t WKContextGetNetworkProcessIdentifier(WKContextRef context);
+WK_EXPORT pid_t WKContextGetDatabaseProcessIdentifier(WKContextRef context);
 
 #ifdef __cplusplus
 }

Modified: trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm	2016-02-19 17:35:52 UTC (rev 196821)
@@ -168,3 +168,8 @@
 {
     return toImpl(contextRef)->networkProcessIdentifier();
 }
+
+pid_t WKContextGetDatabaseProcessIdentifier(WKContextRef contextRef)
+{
+    return toImpl(contextRef)->databaseProcessIdentifier();
+}

Modified: trunk/Source/WebKit2/UIProcess/WebContextClient.cpp (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/WebContextClient.cpp	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/WebContextClient.cpp	2016-02-19 17:35:52 UTC (rev 196821)
@@ -47,6 +47,14 @@
     m_client.networkProcessDidCrash(toAPI(processPool), m_client.base.clientInfo);
 }
 
+void WebContextClient::databaseProcessDidCrash(WebProcessPool* processPool)
+{
+    if (!m_client.databaseProcessDidCrash)
+        return;
+
+    m_client.databaseProcessDidCrash(toAPI(processPool), m_client.base.clientInfo);
+}
+
 void WebContextClient::plugInInformationBecameAvailable(WebProcessPool* processPool, API::Array* plugInInfo)
 {
     if (!m_client.plugInInformationBecameAvailable)

Modified: trunk/Source/WebKit2/UIProcess/WebContextClient.h (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/WebContextClient.h	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/WebContextClient.h	2016-02-19 17:35:52 UTC (rev 196821)
@@ -34,7 +34,7 @@
 class Array;
 
 template<> struct ClientTraits<WKContextClientBase> {
-    typedef std::tuple<WKContextClientV0, WKContextClientV1> Versions;
+    typedef std::tuple<WKContextClientV0, WKContextClientV1, WKContextClientV2> Versions;
 };
 }
 
@@ -47,6 +47,7 @@
 public:
     void plugInAutoStartOriginHashesChanged(WebProcessPool*);
     void networkProcessDidCrash(WebProcessPool*);
+    void databaseProcessDidCrash(WebProcessPool*);
     void plugInInformationBecameAvailable(WebProcessPool*, API::Array*);
     PassRefPtr<API::Data> copyWebCryptoMasterKey(WebProcessPool*);
 };

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2016-02-19 17:35:52 UTC (rev 196821)
@@ -451,6 +451,7 @@
     for (auto& supplement : m_supplements)
         supplement.value->processDidClose(databaseProcessProxy);
 
+    m_client.databaseProcessDidCrash(this);
     m_databaseProcess = nullptr;
 }
 #endif
@@ -838,6 +839,18 @@
     return m_networkProcess->processIdentifier();
 }
 
+pid_t WebProcessPool::databaseProcessIdentifier()
+{
+#if ENABLE(DATABASE_PROCESS)
+    if (!m_databaseProcess)
+        return 0;
+
+    return m_databaseProcess->processIdentifier();
+#else
+    return 0;
+#endif
+}
+
 void WebProcessPool::setAlwaysUsesComplexTextCodePath(bool alwaysUseComplexText)
 {
     m_alwaysUsesComplexTextCodePath = alwaysUseComplexText;

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (196820 => 196821)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2016-02-19 17:35:52 UTC (rev 196821)
@@ -187,6 +187,7 @@
 #endif
 
     pid_t networkProcessIdentifier();
+    pid_t databaseProcessIdentifier();
 
     void setAlwaysUsesComplexTextCodePath(bool);
     void setShouldUseFontSmoothing(bool);

Modified: trunk/Tools/ChangeLog (196820 => 196821)


--- trunk/Tools/ChangeLog	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Tools/ChangeLog	2016-02-19 17:35:52 UTC (rev 196821)
@@ -1,3 +1,16 @@
+2016-02-19  Brady Eidson  <[email protected]>
+
+        Add "databaseProcessDidCrash" to the WKContextClient; Adopt it in WKTR.
+        https://bugs.webkit.org/show_bug.cgi?id=154428
+
+        Reviewed by Jer Noble.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::generatePageConfiguration):
+        (WTR::TestController::databaseProcessName):
+        (WTR::TestController::databaseProcessDidCrash):
+        * WebKitTestRunner/TestController.h:
+
 2016-02-18  Philippe Normand  <[email protected]>
 
         [GStreamer] Bump internal jhbuild versions to 1.6.3

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (196820 => 196821)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2016-02-19 17:35:52 UTC (rev 196821)
@@ -433,12 +433,13 @@
     };
     WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient.base);
 
-    WKContextClientV1 contextClient = {
-        { 1, this },
+    WKContextClientV2 contextClient = {
+        { 2, this },
         0, // plugInAutoStartOriginHashesChanged
         networkProcessDidCrash,
         0, // plugInInformationBecameAvailable
         0, // copyWebCryptoMasterKey
+        databaseProcessDidCrash,
     };
     WKContextSetClient(m_context.get(), &contextClient.base);
 
@@ -821,6 +822,16 @@
 #endif
 }
 
+const char* TestController::databaseProcessName()
+{
+    // FIXME: Find a way to not hardcode the process name.
+#if PLATFORM(COCOA)
+    return "com.apple.WebKit.Databases.Development";
+#else
+    return "DatabaseProcess";
+#endif
+}
+
 static std::string testPath(WKURLRef url)
 {
     auto scheme = adoptWK(WKURLCopyScheme(url));
@@ -1138,6 +1149,11 @@
     static_cast<TestController*>(const_cast<void*>(clientInfo))->networkProcessDidCrash();
 }
 
+void TestController::databaseProcessDidCrash(WKContextRef context, const void *clientInfo)
+{
+    static_cast<TestController*>(const_cast<void*>(clientInfo))->databaseProcessDidCrash();
+}
+
 void TestController::didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef messageBodyDictionary, bool synchronous)
 {
     WKRetainPtr<WKStringRef> keyKey = adoptWK(WKStringCreateWithUTF8CString("Key"));
@@ -1445,6 +1461,17 @@
     exit(1);
 }
 
+void TestController::databaseProcessDidCrash()
+{
+#if PLATFORM(COCOA)
+    pid_t pid = WKContextGetDatabaseProcessIdentifier(m_context.get());
+    fprintf(stderr, "#CRASHED - %s (pid %ld)\n", databaseProcessName(), static_cast<long>(pid));
+#else
+    fprintf(stderr, "#CRASHED - %s\n", databaseProcessName());
+#endif
+    exit(1);
+}
+
 // WKPageNavigationClient
 
 void TestController::didCommitNavigation(WKPageRef page, WKNavigationRef navigation, WKTypeRef, const void* clientInfo)

Modified: trunk/Tools/WebKitTestRunner/TestController.h (196820 => 196821)


--- trunk/Tools/WebKitTestRunner/TestController.h	2016-02-19 16:49:28 UTC (rev 196820)
+++ trunk/Tools/WebKitTestRunner/TestController.h	2016-02-19 17:35:52 UTC (rev 196821)
@@ -114,6 +114,7 @@
 
     static const char* webProcessName();
     static const char* networkProcessName();
+    static const char* databaseProcessName();
 
     WorkQueueManager& workQueueManager() { return m_workQueueManager; }
 
@@ -185,6 +186,8 @@
     // WKContextClient
     static void networkProcessDidCrash(WKContextRef, const void*);
     void networkProcessDidCrash();
+    static void databaseProcessDidCrash(WKContextRef, const void*);
+    void databaseProcessDidCrash();
 
     // WKPageNavigationClient
     static void didCommitNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to