<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[182260] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/182260">182260</a></dd>
<dt>Author</dt> <dd>enrica@apple.com</dd>
<dt>Date</dt> <dd>2015-04-01 16:22:19 -0700 (Wed, 01 Apr 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Injected bundle messages should be at the page level.
https://bugs.webkit.org/show_bug.cgi?id=143283

Reviewed by Alexey Proskuryakov.

Source/WebKit2:

All the messages between the injected bundle and the UI
process should be page level messages instead of context.
The author of this patch is Tim Horton, I just finished it.

* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageInjectedBundleClient):
* UIProcess/API/C/WKPage.h:
* UIProcess/API/C/WKPageInjectedBundleClient.h: Added.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _pageForTesting]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/WebPageInjectedBundleClient.cpp: Added.
(WebKit::WebPageInjectedBundleClient::didReceiveMessageFromInjectedBundle):
(WebKit::WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
* UIProcess/WebPageInjectedBundleClient.h: Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setInjectedBundleClient):
(WebKit::WebPageProxy::handleMessage):
(WebKit::WebPageProxy::handleSynchronousMessage):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::injectedBundleClient):
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::handleMessage):
* WebKit2.xcodeproj/project.pbxproj:
* CMakeLists.txt:
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePagePostMessage):
(WKBundlePagePostSynchronousMessage):
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::postMessage):
(WebKit::WebPage::postSynchronousMessage):
* WebProcess/WebPage/WebPage.h:

Tools:

Updating WebKitTestRunner to use the new page level messaging.
The author of this patch is Tim Horton, I just finished it.

* WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
(WTR::EventSendingController::mouseDown):
(WTR::EventSendingController::mouseUp):
(WTR::EventSendingController::mouseMoveTo):
(WTR::EventSendingController::leapForward):
(WTR::EventSendingController::scheduleAsynchronousClick):
(WTR::EventSendingController::keyDown):
(WTR::EventSendingController::scheduleAsynchronousKeyDown):
(WTR::EventSendingController::mouseScrollBy):
(WTR::EventSendingController::mouseScrollByWithWheelAndMomentumPhases):
(WTR::EventSendingController::continuousMouseScrollBy):
(WTR::EventSendingController::addTouchPoint):
(WTR::EventSendingController::updateTouchPoint):
(WTR::EventSendingController::setTouchModifier):
(WTR::EventSendingController::setTouchPointRadius):
(WTR::EventSendingController::touchStart):
(WTR::EventSendingController::touchMove):
(WTR::EventSendingController::touchEnd):
(WTR::EventSendingController::touchCancel):
(WTR::EventSendingController::clearTouchPoints):
(WTR::EventSendingController::releaseTouchPoint):
(WTR::EventSendingController::cancelTouchPoint):
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::didReceiveMessage):
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::done):
(WTR::InjectedBundle::outputText):
(WTR::InjectedBundle::postNewBeforeUnloadReturnValue):
(WTR::InjectedBundle::postAddChromeInputField):
(WTR::InjectedBundle::postRemoveChromeInputField):
(WTR::InjectedBundle::postFocusWebView):
(WTR::InjectedBundle::postSetBackingScaleFactor):
(WTR::InjectedBundle::postSetWindowIsKey):
(WTR::InjectedBundle::postSimulateWebNotificationClick):
(WTR::InjectedBundle::postSetAddsVisitedLinks):
(WTR::InjectedBundle::setGeolocationPermission):
(WTR::InjectedBundle::setMockGeolocationPosition):
(WTR::InjectedBundle::setMockGeolocationPositionUnavailableError):
(WTR::InjectedBundle::setUserMediaPermission):
(WTR::InjectedBundle::setCustomPolicyDelegate):
(WTR::InjectedBundle::setHidden):
(WTR::InjectedBundle::setCacheModel):
(WTR::InjectedBundle::shouldProcessWorkQueue):
(WTR::InjectedBundle::processWorkQueue):
(WTR::InjectedBundle::queueBackNavigation):
(WTR::InjectedBundle::queueForwardNavigation):
(WTR::InjectedBundle::queueLoad):
(WTR::InjectedBundle::queueLoadHTMLString):
(WTR::InjectedBundle::queueReload):
(WTR::InjectedBundle::queueLoadingScript):
(WTR::InjectedBundle::queueNonLoadingScript):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setHandlesAuthenticationChallenges):
(WTR::TestRunner::setAuthenticationUsername):
(WTR::TestRunner::setAuthenticationPassword):
(WTR::TestRunner::secureEventInputIsEnabled):
(WTR::TestRunner::setBlockAllPlugins):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::didReceivePageMessageFromInjectedBundle):
(WTR::TestController::didReceiveSynchronousPageMessageFromInjectedBundle):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageh">trunk/Source/WebKit2/UIProcess/API/C/WKPage.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewInternalh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebProcessPoolcpp">trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePagecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePageh">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleEventSendingControllercpp">trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleInjectedBundlecpp">trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleTestRunnercpp">trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllercpp">trunk/Tools/WebKitTestRunner/TestController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllerh">trunk/Tools/WebKitTestRunner/TestController.h</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestInvocationcpp">trunk/Tools/WebKitTestRunner/TestInvocation.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageInjectedBundleClienth">trunk/Source/WebKit2/UIProcess/API/C/WKPageInjectedBundleClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageInjectedBundleClientcpp">trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageInjectedBundleClienth">trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/CMakeLists.txt        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -374,6 +374,7 @@
</span><span class="cx">     UIProcess/WebOriginDataManagerProxy.cpp
</span><span class="cx">     UIProcess/WebPageDiagnosticLoggingClient.cpp
</span><span class="cx">     UIProcess/WebPageGroup.cpp
</span><ins>+    UIProcess/WebPageInjectedBundleClient.cpp
</ins><span class="cx">     UIProcess/WebPageProxy.cpp
</span><span class="cx">     UIProcess/WebPasteboardProxy.cpp
</span><span class="cx">     UIProcess/WebPreferences.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/ChangeLog        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -1,3 +1,45 @@
</span><ins>+2015-04-01  Enrica Casucci  &lt;enrica@apple.com&gt;
+
+        Injected bundle messages should be at the page level.
+        https://bugs.webkit.org/show_bug.cgi?id=143283
+
+        Reviewed by Alexey Proskuryakov.
+
+        All the messages between the injected bundle and the UI
+        process should be page level messages instead of context.
+        The author of this patch is Tim Horton, I just finished it.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetPageInjectedBundleClient):
+        * UIProcess/API/C/WKPage.h:
+        * UIProcess/API/C/WKPageInjectedBundleClient.h: Added.
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _pageForTesting]):
+        * UIProcess/API/Cocoa/WKWebViewInternal.h:
+        * UIProcess/WebPageInjectedBundleClient.cpp: Added.
+        (WebKit::WebPageInjectedBundleClient::didReceiveMessageFromInjectedBundle):
+        (WebKit::WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
+        * UIProcess/WebPageInjectedBundleClient.h: Added.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::setInjectedBundleClient):
+        (WebKit::WebPageProxy::handleMessage):
+        (WebKit::WebPageProxy::handleSynchronousMessage):
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::injectedBundleClient):
+        * UIProcess/WebPageProxy.messages.in:
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::handleMessage):
+        * WebKit2.xcodeproj/project.pbxproj:
+        * CMakeLists.txt:
+        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+        (WKBundlePagePostMessage):
+        (WKBundlePagePostSynchronousMessage):
+        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::postMessage):
+        (WebKit::WebPage::postSynchronousMessage):
+        * WebProcess/WebPage/WebPage.h:
+
</ins><span class="cx"> 2015-04-01  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] WebContent should have access to the entirety of its caches directory
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -881,6 +881,11 @@
</span><span class="cx">     toImpl(pageRef)-&gt;initializeFindMatchesClient(wkClient);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKPageSetPageInjectedBundleClient(WKPageRef pageRef, const WKPageInjectedBundleClientBase* wkClient)
+{
+    toImpl(pageRef)-&gt;setInjectedBundleClient(wkClient);
+}
+
</ins><span class="cx"> void WKPageSetPageFormClient(WKPageRef pageRef, const WKPageFormClientBase* wkClient)
</span><span class="cx"> {
</span><span class="cx">     toImpl(pageRef)-&gt;setFormClient(std::make_unique&lt;WebFormClient&gt;(wkClient));
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &lt;WebKit/WKPageFindClient.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageFindMatchesClient.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageFormClient.h&gt;
</span><ins>+#include &lt;WebKit/WKPageInjectedBundleClient.h&gt;
</ins><span class="cx"> #include &lt;WebKit/WKPageLoadTypes.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageLoaderClient.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageNavigationClient.h&gt;
</span><span class="lines">@@ -214,6 +215,7 @@
</span><span class="cx"> WK_EXPORT void WKPageSetPageFindMatchesClient(WKPageRef page, const WKPageFindMatchesClientBase* client);
</span><span class="cx"> WK_EXPORT void WKPageSetPageFormClient(WKPageRef page, const WKPageFormClientBase* client);
</span><span class="cx"> WK_EXPORT void WKPageSetPageUIClient(WKPageRef page, const WKPageUIClientBase* client);
</span><ins>+WK_EXPORT void WKPageSetPageInjectedBundleClient(WKPageRef page, const WKPageInjectedBundleClientBase* client);
</ins><span class="cx"> 
</span><span class="cx"> // A client can implement either a navigation client or loader and policy clients, but never both.
</span><span class="cx"> WK_EXPORT void WKPageSetPageLoaderClient(WKPageRef page, const WKPageLoaderClientBase* client);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageInjectedBundleClienth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKPageInjectedBundleClient.h (0 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPageInjectedBundleClient.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageInjectedBundleClient.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKPageInjectedBundleClient_h
+#define WKPageInjectedBundleClient_h
+
+#include &lt;WebKit/WKBase.h&gt;
+
+typedef void (*WKPageDidReceiveMessageFromInjectedBundleCallback)(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo);
+typedef void (*WKPageDidReceiveSynchronousMessageFromInjectedBundleCallback)(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void *clientInfo);
+typedef WKTypeRef (*WKPageGetInjectedBundleInitializationUserDataCallback)(WKPageRef page, const void *clientInfo);
+
+typedef struct WKPageInjectedBundleClientBase {
+    int                                                                 version;
+    const void *                                                        clientInfo;
+} WKPageInjectedBundleClientBase;
+
+typedef struct WKPageInjectedBundleClientV0 {
+    WKPageInjectedBundleClientBase                                   base;
+
+    // Version 0.
+    WKPageDidReceiveMessageFromInjectedBundleCallback                didReceiveMessageFromInjectedBundle;
+    WKPageDidReceiveSynchronousMessageFromInjectedBundleCallback     didReceiveSynchronousMessageFromInjectedBundle;
+} WKPageInjectedBundleClientV0;
+
+#endif // WKPageInjectedBundleClient_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -620,6 +620,11 @@
</span><span class="cx">     _page-&gt;setCustomUserAgent(customUserAgent);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (WKPageRef)_pageForTesting
+{
+    return toAPI(_page.get());
+}
+
</ins><span class="cx"> #pragma mark iOS-specific methods
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewInternalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -46,6 +46,8 @@
</span><span class="cx"> #define WK_WEB_VIEW_PROTOCOLS
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+typedef const struct OpaqueWKPage* WKPageRef;
+
</ins><span class="cx"> namespace WebKit {
</span><span class="cx"> class ViewSnapshot;
</span><span class="cx"> class WebPageProxy;
</span><span class="lines">@@ -106,6 +108,8 @@
</span><span class="cx"> @property (nonatomic, setter=_setIgnoresNonWheelEvents:) BOOL _ignoresNonWheelEvents;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+- (WKPageRef)_pageForTesting;
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> WKWebView* fromWebPageProxy(WebKit::WebPageProxy&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageInjectedBundleClientcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp (0 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebPageInjectedBundleClient.h&quot;
+
+#include &quot;WKAPICast.h&quot;
+#include &quot;WebProcessPool.h&quot;
+#include &lt;wtf/text/WTFString.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+void WebPageInjectedBundleClient::didReceiveMessageFromInjectedBundle(WebPageProxy* page, const String&amp; messageName, API::Object* messageBody)
+{
+    if (!m_client.didReceiveMessageFromInjectedBundle)
+        return;
+
+    m_client.didReceiveMessageFromInjectedBundle(toAPI(page), toAPI(messageName.impl()), toAPI(messageBody), m_client.base.clientInfo);
+}
+
+void WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle(WebPageProxy* page, const String&amp; messageName, API::Object* messageBody, RefPtr&lt;API::Object&gt;&amp; returnData)
+{
+    if (!m_client.didReceiveSynchronousMessageFromInjectedBundle)
+        return;
+
+    WKTypeRef returnDataRef = 0;
+    m_client.didReceiveSynchronousMessageFromInjectedBundle(toAPI(page), toAPI(messageName.impl()), toAPI(messageBody), &amp;returnDataRef, m_client.base.clientInfo);
+    returnData = adoptRef(toImpl(returnDataRef));
+}
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageInjectedBundleClienth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.h (0 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/WebPageInjectedBundleClient.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebPageInjectedBundleClient_h
+#define WebPageInjectedBundleClient_h
+
+#include &quot;APIClient.h&quot;
+#include &quot;WKPage.h&quot;
+#include &lt;wtf/Forward.h&gt;
+
+namespace API {
+class Object;
+
+template&lt;&gt; struct ClientTraits&lt;WKPageInjectedBundleClientBase&gt; {
+    typedef std::tuple&lt;WKPageInjectedBundleClientV0&gt; Versions;
+};
+}
+
+namespace WebKit {
+
+class WebPageProxy;
+
+class WebPageInjectedBundleClient : public API::Client&lt;WKPageInjectedBundleClientBase&gt; {
+public:
+    void didReceiveMessageFromInjectedBundle(WebPageProxy*, const String&amp;, API::Object*);
+    void didReceiveSynchronousMessageFromInjectedBundle(WebPageProxy*, const String&amp;, API::Object*, RefPtr&lt;API::Object&gt;&amp; returnData);
+};
+
+} // namespace WebKit
+
+#endif // WebPageInjectedBundleClient_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -604,6 +604,36 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void WebPageProxy::setInjectedBundleClient(const WKPageInjectedBundleClientBase* client)
+{
+    if (!client) {
+        m_injectedBundleClient = nullptr;
+        return;
+    }
+
+    m_injectedBundleClient = std::make_unique&lt;WebPageInjectedBundleClient&gt;();
+    m_injectedBundleClient-&gt;initialize(client);
+}
+
+void WebPageProxy::handleMessage(IPC::Connection&amp; connection, const String&amp; messageName, const WebKit::UserData&amp; messageBody)
+{
+    auto* webProcessProxy = WebProcessProxy::fromConnection(&amp;connection);
+    if (!webProcessProxy || !m_injectedBundleClient)
+        return;
+    m_injectedBundleClient-&gt;didReceiveMessageFromInjectedBundle(this, messageName, webProcessProxy-&gt;transformHandlesToObjects(messageBody.object()).get());
+}
+
+void WebPageProxy::handleSynchronousMessage(IPC::Connection&amp; connection, const String&amp; messageName, const UserData&amp; messageBody, UserData&amp; returnUserData)
+{
+    if (!WebProcessProxy::fromConnection(&amp;connection) || !m_injectedBundleClient)
+        return;
+
+    RefPtr&lt;API::Object&gt; returnData;
+    m_injectedBundleClient-&gt;didReceiveSynchronousMessageFromInjectedBundle(this, messageName, WebProcessProxy::fromConnection(&amp;connection)-&gt;transformHandlesToObjects(messageBody.object()).get(), returnData);
+    returnUserData = UserData(WebProcessProxy::fromConnection(&amp;connection)-&gt;transformObjectsToHandles(returnData.get()));
+}
+
+
</ins><span class="cx"> void WebPageProxy::reattachToWebProcess()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_isClosed);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -57,6 +57,7 @@
</span><span class="cx"> #include &quot;WebFrameProxy.h&quot;
</span><span class="cx"> #include &quot;WebPageCreationParameters.h&quot;
</span><span class="cx"> #include &quot;WebPageDiagnosticLoggingClient.h&quot;
</span><ins>+#include &quot;WebPageInjectedBundleClient.h&quot;
</ins><span class="cx"> #include &quot;WebPreferences.h&quot;
</span><span class="cx"> #include &lt;WebCore/AlternativeTextClient.h&gt; // FIXME: Needed by WebPageProxyMessages.h for DICTATION_ALTERNATIVES.
</span><span class="cx"> #include &quot;WebPageProxyMessages.h&quot;
</span><span class="lines">@@ -330,6 +331,8 @@
</span><span class="cx">     void setHistoryClient(std::unique_ptr&lt;API::HistoryClient&gt;);
</span><span class="cx">     void setLoaderClient(std::unique_ptr&lt;API::LoaderClient&gt;);
</span><span class="cx">     void setPolicyClient(std::unique_ptr&lt;API::PolicyClient&gt;);
</span><ins>+    void setInjectedBundleClient(const WKPageInjectedBundleClientBase*);
+    WebPageInjectedBundleClient* injectedBundleClient() { return m_injectedBundleClient.get(); }
</ins><span class="cx"> 
</span><span class="cx">     API::UIClient&amp; uiClient() { return *m_uiClient; }
</span><span class="cx">     void setUIClient(std::unique_ptr&lt;API::UIClient&gt;);
</span><span class="lines">@@ -1414,6 +1417,9 @@
</span><span class="cx"> 
</span><span class="cx">     void handleAutoFillButtonClick(const UserData&amp;);
</span><span class="cx"> 
</span><ins>+    void handleMessage(IPC::Connection&amp;, const String&amp; messageName, const UserData&amp; messageBody);
+    void handleSynchronousMessage(IPC::Connection&amp;, const String&amp; messageName, const UserData&amp; messageBody, UserData&amp; returnUserData);
+
</ins><span class="cx">     PageClient&amp; m_pageClient;
</span><span class="cx">     std::unique_ptr&lt;API::LoaderClient&gt; m_loaderClient;
</span><span class="cx">     std::unique_ptr&lt;API::PolicyClient&gt; m_policyClient;
</span><span class="lines">@@ -1430,6 +1436,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     std::unique_ptr&lt;API::ContextMenuClient&gt; m_contextMenuClient;
</span><span class="cx"> #endif
</span><ins>+    std::unique_ptr&lt;WebPageInjectedBundleClient&gt; m_injectedBundleClient;
</ins><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;WebNavigationState&gt; m_navigationState;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -426,6 +426,8 @@
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     DidPerformActionMenuHitTest(struct WebKit::ActionMenuHitTestResult result, bool forImmediateAction, WebKit::UserData userData)
</span><span class="cx"> #endif
</span><ins>+    HandleMessage(String messageName, WebKit::UserData messageBody) WantsConnection
+    HandleSynchronousMessage(String messageName, WebKit::UserData messageBody) -&gt; (WebKit::UserData returnData) WantsConnection
</ins><span class="cx"> 
</span><span class="cx">     HandleAutoFillButtonClick(WebKit::UserData userData);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebProcessPoolcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -1310,7 +1310,6 @@
</span><span class="cx">     auto* webProcessProxy = WebProcessProxy::fromConnection(&amp;connection);
</span><span class="cx">     if (!webProcessProxy)
</span><span class="cx">         return;
</span><del>-
</del><span class="cx">     m_injectedBundleClient.didReceiveMessageFromInjectedBundle(this, messageName, webProcessProxy-&gt;transformHandlesToObjects(messageBody.object()).get());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -638,6 +638,9 @@
</span><span class="cx">                 2D8710171828415D0018FA01 /* PlatformCALayerRemoteCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8710151828415D0018FA01 /* PlatformCALayerRemoteCustom.h */; };
</span><span class="cx">                 2D8949F0182044F600E898AA /* PlatformCALayerRemoteTiledBacking.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D8949EE182044F600E898AA /* PlatformCALayerRemoteTiledBacking.cpp */; };
</span><span class="cx">                 2D8949F1182044F600E898AA /* PlatformCALayerRemoteTiledBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8949EF182044F600E898AA /* PlatformCALayerRemoteTiledBacking.h */; };
</span><ins>+                2D9EA30D1A96CB59002D2807 /* WKPageInjectedBundleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9EA30C1A96CB59002D2807 /* WKPageInjectedBundleClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                2D9EA30F1A96CBFF002D2807 /* WebPageInjectedBundleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */; };
+                2D9EA3111A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */; };
</ins><span class="cx">                 2DA049B3180CCCD300AAFA9E /* PlatformCALayerRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DA049B1180CCCD300AAFA9E /* PlatformCALayerRemote.cpp */; };
</span><span class="cx">                 2DA049B4180CCCD300AAFA9E /* PlatformCALayerRemote.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA049B2180CCCD300AAFA9E /* PlatformCALayerRemote.h */; };
</span><span class="cx">                 2DA049B7180CCD0A00AAFA9E /* GraphicsLayerCARemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DA049B5180CCD0A00AAFA9E /* GraphicsLayerCARemote.cpp */; };
</span><span class="lines">@@ -2797,6 +2800,9 @@
</span><span class="cx">                 2D8710151828415D0018FA01 /* PlatformCALayerRemoteCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerRemoteCustom.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D8949EE182044F600E898AA /* PlatformCALayerRemoteTiledBacking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformCALayerRemoteTiledBacking.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D8949EF182044F600E898AA /* PlatformCALayerRemoteTiledBacking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerRemoteTiledBacking.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2D9EA30C1A96CB59002D2807 /* WKPageInjectedBundleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageInjectedBundleClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageInjectedBundleClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageInjectedBundleClient.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2DA049B1180CCCD300AAFA9E /* PlatformCALayerRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformCALayerRemote.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DA049B2180CCCD300AAFA9E /* PlatformCALayerRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerRemote.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DA049B5180CCD0A00AAFA9E /* GraphicsLayerCARemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayerCARemote.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -6236,6 +6242,8 @@
</span><span class="cx">                                 8372DB271A67562800C697C5 /* WebPageDiagnosticLoggingClient.h */,
</span><span class="cx">                                 BC7B6205129A0A6700D174A4 /* WebPageGroup.cpp */,
</span><span class="cx">                                 BC7B6204129A0A6700D174A4 /* WebPageGroup.h */,
</span><ins>+                                2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */,
+                                2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */,
</ins><span class="cx">                                 BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */,
</span><span class="cx">                                 BC032DCB10F4389F0058C15A /* WebPageProxy.h */,
</span><span class="cx">                                 BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */,
</span><span class="lines">@@ -6405,6 +6413,7 @@
</span><span class="cx">                                 1AB8A1EF18400B0000E9AE69 /* WKPageFormClient.h */,
</span><span class="cx">                                 BC7B633612A45ABA00D174A4 /* WKPageGroup.cpp */,
</span><span class="cx">                                 BC7B633512A45ABA00D174A4 /* WKPageGroup.h */,
</span><ins>+                                2D9EA30C1A96CB59002D2807 /* WKPageInjectedBundleClient.h */,
</ins><span class="cx">                                 1AB8A1EB1840080900E9AE69 /* WKPageLoaderClient.h */,
</span><span class="cx">                                 2D7303781A7C2B7500F8F487 /* WKPageNavigationClient.h */,
</span><span class="cx">                                 1AB8A1ED18400ACB00E9AE69 /* WKPagePolicyClient.h */,
</span><span class="lines">@@ -7639,6 +7648,7 @@
</span><span class="cx">                                 51BA24441858EE3000EA2811 /* AsyncTask.h in Headers */,
</span><span class="cx">                                 BCEE966D112FAF57006BCC24 /* Attachment.h in Headers */,
</span><span class="cx">                                 E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */,
</span><ins>+                                2D9EA30F1A96CBFF002D2807 /* WebPageInjectedBundleClient.h in Headers */,
</ins><span class="cx">                                 512F589712A8838800629530 /* AuthenticationChallengeProxy.h in Headers */,
</span><span class="cx">                                 512F589912A8838800629530 /* AuthenticationDecisionListener.h in Headers */,
</span><span class="cx">                                 518E8EF916B2091C00E91429 /* AuthenticationManager.h in Headers */,
</span><span class="lines">@@ -8179,6 +8189,7 @@
</span><span class="cx">                                 8372DB2F1A677D4A00C697C5 /* WKDiagnosticLoggingResultType.h in Headers */,
</span><span class="cx">                                 1AB474E4184D44980051B622 /* WKBundlePageContextMenuClient.h in Headers */,
</span><span class="cx">                                 1AB474E8184D44D00051B622 /* WKBundlePageDiagnosticLoggingClient.h in Headers */,
</span><ins>+                                2D9EA30D1A96CB59002D2807 /* WKPageInjectedBundleClient.h in Headers */,
</ins><span class="cx">                                 7C89D2BC1A6B0F5B003A5FDE /* _WKUserContentFilterInternal.h in Headers */,
</span><span class="cx">                                 1AB474E0184D446A0051B622 /* WKBundlePageEditorClient.h in Headers */,
</span><span class="cx">                                 1AB474E2184D44800051B622 /* WKBundlePageFormClient.h in Headers */,
</span><span class="lines">@@ -9919,6 +9930,7 @@
</span><span class="cx">                                 51FB08FF1639DE1A00EC324A /* WebResourceLoadScheduler.cpp in Sources */,
</span><span class="cx">                                 7C361D721927FA360036A59D /* WebScriptMessageHandler.cpp in Sources */,
</span><span class="cx">                                 D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */,
</span><ins>+                                2D9EA3111A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp in Sources */,
</ins><span class="cx">                                 1A53C2A91A32572B004E8C70 /* WebsiteDataStore.cpp in Sources */,
</span><span class="cx">                                 CEDBA84719FDA00A006866A5 /* WebSQLiteDatabaseTracker.cpp in Sources */,
</span><span class="cx">                                 1A52C0F71A38CDC70016160A /* WebStorageNamespaceProvider.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -572,3 +572,17 @@
</span><span class="cx">     toImpl(pageRef)-&gt;setUseTestingViewportConfiguration(useTestingViewportConfiguration);
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><ins>+
+void WKBundlePagePostMessage(WKBundlePageRef pageRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef)
+{
+    toImpl(pageRef)-&gt;postMessage(toWTFString(messageNameRef), toImpl(messageBodyRef));
+}
+
+void WKBundlePagePostSynchronousMessage(WKBundlePageRef pageRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef, WKTypeRef* returnDataRef)
+{
+    RefPtr&lt;API::Object&gt; returnData;
+    toImpl(pageRef)-&gt;postSynchronousMessage(toWTFString(messageNameRef), toImpl(messageBodyRef), returnData);
+    if (returnDataRef)
+        *returnDataRef = toAPI(returnData.release().leakRef());
+}
+
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -109,6 +109,9 @@
</span><span class="cx"> 
</span><span class="cx"> WK_EXPORT bool WKBundlePageIsUsingEphemeralSession(WKBundlePageRef page);
</span><span class="cx"> 
</span><ins>+WK_EXPORT void WKBundlePagePostMessage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody);
+WK_EXPORT void WKBundlePagePostSynchronousMessage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData);
+
</ins><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -4832,4 +4832,20 @@
</span><span class="cx">     updateMainFrameScrollOffsetPinning();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPage::postMessage(const String&amp; messageName, API::Object* messageBody)
+{
+    send(Messages::WebPageProxy::HandleMessage(messageName, UserData(WebProcess::singleton().transformObjectsToHandles(messageBody))));
+}
+
+void WebPage::postSynchronousMessage(const String&amp; messageName, API::Object* messageBody, RefPtr&lt;API::Object&gt;&amp; returnData)
+{
+    UserData returnUserData;
+
+    auto&amp; webProcess = WebProcess::singleton();
+    if (!sendSync(Messages::WebPageProxy::HandleSynchronousMessage(messageName, UserData(webProcess.transformObjectsToHandles(messageBody))), Messages::WebPageProxy::HandleSynchronousMessage::Reply(returnUserData)))
+        returnData = nullptr;
+    else
+        returnData = webProcess.transformHandlesToObjects(returnUserData.object());
+}
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -865,6 +865,9 @@
</span><span class="cx"> 
</span><span class="cx">     void setPageActivityState(WebCore::PageActivityState::Flags);
</span><span class="cx"> 
</span><ins>+    void postMessage(const String&amp; messageName, API::Object* messageBody);
+    void postSynchronousMessage(const String&amp; messageName, API::Object* messageBody, RefPtr&lt;API::Object&gt;&amp; returnData);
+
</ins><span class="cx"> private:
</span><span class="cx">     WebPage(uint64_t pageID, const WebPageCreationParameters&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/ChangeLog        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -1,3 +1,80 @@
</span><ins>+2015-04-01  Enrica Casucci  &lt;enrica@apple.com&gt;
+
+        Injected bundle messages should be at the page level.
+        https://bugs.webkit.org/show_bug.cgi?id=143283
+
+        Reviewed by Alexey Proskuryakov.
+
+        Updating WebKitTestRunner to use the new page level messaging.
+        The author of this patch is Tim Horton, I just finished it.
+
+        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
+        (WTR::EventSendingController::mouseDown):
+        (WTR::EventSendingController::mouseUp):
+        (WTR::EventSendingController::mouseMoveTo):
+        (WTR::EventSendingController::leapForward):
+        (WTR::EventSendingController::scheduleAsynchronousClick):
+        (WTR::EventSendingController::keyDown):
+        (WTR::EventSendingController::scheduleAsynchronousKeyDown):
+        (WTR::EventSendingController::mouseScrollBy):
+        (WTR::EventSendingController::mouseScrollByWithWheelAndMomentumPhases):
+        (WTR::EventSendingController::continuousMouseScrollBy):
+        (WTR::EventSendingController::addTouchPoint):
+        (WTR::EventSendingController::updateTouchPoint):
+        (WTR::EventSendingController::setTouchModifier):
+        (WTR::EventSendingController::setTouchPointRadius):
+        (WTR::EventSendingController::touchStart):
+        (WTR::EventSendingController::touchMove):
+        (WTR::EventSendingController::touchEnd):
+        (WTR::EventSendingController::touchCancel):
+        (WTR::EventSendingController::clearTouchPoints):
+        (WTR::EventSendingController::releaseTouchPoint):
+        (WTR::EventSendingController::cancelTouchPoint):
+        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
+        (WTR::InjectedBundle::didReceiveMessage):
+        (WTR::InjectedBundle::didReceiveMessageToPage):
+        (WTR::InjectedBundle::done):
+        (WTR::InjectedBundle::outputText):
+        (WTR::InjectedBundle::postNewBeforeUnloadReturnValue):
+        (WTR::InjectedBundle::postAddChromeInputField):
+        (WTR::InjectedBundle::postRemoveChromeInputField):
+        (WTR::InjectedBundle::postFocusWebView):
+        (WTR::InjectedBundle::postSetBackingScaleFactor):
+        (WTR::InjectedBundle::postSetWindowIsKey):
+        (WTR::InjectedBundle::postSimulateWebNotificationClick):
+        (WTR::InjectedBundle::postSetAddsVisitedLinks):
+        (WTR::InjectedBundle::setGeolocationPermission):
+        (WTR::InjectedBundle::setMockGeolocationPosition):
+        (WTR::InjectedBundle::setMockGeolocationPositionUnavailableError):
+        (WTR::InjectedBundle::setUserMediaPermission):
+        (WTR::InjectedBundle::setCustomPolicyDelegate):
+        (WTR::InjectedBundle::setHidden):
+        (WTR::InjectedBundle::setCacheModel):
+        (WTR::InjectedBundle::shouldProcessWorkQueue):
+        (WTR::InjectedBundle::processWorkQueue):
+        (WTR::InjectedBundle::queueBackNavigation):
+        (WTR::InjectedBundle::queueForwardNavigation):
+        (WTR::InjectedBundle::queueLoad):
+        (WTR::InjectedBundle::queueLoadHTMLString):
+        (WTR::InjectedBundle::queueReload):
+        (WTR::InjectedBundle::queueLoadingScript):
+        (WTR::InjectedBundle::queueNonLoadingScript):
+        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
+        (WTR::TestRunner::setHandlesAuthenticationChallenges):
+        (WTR::TestRunner::setAuthenticationUsername):
+        (WTR::TestRunner::setAuthenticationPassword):
+        (WTR::TestRunner::secureEventInputIsEnabled):
+        (WTR::TestRunner::setBlockAllPlugins):
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::createWebViewWithOptions):
+        (WTR::TestController::resetStateToConsistentValues):
+        (WTR::TestController::didReceivePageMessageFromInjectedBundle):
+        (WTR::TestController::didReceiveSynchronousPageMessageFromInjectedBundle):
+        * WebKitTestRunner/TestController.h:
+        * WebKitTestRunner/TestInvocation.cpp:
+        (WTR::TestInvocation::invoke):
+        (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
+
</ins><span class="cx"> 2015-04-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r182174 and r182177.
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleEventSendingControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -208,8 +208,8 @@
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::mouseDown(int button, JSValueRef modifierArray) 
</span><span class="cx"> {
</span><del>-    auto&amp; injectedBungle = InjectedBundle::singleton();
-    WKBundlePageRef page = injectedBungle.page()-&gt;page();
</del><ins>+    auto&amp; injectedBundle = InjectedBundle::singleton();
+    WKBundlePageRef page = injectedBundle.page()-&gt;page();
</ins><span class="cx">     WKBundleFrameRef frame = WKBundlePageGetMainFrame(page);
</span><span class="cx">     JSContextRef context = WKBundleFrameGetJavaScriptContext(frame);
</span><span class="cx">     WKEventModifiers modifiers = parseModifierArray(context, modifierArray);
</span><span class="lines">@@ -217,7 +217,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;EventSender&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKMutableDictionaryRef&gt; EventSenderMessageBody(AdoptWK, createMouseMessageBody(MouseDown, button, modifiers));
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(injectedBungle.bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(page, EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::mouseUp(int button, JSValueRef modifierArray)
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;EventSender&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKMutableDictionaryRef&gt; EventSenderMessageBody(AdoptWK, createMouseMessageBody(MouseUp, button, modifiers));
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::mouseMoveTo(int x, int y)
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKDoubleRef&gt; yRef(AdoptWK, WKDoubleCreate(y));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::leapForward(int milliseconds)
</span><span class="lines">@@ -266,7 +266,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; timeRef(AdoptWK, WKUInt64Create(milliseconds));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), timeKey.get(), timeRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::scheduleAsynchronousClick()
</span><span class="lines">@@ -278,11 +278,11 @@
</span><span class="cx"> 
</span><span class="cx">     // Asynchronous mouse down.
</span><span class="cx">     WKRetainPtr&lt;WKMutableDictionaryRef&gt; mouseDownMessageBody(AdoptWK, createMouseMessageBody(MouseDown, button, modifiers));
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), mouseDownMessageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), mouseDownMessageBody.get());
</ins><span class="cx"> 
</span><span class="cx">     // Asynchronous mouse up.
</span><span class="cx">     WKRetainPtr&lt;WKMutableDictionaryRef&gt; mouseUpMessageBody(AdoptWK, createMouseMessageBody(MouseUp, button, modifiers));
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), mouseUpMessageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), mouseUpMessageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static WKRetainPtr&lt;WKMutableDictionaryRef&gt; createKeyDownMessageBody(JSStringRef key, WKEventModifiers modifiers, int location)
</span><span class="lines">@@ -317,7 +317,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;EventSender&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKMutableDictionaryRef&gt; keyDownMessageBody = createKeyDownMessageBody(key, modifiers, location);
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), keyDownMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), keyDownMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::scheduleAsynchronousKeyDown(JSStringRef key)
</span><span class="lines">@@ -325,7 +325,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;EventSender&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKMutableDictionaryRef&gt; keyDownMessageBody = createKeyDownMessageBody(key, 0 /* modifiers */, 0 /* location */);
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), keyDownMessageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), keyDownMessageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::mouseScrollBy(int x, int y)
</span><span class="lines">@@ -345,7 +345,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKDoubleRef&gt; yRef(AdoptWK, WKDoubleCreate(y));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::mouseScrollByWithWheelAndMomentumPhases(int x, int y, JSStringRef phaseStr, JSStringRef momentumStr, bool asyncScrolling)
</span><span class="lines">@@ -398,9 +398,9 @@
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), momentumKey.get(), momentumRef.get());
</span><span class="cx"> 
</span><span class="cx">     if (asyncScrolling)
</span><del>-        WKBundlePostMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get());
</del><ins>+        WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get());
</ins><span class="cx">     else
</span><del>-        WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+        WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::continuousMouseScrollBy(int x, int y, bool paged)
</span><span class="lines">@@ -424,7 +424,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; pagedRef(AdoptWK, WKUInt64Create(paged));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), pagedKey.get(), pagedRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValueRef EventSendingController::contextClick()
</span><span class="lines">@@ -519,7 +519,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; yRef(AdoptWK, WKUInt64Create(y));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::updateTouchPoint(int index, int x, int y)
</span><span class="lines">@@ -543,7 +543,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; yRef(AdoptWK, WKUInt64Create(y));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::setTouchModifier(const JSStringRef &amp;modifier, bool enable)
</span><span class="lines">@@ -573,7 +573,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; enableRef(AdoptWK, WKUInt64Create(enable));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), enableKey.get(), enableRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -594,7 +594,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; yRef(AdoptWK, WKUInt64Create(radiusY));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::touchStart()
</span><span class="lines">@@ -606,7 +606,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; subMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;TouchStart&quot;));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::touchMove()
</span><span class="lines">@@ -618,7 +618,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; subMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;TouchMove&quot;));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::touchEnd()
</span><span class="lines">@@ -630,7 +630,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; subMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;TouchEnd&quot;));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::touchCancel()
</span><span class="lines">@@ -642,7 +642,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; subMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;TouchCancel&quot;));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::clearTouchPoints()
</span><span class="lines">@@ -654,7 +654,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; subMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;ClearTouchPoints&quot;));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::releaseTouchPoint(int index)
</span><span class="lines">@@ -670,7 +670,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; indexRef(AdoptWK, WKUInt64Create(index));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void EventSendingController::cancelTouchPoint(int index)
</span><span class="lines">@@ -686,7 +686,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; indexRef(AdoptWK, WKUInt64Create(index));
</span><span class="cx">     WKDictionarySetItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleInjectedBundlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -133,6 +133,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
</span><span class="cx"> {
</span><ins>+    WKRetainPtr&lt;WKStringRef&gt; errorMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;Error&quot;));
+    WKRetainPtr&lt;WKStringRef&gt; errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString(&quot;Unknown&quot;));
+    WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
+}
+
+void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody)
+{
</ins><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;BeginTest&quot;)) {
</span><span class="cx">         ASSERT(messageBody);
</span><span class="cx">         ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
</span><span class="lines">@@ -149,12 +156,12 @@
</span><span class="cx"> 
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; ackMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;Ack&quot;));
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString(&quot;BeginTest&quot;));
</span><del>-        WKBundlePostMessage(m_bundle, ackMessageName.get(), ackMessageBody.get());
</del><ins>+        WKBundlePagePostMessage(page, ackMessageName.get(), ackMessageBody.get());
</ins><span class="cx"> 
</span><span class="cx">         beginTesting(messageBodyDictionary);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;Reset&quot;)) {
</span><span class="cx">         ASSERT(messageBody);
</span><span class="cx">         ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
</span><span class="lines">@@ -183,7 +190,7 @@
</span><span class="cx">         resetLocalSettings();
</span><span class="cx">         m_testRunner-&gt;removeAllWebNotificationPermissions();
</span><span class="cx"> 
</span><del>-        page()-&gt;resetAfterTest();
</del><ins>+        InjectedBundle::page()-&gt;resetAfterTest();
</ins><span class="cx"> 
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -206,26 +213,19 @@
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;CallSetBackingScaleFactorCallback&quot;)) {
</span><span class="cx">         m_testRunner-&gt;callSetBackingScaleFactorCallback();
</span><span class="cx">         return;
</span><del>-    }   
</del><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;WorkQueueProcessedCallback&quot;)) {
</span><span class="cx">         if (!topLoadingFrame() &amp;&amp; !m_testRunner-&gt;waitToDump())
</span><del>-            page()-&gt;dump();
</del><ins>+            InjectedBundle::page()-&gt;dump();
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; errorMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;Error&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString(&quot;Unknown&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
</del><ins>+    WKBundlePagePostMessage(page, errorMessageName.get(), errorMessageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody)
-{
-    WKRetainPtr&lt;WKStringRef&gt; errorMessageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;Error&quot;));
-    WKRetainPtr&lt;WKStringRef&gt; errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString(&quot;Unknown&quot;));
-    WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
-}
-
</del><span class="cx"> bool InjectedBundle::booleanForKey(WKDictionaryRef dictionary, const char* key)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; wkKey(AdoptWK, WKStringCreateWithUTF8CString(key));
</span><span class="lines">@@ -310,7 +310,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; audioResultKey = adoptWK(WKStringCreateWithUTF8CString(&quot;AudioResult&quot;));
</span><span class="cx">     WKDictionarySetItem(doneMessageBody.get(), audioResultKey.get(), m_audioResult.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(m_bundle, doneMessageName.get(), doneMessageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), doneMessageName.get(), doneMessageBody.get());
</ins><span class="cx"> 
</span><span class="cx">     closeOtherPages();
</span><span class="cx"> 
</span><span class="lines">@@ -343,67 +343,67 @@
</span><span class="cx">         return;
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;TextOutput&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageBody(AdoptWK, WKStringCreateWithUTF8CString(output.utf8().data()));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postNewBeforeUnloadReturnValue(bool value)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;BeforeUnloadReturnValue&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; messageBody(AdoptWK, WKBooleanCreate(value));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postAddChromeInputField()
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;AddChromeInputField&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postRemoveChromeInputField()
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;RemoveChromeInputField&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postFocusWebView()
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;FocusWebView&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postSetBackingScaleFactor(double backingScaleFactor)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetBackingScaleFactor&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKDoubleRef&gt; messageBody(AdoptWK, WKDoubleCreate(backingScaleFactor));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postSetWindowIsKey(bool isKey)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetWindowIsKey&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; messageBody(AdoptWK, WKBooleanCreate(isKey));
</span><del>-    WKBundlePostSynchronousMessage(m_bundle, messageName.get(), messageBody.get(), 0);
</del><ins>+    WKBundlePagePostSynchronousMessage(page()-&gt;page(), messageName.get(), messageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postSimulateWebNotificationClick(uint64_t notificationID)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SimulateWebNotificationClick&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; messageBody(AdoptWK, WKUInt64Create(notificationID));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::postSetAddsVisitedLinks(bool addsVisitedLinks)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetAddsVisitedLinks&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; messageBody(AdoptWK, WKBooleanCreate(addsVisitedLinks));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setGeolocationPermission(bool enabled)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetGeolocationPermission&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; messageBody(AdoptWK, WKBooleanCreate(enabled));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
</span><span class="lines">@@ -456,20 +456,20 @@
</span><span class="cx">     WKRetainPtr&lt;WKDoubleRef&gt; speedWK(AdoptWK, WKDoubleCreate(speed));
</span><span class="cx">     WKDictionarySetItem(messageBody.get(), speedKeyWK.get(), speedWK.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setMockGeolocationPositionUnavailableError(WKStringRef errorMessage)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetMockGeolocationPositionUnavailableError&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), errorMessage);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), errorMessage);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setUserMediaPermission(bool enabled)
</span><span class="cx"> {
</span><span class="cx">     auto messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;SetUserMediaPermission&quot;));
</span><span class="cx">     auto messageBody = adoptWK(WKBooleanCreate(enabled));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive)
</span><span class="lines">@@ -486,7 +486,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; permissiveWK(AdoptWK, WKBooleanCreate(permissive));
</span><span class="cx">     WKDictionarySetItem(messageBody.get(), permissiveKeyWK.get(), permissiveWK.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setHidden(bool hidden)
</span><span class="lines">@@ -498,14 +498,14 @@
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; isInitialWK(AdoptWK, WKBooleanCreate(hidden));
</span><span class="cx">     WKDictionarySetItem(messageBody.get(), isInitialKeyWK.get(), isInitialWK.get());
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::setCacheModel(int model)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetCacheModel&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; messageBody(AdoptWK, WKUInt64Create(model));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InjectedBundle::shouldProcessWorkQueue() const
</span><span class="lines">@@ -515,7 +515,7 @@
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;IsWorkQueueEmpty&quot;));
</span><span class="cx">     WKTypeRef resultToPass = 0;
</span><del>-    WKBundlePostSynchronousMessage(m_bundle, messageName.get(), 0, &amp;resultToPass);
</del><ins>+    WKBundlePagePostSynchronousMessage(page()-&gt;page(), messageName.get(), 0, &amp;resultToPass);
</ins><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; isEmpty(AdoptWK, static_cast&lt;WKBooleanRef&gt;(resultToPass));
</span><span class="cx"> 
</span><span class="cx">     return !WKBooleanGetValue(isEmpty.get());
</span><span class="lines">@@ -524,7 +524,7 @@
</span><span class="cx"> void InjectedBundle::processWorkQueue()
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;ProcessWorkQueue&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueBackNavigation(unsigned howFarBackward)
</span><span class="lines">@@ -533,7 +533,7 @@
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;QueueBackNavigation&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; messageBody(AdoptWK, WKUInt64Create(howFarBackward));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueForwardNavigation(unsigned howFarForward)
</span><span class="lines">@@ -542,7 +542,7 @@
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;QueueForwardNavigation&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; messageBody(AdoptWK, WKUInt64Create(howFarForward));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target)
</span><span class="lines">@@ -559,7 +559,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; targetKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;target&quot;));
</span><span class="cx">     WKDictionarySetItem(loadData.get(), targetKey.get(), target);
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), loadData.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), loadData.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueLoadHTMLString(WKStringRef content, WKStringRef baseURL, WKStringRef unreachableURL)
</span><span class="lines">@@ -583,7 +583,7 @@
</span><span class="cx">         WKDictionarySetItem(loadData.get(), unreachableURLKey.get(), unreachableURL);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), loadData.get());
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), loadData.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueReload()
</span><span class="lines">@@ -591,7 +591,7 @@
</span><span class="cx">     m_useWorkQueue = true;
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;QueueReload&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueLoadingScript(WKStringRef script)
</span><span class="lines">@@ -599,7 +599,7 @@
</span><span class="cx">     m_useWorkQueue = true;
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;QueueLoadingScript&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), script);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), script);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InjectedBundle::queueNonLoadingScript(WKStringRef script)
</span><span class="lines">@@ -607,7 +607,7 @@
</span><span class="cx">     m_useWorkQueue = true;
</span><span class="cx"> 
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;QueueNonLoadingScript&quot;));
</span><del>-    WKBundlePostMessage(m_bundle, messageName.get(), script);
</del><ins>+    WKBundlePagePostMessage(page()-&gt;page(), messageName.get(), script);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InjectedBundle::isAllowedHost(WKStringRef host)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleTestRunnercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -804,21 +804,21 @@
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetHandlesAuthenticationChallenge&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; messageBody(AdoptWK, WKBooleanCreate(handlesAuthenticationChallenges));
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestRunner::setAuthenticationUsername(JSStringRef username)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetAuthenticationUsername&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageBody(AdoptWK, WKStringCreateWithJSString(username));
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestRunner::setAuthenticationPassword(JSStringRef password)
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetAuthenticationPassword&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageBody(AdoptWK, WKStringCreateWithJSString(password));
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool TestRunner::secureEventInputIsEnabled() const
</span><span class="lines">@@ -826,7 +826,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SecureEventInputIsEnabled&quot;));
</span><span class="cx">     WKTypeRef returnData = 0;
</span><span class="cx"> 
</span><del>-    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), messageName.get(), 0, &amp;returnData);
</del><ins>+    WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), 0, &amp;returnData);
</ins><span class="cx">     return WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(returnData));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -834,7 +834,7 @@
</span><span class="cx"> {
</span><span class="cx">     WKRetainPtr&lt;WKStringRef&gt; messageName(AdoptWK, WKStringCreateWithUTF8CString(&quot;SetBlockAllPlugins&quot;));
</span><span class="cx">     WKRetainPtr&lt;WKBooleanRef&gt; messageBody(AdoptWK, WKBooleanCreate(shouldBlock));
</span><del>-    WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+    WKBundlePagePostMessage(InjectedBundle::singleton().page()-&gt;page(), messageName.get(), messageBody.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValueRef TestRunner::numberOfDFGCompiles(JSValueRef theFunction)
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -44,6 +44,7 @@
</span><span class="cx"> #include &lt;WebKit/WKNotificationPermissionRequest.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKNumber.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageGroup.h&gt;
</span><ins>+#include &lt;WebKit/WKPageInjectedBundleClient.h&gt;
</ins><span class="cx"> #include &lt;WebKit/WKPagePrivate.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPreferencesRefPrivate.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKProtectionSpace.h&gt;
</span><span class="lines">@@ -521,6 +522,15 @@
</span><span class="cx">     };
</span><span class="cx">     WKPageSetPageNavigationClient(m_mainWebView-&gt;page(), &amp;pageNavigationClient.base);
</span><span class="cx"> 
</span><ins>+
+    // this should just be done on the page?
+    WKPageInjectedBundleClientV0 injectedBundleClient = {
+        { 0, this },
+        didReceivePageMessageFromInjectedBundle,
+        didReceiveSynchronousPageMessageFromInjectedBundle
+    };
+    WKPageSetPageInjectedBundleClient(m_mainWebView-&gt;page(), &amp;injectedBundleClient.base);
+
</ins><span class="cx">     m_mainWebView-&gt;didInitializeClients();
</span><span class="cx"> 
</span><span class="cx">     // Generally, the tests should default to running at 1x. updateWindowScaleForTest() will adjust the scale to
</span><span class="lines">@@ -621,7 +631,7 @@
</span><span class="cx">     }
</span><span class="cx">     WKDictionarySetItem(resetMessageBody.get(), allowedHostsKey.get(), allowedHostsValue.get());
</span><span class="cx"> 
</span><del>-    WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), resetMessageBody.get());
</del><ins>+    WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), resetMessageBody.get());
</ins><span class="cx"> 
</span><span class="cx">     WKContextSetShouldUseFontSmoothing(TestController::singleton().context(), false);
</span><span class="cx"> 
</span><span class="lines">@@ -947,6 +957,18 @@
</span><span class="cx">     *returnData = static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody).leakRef();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// WKPageInjectedBundleClient
+
+void TestController::didReceivePageMessageFromInjectedBundle(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, const void* clientInfo)
+{
+    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveMessageFromInjectedBundle(messageName, messageBody);
+}
+
+void TestController::didReceiveSynchronousPageMessageFromInjectedBundle(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void* clientInfo)
+{
+    *returnData = static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody).leakRef();
+}
+
</ins><span class="cx"> void TestController::networkProcessDidCrash(WKContextRef context, const void *clientInfo)
</span><span class="cx"> {
</span><span class="cx">     static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;networkProcessDidCrash();
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.h (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.h        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/WebKitTestRunner/TestController.h        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -146,6 +146,10 @@
</span><span class="cx">     // WKContextInjectedBundleClient
</span><span class="cx">     static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messageName, WKTypeRef messageBody, const void*);
</span><span class="cx">     static void didReceiveSynchronousMessageFromInjectedBundle(WKContextRef, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void*);
</span><ins>+
+    // WKPageInjectedBundleClient
+    static void didReceivePageMessageFromInjectedBundle(WKPageRef, WKStringRef messageName, WKTypeRef messageBody, const void*);
+    static void didReceiveSynchronousPageMessageFromInjectedBundle(WKPageRef, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void*);
</ins><span class="cx">     void didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);
</span><span class="cx">     WKRetainPtr&lt;WKTypeRef&gt; didReceiveSynchronousMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestInvocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestInvocation.cpp (182259 => 182260)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2015-04-01 22:50:53 UTC (rev 182259)
+++ trunk/Tools/WebKitTestRunner/TestInvocation.cpp        2015-04-01 23:22:19 UTC (rev 182260)
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx">     WKRetainPtr&lt;WKUInt64Ref&gt; timeoutValue = adoptWK(WKUInt64Create(m_timeout));
</span><span class="cx">     WKDictionarySetItem(beginTestMessageBody.get(), timeoutKey.get(), timeoutValue.get());
</span><span class="cx"> 
</span><del>-    WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), beginTestMessageBody.get());
</del><ins>+    WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), beginTestMessageBody.get());
</ins><span class="cx"> 
</span><span class="cx">     TestController::singleton().runUntil(m_gotInitialResponse, TestController::shortTimeout);
</span><span class="cx">     if (!m_gotInitialResponse) {
</span><span class="lines">@@ -369,21 +369,21 @@
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;AddChromeInputField&quot;)) {
</span><span class="cx">         TestController::singleton().mainWebView()-&gt;addChromeInputField();
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;CallAddChromeInputFieldCallback&quot;));
</span><del>-        WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+        WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;RemoveChromeInputField&quot;)) {
</span><span class="cx">         TestController::singleton().mainWebView()-&gt;removeChromeInputField();
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;CallRemoveChromeInputFieldCallback&quot;));
</span><del>-        WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+        WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;FocusWebView&quot;)) {
</span><span class="cx">         TestController::singleton().mainWebView()-&gt;makeWebViewFirstResponder();
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;CallFocusWebViewCallback&quot;));
</span><del>-        WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+        WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -393,7 +393,7 @@
</span><span class="cx">         WKPageSetCustomBackingScaleFactor(TestController::singleton().mainWebView()-&gt;page(), backingScaleFactor);
</span><span class="cx"> 
</span><span class="cx">         WKRetainPtr&lt;WKStringRef&gt; messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;CallSetBackingScaleFactorCallback&quot;));
</span><del>-        WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+        WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -522,7 +522,7 @@
</span><span class="cx">     if (WKStringIsEqualToUTF8CString(messageName, &quot;ProcessWorkQueue&quot;)) {
</span><span class="cx">         if (TestController::singleton().workQueueManager().processWorkQueue()) {
</span><span class="cx">             WKRetainPtr&lt;WKStringRef&gt; messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;WorkQueueProcessedCallback&quot;));
</span><del>-            WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+            WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
</ins><span class="cx">         }
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre>
</div>
</div>

</body>
</html>