<!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>[163480] trunk/Source/WebKit2</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/163480">163480</a></dd>
<dt>Author</dt> <dd>andersca@apple.com</dd>
<dt>Date</dt> <dd>2014-02-05 15:40:26 -0800 (Wed, 05 Feb 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Get rid of WebUIClient
https://bugs.webkit.org/show_bug.cgi?id=128274
Reviewed by Andreas Kling.
* UIProcess/API/APIUIClient.h: Added.
(API::UIClient::~UIClient):
(API::UIClient::createNewPage):
(API::UIClient::showPage):
(API::UIClient::close):
(API::UIClient::takeFocus):
(API::UIClient::focus):
(API::UIClient::unfocus):
(API::UIClient::runJavaScriptAlert):
(API::UIClient::runJavaScriptConfirm):
(API::UIClient::runJavaScriptPrompt):
(API::UIClient::setStatusText):
(API::UIClient::mouseDidMoveOverElement):
(API::UIClient::unavailablePluginButtonClicked):
(API::UIClient::implementsDidNotHandleKeyEvent):
(API::UIClient::didNotHandleKeyEvent):
(API::UIClient::implementsDidNotHandleWheelEvent):
(API::UIClient::didNotHandleWheelEvent):
(API::UIClient::toolbarsAreVisible):
(API::UIClient::setToolbarsAreVisible):
(API::UIClient::menuBarIsVisible):
(API::UIClient::setMenuBarIsVisible):
(API::UIClient::statusBarIsVisible):
(API::UIClient::setStatusBarIsVisible):
(API::UIClient::isResizable):
(API::UIClient::setIsResizable):
(API::UIClient::setWindowFrame):
(API::UIClient::windowFrame):
(API::UIClient::canRunBeforeUnloadConfirmPanel):
(API::UIClient::runBeforeUnloadConfirmPanel):
(API::UIClient::didDraw):
(API::UIClient::pageDidScroll):
(API::UIClient::exceededDatabaseQuota):
(API::UIClient::runOpenPanel):
(API::UIClient::decidePolicyForGeolocationPermissionRequest):
(API::UIClient::decidePolicyForNotificationPermissionRequest):
(API::UIClient::headerHeight):
(API::UIClient::footerHeight):
(API::UIClient::drawHeader):
(API::UIClient::drawFooter):
(API::UIClient::printFrame):
(API::UIClient::canRunModal):
(API::UIClient::runModal):
(API::UIClient::saveDataToFileInDownloadsFolder):
(API::UIClient::shouldInterruptJavaScript):
(API::UIClient::showColorPicker):
(API::UIClient::hideColorPicker):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::setUIClient):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::showPage):
(WebKit::WebPageProxy::closePage):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):
(WebKit::WebPageProxy::shouldInterruptJavaScript):
(WebKit::WebPageProxy::setStatusText):
(WebKit::WebPageProxy::mouseDidMoveOverElement):
(WebKit::WebPageProxy::unavailablePluginButtonClicked):
(WebKit::WebPageProxy::setToolbarsAreVisible):
(WebKit::WebPageProxy::getToolbarsAreVisible):
(WebKit::WebPageProxy::setMenuBarIsVisible):
(WebKit::WebPageProxy::getMenuBarIsVisible):
(WebKit::WebPageProxy::setStatusBarIsVisible):
(WebKit::WebPageProxy::getStatusBarIsVisible):
(WebKit::WebPageProxy::setIsResizable):
(WebKit::WebPageProxy::getIsResizable):
(WebKit::WebPageProxy::setWindowFrame):
(WebKit::WebPageProxy::getWindowFrame):
(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
(WebKit::WebPageProxy::pageDidScroll):
(WebKit::WebPageProxy::runOpenPanel):
(WebKit::WebPageProxy::printFrame):
(WebKit::WebPageProxy::didDraw):
(WebKit::WebPageProxy::setFocus):
(WebKit::WebPageProxy::takeFocus):
(WebKit::WebPageProxy::didReceiveEvent):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::exceededDatabaseQuota):
(WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
(WebKit::WebPageProxy::requestNotificationPermission):
(WebKit::WebPageProxy::headerHeight):
(WebKit::WebPageProxy::footerHeight):
(WebKit::WebPageProxy::drawHeader):
(WebKit::WebPageProxy::drawFooter):
(WebKit::WebPageProxy::runModal):
(WebKit::WebPageProxy::setCanRunModal):
(WebKit::WebPageProxy::saveDataToFileInDownloadsFolder):
* UIProcess/WebPageProxy.h:
* UIProcess/WebUIClient.cpp: Removed.
* UIProcess/WebUIClient.h: Removed.
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::windowAndViewFramesChanged):
* WebKit2.xcodeproj/project.pbxproj:</pre>
<h3>Modified Paths</h3>
<ul>
<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="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebInspectorProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebPageProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIUIClienth">trunk/Source/WebKit2/UIProcess/API/APIUIClient.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessWebUIClientcpp">trunk/Source/WebKit2/UIProcess/WebUIClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebUIClienth">trunk/Source/WebKit2/UIProcess/WebUIClient.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/ChangeLog        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -1,3 +1,111 @@
</span><ins>+2014-02-05 Anders Carlsson <andersca@apple.com>
+
+ Get rid of WebUIClient
+ https://bugs.webkit.org/show_bug.cgi?id=128274
+
+ Reviewed by Andreas Kling.
+
+ * UIProcess/API/APIUIClient.h: Added.
+ (API::UIClient::~UIClient):
+ (API::UIClient::createNewPage):
+ (API::UIClient::showPage):
+ (API::UIClient::close):
+ (API::UIClient::takeFocus):
+ (API::UIClient::focus):
+ (API::UIClient::unfocus):
+ (API::UIClient::runJavaScriptAlert):
+ (API::UIClient::runJavaScriptConfirm):
+ (API::UIClient::runJavaScriptPrompt):
+ (API::UIClient::setStatusText):
+ (API::UIClient::mouseDidMoveOverElement):
+ (API::UIClient::unavailablePluginButtonClicked):
+ (API::UIClient::implementsDidNotHandleKeyEvent):
+ (API::UIClient::didNotHandleKeyEvent):
+ (API::UIClient::implementsDidNotHandleWheelEvent):
+ (API::UIClient::didNotHandleWheelEvent):
+ (API::UIClient::toolbarsAreVisible):
+ (API::UIClient::setToolbarsAreVisible):
+ (API::UIClient::menuBarIsVisible):
+ (API::UIClient::setMenuBarIsVisible):
+ (API::UIClient::statusBarIsVisible):
+ (API::UIClient::setStatusBarIsVisible):
+ (API::UIClient::isResizable):
+ (API::UIClient::setIsResizable):
+ (API::UIClient::setWindowFrame):
+ (API::UIClient::windowFrame):
+ (API::UIClient::canRunBeforeUnloadConfirmPanel):
+ (API::UIClient::runBeforeUnloadConfirmPanel):
+ (API::UIClient::didDraw):
+ (API::UIClient::pageDidScroll):
+ (API::UIClient::exceededDatabaseQuota):
+ (API::UIClient::runOpenPanel):
+ (API::UIClient::decidePolicyForGeolocationPermissionRequest):
+ (API::UIClient::decidePolicyForNotificationPermissionRequest):
+ (API::UIClient::headerHeight):
+ (API::UIClient::footerHeight):
+ (API::UIClient::drawHeader):
+ (API::UIClient::drawFooter):
+ (API::UIClient::printFrame):
+ (API::UIClient::canRunModal):
+ (API::UIClient::runModal):
+ (API::UIClient::saveDataToFileInDownloadsFolder):
+ (API::UIClient::shouldInterruptJavaScript):
+ (API::UIClient::showColorPicker):
+ (API::UIClient::hideColorPicker):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageUIClient):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::WebPageProxy):
+ (WebKit::WebPageProxy::setUIClient):
+ (WebKit::WebPageProxy::close):
+ (WebKit::WebPageProxy::createNewPage):
+ (WebKit::WebPageProxy::showPage):
+ (WebKit::WebPageProxy::closePage):
+ (WebKit::WebPageProxy::runJavaScriptAlert):
+ (WebKit::WebPageProxy::runJavaScriptConfirm):
+ (WebKit::WebPageProxy::runJavaScriptPrompt):
+ (WebKit::WebPageProxy::shouldInterruptJavaScript):
+ (WebKit::WebPageProxy::setStatusText):
+ (WebKit::WebPageProxy::mouseDidMoveOverElement):
+ (WebKit::WebPageProxy::unavailablePluginButtonClicked):
+ (WebKit::WebPageProxy::setToolbarsAreVisible):
+ (WebKit::WebPageProxy::getToolbarsAreVisible):
+ (WebKit::WebPageProxy::setMenuBarIsVisible):
+ (WebKit::WebPageProxy::getMenuBarIsVisible):
+ (WebKit::WebPageProxy::setStatusBarIsVisible):
+ (WebKit::WebPageProxy::getStatusBarIsVisible):
+ (WebKit::WebPageProxy::setIsResizable):
+ (WebKit::WebPageProxy::getIsResizable):
+ (WebKit::WebPageProxy::setWindowFrame):
+ (WebKit::WebPageProxy::getWindowFrame):
+ (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
+ (WebKit::WebPageProxy::pageDidScroll):
+ (WebKit::WebPageProxy::runOpenPanel):
+ (WebKit::WebPageProxy::printFrame):
+ (WebKit::WebPageProxy::didDraw):
+ (WebKit::WebPageProxy::setFocus):
+ (WebKit::WebPageProxy::takeFocus):
+ (WebKit::WebPageProxy::didReceiveEvent):
+ (WebKit::WebPageProxy::creationParameters):
+ (WebKit::WebPageProxy::exceededDatabaseQuota):
+ (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
+ (WebKit::WebPageProxy::requestNotificationPermission):
+ (WebKit::WebPageProxy::headerHeight):
+ (WebKit::WebPageProxy::footerHeight):
+ (WebKit::WebPageProxy::drawHeader):
+ (WebKit::WebPageProxy::drawFooter):
+ (WebKit::WebPageProxy::runModal):
+ (WebKit::WebPageProxy::setCanRunModal):
+ (WebKit::WebPageProxy::saveDataToFileInDownloadsFolder):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebUIClient.cpp: Removed.
+ * UIProcess/WebUIClient.h: Removed.
+ * UIProcess/mac/WebInspectorProxyMac.mm:
+ (WebKit::WebInspectorProxy::platformCreateInspectorPage):
+ * UIProcess/mac/WebPageProxyMac.mm:
+ (WebKit::WebPageProxy::windowAndViewFramesChanged):
+ * WebKit2.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2014-02-05 Enrica Casucci <enrica@apple.com>
</span><span class="cx">
</span><span class="cx"> WK2: Caret, selections and autocorrection bubbles are incorrectly positioned when inside an iframe.
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIUIClienth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/APIUIClient.h (0 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIUIClient.h         (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/APIUIClient.h        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -0,0 +1,133 @@
</span><ins>+/*
+ * Copyright (C) 2014 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 APIUIClient_h
+#define APIUIClient_h
+
+#include "WKPage.h"
+#include "WebEvent.h"
+#include "WebHitTestResult.h"
+#include <WebCore/FloatRect.h>
+#include <wtf/PassRefPtr.h>
+
+namespace WebCore {
+class ResourceRequest;
+struct WindowFeatures;
+}
+
+namespace WebKit {
+class GeolocationPermissionRequestProxy;
+class ImmutableDictionary;
+class NativeWebKeyboardEvent;
+class NativeWebWheelEvent;
+class NotificationPermissionRequest;
+class WebColorPickerResultListenerProxy;
+class WebFrameProxy;
+class WebOpenPanelParameters;
+class WebOpenPanelResultListenerProxy;
+class WebPageProxy;
+class WebSecurityOrigin;
+}
+
+namespace API {
+
+class Data;
+class Object;
+
+class UIClient {
+public:
+ virtual ~UIClient() { }
+
+ virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, WebKit::WebEvent::Modifiers, WebKit::WebMouseEvent::Button) { return nullptr; }
+ virtual void showPage(WebKit::WebPageProxy*) { }
+ virtual void close(WebKit::WebPageProxy*) { }
+
+ virtual void takeFocus(WebKit::WebPageProxy*, WKFocusDirection) { }
+ virtual void focus(WebKit::WebPageProxy*) { }
+ virtual void unfocus(WebKit::WebPageProxy*) { }
+
+ virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*) { }
+ virtual bool runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*) { return false; }
+ virtual WTF::String runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*) { return WTF::String(); }
+
+ virtual void setStatusText(WebKit::WebPageProxy*, const WTF::String&) { }
+ virtual void mouseDidMoveOverElement(WebKit::WebPageProxy*, const WebKit::WebHitTestResult::Data&, WebKit::WebEvent::Modifiers, API::Object*) { }
+#if ENABLE(NETSCAPE_PLUGIN_API)
+ virtual void unavailablePluginButtonClicked(WebKit::WebPageProxy*, WKPluginUnavailabilityReason, WebKit::ImmutableDictionary*) { }
+#endif // ENABLE(NETSCAPE_PLUGIN_API)
+
+ virtual bool implementsDidNotHandleKeyEvent() const { return false; }
+ virtual void didNotHandleKeyEvent(WebKit::WebPageProxy*, const WebKit::NativeWebKeyboardEvent&) { }
+
+ virtual bool implementsDidNotHandleWheelEvent() const { return false; }
+ virtual void didNotHandleWheelEvent(WebKit::WebPageProxy*, const WebKit::NativeWebWheelEvent&) { }
+
+ virtual bool toolbarsAreVisible(WebKit::WebPageProxy*) { return true; }
+ virtual void setToolbarsAreVisible(WebKit::WebPageProxy*, bool) { }
+ virtual bool menuBarIsVisible(WebKit::WebPageProxy*) { return true; }
+ virtual void setMenuBarIsVisible(WebKit::WebPageProxy*, bool) { }
+ virtual bool statusBarIsVisible(WebKit::WebPageProxy*) { return true; }
+ virtual void setStatusBarIsVisible(WebKit::WebPageProxy*, bool) { }
+ virtual bool isResizable(WebKit::WebPageProxy*) { return true; }
+ virtual void setIsResizable(WebKit::WebPageProxy*, bool) { }
+
+ virtual void setWindowFrame(WebKit::WebPageProxy*, const WebCore::FloatRect&) { }
+ virtual WebCore::FloatRect windowFrame(WebKit::WebPageProxy*) { return WebCore::FloatRect(); }
+
+ virtual bool canRunBeforeUnloadConfirmPanel() const { return false; }
+ virtual bool runBeforeUnloadConfirmPanel(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*) { return true; }
+
+ virtual void didDraw(WebKit::WebPageProxy*) { }
+ virtual void pageDidScroll(WebKit::WebPageProxy*) { }
+
+ virtual unsigned long long exceededDatabaseQuota(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebSecurityOrigin*, const WTF::String& databaseName, const WTF::String& databaseDisplayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage) { return currentQuota; }
+
+ virtual bool runOpenPanel(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebOpenPanelParameters*, WebKit::WebOpenPanelResultListenerProxy*) { return false; }
+ virtual bool decidePolicyForGeolocationPermissionRequest(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebSecurityOrigin*, WebKit::GeolocationPermissionRequestProxy*) { return false; }
+ virtual bool decidePolicyForNotificationPermissionRequest(WebKit::WebPageProxy*, WebKit::WebSecurityOrigin*, WebKit::NotificationPermissionRequest*) { return false; }
+
+ // Printing.
+ virtual float headerHeight(WebKit::WebPageProxy*, WebKit::WebFrameProxy*) { return 0; }
+ virtual float footerHeight(WebKit::WebPageProxy*, WebKit::WebFrameProxy*) { return 0; }
+ virtual void drawHeader(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::FloatRect&) { }
+ virtual void drawFooter(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::FloatRect&) { }
+ virtual void printFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*) { }
+
+ virtual bool canRunModal() const { return false; }
+ virtual void runModal(WebKit::WebPageProxy*) { }
+
+ virtual void saveDataToFileInDownloadsFolder(WebKit::WebPageProxy*, const WTF::String& suggestedFilename, const WTF::String& mimeType, const WTF::String& originatingURLString, API::Data*) { }
+
+ virtual bool shouldInterruptJavaScript(WebKit::WebPageProxy*) { return false; }
+
+#if ENABLE(INPUT_TYPE_COLOR)
+ virtual bool showColorPicker(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebColorPickerResultListenerProxy*) { return false; }
+ virtual bool hideColorPicker(WebKit::WebPageProxy*) { return false; }
+#endif
+};
+
+} // namespace API
+
+#endif // APIUIClient_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -31,7 +31,10 @@
</span><span class="cx"> #include "APIData.h"
</span><span class="cx"> #include "APILoaderClient.h"
</span><span class="cx"> #include "APIPolicyClient.h"
</span><ins>+#include "APIUIClient.h"
</ins><span class="cx"> #include "ImmutableDictionary.h"
</span><ins>+#include "NativeWebKeyboardEvent.h"
+#include "NativeWebWheelEvent.h"
</ins><span class="cx"> #include "NavigationActionData.h"
</span><span class="cx"> #include "PluginInformation.h"
</span><span class="cx"> #include "PrintInfo.h"
</span><span class="lines">@@ -43,6 +46,7 @@
</span><span class="cx"> #include "WebPageProxy.h"
</span><span class="cx"> #include "WebProcessProxy.h"
</span><span class="cx"> #include <WebCore/Page.h>
</span><ins>+#include <WebCore/WindowFeatures.h>
</ins><span class="cx">
</span><span class="cx"> #ifdef __BLOCKS__
</span><span class="cx"> #include <Block.h>
</span><span class="lines">@@ -63,6 +67,11 @@
</span><span class="cx"> template<> struct ClientTraits<WKPagePolicyClientBase> {
</span><span class="cx"> typedef std::tuple<WKPagePolicyClientV0, WKPagePolicyClientV1, WKPagePolicyClientInternal> Versions;
</span><span class="cx"> };
</span><ins>+
+template<> struct ClientTraits<WKPageUIClientBase> {
+ typedef std::tuple<WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2> Versions;
+};
+
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> WKTypeID WKPageGetTypeID()
</span><span class="lines">@@ -1053,7 +1062,427 @@
</span><span class="cx">
</span><span class="cx"> void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient)
</span><span class="cx"> {
</span><del>- toImpl(pageRef)->initializeUIClient(wkClient);
</del><ins>+ class UIClient : public API::Client<WKPageUIClientBase>, public API::UIClient {
+ public:
+ explicit UIClient(const WKPageUIClientBase* client)
+ {
+ initialize(client);
+ }
+
+ private:
+ virtual PassRefPtr<WebPageProxy> createNewPage(WebPageProxy* page, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button) override
+ {
+ if (!m_client.base.version && !m_client.createNewPage_deprecatedForUseWithV0)
+ return 0;
+
+ if (m_client.base.version > 0 && !m_client.createNewPage)
+ return 0;
+
+ ImmutableDictionary::MapType map;
+ if (windowFeatures.xSet)
+ map.set("x", API::Double::create(windowFeatures.x));
+ if (windowFeatures.ySet)
+ map.set("y", API::Double::create(windowFeatures.y));
+ if (windowFeatures.widthSet)
+ map.set("width", API::Double::create(windowFeatures.width));
+ if (windowFeatures.heightSet)
+ map.set("height", API::Double::create(windowFeatures.height));
+ map.set("menuBarVisible", API::Boolean::create(windowFeatures.menuBarVisible));
+ map.set("statusBarVisible", API::Boolean::create(windowFeatures.statusBarVisible));
+ map.set("toolBarVisible", API::Boolean::create(windowFeatures.toolBarVisible));
+ map.set("locationBarVisible", API::Boolean::create(windowFeatures.locationBarVisible));
+ map.set("scrollbarsVisible", API::Boolean::create(windowFeatures.scrollbarsVisible));
+ map.set("resizable", API::Boolean::create(windowFeatures.resizable));
+ map.set("fullscreen", API::Boolean::create(windowFeatures.fullscreen));
+ map.set("dialog", API::Boolean::create(windowFeatures.dialog));
+ RefPtr<ImmutableDictionary> featuresMap = ImmutableDictionary::create(std::move(map));
+
+ if (!m_client.base.version)
+ return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
+
+ RefPtr<API::URLRequest> request = API::URLRequest::create(resourceRequest);
+ return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(request.get()), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
+ }
+
+ virtual void showPage(WebPageProxy* page) override
+ {
+ if (!m_client.showPage)
+ return;
+
+ m_client.showPage(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void close(WebPageProxy* page) override
+ {
+ if (!m_client.close)
+ return;
+
+ m_client.close(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void takeFocus(WebPageProxy* page, WKFocusDirection direction) override
+ {
+ if (!m_client.takeFocus)
+ return;
+
+ m_client.takeFocus(toAPI(page), direction, m_client.base.clientInfo);
+ }
+
+ virtual void focus(WebPageProxy* page) override
+ {
+ if (!m_client.focus)
+ return;
+
+ m_client.focus(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void unfocus(WebPageProxy* page) override
+ {
+ if (!m_client.unfocus)
+ return;
+
+ m_client.unfocus(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void runJavaScriptAlert(WebPageProxy* page, const String& message, WebFrameProxy* frame) override
+ {
+ if (!m_client.runJavaScriptAlert)
+ return;
+
+ m_client.runJavaScriptAlert(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual bool runJavaScriptConfirm(WebPageProxy* page, const String& message, WebFrameProxy* frame) override
+ {
+ if (!m_client.runJavaScriptConfirm)
+ return false;
+
+ return m_client.runJavaScriptConfirm(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual String runJavaScriptPrompt(WebPageProxy* page, const String& message, const String& defaultValue, WebFrameProxy* frame) override
+ {
+ if (!m_client.runJavaScriptPrompt)
+ return String();
+
+ API::String* string = toImpl(m_client.runJavaScriptPrompt(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), m_client.base.clientInfo));
+ if (!string)
+ return String();
+
+ String result = string->string();
+ string->deref();
+
+ return result;
+ }
+
+ virtual void setStatusText(WebPageProxy* page, const String& text) override
+ {
+ if (!m_client.setStatusText)
+ return;
+
+ m_client.setStatusText(toAPI(page), toAPI(text.impl()), m_client.base.clientInfo);
+ }
+
+ virtual void mouseDidMoveOverElement(WebPageProxy* page, const WebHitTestResult::Data& data, WebEvent::Modifiers modifiers, API::Object* userData) override
+ {
+ if (!m_client.mouseDidMoveOverElement && !m_client.mouseDidMoveOverElement_deprecatedForUseWithV0)
+ return;
+
+ if (m_client.base.version > 0 && !m_client.mouseDidMoveOverElement)
+ return;
+
+ if (!m_client.base.version) {
+ m_client.mouseDidMoveOverElement_deprecatedForUseWithV0(toAPI(page), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
+ return;
+ }
+
+ RefPtr<WebHitTestResult> webHitTestResult = WebHitTestResult::create(data);
+ m_client.mouseDidMoveOverElement(toAPI(page), toAPI(webHitTestResult.get()), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
+ }
+
+#if ENABLE(NETSCAPE_PLUGIN_API)
+ virtual void unavailablePluginButtonClicked(WebPageProxy* page, WKPluginUnavailabilityReason pluginUnavailabilityReason, ImmutableDictionary* pluginInformation) override
+ {
+ if (pluginUnavailabilityReason == kWKPluginUnavailabilityReasonPluginMissing) {
+ if (m_client.missingPluginButtonClicked_deprecatedForUseWithV0)
+ m_client.missingPluginButtonClicked_deprecatedForUseWithV0(
+ toAPI(page),
+ toAPI(pluginInformation->get<API::String>(pluginInformationMIMETypeKey())),
+ toAPI(pluginInformation->get<API::String>(pluginInformationPluginURLKey())),
+ toAPI(pluginInformation->get<API::String>(pluginInformationPluginspageAttributeURLKey())),
+ m_client.base.clientInfo);
+ }
+
+ if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1)
+ m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1(
+ toAPI(page),
+ pluginUnavailabilityReason,
+ toAPI(pluginInformation->get<API::String>(pluginInformationMIMETypeKey())),
+ toAPI(pluginInformation->get<API::String>(pluginInformationPluginURLKey())),
+ toAPI(pluginInformation->get<API::String>(pluginInformationPluginspageAttributeURLKey())),
+ m_client.base.clientInfo);
+
+ if (m_client.unavailablePluginButtonClicked)
+ m_client.unavailablePluginButtonClicked(
+ toAPI(page),
+ pluginUnavailabilityReason,
+ toAPI(pluginInformation),
+ m_client.base.clientInfo);
+ }
+#endif // ENABLE(NETSCAPE_PLUGIN_API)
+
+ virtual bool implementsDidNotHandleKeyEvent() const override
+ {
+ return m_client.didNotHandleKeyEvent;
+ }
+
+ virtual void didNotHandleKeyEvent(WebPageProxy* page, const NativeWebKeyboardEvent& event) override
+ {
+ if (!m_client.didNotHandleKeyEvent)
+ return;
+ m_client.didNotHandleKeyEvent(toAPI(page), event.nativeEvent(), m_client.base.clientInfo);
+ }
+
+ virtual bool implementsDidNotHandleWheelEvent() const override
+ {
+ return m_client.didNotHandleWheelEvent;
+ }
+
+ virtual void didNotHandleWheelEvent(WebPageProxy* page, const NativeWebWheelEvent& event) override
+ {
+ if (!m_client.didNotHandleWheelEvent)
+ return;
+ m_client.didNotHandleWheelEvent(toAPI(page), event.nativeEvent(), m_client.base.clientInfo);
+ }
+
+ virtual bool toolbarsAreVisible(WebPageProxy* page) override
+ {
+ if (!m_client.toolbarsAreVisible)
+ return true;
+ return m_client.toolbarsAreVisible(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void setToolbarsAreVisible(WebPageProxy* page, bool visible) override
+ {
+ if (!m_client.setToolbarsAreVisible)
+ return;
+ m_client.setToolbarsAreVisible(toAPI(page), visible, m_client.base.clientInfo);
+ }
+
+ virtual bool menuBarIsVisible(WebPageProxy* page) override
+ {
+ if (!m_client.menuBarIsVisible)
+ return true;
+ return m_client.menuBarIsVisible(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void setMenuBarIsVisible(WebPageProxy* page, bool visible) override
+ {
+ if (!m_client.setMenuBarIsVisible)
+ return;
+ m_client.setMenuBarIsVisible(toAPI(page), visible, m_client.base.clientInfo);
+ }
+
+ virtual bool statusBarIsVisible(WebPageProxy* page) override
+ {
+ if (!m_client.statusBarIsVisible)
+ return true;
+ return m_client.statusBarIsVisible(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void setStatusBarIsVisible(WebPageProxy* page, bool visible) override
+ {
+ if (!m_client.setStatusBarIsVisible)
+ return;
+ m_client.setStatusBarIsVisible(toAPI(page), visible, m_client.base.clientInfo);
+ }
+
+ virtual bool isResizable(WebPageProxy* page) override
+ {
+ if (!m_client.isResizable)
+ return true;
+ return m_client.isResizable(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void setIsResizable(WebPageProxy* page, bool resizable) override
+ {
+ if (!m_client.setIsResizable)
+ return;
+ m_client.setIsResizable(toAPI(page), resizable, m_client.base.clientInfo);
+ }
+
+ virtual void setWindowFrame(WebPageProxy* page, const FloatRect& frame) override
+ {
+ if (!m_client.setWindowFrame)
+ return;
+
+ m_client.setWindowFrame(toAPI(page), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual FloatRect windowFrame(WebPageProxy* page) override
+ {
+ if (!m_client.getWindowFrame)
+ return FloatRect();
+
+ return toFloatRect(m_client.getWindowFrame(toAPI(page), m_client.base.clientInfo));
+ }
+
+ virtual bool canRunBeforeUnloadConfirmPanel() const override
+ {
+ return m_client.runBeforeUnloadConfirmPanel;
+ }
+
+ virtual bool runBeforeUnloadConfirmPanel(WebPageProxy* page, const String& message, WebFrameProxy* frame) override
+ {
+ if (!m_client.runBeforeUnloadConfirmPanel)
+ return true;
+
+ return m_client.runBeforeUnloadConfirmPanel(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual void didDraw(WebPageProxy* page) override
+ {
+ if (!m_client.didDraw)
+ return;
+
+ m_client.didDraw(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void pageDidScroll(WebPageProxy* page) override
+ {
+ if (!m_client.pageDidScroll)
+ return;
+
+ m_client.pageDidScroll(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual unsigned long long exceededDatabaseQuota(WebPageProxy* page, WebFrameProxy* frame, WebSecurityOrigin* origin, const String& databaseName, const String& databaseDisplayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage) override
+ {
+ if (!m_client.exceededDatabaseQuota)
+ return currentQuota;
+
+ return m_client.exceededDatabaseQuota(toAPI(page), toAPI(frame), toAPI(origin), toAPI(databaseName.impl()), toAPI(databaseDisplayName.impl()), currentQuota, currentOriginUsage, currentDatabaseUsage, expectedUsage, m_client.base.clientInfo);
+ }
+
+ virtual bool runOpenPanel(WebPageProxy* page, WebFrameProxy* frame, WebOpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener) override
+ {
+ if (!m_client.runOpenPanel)
+ return false;
+
+ m_client.runOpenPanel(toAPI(page), toAPI(frame), toAPI(parameters), toAPI(listener), m_client.base.clientInfo);
+ return true;
+ }
+
+ virtual bool decidePolicyForGeolocationPermissionRequest(WebPageProxy* page, WebFrameProxy* frame, WebSecurityOrigin* origin, GeolocationPermissionRequestProxy* permissionRequest) override
+ {
+ if (!m_client.decidePolicyForGeolocationPermissionRequest)
+ return false;
+
+ m_client.decidePolicyForGeolocationPermissionRequest(toAPI(page), toAPI(frame), toAPI(origin), toAPI(permissionRequest), m_client.base.clientInfo);
+ return true;
+ }
+
+ virtual bool decidePolicyForNotificationPermissionRequest(WebPageProxy* page, WebSecurityOrigin* origin, NotificationPermissionRequest* permissionRequest) override
+ {
+ if (!m_client.decidePolicyForNotificationPermissionRequest)
+ return false;
+
+ m_client.decidePolicyForNotificationPermissionRequest(toAPI(page), toAPI(origin), toAPI(permissionRequest), m_client.base.clientInfo);
+ return true;
+ }
+
+ // Printing.
+ virtual float headerHeight(WebPageProxy* page, WebFrameProxy* frame) override
+ {
+ if (!m_client.headerHeight)
+ return 0;
+
+ return m_client.headerHeight(toAPI(page), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual float footerHeight(WebPageProxy* page, WebFrameProxy* frame) override
+ {
+ if (!m_client.footerHeight)
+ return 0;
+
+ return m_client.footerHeight(toAPI(page), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual void drawHeader(WebPageProxy* page, WebFrameProxy* frame, const WebCore::FloatRect& rect) override
+ {
+ if (!m_client.drawHeader)
+ return;
+
+ m_client.drawHeader(toAPI(page), toAPI(frame), toAPI(rect), m_client.base.clientInfo);
+ }
+
+ virtual void drawFooter(WebPageProxy* page, WebFrameProxy* frame, const WebCore::FloatRect& rect) override
+ {
+ if (!m_client.drawFooter)
+ return;
+
+ m_client.drawFooter(toAPI(page), toAPI(frame), toAPI(rect), m_client.base.clientInfo);
+ }
+
+ virtual void printFrame(WebPageProxy* page, WebFrameProxy* frame) override
+ {
+ if (!m_client.printFrame)
+ return;
+
+ m_client.printFrame(toAPI(page), toAPI(frame), m_client.base.clientInfo);
+ }
+
+ virtual bool canRunModal() const override
+ {
+ return m_client.runModal;
+ }
+
+ virtual void runModal(WebPageProxy* page) override
+ {
+ if (!m_client.runModal)
+ return;
+
+ m_client.runModal(toAPI(page), m_client.base.clientInfo);
+ }
+
+ virtual void saveDataToFileInDownloadsFolder(WebPageProxy* page, const String& suggestedFilename, const String& mimeType, const String& originatingURLString, API::Data* data) override
+ {
+ if (!m_client.saveDataToFileInDownloadsFolder)
+ return;
+
+ m_client.saveDataToFileInDownloadsFolder(toAPI(page), toAPI(suggestedFilename.impl()), toAPI(mimeType.impl()), toURLRef(originatingURLString.impl()), toAPI(data), m_client.base.clientInfo);
+ }
+
+ virtual bool shouldInterruptJavaScript(WebPageProxy* page) override
+ {
+ if (!m_client.shouldInterruptJavaScript)
+ return false;
+
+ return m_client.shouldInterruptJavaScript(toAPI(page), m_client.base.clientInfo);
+ }
+
+#if ENABLE(INPUT_TYPE_COLOR)
+ virtual bool showColorPicker(WebPageProxy* page, const String& initialColor, WebColorPickerResultListenerProxy* listener) override
+ {
+ if (!m_client.showColorPicker)
+ return false;
+
+ m_client.showColorPicker(toAPI(page), toAPI(initialColor.impl()), toAPI(listener), m_client.base.clientInfo);
+ return true;
+ }
+
+ virtual bool hideColorPicker(WebPageProxy* page) override
+ {
+ if (!m_client.hideColorPicker)
+ return false;
+
+ m_client.hideColorPicker(toAPI(page), m_client.base.clientInfo);
+ return true;
+ }
+#endif
+ };
+
+ toImpl(pageRef)->setUIClient(std::make_unique<UIClient>(wkClient));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WKPageSetSession(WKPageRef pageRef, WKSessionRef session)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include "APIArray.h"
</span><span class="cx"> #include "APILoaderClient.h"
</span><span class="cx"> #include "APIPolicyClient.h"
</span><ins>+#include "APIUIClient.h"
</ins><span class="cx"> #include "APIURLRequest.h"
</span><span class="cx"> #include "AuthenticationChallengeProxy.h"
</span><span class="cx"> #include "AuthenticationDecisionListener.h"
</span><span class="lines">@@ -72,6 +73,7 @@
</span><span class="cx"> #include "WebInspectorProxy.h"
</span><span class="cx"> #include "WebInspectorProxyMessages.h"
</span><span class="cx"> #include "WebNotificationManagerProxy.h"
</span><ins>+#include "WebOpenPanelParameters.h"
</ins><span class="cx"> #include "WebOpenPanelResultListenerProxy.h"
</span><span class="cx"> #include "WebPageCreationParameters.h"
</span><span class="cx"> #include "WebPageGroup.h"
</span><span class="lines">@@ -248,6 +250,7 @@
</span><span class="cx"> : m_pageClient(pageClient)
</span><span class="cx"> , m_loaderClient(std::make_unique<API::LoaderClient>())
</span><span class="cx"> , m_policyClient(std::make_unique<API::PolicyClient>())
</span><ins>+ , m_uiClient(std::make_unique<API::UIClient>())
</ins><span class="cx"> , m_process(process)
</span><span class="cx"> , m_pageGroup(pageGroup)
</span><span class="cx"> , m_mainFrame(nullptr)
</span><span class="lines">@@ -434,15 +437,20 @@
</span><span class="cx"> m_formClient.initialize(formClient);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebPageProxy::initializeUIClient(const WKPageUIClientBase* client)
</del><ins>+void WebPageProxy::setUIClient(std::unique_ptr<API::UIClient> uiClient)
</ins><span class="cx"> {
</span><ins>+ if (!uiClient) {
+ m_uiClient = std::make_unique<API::UIClient>();
+ return;
+ }
+
+ m_uiClient = std::move(uiClient);
+
</ins><span class="cx"> if (!isValid())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- m_uiClient.initialize(client);
-
- m_process->send(Messages::WebPage::SetCanRunBeforeUnloadConfirmPanel(m_uiClient.canRunBeforeUnloadConfirmPanel()), m_pageID);
- setCanRunModal(m_uiClient.canRunModal());
</del><ins>+ m_process->send(Messages::WebPage::SetCanRunBeforeUnloadConfirmPanel(m_uiClient->canRunBeforeUnloadConfirmPanel()), m_pageID);
+ setCanRunModal(m_uiClient->canRunModal());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::initializeFindClient(const WKPageFindClientBase* client)
</span><span class="lines">@@ -567,7 +575,7 @@
</span><span class="cx"> m_loaderClient = nullptr;
</span><span class="cx"> m_policyClient = nullptr;
</span><span class="cx"> m_formClient.initialize(0);
</span><del>- m_uiClient.initialize(0);
</del><ins>+ m_uiClient = nullptr;
</ins><span class="cx"> #if PLATFORM(EFL)
</span><span class="cx"> m_uiPopupMenuClient.initialize(0);
</span><span class="cx"> #endif
</span><span class="lines">@@ -2556,7 +2564,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::createNewPage(const ResourceRequest& request, const WindowFeatures& windowFeatures, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t& newPageID, WebPageCreationParameters& newPageParameters)
</span><span class="cx"> {
</span><del>- RefPtr<WebPageProxy> newPage = m_uiClient.createNewPage(this, request, windowFeatures, static_cast<WebEvent::Modifiers>(opaqueModifiers), static_cast<WebMouseEvent::Button>(opaqueMouseButton));
</del><ins>+ RefPtr<WebPageProxy> newPage = m_uiClient->createNewPage(this, request, windowFeatures, static_cast<WebEvent::Modifiers>(opaqueModifiers), static_cast<WebMouseEvent::Button>(opaqueMouseButton));
</ins><span class="cx"> if (!newPage) {
</span><span class="cx"> newPageID = 0;
</span><span class="cx"> return;
</span><span class="lines">@@ -2569,7 +2577,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::showPage()
</span><span class="cx"> {
</span><del>- m_uiClient.showPage(this);
</del><ins>+ m_uiClient->showPage(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::closePage(bool stopResponsivenessTimer)
</span><span class="lines">@@ -2578,7 +2586,7 @@
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><span class="cx"> m_pageClient.clearAllEditCommands();
</span><del>- m_uiClient.close(this);
</del><ins>+ m_uiClient->close(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const String& message)
</span><span class="lines">@@ -2589,7 +2597,7 @@
</span><span class="cx"> // Since runJavaScriptAlert() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><del>- m_uiClient.runJavaScriptAlert(this, message, frame);
</del><ins>+ m_uiClient->runJavaScriptAlert(this, message, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const String& message, bool& result)
</span><span class="lines">@@ -2600,7 +2608,7 @@
</span><span class="cx"> // Since runJavaScriptConfirm() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><del>- result = m_uiClient.runJavaScriptConfirm(this, message, frame);
</del><ins>+ result = m_uiClient->runJavaScriptConfirm(this, message, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const String& message, const String& defaultValue, String& result)
</span><span class="lines">@@ -2611,7 +2619,7 @@
</span><span class="cx"> // Since runJavaScriptPrompt() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><del>- result = m_uiClient.runJavaScriptPrompt(this, message, defaultValue, frame);
</del><ins>+ result = m_uiClient->runJavaScriptPrompt(this, message, defaultValue, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::shouldInterruptJavaScript(bool& result)
</span><span class="lines">@@ -2619,12 +2627,12 @@
</span><span class="cx"> // Since shouldInterruptJavaScript() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><del>- result = m_uiClient.shouldInterruptJavaScript(this);
</del><ins>+ result = m_uiClient->shouldInterruptJavaScript(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setStatusText(const String& text)
</span><span class="cx"> {
</span><del>- m_uiClient.setStatusText(this, text);
</del><ins>+ m_uiClient->setStatusText(this, text);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::mouseDidMoveOverElement(const WebHitTestResult::Data& hitTestResultData, uint32_t opaqueModifiers, IPC::MessageDecoder& decoder)
</span><span class="lines">@@ -2636,7 +2644,7 @@
</span><span class="cx">
</span><span class="cx"> WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
</span><span class="cx">
</span><del>- m_uiClient.mouseDidMoveOverElement(this, hitTestResultData, modifiers, userData.get());
</del><ins>+ m_uiClient->mouseDidMoveOverElement(this, hitTestResultData, modifiers, userData.get());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::connectionWillOpen(IPC::Connection* connection)
</span><span class="lines">@@ -2681,7 +2689,7 @@
</span><span class="cx"> ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, pluginInformation.get());
</del><ins>+ m_uiClient->unavailablePluginButtonClicked(this, pluginUnavailabilityReason, pluginInformation.get());
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx">
</span><span class="lines">@@ -2694,52 +2702,52 @@
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setToolbarsAreVisible(bool toolbarsAreVisible)
</span><span class="cx"> {
</span><del>- m_uiClient.setToolbarsAreVisible(this, toolbarsAreVisible);
</del><ins>+ m_uiClient->setToolbarsAreVisible(this, toolbarsAreVisible);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::getToolbarsAreVisible(bool& toolbarsAreVisible)
</span><span class="cx"> {
</span><del>- toolbarsAreVisible = m_uiClient.toolbarsAreVisible(this);
</del><ins>+ toolbarsAreVisible = m_uiClient->toolbarsAreVisible(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setMenuBarIsVisible(bool menuBarIsVisible)
</span><span class="cx"> {
</span><del>- m_uiClient.setMenuBarIsVisible(this, menuBarIsVisible);
</del><ins>+ m_uiClient->setMenuBarIsVisible(this, menuBarIsVisible);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::getMenuBarIsVisible(bool& menuBarIsVisible)
</span><span class="cx"> {
</span><del>- menuBarIsVisible = m_uiClient.menuBarIsVisible(this);
</del><ins>+ menuBarIsVisible = m_uiClient->menuBarIsVisible(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setStatusBarIsVisible(bool statusBarIsVisible)
</span><span class="cx"> {
</span><del>- m_uiClient.setStatusBarIsVisible(this, statusBarIsVisible);
</del><ins>+ m_uiClient->setStatusBarIsVisible(this, statusBarIsVisible);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::getStatusBarIsVisible(bool& statusBarIsVisible)
</span><span class="cx"> {
</span><del>- statusBarIsVisible = m_uiClient.statusBarIsVisible(this);
</del><ins>+ statusBarIsVisible = m_uiClient->statusBarIsVisible(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setIsResizable(bool isResizable)
</span><span class="cx"> {
</span><del>- m_uiClient.setIsResizable(this, isResizable);
</del><ins>+ m_uiClient->setIsResizable(this, isResizable);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::getIsResizable(bool& isResizable)
</span><span class="cx"> {
</span><del>- isResizable = m_uiClient.isResizable(this);
</del><ins>+ isResizable = m_uiClient->isResizable(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setWindowFrame(const FloatRect& newWindowFrame)
</span><span class="cx"> {
</span><del>- m_uiClient.setWindowFrame(this, m_pageClient.convertToDeviceSpace(newWindowFrame));
</del><ins>+ m_uiClient->setWindowFrame(this, m_pageClient.convertToDeviceSpace(newWindowFrame));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::getWindowFrame(FloatRect& newWindowFrame)
</span><span class="cx"> {
</span><del>- newWindowFrame = m_pageClient.convertToUserSpace(m_uiClient.windowFrame(this));
</del><ins>+ newWindowFrame = m_pageClient.convertToUserSpace(m_uiClient->windowFrame(this));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::screenToWindow(const IntPoint& screenPoint, IntPoint& windowPoint)
</span><span class="lines">@@ -2760,7 +2768,7 @@
</span><span class="cx"> // Since runBeforeUnloadConfirmPanel() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><del>- shouldClose = m_uiClient.runBeforeUnloadConfirmPanel(this, message, frame);
</del><ins>+ shouldClose = m_uiClient->runBeforeUnloadConfirmPanel(this, message, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if USE(TILED_BACKING_STORE)
</span><span class="lines">@@ -2788,7 +2796,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::pageDidScroll()
</span><span class="cx"> {
</span><del>- m_uiClient.pageDidScroll(this);
</del><ins>+ m_uiClient->pageDidScroll(this);
</ins><span class="cx"> #if !PLATFORM(IOS) && PLATFORM(MAC)
</span><span class="cx"> dismissCorrectionPanel(ReasonForDismissingAlternativeTextIgnored);
</span><span class="cx"> #endif
</span><span class="lines">@@ -2810,7 +2818,7 @@
</span><span class="cx"> // Since runOpenPanel() can spin a nested run loop we need to turn off the responsiveness timer.
</span><span class="cx"> m_process->responsivenessTimer()->stop();
</span><span class="cx">
</span><del>- if (!m_uiClient.runOpenPanel(this, frame, parameters.get(), m_openPanelResultListener.get()))
</del><ins>+ if (!m_uiClient->runOpenPanel(this, frame, parameters.get(), m_openPanelResultListener.get()))
</ins><span class="cx"> didCancelForOpenPanel();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2822,7 +2830,7 @@
</span><span class="cx"> WebFrameProxy* frame = m_process->webFrame(frameID);
</span><span class="cx"> MESSAGE_CHECK(frame);
</span><span class="cx">
</span><del>- m_uiClient.printFrame(this, frame);
</del><ins>+ m_uiClient->printFrame(this, frame);
</ins><span class="cx">
</span><span class="cx"> endPrinting(); // Send a message synchronously while m_isPerformingDOMPrintOperation is still true.
</span><span class="cx"> m_isPerformingDOMPrintOperation = false;
</span><span class="lines">@@ -2931,7 +2939,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::didDraw()
</span><span class="cx"> {
</span><del>- m_uiClient.didDraw(this);
</del><ins>+ m_uiClient->didDraw(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Inspector
</span><span class="lines">@@ -3454,14 +3462,14 @@
</span><span class="cx"> void WebPageProxy::setFocus(bool focused)
</span><span class="cx"> {
</span><span class="cx"> if (focused)
</span><del>- m_uiClient.focus(this);
</del><ins>+ m_uiClient->focus(this);
</ins><span class="cx"> else
</span><del>- m_uiClient.unfocus(this);
</del><ins>+ m_uiClient->unfocus(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::takeFocus(uint32_t direction)
</span><span class="cx"> {
</span><del>- m_uiClient.takeFocus(this, (static_cast<FocusDirection>(direction) == FocusDirectionForward) ? kWKFocusDirectionForward : kWKFocusDirectionBackward);
</del><ins>+ m_uiClient->takeFocus(this, (static_cast<FocusDirection>(direction) == FocusDirectionForward) ? kWKFocusDirectionForward : kWKFocusDirectionBackward);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::setToolTip(const String& toolTip)
</span><span class="lines">@@ -3533,8 +3541,8 @@
</span><span class="cx">
</span><span class="cx"> // FIXME: Dispatch additional events to the didNotHandleWheelEvent client function.
</span><span class="cx"> if (!handled) {
</span><del>- if (m_uiClient.implementsDidNotHandleWheelEvent())
- m_uiClient.didNotHandleWheelEvent(this, oldestCoalescedEvent->last());
</del><ins>+ if (m_uiClient->implementsDidNotHandleWheelEvent())
+ m_uiClient->didNotHandleWheelEvent(this, oldestCoalescedEvent->last());
</ins><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> m_pageClient.wheelEventWasNotHandledByWebCore(oldestCoalescedEvent->last());
</span><span class="cx"> #endif
</span><span class="lines">@@ -3563,8 +3571,8 @@
</span><span class="cx"> if (handled)
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- if (m_uiClient.implementsDidNotHandleKeyEvent())
- m_uiClient.didNotHandleKeyEvent(this, event);
</del><ins>+ if (m_uiClient->implementsDidNotHandleKeyEvent())
+ m_uiClient->didNotHandleKeyEvent(this, event);
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="lines">@@ -3908,7 +3916,7 @@
</span><span class="cx"> parameters.userAgent = userAgent();
</span><span class="cx"> parameters.sessionState = SessionState(m_backForwardList->entries(), m_backForwardList->currentIndex());
</span><span class="cx"> parameters.highestUsedBackForwardItemID = WebBackForwardListItem::highedUsedItemID();
</span><del>- parameters.canRunBeforeUnloadConfirmPanel = m_uiClient.canRunBeforeUnloadConfirmPanel();
</del><ins>+ parameters.canRunBeforeUnloadConfirmPanel = m_uiClient->canRunBeforeUnloadConfirmPanel();
</ins><span class="cx"> parameters.canRunModal = m_canRunModal;
</span><span class="cx"> parameters.deviceScaleFactor = deviceScaleFactor();
</span><span class="cx"> parameters.mediaVolume = m_mediaVolume;
</span><span class="lines">@@ -3990,7 +3998,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::createFromDatabaseIdentifier(record->originIdentifier);
</span><span class="cx">
</span><del>- uint64_t newQuota = m_uiClient.exceededDatabaseQuota(this, frame, origin.get(),
</del><ins>+ uint64_t newQuota = m_uiClient->exceededDatabaseQuota(this, frame, origin.get(),
</ins><span class="cx"> record->databaseName, record->displayName, record->currentQuota,
</span><span class="cx"> record->currentOriginUsage, record->currentDatabaseUsage, record->expectedUsage);
</span><span class="cx">
</span><span class="lines">@@ -4008,7 +4016,7 @@
</span><span class="cx"> RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::createFromDatabaseIdentifier(originIdentifier);
</span><span class="cx"> RefPtr<GeolocationPermissionRequestProxy> request = m_geolocationPermissionRequestManager.createRequest(geolocationID);
</span><span class="cx">
</span><del>- if (m_uiClient.decidePolicyForGeolocationPermissionRequest(this, frame, origin.get(), request.get()))
</del><ins>+ if (m_uiClient->decidePolicyForGeolocationPermissionRequest(this, frame, origin.get(), request.get()))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (m_pageClient.decidePolicyForGeolocationPermissionRequest(*frame, *origin, *request))
</span><span class="lines">@@ -4025,7 +4033,7 @@
</span><span class="cx"> RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::createFromString(originString);
</span><span class="cx"> RefPtr<NotificationPermissionRequest> request = m_notificationPermissionRequestManager.createRequest(requestID);
</span><span class="cx">
</span><del>- if (!m_uiClient.decidePolicyForNotificationPermissionRequest(this, origin.get(), request.get()))
</del><ins>+ if (!m_uiClient->decidePolicyForNotificationPermissionRequest(this, origin.get(), request.get()))
</ins><span class="cx"> request->deny();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -4053,28 +4061,28 @@
</span><span class="cx"> {
</span><span class="cx"> if (frame->isDisplayingPDFDocument())
</span><span class="cx"> return 0;
</span><del>- return m_uiClient.headerHeight(this, frame);
</del><ins>+ return m_uiClient->headerHeight(this, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> float WebPageProxy::footerHeight(WebFrameProxy* frame)
</span><span class="cx"> {
</span><span class="cx"> if (frame->isDisplayingPDFDocument())
</span><span class="cx"> return 0;
</span><del>- return m_uiClient.footerHeight(this, frame);
</del><ins>+ return m_uiClient->footerHeight(this, frame);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::drawHeader(WebFrameProxy* frame, const FloatRect& rect)
</span><span class="cx"> {
</span><span class="cx"> if (frame->isDisplayingPDFDocument())
</span><span class="cx"> return;
</span><del>- m_uiClient.drawHeader(this, frame, rect);
</del><ins>+ m_uiClient->drawHeader(this, frame, rect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::drawFooter(WebFrameProxy* frame, const FloatRect& rect)
</span><span class="cx"> {
</span><span class="cx"> if (frame->isDisplayingPDFDocument())
</span><span class="cx"> return;
</span><del>- m_uiClient.drawFooter(this, frame, rect);
</del><ins>+ m_uiClient->drawFooter(this, frame, rect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::runModal()
</span><span class="lines">@@ -4088,7 +4096,7 @@
</span><span class="cx"> // See http://webkit.org/b/89590 for more discussion.
</span><span class="cx"> m_process->connection()->wakeUpRunLoop();
</span><span class="cx">
</span><del>- m_uiClient.runModal(this);
</del><ins>+ m_uiClient->runModal(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::notifyScrollerThumbIsVisibleInRect(const IntRect& scrollerThumb)
</span><span class="lines">@@ -4168,7 +4176,7 @@
</span><span class="cx"> // It's only possible to change the state for a WebPage which
</span><span class="cx"> // already qualifies for running modal child web pages, otherwise
</span><span class="cx"> // there's no other possibility than not allowing it.
</span><del>- m_canRunModal = m_uiClient.canRunModal() && canRunModal;
</del><ins>+ m_canRunModal = m_uiClient->canRunModal() && canRunModal;
</ins><span class="cx"> m_process->send(Messages::WebPage::SetCanRunModal(m_canRunModal), m_pageID);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -4267,7 +4275,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::saveDataToFileInDownloadsFolder(const String& suggestedFilename, const String& mimeType, const String& originatingURLString, API::Data* data)
</span><span class="cx"> {
</span><del>- m_uiClient.saveDataToFileInDownloadsFolder(this, suggestedFilename, mimeType, originatingURLString, data);
</del><ins>+ m_uiClient->saveDataToFileInDownloadsFolder(this, suggestedFilename, mimeType, originatingURLString, data);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::savePDFToFileInDownloadsFolder(const String& suggestedFilename, const String& originatingURLString, const IPC::DataReference& dataReference)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -57,7 +57,6 @@
</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="cx"> #include "WebPopupMenuProxy.h"
</span><del>-#include "WebUIClient.h"
</del><span class="cx"> #include <WebCore/Color.h>
</span><span class="cx"> #include <WebCore/DragActions.h>
</span><span class="cx"> #include <WebCore/DragSession.h>
</span><span class="lines">@@ -100,6 +99,7 @@
</span><span class="cx"> namespace API {
</span><span class="cx"> class LoaderClient;
</span><span class="cx"> class PolicyClient;
</span><ins>+class UIClient;
</ins><span class="cx"> class URLRequest;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -369,7 +369,7 @@
</span><span class="cx"> void initializeFormClient(const WKPageFormClientBase*);
</span><span class="cx"> void setLoaderClient(std::unique_ptr<API::LoaderClient>);
</span><span class="cx"> void setPolicyClient(std::unique_ptr<API::PolicyClient>);
</span><del>- void initializeUIClient(const WKPageUIClientBase*);
</del><ins>+ void setUIClient(std::unique_ptr<API::UIClient>);
</ins><span class="cx"> #if PLATFORM(EFL)
</span><span class="cx"> void initializeUIPopupMenuClient(const WKPageUIPopupMenuClientBase*);
</span><span class="cx"> #endif
</span><span class="lines">@@ -1176,7 +1176,7 @@
</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="cx"> WebFormClient m_formClient;
</span><del>- WebUIClient m_uiClient;
</del><ins>+ std::unique_ptr<API::UIClient> m_uiClient;
</ins><span class="cx"> #if PLATFORM(EFL)
</span><span class="cx"> WebUIPopupMenuClient m_uiPopupMenuClient;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebUIClientcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/WebUIClient.cpp (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebUIClient.cpp        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/WebUIClient.cpp        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -1,459 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010, 2011 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 "WebUIClient.h"
-
-#include "APINumber.h"
-#include "ImmutableDictionary.h"
-#include "NativeWebKeyboardEvent.h"
-#include "NativeWebWheelEvent.h"
-#include "NotificationPermissionRequest.h"
-#include "PluginInformation.h"
-#include "WKAPICast.h"
-#include "WebColorPickerResultListenerProxy.h"
-#include "WebOpenPanelResultListenerProxy.h"
-#include "WebPageProxy.h"
-#include <WebCore/FloatRect.h>
-#include <WebCore/IntSize.h>
-#include <WebCore/WindowFeatures.h>
-#include <string.h>
-#include <wtf/text/WTFString.h>
-
-using namespace WebCore;
-
-namespace WebKit {
-
-PassRefPtr<WebPageProxy> WebUIClient::createNewPage(WebPageProxy* page, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button)
-{
- if (!m_client.base.version && !m_client.createNewPage_deprecatedForUseWithV0)
- return 0;
-
- if (m_client.base.version > 0 && !m_client.createNewPage)
- return 0;
-
- ImmutableDictionary::MapType map;
- if (windowFeatures.xSet)
- map.set("x", API::Double::create(windowFeatures.x));
- if (windowFeatures.ySet)
- map.set("y", API::Double::create(windowFeatures.y));
- if (windowFeatures.widthSet)
- map.set("width", API::Double::create(windowFeatures.width));
- if (windowFeatures.heightSet)
- map.set("height", API::Double::create(windowFeatures.height));
- map.set("menuBarVisible", API::Boolean::create(windowFeatures.menuBarVisible));
- map.set("statusBarVisible", API::Boolean::create(windowFeatures.statusBarVisible));
- map.set("toolBarVisible", API::Boolean::create(windowFeatures.toolBarVisible));
- map.set("locationBarVisible", API::Boolean::create(windowFeatures.locationBarVisible));
- map.set("scrollbarsVisible", API::Boolean::create(windowFeatures.scrollbarsVisible));
- map.set("resizable", API::Boolean::create(windowFeatures.resizable));
- map.set("fullscreen", API::Boolean::create(windowFeatures.fullscreen));
- map.set("dialog", API::Boolean::create(windowFeatures.dialog));
- RefPtr<ImmutableDictionary> featuresMap = ImmutableDictionary::create(std::move(map));
-
- if (!m_client.base.version)
- return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
-
- RefPtr<API::URLRequest> request = API::URLRequest::create(resourceRequest);
- return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(request.get()), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.base.clientInfo)));
-}
-
-void WebUIClient::showPage(WebPageProxy* page)
-{
- if (!m_client.showPage)
- return;
-
- m_client.showPage(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::close(WebPageProxy* page)
-{
- if (!m_client.close)
- return;
-
- m_client.close(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::takeFocus(WebPageProxy* page, WKFocusDirection direction)
-{
- if (!m_client.takeFocus)
- return;
-
- m_client.takeFocus(toAPI(page), direction, m_client.base.clientInfo);
-}
-
-void WebUIClient::focus(WebPageProxy* page)
-{
- if (!m_client.focus)
- return;
-
- m_client.focus(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::unfocus(WebPageProxy* page)
-{
- if (!m_client.unfocus)
- return;
-
- m_client.unfocus(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::runJavaScriptAlert(WebPageProxy* page, const String& message, WebFrameProxy* frame)
-{
- if (!m_client.runJavaScriptAlert)
- return;
-
- m_client.runJavaScriptAlert(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo);
-}
-
-bool WebUIClient::runJavaScriptConfirm(WebPageProxy* page, const String& message, WebFrameProxy* frame)
-{
- if (!m_client.runJavaScriptConfirm)
- return false;
-
- return m_client.runJavaScriptConfirm(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo);
-}
-
-String WebUIClient::runJavaScriptPrompt(WebPageProxy* page, const String& message, const String& defaultValue, WebFrameProxy* frame)
-{
- if (!m_client.runJavaScriptPrompt)
- return String();
-
- API::String* string = toImpl(m_client.runJavaScriptPrompt(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), m_client.base.clientInfo));
- if (!string)
- return String();
-
- String result = string->string();
- string->deref();
-
- return result;
-}
-
-void WebUIClient::setStatusText(WebPageProxy* page, const String& text)
-{
- if (!m_client.setStatusText)
- return;
-
- m_client.setStatusText(toAPI(page), toAPI(text.impl()), m_client.base.clientInfo);
-}
-
-void WebUIClient::mouseDidMoveOverElement(WebPageProxy* page, const WebHitTestResult::Data& data, WebEvent::Modifiers modifiers, API::Object* userData)
-{
- if (!m_client.mouseDidMoveOverElement && !m_client.mouseDidMoveOverElement_deprecatedForUseWithV0)
- return;
-
- if (m_client.base.version > 0 && !m_client.mouseDidMoveOverElement)
- return;
-
- if (!m_client.base.version) {
- m_client.mouseDidMoveOverElement_deprecatedForUseWithV0(toAPI(page), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
- return;
- }
-
- RefPtr<WebHitTestResult> webHitTestResult = WebHitTestResult::create(data);
- m_client.mouseDidMoveOverElement(toAPI(page), toAPI(webHitTestResult.get()), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
-}
-
-#if ENABLE(NETSCAPE_PLUGIN_API)
-void WebUIClient::unavailablePluginButtonClicked(WebPageProxy* page, WKPluginUnavailabilityReason pluginUnavailabilityReason, ImmutableDictionary* pluginInformation)
-{
- if (pluginUnavailabilityReason == kWKPluginUnavailabilityReasonPluginMissing) {
- if (m_client.missingPluginButtonClicked_deprecatedForUseWithV0)
- m_client.missingPluginButtonClicked_deprecatedForUseWithV0(
- toAPI(page),
- toAPI(pluginInformation->get<API::String>(pluginInformationMIMETypeKey())),
- toAPI(pluginInformation->get<API::String>(pluginInformationPluginURLKey())),
- toAPI(pluginInformation->get<API::String>(pluginInformationPluginspageAttributeURLKey())),
- m_client.base.clientInfo);
- }
-
- if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1)
- m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1(
- toAPI(page),
- pluginUnavailabilityReason,
- toAPI(pluginInformation->get<API::String>(pluginInformationMIMETypeKey())),
- toAPI(pluginInformation->get<API::String>(pluginInformationPluginURLKey())),
- toAPI(pluginInformation->get<API::String>(pluginInformationPluginspageAttributeURLKey())),
- m_client.base.clientInfo);
-
- if (m_client.unavailablePluginButtonClicked)
- m_client.unavailablePluginButtonClicked(
- toAPI(page),
- pluginUnavailabilityReason,
- toAPI(pluginInformation),
- m_client.base.clientInfo);
-}
-#endif // ENABLE(NETSCAPE_PLUGIN_API)
-
-bool WebUIClient::implementsDidNotHandleKeyEvent() const
-{
- return m_client.didNotHandleKeyEvent;
-}
-
-void WebUIClient::didNotHandleKeyEvent(WebPageProxy* page, const NativeWebKeyboardEvent& event)
-{
- if (!m_client.didNotHandleKeyEvent)
- return;
- m_client.didNotHandleKeyEvent(toAPI(page), event.nativeEvent(), m_client.base.clientInfo);
-}
-
-bool WebUIClient::implementsDidNotHandleWheelEvent() const
-{
- return m_client.didNotHandleWheelEvent;
-}
-
-void WebUIClient::didNotHandleWheelEvent(WebPageProxy* page, const NativeWebWheelEvent& event)
-{
- if (!m_client.didNotHandleWheelEvent)
- return;
- m_client.didNotHandleWheelEvent(toAPI(page), event.nativeEvent(), m_client.base.clientInfo);
-}
-
-bool WebUIClient::toolbarsAreVisible(WebPageProxy* page)
-{
- if (!m_client.toolbarsAreVisible)
- return true;
- return m_client.toolbarsAreVisible(toAPI(page), m_client.base.clientInfo);
-
-}
-void WebUIClient::setToolbarsAreVisible(WebPageProxy* page, bool visible)
-{
- if (!m_client.setToolbarsAreVisible)
- return;
- m_client.setToolbarsAreVisible(toAPI(page), visible, m_client.base.clientInfo);
-}
-
-bool WebUIClient::menuBarIsVisible(WebPageProxy* page)
-{
- if (!m_client.menuBarIsVisible)
- return true;
- return m_client.menuBarIsVisible(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::setMenuBarIsVisible(WebPageProxy* page, bool visible)
-{
- if (!m_client.setMenuBarIsVisible)
- return;
- m_client.setMenuBarIsVisible(toAPI(page), visible, m_client.base.clientInfo);
-}
-
-bool WebUIClient::statusBarIsVisible(WebPageProxy* page)
-{
- if (!m_client.statusBarIsVisible)
- return true;
- return m_client.statusBarIsVisible(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::setStatusBarIsVisible(WebPageProxy* page, bool visible)
-{
- if (!m_client.setStatusBarIsVisible)
- return;
- m_client.setStatusBarIsVisible(toAPI(page), visible, m_client.base.clientInfo);
-}
-
-bool WebUIClient::isResizable(WebPageProxy* page)
-{
- if (!m_client.isResizable)
- return true;
- return m_client.isResizable(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::setIsResizable(WebPageProxy* page, bool resizable)
-{
- if (!m_client.setIsResizable)
- return;
- m_client.setIsResizable(toAPI(page), resizable, m_client.base.clientInfo);
-}
-
-void WebUIClient::setWindowFrame(WebPageProxy* page, const FloatRect& frame)
-{
- if (!m_client.setWindowFrame)
- return;
-
- m_client.setWindowFrame(toAPI(page), toAPI(frame), m_client.base.clientInfo);
-}
-
-FloatRect WebUIClient::windowFrame(WebPageProxy* page)
-{
- if (!m_client.getWindowFrame)
- return FloatRect();
-
- return toFloatRect(m_client.getWindowFrame(toAPI(page), m_client.base.clientInfo));
-}
-
-bool WebUIClient::canRunBeforeUnloadConfirmPanel() const
-{
- return m_client.runBeforeUnloadConfirmPanel;
-}
-
-bool WebUIClient::runBeforeUnloadConfirmPanel(WebPageProxy* page, const String& message, WebFrameProxy* frame)
-{
- if (!m_client.runBeforeUnloadConfirmPanel)
- return true;
-
- return m_client.runBeforeUnloadConfirmPanel(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo);
-}
-
-void WebUIClient::didDraw(WebPageProxy* page)
-{
- if (!m_client.didDraw)
- return;
-
- m_client.didDraw(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::pageDidScroll(WebPageProxy* page)
-{
- if (!m_client.pageDidScroll)
- return;
-
- m_client.pageDidScroll(toAPI(page), m_client.base.clientInfo);
-}
-
-unsigned long long WebUIClient::exceededDatabaseQuota(WebPageProxy* page, WebFrameProxy* frame, WebSecurityOrigin* origin, const String& databaseName, const String& databaseDisplayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage)
-{
- if (!m_client.exceededDatabaseQuota)
- return currentQuota;
-
- return m_client.exceededDatabaseQuota(toAPI(page), toAPI(frame), toAPI(origin), toAPI(databaseName.impl()), toAPI(databaseDisplayName.impl()), currentQuota, currentOriginUsage, currentDatabaseUsage, expectedUsage, m_client.base.clientInfo);
-}
-
-bool WebUIClient::runOpenPanel(WebPageProxy* page, WebFrameProxy* frame, WebOpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener)
-{
- if (!m_client.runOpenPanel)
- return false;
-
- m_client.runOpenPanel(toAPI(page), toAPI(frame), toAPI(parameters), toAPI(listener), m_client.base.clientInfo);
- return true;
-}
-
-bool WebUIClient::decidePolicyForGeolocationPermissionRequest(WebPageProxy* page, WebFrameProxy* frame, WebSecurityOrigin* origin, GeolocationPermissionRequestProxy* permissionRequest)
-{
- if (!m_client.decidePolicyForGeolocationPermissionRequest)
- return false;
-
- m_client.decidePolicyForGeolocationPermissionRequest(toAPI(page), toAPI(frame), toAPI(origin), toAPI(permissionRequest), m_client.base.clientInfo);
- return true;
-}
-
-bool WebUIClient::decidePolicyForNotificationPermissionRequest(WebPageProxy* page, WebSecurityOrigin* origin, NotificationPermissionRequest* permissionRequest)
-{
- if (!m_client.decidePolicyForNotificationPermissionRequest)
- return false;
-
- m_client.decidePolicyForNotificationPermissionRequest(toAPI(page), toAPI(origin), toAPI(permissionRequest), m_client.base.clientInfo);
- return true;
-}
-
-float WebUIClient::headerHeight(WebPageProxy* page, WebFrameProxy* frame)
-{
- if (!m_client.headerHeight)
- return 0;
-
- return m_client.headerHeight(toAPI(page), toAPI(frame), m_client.base.clientInfo);
-}
-
-float WebUIClient::footerHeight(WebPageProxy* page, WebFrameProxy* frame)
-{
- if (!m_client.footerHeight)
- return 0;
-
- return m_client.footerHeight(toAPI(page), toAPI(frame), m_client.base.clientInfo);
-}
-
-void WebUIClient::drawHeader(WebPageProxy* page, WebFrameProxy* frame, const WebCore::FloatRect& rect)
-{
- if (!m_client.drawHeader)
- return;
-
- m_client.drawHeader(toAPI(page), toAPI(frame), toAPI(rect), m_client.base.clientInfo);
-}
-
-void WebUIClient::drawFooter(WebPageProxy* page, WebFrameProxy* frame, const WebCore::FloatRect& rect)
-{
- if (!m_client.drawFooter)
- return;
-
- m_client.drawFooter(toAPI(page), toAPI(frame), toAPI(rect), m_client.base.clientInfo);
-}
-
-void WebUIClient::printFrame(WebPageProxy* page, WebFrameProxy* frame)
-{
- if (!m_client.printFrame)
- return;
-
- m_client.printFrame(toAPI(page), toAPI(frame), m_client.base.clientInfo);
-}
-
-bool WebUIClient::canRunModal() const
-{
- return m_client.runModal;
-}
-
-void WebUIClient::runModal(WebPageProxy* page)
-{
- if (!m_client.runModal)
- return;
-
- m_client.runModal(toAPI(page), m_client.base.clientInfo);
-}
-
-void WebUIClient::saveDataToFileInDownloadsFolder(WebPageProxy* page, const String& suggestedFilename, const String& mimeType, const String& originatingURLString, API::Data* data)
-{
- if (!m_client.saveDataToFileInDownloadsFolder)
- return;
-
- m_client.saveDataToFileInDownloadsFolder(toAPI(page), toAPI(suggestedFilename.impl()), toAPI(mimeType.impl()), toURLRef(originatingURLString.impl()), toAPI(data), m_client.base.clientInfo);
-}
-
-bool WebUIClient::shouldInterruptJavaScript(WebPageProxy* page)
-{
- if (!m_client.shouldInterruptJavaScript)
- return false;
-
- return m_client.shouldInterruptJavaScript(toAPI(page), m_client.base.clientInfo);
-}
-
-#if ENABLE(INPUT_TYPE_COLOR)
-bool WebUIClient::showColorPicker(WebPageProxy* page, const String& initialColor, WebColorPickerResultListenerProxy* listener)
-{
- if (!m_client.showColorPicker)
- return false;
-
- m_client.showColorPicker(toAPI(page), toAPI(initialColor.impl()), toAPI(listener), m_client.base.clientInfo);
- return true;
-}
-
-bool WebUIClient::hideColorPicker(WebPageProxy* page)
-{
- if (!m_client.hideColorPicker)
- return false;
-
- m_client.hideColorPicker(toAPI(page), m_client.base.clientInfo);
- return true;
-}
-#endif
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebUIClienth"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/WebUIClient.h (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebUIClient.h        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/WebUIClient.h        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -1,137 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010, 2011 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 WebUIClient_h
-#define WebUIClient_h
-
-#include "APIClient.h"
-#include "WKPage.h"
-#include "WebEvent.h"
-#include "WebHitTestResult.h"
-#include "WebOpenPanelParameters.h"
-#include <wtf/Forward.h>
-#include <wtf/PassRefPtr.h>
-
-namespace API {
-class Data;
-
-template<> struct ClientTraits<WKPageUIClientBase> {
- typedef std::tuple<WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2> Versions;
-};
-}
-
-namespace WebCore {
- class FloatRect;
- class IntSize;
- class ResourceRequest;
- struct WindowFeatures;
-}
-
-namespace WebKit {
-
-class GeolocationPermissionRequestProxy;
-class ImmutableDictionary;
-class NativeWebKeyboardEvent;
-class NativeWebWheelEvent;
-class NotificationPermissionRequest;
-class WebColorPickerResultListenerProxy;
-class WebFrameProxy;
-class WebPageProxy;
-class WebSecurityOrigin;
-class WebOpenPanelResultListenerProxy;
-
-class WebUIClient : public API::Client<WKPageUIClientBase> {
-public:
- PassRefPtr<WebPageProxy> createNewPage(WebPageProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, WebEvent::Modifiers, WebMouseEvent::Button);
- void showPage(WebPageProxy*);
- void close(WebPageProxy*);
-
- void takeFocus(WebPageProxy*, WKFocusDirection);
- void focus(WebPageProxy*);
- void unfocus(WebPageProxy*);
-
- void runJavaScriptAlert(WebPageProxy*, const String&, WebFrameProxy*);
- bool runJavaScriptConfirm(WebPageProxy*, const String&, WebFrameProxy*);
- String runJavaScriptPrompt(WebPageProxy*, const String&, const String&, WebFrameProxy*);
-
- void setStatusText(WebPageProxy*, const String&);
- void mouseDidMoveOverElement(WebPageProxy*, const WebHitTestResult::Data&, WebEvent::Modifiers, API::Object*);
-#if ENABLE(NETSCAPE_PLUGIN_API)
- void unavailablePluginButtonClicked(WebPageProxy*, WKPluginUnavailabilityReason, ImmutableDictionary*);
-#endif // ENABLE(NETSCAPE_PLUGIN_API)
-
- bool implementsDidNotHandleKeyEvent() const;
- void didNotHandleKeyEvent(WebPageProxy*, const NativeWebKeyboardEvent&);
-
- bool implementsDidNotHandleWheelEvent() const;
- void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&);
-
- bool toolbarsAreVisible(WebPageProxy*);
- void setToolbarsAreVisible(WebPageProxy*, bool);
- bool menuBarIsVisible(WebPageProxy*);
- void setMenuBarIsVisible(WebPageProxy*, bool);
- bool statusBarIsVisible(WebPageProxy*);
- void setStatusBarIsVisible(WebPageProxy*, bool);
- bool isResizable(WebPageProxy*);
- void setIsResizable(WebPageProxy*, bool);
-
- void setWindowFrame(WebPageProxy*, const WebCore::FloatRect&);
- WebCore::FloatRect windowFrame(WebPageProxy*);
-
- bool canRunBeforeUnloadConfirmPanel() const;
- bool runBeforeUnloadConfirmPanel(WebPageProxy*, const String&, WebFrameProxy*);
-
- void didDraw(WebPageProxy*);
- void pageDidScroll(WebPageProxy*);
-
- unsigned long long exceededDatabaseQuota(WebPageProxy*, WebFrameProxy*, WebSecurityOrigin*, const String& databaseName, const String& databaseDisplayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage);
-
- bool runOpenPanel(WebPageProxy*, WebFrameProxy*, WebOpenPanelParameters*, WebOpenPanelResultListenerProxy*);
- bool decidePolicyForGeolocationPermissionRequest(WebPageProxy*, WebFrameProxy*, WebSecurityOrigin*, GeolocationPermissionRequestProxy*);
- bool decidePolicyForNotificationPermissionRequest(WebPageProxy*, WebSecurityOrigin*, NotificationPermissionRequest*);
-
- // Printing.
- float headerHeight(WebPageProxy*, WebFrameProxy*);
- float footerHeight(WebPageProxy*, WebFrameProxy*);
- void drawHeader(WebPageProxy*, WebFrameProxy*, const WebCore::FloatRect&);
- void drawFooter(WebPageProxy*, WebFrameProxy*, const WebCore::FloatRect&);
- void printFrame(WebPageProxy*, WebFrameProxy*);
-
- bool canRunModal() const;
- void runModal(WebPageProxy*);
-
- void saveDataToFileInDownloadsFolder(WebPageProxy*, const String& suggestedFilename, const String& mimeType, const String& originatingURLString, API::Data*);
-
- bool shouldInterruptJavaScript(WebPageProxy*);
-
-#if ENABLE(INPUT_TYPE_COLOR)
- bool showColorPicker(WebPageProxy*, const String&, WebColorPickerResultListenerProxy*);
- bool hideColorPicker(WebPageProxy*);
-#endif
-};
-
-} // namespace WebKit
-
-#endif // WebUIClient_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebInspectorProxyMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -449,7 +449,7 @@
</span><span class="cx"> 0, // unavailablePluginButtonClicked
</span><span class="cx"> };
</span><span class="cx">
</span><del>- inspectorPage->initializeUIClient(reinterpret_cast<const WKPageUIClientBase*>(&uiClient));
</del><ins>+ WKPageSetPageUIClient(toAPI(inspectorPage), &uiClient.base);
</ins><span class="cx">
</span><span class="cx"> return inspectorPage;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebPageProxyMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #import "config.h"
</span><span class="cx"> #import "WebPageProxy.h"
</span><span class="cx">
</span><ins>+#import "APIUIClient.h"
</ins><span class="cx"> #import "AttributedString.h"
</span><span class="cx"> #import "ColorSpaceData.h"
</span><span class="cx"> #import "DataReference.h"
</span><span class="lines">@@ -133,7 +134,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // In case the UI client overrides getWindowFrame(), we call it here to make sure we send the appropriate window frame.
</span><del>- FloatRect windowFrameInScreenCoordinates = m_uiClient.windowFrame(this);
</del><ins>+ FloatRect windowFrameInScreenCoordinates = m_uiClient->windowFrame(this);
</ins><span class="cx"> FloatRect windowFrameInUnflippedScreenCoordinates = m_pageClient.convertToUserSpace(windowFrameInScreenCoordinates);
</span><span class="cx">
</span><span class="cx"> process().send(Messages::WebPage::WindowAndViewFramesChanged(windowFrameInScreenCoordinates, windowFrameInUnflippedScreenCoordinates, viewFrameInWindowCoordinates, accessibilityViewCoordinates), m_pageID);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (163479 => 163480)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-02-05 23:38:29 UTC (rev 163479)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-02-05 23:40:26 UTC (rev 163480)
</span><span class="lines">@@ -177,9 +177,8 @@
</span><span class="cx">                 1A4A9C5612B816CF008FE984 /* NetscapePluginModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A9C5412B816CF008FE984 /* NetscapePluginModule.h */; };
</span><span class="cx">                 1A4A9C9A12B821CD008FE984 /* NetscapePluginModuleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A9C9912B821CD008FE984 /* NetscapePluginModuleMac.mm */; };
</span><span class="cx">                 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */; };
</span><ins>+                1A4D664818A2D91A00D82E21 /* APIUIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4D664718A2D91A00D82E21 /* APIUIClient.h */; };
</ins><span class="cx">                 1A50DB66110A3D57000D3FE5 /* WebProcess.app in Copy Files */ = {isa = PBXBuildFile; fileRef = 1A50DB1E110A3BDC000D3FE5 /* WebProcess.app */; };
</span><del>-                1A594ABA112A1FB6009DE7C7 /* WebUIClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A594AB8112A1FB6009DE7C7 /* WebUIClient.cpp */; };
-                1A594ABB112A1FB6009DE7C7 /* WebUIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A594AB9112A1FB6009DE7C7 /* WebUIClient.h */; };
</del><span class="cx">                 1A5B1C501898606F004FCF9B /* WKNavigation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A5B1C4E1898606F004FCF9B /* WKNavigation.mm */; };
</span><span class="cx">                 1A5B1C511898606F004FCF9B /* WKNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5B1C4F1898606F004FCF9B /* WKNavigation.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><span class="cx">                 1A5B1C5418987EDF004FCF9B /* WebDocumentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A5B1C5218987EDF004FCF9B /* WebDocumentLoader.cpp */; };
</span><span class="lines">@@ -1822,13 +1821,12 @@
</span><span class="cx">                 1A4A9C5412B816CF008FE984 /* NetscapePluginModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetscapePluginModule.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A4A9C9912B821CD008FE984 /* NetscapePluginModuleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetscapePluginModuleMac.mm; sourceTree = "<group>"; };
</span><span class="cx">                 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginQuirks.h; sourceTree = "<group>"; };
</span><ins>+                1A4D664718A2D91A00D82E21 /* APIUIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIUIClient.h; sourceTree = "<group>"; };
</ins><span class="cx">                 1A4F976A100E7B6600637A18 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
</span><span class="cx">                 1A4F976B100E7B6600637A18 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
</span><span class="cx">                 1A4F976C100E7B6600637A18 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = "<group>"; };
</span><span class="cx">                 1A4F976E100E7B6600637A18 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
</span><span class="cx">                 1A50DB1E110A3BDC000D3FE5 /* WebProcess.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebProcess.app; sourceTree = BUILT_PRODUCTS_DIR; };
</span><del>-                1A594AB8112A1FB6009DE7C7 /* WebUIClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebUIClient.cpp; sourceTree = "<group>"; };
-                1A594AB9112A1FB6009DE7C7 /* WebUIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUIClient.h; sourceTree = "<group>"; };
</del><span class="cx">                 1A5B1C4E1898606F004FCF9B /* WKNavigation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNavigation.mm; sourceTree = "<group>"; };
</span><span class="cx">                 1A5B1C4F1898606F004FCF9B /* WKNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigation.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A5B1C5218987EDF004FCF9B /* WebDocumentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDocumentLoader.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -5072,8 +5070,6 @@
</span><span class="cx">                                 33367632130C99B2006C9DE2 /* WebResourceCacheManagerProxy.cpp */,
</span><span class="cx">                                 33367633130C99B2006C9DE2 /* WebResourceCacheManagerProxy.h */,
</span><span class="cx">                                 33367634130C99B2006C9DE2 /* WebResourceCacheManagerProxy.messages.in */,
</span><del>-                                1A594AB8112A1FB6009DE7C7 /* WebUIClient.cpp */,
-                                1A594AB9112A1FB6009DE7C7 /* WebUIClient.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = UIProcess;
</span><span class="cx">                         sourceTree = "<group>";
</span><span class="lines">@@ -5090,6 +5086,7 @@
</span><span class="cx">                                 BC111B47112F616900337BAB /* mac */,
</span><span class="cx">                                 1A2464F21891E45100234C5B /* APILoaderClient.h */,
</span><span class="cx">                                 1AFDD3141891B54000153970 /* APIPolicyClient.h */,
</span><ins>+                                1A4D664718A2D91A00D82E21 /* APIUIClient.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = API;
</span><span class="cx">                         sourceTree = "<group>";
</span><span class="lines">@@ -6538,6 +6535,7 @@
</span><span class="cx">                                 BC1BE1F212D54DBD0004A228 /* WebGeolocationProvider.h in Headers */,
</span><span class="cx">                                 0F174AA3142A4CB70039250F /* APIGeometry.h in Headers */,
</span><span class="cx">                                 BCF69F871176CD6F00471A52 /* WebHistoryClient.h in Headers */,
</span><ins>+                                1A4D664818A2D91A00D82E21 /* APIUIClient.h in Headers */,
</ins><span class="cx">                                 7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */,
</span><span class="cx">                                 511B24AB132E097200065A0C /* WebIconDatabase.h in Headers */,
</span><span class="cx">                                 51834593134532E90092B696 /* WebIconDatabaseClient.h in Headers */,
</span><span class="lines">@@ -6629,7 +6627,6 @@
</span><span class="cx">                                 1FB00AC9185F76460019142E /* WKWebProcessPlugInPageGroupInternal.h in Headers */,
</span><span class="cx">                                 F634445612A885C8000612D8 /* WebSecurityOrigin.h in Headers */,
</span><span class="cx">                                 BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */,
</span><del>-                                1A594ABB112A1FB6009DE7C7 /* WebUIClient.h in Headers */,
</del><span class="cx">                                 BCA0EF7F12331E78007D3CFB /* WebUndoStep.h in Headers */,
</span><span class="cx">                                 1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */,
</span><span class="cx">                                 1AB474E8184D44D00051B622 /* WKBundlePageDiagnosticLoggingClient.h in Headers */,
</span><span class="lines">@@ -8038,7 +8035,6 @@
</span><span class="cx">                                 D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */,
</span><span class="cx">                                 BCC5715C115ADAEF001CCAF9 /* WebSystemInterface.mm in Sources */,
</span><span class="cx">                                 C0337DD8127A51B6008FF4F4 /* WebTouchEvent.cpp in Sources */,
</span><del>-                                1A594ABA112A1FB6009DE7C7 /* WebUIClient.cpp in Sources */,
</del><span class="cx">                                 BCA0EF8012331E78007D3CFB /* WebUndoStep.cpp in Sources */,
</span><span class="cx">                                 2DA944AF1884E9BA00ED86DB /* WebPageProxyIOS.mm in Sources */,
</span><span class="cx">                                 BCE2315E122C30CA00D5C35A /* APIURLRequest.cpp in Sources */,
</span></span></pre>
</div>
</div>
</body>
</html>