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