Title: [147489] trunk/Source/WebKit2
Revision
147489
Author
ander...@apple.com
Date
2013-04-02 13:00:25 -0700 (Tue, 02 Apr 2013)

Log Message

Add WKContextSetInvalidMessageFunction
https://bugs.webkit.org/show_bug.cgi?id=113820
<rdar://problem/12679817>

Reviewed by Tim Horton.

* UIProcess/API/C/WKContext.cpp:
(WKContextSetInvalidMessageFunction):
Call WebContext::didReceiveInvalidMessage.

* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::setInvalidMessageCallback):
Set the global variable.

(WebKit::WebContext::didReceiveInvalidMessage):
Construct a message name string and call the invalid message callback.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didReceiveInvalidMessage):
Call WebContext::didReceiveInvalidMessage.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (147488 => 147489)


--- trunk/Source/WebKit2/ChangeLog	2013-04-02 19:57:58 UTC (rev 147488)
+++ trunk/Source/WebKit2/ChangeLog	2013-04-02 20:00:25 UTC (rev 147489)
@@ -1,3 +1,27 @@
+2013-04-02  Anders Carlsson  <ander...@apple.com>
+
+        Add WKContextSetInvalidMessageFunction
+        https://bugs.webkit.org/show_bug.cgi?id=113820
+        <rdar://problem/12679817>
+
+        Reviewed by Tim Horton.
+
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextSetInvalidMessageFunction):
+        Call WebContext::didReceiveInvalidMessage.
+
+        * UIProcess/API/C/WKContextPrivate.h:
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::setInvalidMessageCallback):
+        Set the global variable.
+
+        (WebKit::WebContext::didReceiveInvalidMessage):
+        Construct a message name string and call the invalid message callback.
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::didReceiveInvalidMessage):
+        Call WebContext::didReceiveInvalidMessage.
+
 2013-04-02  Alexey Proskuryakov  <a...@apple.com>
 
         [Mac] Remove WKCreateNSURLConnectionDelegateProxy

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (147488 => 147489)


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2013-04-02 19:57:58 UTC (rev 147488)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2013-04-02 20:00:25 UTC (rev 147489)
@@ -373,6 +373,11 @@
     toImpl(contextRef)->setPlugInAutoStartOrigins(*toImpl(arrayRef));
 }
 
+void WKContextSetInvalidMessageFunction(WKContextInvalidMessageFunction invalidMessageFunction)
+{
+    WebContext::setInvalidMessageCallback(invalidMessageFunction);
+}
+
 // Deprecated functions.
 void _WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory)
 {

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h (147488 => 147489)


--- trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h	2013-04-02 19:57:58 UTC (rev 147488)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h	2013-04-02 20:00:25 UTC (rev 147489)
@@ -78,6 +78,9 @@
 // At some point it should be removed.
 WK_EXPORT void WKContextSetUsesNetworkProcess(WKContextRef context, bool usesNetworkProcess);
 
+typedef void (*WKContextInvalidMessageFunction)(WKStringRef messageName);
+WK_EXPORT void WKContextSetInvalidMessageFunction(WKContextInvalidMessageFunction invalidMessageFunction);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (147488 => 147489)


--- trunk/Source/WebKit2/UIProcess/WebContext.cpp	2013-04-02 19:57:58 UTC (rev 147488)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp	2013-04-02 20:00:25 UTC (rev 147489)
@@ -449,6 +449,26 @@
     }
 }
 
+void (*s_invalidMessageCallback)(WKStringRef messageName);
+
+void WebContext::setInvalidMessageCallback(void (*invalidMessageCallback)(WKStringRef messageName))
+{
+    s_invalidMessageCallback = invalidMessageCallback;
+}
+
+void WebContext::didReceiveInvalidMessage(const CoreIPC::StringReference& messageReceiverName, const CoreIPC::StringReference& messageName)
+{
+    if (!s_invalidMessageCallback)
+        return;
+
+    StringBuilder messageNameStringBuilder;
+    messageNameStringBuilder.append(messageReceiverName.data(), messageReceiverName.size());
+    messageNameStringBuilder.append(".");
+    messageNameStringBuilder.append(messageName.data(), messageName.size());
+
+    s_invalidMessageCallback(toAPI(WebString::create(messageNameStringBuilder.toString()).get()));
+}
+
 WebProcessProxy* WebContext::ensureSharedWebProcess()
 {
     ASSERT(m_processModel == ProcessModelSharedSecondaryProcess);

Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (147488 => 147489)


--- trunk/Source/WebKit2/UIProcess/WebContext.h	2013-04-02 19:57:58 UTC (rev 147488)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h	2013-04-02 20:00:25 UTC (rev 147489)
@@ -298,6 +298,9 @@
     bool ignoreTLSErrors() const { return m_ignoreTLSErrors; }
 #endif
 
+    static void setInvalidMessageCallback(void (*)(WKStringRef));
+    static void didReceiveInvalidMessage(const CoreIPC::StringReference& messageReceiverName, const CoreIPC::StringReference& messageName);
+
 private:
     WebContext(ProcessModel, const String& injectedBundlePath);
     void platformInitialize();

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (147488 => 147489)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2013-04-02 19:57:58 UTC (rev 147488)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2013-04-02 20:00:25 UTC (rev 147489)
@@ -411,7 +411,9 @@
 {
     WTFLogAlways("Received an invalid message \"%s.%s\" from the web process.\n", messageReceiverName.toString().data(), messageName.toString().data());
 
-    // Terminate the WebProcesses.
+    WebContext::didReceiveInvalidMessage(messageReceiverName, messageName);
+
+    // Terminate the WebProcess.
     terminate();
 
     // Since we've invalidated the connection we'll never get a CoreIPC::Connection::Client::didClose
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to