<!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 <enrica@apple.com>
+
+ 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 <ap@apple.com>
</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)->initializeFindMatchesClient(wkClient);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void WKPageSetPageInjectedBundleClient(WKPageRef pageRef, const WKPageInjectedBundleClientBase* wkClient)
+{
+ toImpl(pageRef)->setInjectedBundleClient(wkClient);
+}
+
</ins><span class="cx"> void WKPageSetPageFormClient(WKPageRef pageRef, const WKPageFormClientBase* wkClient)
</span><span class="cx"> {
</span><span class="cx"> toImpl(pageRef)->setFormClient(std::make_unique<WebFormClient>(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 <WebKit/WKPageFindClient.h>
</span><span class="cx"> #include <WebKit/WKPageFindMatchesClient.h>
</span><span class="cx"> #include <WebKit/WKPageFormClient.h>
</span><ins>+#include <WebKit/WKPageInjectedBundleClient.h>
</ins><span class="cx"> #include <WebKit/WKPageLoadTypes.h>
</span><span class="cx"> #include <WebKit/WKPageLoaderClient.h>
</span><span class="cx"> #include <WebKit/WKPageNavigationClient.h>
</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 <WebKit/WKBase.h>
+
+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->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&);
</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 "config.h"
+#include "WebPageInjectedBundleClient.h"
+
+#include "WKAPICast.h"
+#include "WebProcessPool.h"
+#include <wtf/text/WTFString.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+void WebPageInjectedBundleClient::didReceiveMessageFromInjectedBundle(WebPageProxy* page, const String& 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& messageName, API::Object* messageBody, RefPtr<API::Object>& returnData)
+{
+ if (!m_client.didReceiveSynchronousMessageFromInjectedBundle)
+ return;
+
+ WKTypeRef returnDataRef = 0;
+ m_client.didReceiveSynchronousMessageFromInjectedBundle(toAPI(page), toAPI(messageName.impl()), toAPI(messageBody), &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 "APIClient.h"
+#include "WKPage.h"
+#include <wtf/Forward.h>
+
+namespace API {
+class Object;
+
+template<> struct ClientTraits<WKPageInjectedBundleClientBase> {
+ typedef std::tuple<WKPageInjectedBundleClientV0> Versions;
+};
+}
+
+namespace WebKit {
+
+class WebPageProxy;
+
+class WebPageInjectedBundleClient : public API::Client<WKPageInjectedBundleClientBase> {
+public:
+ void didReceiveMessageFromInjectedBundle(WebPageProxy*, const String&, API::Object*);
+ void didReceiveSynchronousMessageFromInjectedBundle(WebPageProxy*, const String&, API::Object*, RefPtr<API::Object>& 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<WebPageInjectedBundleClient>();
+ m_injectedBundleClient->initialize(client);
+}
+
+void WebPageProxy::handleMessage(IPC::Connection& connection, const String& messageName, const WebKit::UserData& messageBody)
+{
+ auto* webProcessProxy = WebProcessProxy::fromConnection(&connection);
+ if (!webProcessProxy || !m_injectedBundleClient)
+ return;
+ m_injectedBundleClient->didReceiveMessageFromInjectedBundle(this, messageName, webProcessProxy->transformHandlesToObjects(messageBody.object()).get());
+}
+
+void WebPageProxy::handleSynchronousMessage(IPC::Connection& connection, const String& messageName, const UserData& messageBody, UserData& returnUserData)
+{
+ if (!WebProcessProxy::fromConnection(&connection) || !m_injectedBundleClient)
+ return;
+
+ RefPtr<API::Object> returnData;
+ m_injectedBundleClient->didReceiveSynchronousMessageFromInjectedBundle(this, messageName, WebProcessProxy::fromConnection(&connection)->transformHandlesToObjects(messageBody.object()).get(), returnData);
+ returnUserData = UserData(WebProcessProxy::fromConnection(&connection)->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 "WebFrameProxy.h"
</span><span class="cx"> #include "WebPageCreationParameters.h"
</span><span class="cx"> #include "WebPageDiagnosticLoggingClient.h"
</span><ins>+#include "WebPageInjectedBundleClient.h"
</ins><span class="cx"> #include "WebPreferences.h"
</span><span class="cx"> #include <WebCore/AlternativeTextClient.h> // FIXME: Needed by WebPageProxyMessages.h for DICTATION_ALTERNATIVES.
</span><span class="cx"> #include "WebPageProxyMessages.h"
</span><span class="lines">@@ -330,6 +331,8 @@
</span><span class="cx"> void setHistoryClient(std::unique_ptr<API::HistoryClient>);
</span><span class="cx"> void setLoaderClient(std::unique_ptr<API::LoaderClient>);
</span><span class="cx"> void setPolicyClient(std::unique_ptr<API::PolicyClient>);
</span><ins>+ void setInjectedBundleClient(const WKPageInjectedBundleClientBase*);
+ WebPageInjectedBundleClient* injectedBundleClient() { return m_injectedBundleClient.get(); }
</ins><span class="cx">
</span><span class="cx"> API::UIClient& uiClient() { return *m_uiClient; }
</span><span class="cx"> void setUIClient(std::unique_ptr<API::UIClient>);
</span><span class="lines">@@ -1414,6 +1417,9 @@
</span><span class="cx">
</span><span class="cx"> void handleAutoFillButtonClick(const UserData&);
</span><span class="cx">
</span><ins>+ void handleMessage(IPC::Connection&, const String& messageName, const UserData& messageBody);
+ void handleSynchronousMessage(IPC::Connection&, const String& messageName, const UserData& messageBody, UserData& returnUserData);
+
</ins><span class="cx"> PageClient& m_pageClient;
</span><span class="cx"> std::unique_ptr<API::LoaderClient> m_loaderClient;
</span><span class="cx"> std::unique_ptr<API::PolicyClient> 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<API::ContextMenuClient> m_contextMenuClient;
</span><span class="cx"> #endif
</span><ins>+ std::unique_ptr<WebPageInjectedBundleClient> m_injectedBundleClient;
</ins><span class="cx">
</span><span class="cx"> std::unique_ptr<WebNavigationState> 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) -> (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(&connection);
</span><span class="cx"> if (!webProcessProxy)
</span><span class="cx"> return;
</span><del>-
</del><span class="cx"> m_injectedBundleClient.didReceiveMessageFromInjectedBundle(this, messageName, webProcessProxy->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 = "<group>"; };
</span><span class="cx">                 2D8949EE182044F600E898AA /* PlatformCALayerRemoteTiledBacking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformCALayerRemoteTiledBacking.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 2D8949EF182044F600E898AA /* PlatformCALayerRemoteTiledBacking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerRemoteTiledBacking.h; sourceTree = "<group>"; };
</span><ins>+                2D9EA30C1A96CB59002D2807 /* WKPageInjectedBundleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageInjectedBundleClient.h; sourceTree = "<group>"; };
+                2D9EA30E1A96CBFF002D2807 /* WebPageInjectedBundleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageInjectedBundleClient.h; sourceTree = "<group>"; };
+                2D9EA3101A96D9EB002D2807 /* WebPageInjectedBundleClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageInjectedBundleClient.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 2DA049B1180CCCD300AAFA9E /* PlatformCALayerRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformCALayerRemote.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 2DA049B2180CCCD300AAFA9E /* PlatformCALayerRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerRemote.h; sourceTree = "<group>"; };
</span><span class="cx">                 2DA049B5180CCD0A00AAFA9E /* GraphicsLayerCARemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayerCARemote.cpp; sourceTree = "<group>"; };
</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)->setUseTestingViewportConfiguration(useTestingViewportConfiguration);
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><ins>+
+void WKBundlePagePostMessage(WKBundlePageRef pageRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef)
+{
+ toImpl(pageRef)->postMessage(toWTFString(messageNameRef), toImpl(messageBodyRef));
+}
+
+void WKBundlePagePostSynchronousMessage(WKBundlePageRef pageRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef, WKTypeRef* returnDataRef)
+{
+ RefPtr<API::Object> returnData;
+ toImpl(pageRef)->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& messageName, API::Object* messageBody)
+{
+ send(Messages::WebPageProxy::HandleMessage(messageName, UserData(WebProcess::singleton().transformObjectsToHandles(messageBody))));
+}
+
+void WebPage::postSynchronousMessage(const String& messageName, API::Object* messageBody, RefPtr<API::Object>& returnData)
+{
+ UserData returnUserData;
+
+ auto& 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& messageName, API::Object* messageBody);
+ void postSynchronousMessage(const String& messageName, API::Object* messageBody, RefPtr<API::Object>& returnData);
+
</ins><span class="cx"> private:
</span><span class="cx"> WebPage(uint64_t pageID, const WebPageCreationParameters&);
</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 <enrica@apple.com>
+
+ 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 <commit-queue@webkit.org>
</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& injectedBungle = InjectedBundle::singleton();
- WKBundlePageRef page = injectedBungle.page()->page();
</del><ins>+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundlePageRef page = injectedBundle.page()->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<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
</span><span class="cx"> WKRetainPtr<WKMutableDictionaryRef> 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<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
</span><span class="cx"> WKRetainPtr<WKMutableDictionaryRef> 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()->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<WKDoubleRef> 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()->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<WKUInt64Ref> 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()->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<WKMutableDictionaryRef> mouseDownMessageBody(AdoptWK, createMouseMessageBody(MouseDown, button, modifiers));
</span><del>- WKBundlePostMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), mouseDownMessageBody.get());
</del><ins>+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), mouseDownMessageBody.get());
</ins><span class="cx">
</span><span class="cx"> // Asynchronous mouse up.
</span><span class="cx"> WKRetainPtr<WKMutableDictionaryRef> mouseUpMessageBody(AdoptWK, createMouseMessageBody(MouseUp, button, modifiers));
</span><del>- WKBundlePostMessage(InjectedBundle::singleton().bundle(), EventSenderMessageName.get(), mouseUpMessageBody.get());
</del><ins>+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), mouseUpMessageBody.get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static WKRetainPtr<WKMutableDictionaryRef> createKeyDownMessageBody(JSStringRef key, WKEventModifiers modifiers, int location)
</span><span class="lines">@@ -317,7 +317,7 @@
</span><span class="cx"> WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
</span><span class="cx"> WKRetainPtr<WKMutableDictionaryRef> 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()->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<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
</span><span class="cx"> WKRetainPtr<WKMutableDictionaryRef> 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()->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<WKDoubleRef> 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()->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()->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()->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<WKUInt64Ref> 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()->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<WKUInt64Ref> 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()->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<WKUInt64Ref> 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()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void EventSendingController::setTouchModifier(const JSStringRef &modifier, bool enable)
</span><span class="lines">@@ -573,7 +573,7 @@
</span><span class="cx"> WKRetainPtr<WKUInt64Ref> 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()->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<WKUInt64Ref> 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()->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<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchStart"));
</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()->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<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchMove"));
</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()->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<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchEnd"));
</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()->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<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchCancel"));
</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()->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<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("ClearTouchPoints"));
</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()->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<WKUInt64Ref> 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()->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<WKUInt64Ref> 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()->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<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error"));
+ WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown"));
+ WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
+}
+
+void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody)
+{
</ins><span class="cx"> if (WKStringIsEqualToUTF8CString(messageName, "BeginTest")) {
</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<WKStringRef> ackMessageName(AdoptWK, WKStringCreateWithUTF8CString("Ack"));
</span><span class="cx"> WKRetainPtr<WKStringRef> ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString("BeginTest"));
</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, "Reset")) {
</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->removeAllWebNotificationPermissions();
</span><span class="cx">
</span><del>- page()->resetAfterTest();
</del><ins>+ InjectedBundle::page()->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, "CallSetBackingScaleFactorCallback")) {
</span><span class="cx"> m_testRunner->callSetBackingScaleFactorCallback();
</span><span class="cx"> return;
</span><del>- }
</del><ins>+ }
</ins><span class="cx">
</span><span class="cx"> if (WKStringIsEqualToUTF8CString(messageName, "WorkQueueProcessedCallback")) {
</span><span class="cx"> if (!topLoadingFrame() && !m_testRunner->waitToDump())
</span><del>- page()->dump();
</del><ins>+ InjectedBundle::page()->dump();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error"));
</span><span class="cx"> WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown"));
</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<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error"));
- WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown"));
- 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<WKStringRef> wkKey(AdoptWK, WKStringCreateWithUTF8CString(key));
</span><span class="lines">@@ -310,7 +310,7 @@
</span><span class="cx"> WKRetainPtr<WKStringRef> audioResultKey = adoptWK(WKStringCreateWithUTF8CString("AudioResult"));
</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()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("TextOutput"));
</span><span class="cx"> WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithUTF8CString(output.utf8().data()));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("BeforeUnloadReturnValue"));
</span><span class="cx"> WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(value));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("AddChromeInputField"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("RemoveChromeInputField"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("FocusWebView"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetBackingScaleFactor"));
</span><span class="cx"> WKRetainPtr<WKDoubleRef> messageBody(AdoptWK, WKDoubleCreate(backingScaleFactor));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetWindowIsKey"));
</span><span class="cx"> WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(isKey));
</span><del>- WKBundlePostSynchronousMessage(m_bundle, messageName.get(), messageBody.get(), 0);
</del><ins>+ WKBundlePagePostSynchronousMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SimulateWebNotificationClick"));
</span><span class="cx"> WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(notificationID));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAddsVisitedLinks"));
</span><span class="cx"> WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(addsVisitedLinks));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetGeolocationPermission"));
</span><span class="cx"> WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(enabled));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKDoubleRef> 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()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetMockGeolocationPositionUnavailableError"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), errorMessage);
</del><ins>+ WKBundlePagePostMessage(page()->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("SetUserMediaPermission"));
</span><span class="cx"> auto messageBody = adoptWK(WKBooleanCreate(enabled));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKBooleanRef> 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()->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<WKBooleanRef> 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()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetCacheModel"));
</span><span class="cx"> WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(model));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("IsWorkQueueEmpty"));
</span><span class="cx"> WKTypeRef resultToPass = 0;
</span><del>- WKBundlePostSynchronousMessage(m_bundle, messageName.get(), 0, &resultToPass);
</del><ins>+ WKBundlePagePostSynchronousMessage(page()->page(), messageName.get(), 0, &resultToPass);
</ins><span class="cx"> WKRetainPtr<WKBooleanRef> isEmpty(AdoptWK, static_cast<WKBooleanRef>(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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("ProcessWorkQueue"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueBackNavigation"));
</span><span class="cx"> WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(howFarBackward));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueForwardNavigation"));
</span><span class="cx"> WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(howFarForward));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> targetKey(AdoptWK, WKStringCreateWithUTF8CString("target"));
</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()->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()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueReload"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), 0);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueLoadingScript"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), script);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueNonLoadingScript"));
</span><del>- WKBundlePostMessage(m_bundle, messageName.get(), script);
</del><ins>+ WKBundlePagePostMessage(page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetHandlesAuthenticationChallenge"));
</span><span class="cx"> WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(handlesAuthenticationChallenges));
</span><del>- WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAuthenticationUsername"));
</span><span class="cx"> WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithJSString(username));
</span><del>- WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAuthenticationPassword"));
</span><span class="cx"> WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithJSString(password));
</span><del>- WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SecureEventInputIsEnabled"));
</span><span class="cx"> WKTypeRef returnData = 0;
</span><span class="cx">
</span><del>- WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), messageName.get(), 0, &returnData);
</del><ins>+ WKBundlePagePostSynchronousMessage(InjectedBundle::singleton().page()->page(), messageName.get(), 0, &returnData);
</ins><span class="cx"> return WKBooleanGetValue(static_cast<WKBooleanRef>(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<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetBlockAllPlugins"));
</span><span class="cx"> WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(shouldBlock));
</span><del>- WKBundlePostMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get());
</del><ins>+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->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 <WebKit/WKNotificationPermissionRequest.h>
</span><span class="cx"> #include <WebKit/WKNumber.h>
</span><span class="cx"> #include <WebKit/WKPageGroup.h>
</span><ins>+#include <WebKit/WKPageInjectedBundleClient.h>
</ins><span class="cx"> #include <WebKit/WKPagePrivate.h>
</span><span class="cx"> #include <WebKit/WKPreferencesRefPrivate.h>
</span><span class="cx"> #include <WebKit/WKProtectionSpace.h>
</span><span class="lines">@@ -521,6 +522,15 @@
</span><span class="cx"> };
</span><span class="cx"> WKPageSetPageNavigationClient(m_mainWebView->page(), &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->page(), &injectedBundleClient.base);
+
</ins><span class="cx"> m_mainWebView->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()->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<TestController*>(const_cast<void*>(clientInfo))->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<TestController*>(const_cast<void*>(clientInfo))->didReceiveMessageFromInjectedBundle(messageName, messageBody);
+}
+
+void TestController::didReceiveSynchronousPageMessageFromInjectedBundle(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void* clientInfo)
+{
+ *returnData = static_cast<TestController*>(const_cast<void*>(clientInfo))->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<TestController*>(const_cast<void*>(clientInfo))->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<WKTypeRef> 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<WKUInt64Ref> 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()->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, "AddChromeInputField")) {
</span><span class="cx"> TestController::singleton().mainWebView()->addChromeInputField();
</span><span class="cx"> WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallAddChromeInputFieldCallback"));
</span><del>- WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (WKStringIsEqualToUTF8CString(messageName, "RemoveChromeInputField")) {
</span><span class="cx"> TestController::singleton().mainWebView()->removeChromeInputField();
</span><span class="cx"> WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallRemoveChromeInputFieldCallback"));
</span><del>- WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (WKStringIsEqualToUTF8CString(messageName, "FocusWebView")) {
</span><span class="cx"> TestController::singleton().mainWebView()->makeWebViewFirstResponder();
</span><span class="cx"> WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallFocusWebViewCallback"));
</span><del>- WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->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()->page(), backingScaleFactor);
</span><span class="cx">
</span><span class="cx"> WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallSetBackingScaleFactorCallback"));
</span><del>- WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->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, "ProcessWorkQueue")) {
</span><span class="cx"> if (TestController::singleton().workQueueManager().processWorkQueue()) {
</span><span class="cx"> WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("WorkQueueProcessedCallback"));
</span><del>- WKContextPostMessageToInjectedBundle(TestController::singleton().context(), messageName.get(), 0);
</del><ins>+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
</ins><span class="cx"> }
</span><span class="cx"> return;
</span><span class="cx"> }
</span></span></pre>
</div>
</div>
</body>
</html>