<!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  &lt;andersca@apple.com&gt;
+
+        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  &lt;enrica@apple.com&gt;
</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 &quot;WKPage.h&quot;
+#include &quot;WebEvent.h&quot;
+#include &quot;WebHitTestResult.h&quot;
+#include &lt;WebCore/FloatRect.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+
+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&lt;WebKit::WebPageProxy&gt; createNewPage(WebKit::WebPageProxy*, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, 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&amp;, WebKit::WebFrameProxy*) { }
+    virtual bool runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*) { return false; }
+    virtual WTF::String runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy*) { return WTF::String(); }
+
+    virtual void setStatusText(WebKit::WebPageProxy*, const WTF::String&amp;) { }
+    virtual void mouseDidMoveOverElement(WebKit::WebPageProxy*, const WebKit::WebHitTestResult::Data&amp;, 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&amp;) { }
+
+    virtual bool implementsDidNotHandleWheelEvent() const { return false; }
+    virtual void didNotHandleWheelEvent(WebKit::WebPageProxy*, const WebKit::NativeWebWheelEvent&amp;) { }
+
+    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&amp;) { }
+    virtual WebCore::FloatRect windowFrame(WebKit::WebPageProxy*) { return WebCore::FloatRect(); }
+
+    virtual bool canRunBeforeUnloadConfirmPanel() const { return false; }
+    virtual bool runBeforeUnloadConfirmPanel(WebKit::WebPageProxy*, const WTF::String&amp;, 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&amp; databaseName, const WTF::String&amp; 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&amp;) { }
+    virtual void drawFooter(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::FloatRect&amp;) { }
+    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&amp; suggestedFilename, const WTF::String&amp; mimeType, const WTF::String&amp; originatingURLString, API::Data*) { }
+
+    virtual bool shouldInterruptJavaScript(WebKit::WebPageProxy*) { return false; }
+
+#if ENABLE(INPUT_TYPE_COLOR)
+    virtual bool showColorPicker(WebKit::WebPageProxy*, const WTF::String&amp;, 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 &quot;APIData.h&quot;
</span><span class="cx"> #include &quot;APILoaderClient.h&quot;
</span><span class="cx"> #include &quot;APIPolicyClient.h&quot;
</span><ins>+#include &quot;APIUIClient.h&quot;
</ins><span class="cx"> #include &quot;ImmutableDictionary.h&quot;
</span><ins>+#include &quot;NativeWebKeyboardEvent.h&quot;
+#include &quot;NativeWebWheelEvent.h&quot;
</ins><span class="cx"> #include &quot;NavigationActionData.h&quot;
</span><span class="cx"> #include &quot;PluginInformation.h&quot;
</span><span class="cx"> #include &quot;PrintInfo.h&quot;
</span><span class="lines">@@ -43,6 +46,7 @@
</span><span class="cx"> #include &quot;WebPageProxy.h&quot;
</span><span class="cx"> #include &quot;WebProcessProxy.h&quot;
</span><span class="cx"> #include &lt;WebCore/Page.h&gt;
</span><ins>+#include &lt;WebCore/WindowFeatures.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __BLOCKS__
</span><span class="cx"> #include &lt;Block.h&gt;
</span><span class="lines">@@ -63,6 +67,11 @@
</span><span class="cx"> template&lt;&gt; struct ClientTraits&lt;WKPagePolicyClientBase&gt; {
</span><span class="cx">     typedef std::tuple&lt;WKPagePolicyClientV0, WKPagePolicyClientV1, WKPagePolicyClientInternal&gt; Versions;
</span><span class="cx"> };
</span><ins>+
+template&lt;&gt; struct ClientTraits&lt;WKPageUIClientBase&gt; {
+    typedef std::tuple&lt;WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2&gt; 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)-&gt;initializeUIClient(wkClient);
</del><ins>+    class UIClient : public API::Client&lt;WKPageUIClientBase&gt;, public API::UIClient {
+    public:
+        explicit UIClient(const WKPageUIClientBase* client)
+        {
+            initialize(client);
+        }
+
+    private:
+        virtual PassRefPtr&lt;WebPageProxy&gt; createNewPage(WebPageProxy* page, const ResourceRequest&amp; resourceRequest, const WindowFeatures&amp; windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button) override
+        {
+            if (!m_client.base.version &amp;&amp; !m_client.createNewPage_deprecatedForUseWithV0)
+                return 0;
+
+            if (m_client.base.version &gt; 0 &amp;&amp; !m_client.createNewPage)
+                return 0;
+
+            ImmutableDictionary::MapType map;
+            if (windowFeatures.xSet)
+                map.set(&quot;x&quot;, API::Double::create(windowFeatures.x));
+            if (windowFeatures.ySet)
+                map.set(&quot;y&quot;, API::Double::create(windowFeatures.y));
+            if (windowFeatures.widthSet)
+                map.set(&quot;width&quot;, API::Double::create(windowFeatures.width));
+            if (windowFeatures.heightSet)
+                map.set(&quot;height&quot;, API::Double::create(windowFeatures.height));
+            map.set(&quot;menuBarVisible&quot;, API::Boolean::create(windowFeatures.menuBarVisible));
+            map.set(&quot;statusBarVisible&quot;, API::Boolean::create(windowFeatures.statusBarVisible));
+            map.set(&quot;toolBarVisible&quot;, API::Boolean::create(windowFeatures.toolBarVisible));
+            map.set(&quot;locationBarVisible&quot;, API::Boolean::create(windowFeatures.locationBarVisible));
+            map.set(&quot;scrollbarsVisible&quot;, API::Boolean::create(windowFeatures.scrollbarsVisible));
+            map.set(&quot;resizable&quot;, API::Boolean::create(windowFeatures.resizable));
+            map.set(&quot;fullscreen&quot;, API::Boolean::create(windowFeatures.fullscreen));
+            map.set(&quot;dialog&quot;, API::Boolean::create(windowFeatures.dialog));
+            RefPtr&lt;ImmutableDictionary&gt; 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&lt;API::URLRequest&gt; 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&amp; 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&amp; 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&amp; message, const String&amp; 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-&gt;string();
+            string-&gt;deref();
+
+            return result;
+        }
+
+        virtual void setStatusText(WebPageProxy* page, const String&amp; 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&amp; data, WebEvent::Modifiers modifiers, API::Object* userData) override
+        {
+            if (!m_client.mouseDidMoveOverElement &amp;&amp; !m_client.mouseDidMoveOverElement_deprecatedForUseWithV0)
+                return;
+
+            if (m_client.base.version &gt; 0 &amp;&amp; !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&lt;WebHitTestResult&gt; 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-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())),
+                        toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationPluginURLKey())),
+                        toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationPluginspageAttributeURLKey())),
+                        m_client.base.clientInfo);
+            }
+
+            if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1)
+                m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1(
+                    toAPI(page),
+                    pluginUnavailabilityReason,
+                    toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())),
+                    toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationPluginURLKey())),
+                    toAPI(pluginInformation-&gt;get&lt;API::String&gt;(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&amp; 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&amp; 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&amp; 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&amp; 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&amp; databaseName, const String&amp; 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&amp; 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&amp; 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&amp; suggestedFilename, const String&amp; mimeType, const String&amp; 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&amp; 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)-&gt;setUIClient(std::make_unique&lt;UIClient&gt;(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 &quot;APIArray.h&quot;
</span><span class="cx"> #include &quot;APILoaderClient.h&quot;
</span><span class="cx"> #include &quot;APIPolicyClient.h&quot;
</span><ins>+#include &quot;APIUIClient.h&quot;
</ins><span class="cx"> #include &quot;APIURLRequest.h&quot;
</span><span class="cx"> #include &quot;AuthenticationChallengeProxy.h&quot;
</span><span class="cx"> #include &quot;AuthenticationDecisionListener.h&quot;
</span><span class="lines">@@ -72,6 +73,7 @@
</span><span class="cx"> #include &quot;WebInspectorProxy.h&quot;
</span><span class="cx"> #include &quot;WebInspectorProxyMessages.h&quot;
</span><span class="cx"> #include &quot;WebNotificationManagerProxy.h&quot;
</span><ins>+#include &quot;WebOpenPanelParameters.h&quot;
</ins><span class="cx"> #include &quot;WebOpenPanelResultListenerProxy.h&quot;
</span><span class="cx"> #include &quot;WebPageCreationParameters.h&quot;
</span><span class="cx"> #include &quot;WebPageGroup.h&quot;
</span><span class="lines">@@ -248,6 +250,7 @@
</span><span class="cx">     : m_pageClient(pageClient)
</span><span class="cx">     , m_loaderClient(std::make_unique&lt;API::LoaderClient&gt;())
</span><span class="cx">     , m_policyClient(std::make_unique&lt;API::PolicyClient&gt;())
</span><ins>+    , m_uiClient(std::make_unique&lt;API::UIClient&gt;())
</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&lt;API::UIClient&gt; uiClient)
</ins><span class="cx"> {
</span><ins>+    if (!uiClient) {
+        m_uiClient = std::make_unique&lt;API::UIClient&gt;();
+        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-&gt;send(Messages::WebPage::SetCanRunBeforeUnloadConfirmPanel(m_uiClient.canRunBeforeUnloadConfirmPanel()), m_pageID);
-    setCanRunModal(m_uiClient.canRunModal());
</del><ins>+    m_process-&gt;send(Messages::WebPage::SetCanRunBeforeUnloadConfirmPanel(m_uiClient-&gt;canRunBeforeUnloadConfirmPanel()), m_pageID);
+    setCanRunModal(m_uiClient-&gt;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&amp; request, const WindowFeatures&amp; windowFeatures, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t&amp; newPageID, WebPageCreationParameters&amp; newPageParameters)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;WebPageProxy&gt; newPage = m_uiClient.createNewPage(this, request, windowFeatures, static_cast&lt;WebEvent::Modifiers&gt;(opaqueModifiers), static_cast&lt;WebMouseEvent::Button&gt;(opaqueMouseButton));
</del><ins>+    RefPtr&lt;WebPageProxy&gt; newPage = m_uiClient-&gt;createNewPage(this, request, windowFeatures, static_cast&lt;WebEvent::Modifiers&gt;(opaqueModifiers), static_cast&lt;WebMouseEvent::Button&gt;(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-&gt;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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><span class="cx">     m_pageClient.clearAllEditCommands();
</span><del>-    m_uiClient.close(this);
</del><ins>+    m_uiClient-&gt;close(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const String&amp; 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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    m_uiClient.runJavaScriptAlert(this, message, frame);
</del><ins>+    m_uiClient-&gt;runJavaScriptAlert(this, message, frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const String&amp; message, bool&amp; 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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    result = m_uiClient.runJavaScriptConfirm(this, message, frame);
</del><ins>+    result = m_uiClient-&gt;runJavaScriptConfirm(this, message, frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const String&amp; message, const String&amp; defaultValue, String&amp; 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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    result = m_uiClient.runJavaScriptPrompt(this, message, defaultValue, frame);
</del><ins>+    result = m_uiClient-&gt;runJavaScriptPrompt(this, message, defaultValue, frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::shouldInterruptJavaScript(bool&amp; 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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    result = m_uiClient.shouldInterruptJavaScript(this);
</del><ins>+    result = m_uiClient-&gt;shouldInterruptJavaScript(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::setStatusText(const String&amp; text)
</span><span class="cx"> {
</span><del>-    m_uiClient.setStatusText(this, text);
</del><ins>+    m_uiClient-&gt;setStatusText(this, text);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::mouseDidMoveOverElement(const WebHitTestResult::Data&amp; hitTestResultData, uint32_t opaqueModifiers, IPC::MessageDecoder&amp; decoder)
</span><span class="lines">@@ -2636,7 +2644,7 @@
</span><span class="cx"> 
</span><span class="cx">     WebEvent::Modifiers modifiers = static_cast&lt;WebEvent::Modifiers&gt;(opaqueModifiers);
</span><span class="cx"> 
</span><del>-    m_uiClient.mouseDidMoveOverElement(this, hitTestResultData, modifiers, userData.get());
</del><ins>+    m_uiClient-&gt;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-&gt;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-&gt;setToolbarsAreVisible(this, toolbarsAreVisible);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::getToolbarsAreVisible(bool&amp; toolbarsAreVisible)
</span><span class="cx"> {
</span><del>-    toolbarsAreVisible = m_uiClient.toolbarsAreVisible(this);
</del><ins>+    toolbarsAreVisible = m_uiClient-&gt;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-&gt;setMenuBarIsVisible(this, menuBarIsVisible);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::getMenuBarIsVisible(bool&amp; menuBarIsVisible)
</span><span class="cx"> {
</span><del>-    menuBarIsVisible = m_uiClient.menuBarIsVisible(this);
</del><ins>+    menuBarIsVisible = m_uiClient-&gt;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-&gt;setStatusBarIsVisible(this, statusBarIsVisible);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::getStatusBarIsVisible(bool&amp; statusBarIsVisible)
</span><span class="cx"> {
</span><del>-    statusBarIsVisible = m_uiClient.statusBarIsVisible(this);
</del><ins>+    statusBarIsVisible = m_uiClient-&gt;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-&gt;setIsResizable(this, isResizable);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::getIsResizable(bool&amp; isResizable)
</span><span class="cx"> {
</span><del>-    isResizable = m_uiClient.isResizable(this);
</del><ins>+    isResizable = m_uiClient-&gt;isResizable(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::setWindowFrame(const FloatRect&amp; newWindowFrame)
</span><span class="cx"> {
</span><del>-    m_uiClient.setWindowFrame(this, m_pageClient.convertToDeviceSpace(newWindowFrame));
</del><ins>+    m_uiClient-&gt;setWindowFrame(this, m_pageClient.convertToDeviceSpace(newWindowFrame));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::getWindowFrame(FloatRect&amp; newWindowFrame)
</span><span class="cx"> {
</span><del>-    newWindowFrame = m_pageClient.convertToUserSpace(m_uiClient.windowFrame(this));
</del><ins>+    newWindowFrame = m_pageClient.convertToUserSpace(m_uiClient-&gt;windowFrame(this));
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void WebPageProxy::screenToWindow(const IntPoint&amp; screenPoint, IntPoint&amp; 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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    shouldClose = m_uiClient.runBeforeUnloadConfirmPanel(this, message, frame);
</del><ins>+    shouldClose = m_uiClient-&gt;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-&gt;pageDidScroll(this);
</ins><span class="cx"> #if !PLATFORM(IOS) &amp;&amp; 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-&gt;responsivenessTimer()-&gt;stop();
</span><span class="cx"> 
</span><del>-    if (!m_uiClient.runOpenPanel(this, frame, parameters.get(), m_openPanelResultListener.get()))
</del><ins>+    if (!m_uiClient-&gt;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-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    m_uiClient.printFrame(this, frame);
</del><ins>+    m_uiClient-&gt;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-&gt;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-&gt;focus(this);
</ins><span class="cx">     else
</span><del>-        m_uiClient.unfocus(this);
</del><ins>+        m_uiClient-&gt;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&lt;FocusDirection&gt;(direction) == FocusDirectionForward) ? kWKFocusDirectionForward : kWKFocusDirectionBackward);
</del><ins>+    m_uiClient-&gt;takeFocus(this, (static_cast&lt;FocusDirection&gt;(direction) == FocusDirectionForward) ? kWKFocusDirectionForward : kWKFocusDirectionBackward);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::setToolTip(const String&amp; 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-&gt;last());
</del><ins>+            if (m_uiClient-&gt;implementsDidNotHandleWheelEvent())
+                m_uiClient-&gt;didNotHandleWheelEvent(this, oldestCoalescedEvent-&gt;last());
</ins><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">             m_pageClient.wheelEventWasNotHandledByWebCore(oldestCoalescedEvent-&gt;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-&gt;implementsDidNotHandleKeyEvent())
+            m_uiClient-&gt;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-&gt;entries(), m_backForwardList-&gt;currentIndex());
</span><span class="cx">     parameters.highestUsedBackForwardItemID = WebBackForwardListItem::highedUsedItemID();
</span><del>-    parameters.canRunBeforeUnloadConfirmPanel = m_uiClient.canRunBeforeUnloadConfirmPanel();
</del><ins>+    parameters.canRunBeforeUnloadConfirmPanel = m_uiClient-&gt;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&lt;WebSecurityOrigin&gt; origin = WebSecurityOrigin::createFromDatabaseIdentifier(record-&gt;originIdentifier);
</span><span class="cx"> 
</span><del>-        uint64_t newQuota = m_uiClient.exceededDatabaseQuota(this, frame, origin.get(),
</del><ins>+        uint64_t newQuota = m_uiClient-&gt;exceededDatabaseQuota(this, frame, origin.get(),
</ins><span class="cx">             record-&gt;databaseName, record-&gt;displayName, record-&gt;currentQuota,
</span><span class="cx">             record-&gt;currentOriginUsage, record-&gt;currentDatabaseUsage, record-&gt;expectedUsage);
</span><span class="cx"> 
</span><span class="lines">@@ -4008,7 +4016,7 @@
</span><span class="cx">     RefPtr&lt;WebSecurityOrigin&gt; origin = WebSecurityOrigin::createFromDatabaseIdentifier(originIdentifier);
</span><span class="cx">     RefPtr&lt;GeolocationPermissionRequestProxy&gt; 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-&gt;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&lt;WebSecurityOrigin&gt; origin = WebSecurityOrigin::createFromString(originString);
</span><span class="cx">     RefPtr&lt;NotificationPermissionRequest&gt; 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-&gt;decidePolicyForNotificationPermissionRequest(this, origin.get(), request.get()))
</ins><span class="cx">         request-&gt;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-&gt;isDisplayingPDFDocument())
</span><span class="cx">         return 0;
</span><del>-    return m_uiClient.headerHeight(this, frame);
</del><ins>+    return m_uiClient-&gt;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-&gt;isDisplayingPDFDocument())
</span><span class="cx">         return 0;
</span><del>-    return m_uiClient.footerHeight(this, frame);
</del><ins>+    return m_uiClient-&gt;footerHeight(this, frame);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::drawHeader(WebFrameProxy* frame, const FloatRect&amp; rect)
</span><span class="cx"> {
</span><span class="cx">     if (frame-&gt;isDisplayingPDFDocument())
</span><span class="cx">         return;
</span><del>-    m_uiClient.drawHeader(this, frame, rect);
</del><ins>+    m_uiClient-&gt;drawHeader(this, frame, rect);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::drawFooter(WebFrameProxy* frame, const FloatRect&amp; rect)
</span><span class="cx"> {
</span><span class="cx">     if (frame-&gt;isDisplayingPDFDocument())
</span><span class="cx">         return;
</span><del>-    m_uiClient.drawFooter(this, frame, rect);
</del><ins>+    m_uiClient-&gt;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-&gt;connection()-&gt;wakeUpRunLoop();
</span><span class="cx"> 
</span><del>-    m_uiClient.runModal(this);
</del><ins>+    m_uiClient-&gt;runModal(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::notifyScrollerThumbIsVisibleInRect(const IntRect&amp; 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() &amp;&amp; canRunModal;
</del><ins>+    m_canRunModal = m_uiClient-&gt;canRunModal() &amp;&amp; canRunModal;
</ins><span class="cx">     m_process-&gt;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&amp; suggestedFilename, const String&amp; mimeType, const String&amp; originatingURLString, API::Data* data)
</span><span class="cx"> {
</span><del>-    m_uiClient.saveDataToFileInDownloadsFolder(this, suggestedFilename, mimeType, originatingURLString, data);
</del><ins>+    m_uiClient-&gt;saveDataToFileInDownloadsFolder(this, suggestedFilename, mimeType, originatingURLString, data);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::savePDFToFileInDownloadsFolder(const String&amp; suggestedFilename, const String&amp; originatingURLString, const IPC::DataReference&amp; 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 &lt;WebCore/AlternativeTextClient.h&gt; // FIXME: Needed by WebPageProxyMessages.h for DICTATION_ALTERNATIVES.
</span><span class="cx"> #include &quot;WebPageProxyMessages.h&quot;
</span><span class="cx"> #include &quot;WebPopupMenuProxy.h&quot;
</span><del>-#include &quot;WebUIClient.h&quot;
</del><span class="cx"> #include &lt;WebCore/Color.h&gt;
</span><span class="cx"> #include &lt;WebCore/DragActions.h&gt;
</span><span class="cx"> #include &lt;WebCore/DragSession.h&gt;
</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&lt;API::LoaderClient&gt;);
</span><span class="cx">     void setPolicyClient(std::unique_ptr&lt;API::PolicyClient&gt;);
</span><del>-    void initializeUIClient(const WKPageUIClientBase*);
</del><ins>+    void setUIClient(std::unique_ptr&lt;API::UIClient&gt;);
</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&lt;API::LoaderClient&gt; m_loaderClient;
</span><span class="cx">     std::unique_ptr&lt;API::PolicyClient&gt; m_policyClient;
</span><span class="cx">     WebFormClient m_formClient;
</span><del>-    WebUIClient m_uiClient;
</del><ins>+    std::unique_ptr&lt;API::UIClient&gt; 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 &quot;config.h&quot;
-#include &quot;WebUIClient.h&quot;
-
-#include &quot;APINumber.h&quot;
-#include &quot;ImmutableDictionary.h&quot;
-#include &quot;NativeWebKeyboardEvent.h&quot;
-#include &quot;NativeWebWheelEvent.h&quot;
-#include &quot;NotificationPermissionRequest.h&quot;
-#include &quot;PluginInformation.h&quot;
-#include &quot;WKAPICast.h&quot;
-#include &quot;WebColorPickerResultListenerProxy.h&quot;
-#include &quot;WebOpenPanelResultListenerProxy.h&quot;
-#include &quot;WebPageProxy.h&quot;
-#include &lt;WebCore/FloatRect.h&gt;
-#include &lt;WebCore/IntSize.h&gt;
-#include &lt;WebCore/WindowFeatures.h&gt;
-#include &lt;string.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-PassRefPtr&lt;WebPageProxy&gt; WebUIClient::createNewPage(WebPageProxy* page, const ResourceRequest&amp; resourceRequest, const WindowFeatures&amp; windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button)
-{
-    if (!m_client.base.version &amp;&amp; !m_client.createNewPage_deprecatedForUseWithV0)
-        return 0;
-    
-    if (m_client.base.version &gt; 0 &amp;&amp; !m_client.createNewPage)
-        return 0;
-
-    ImmutableDictionary::MapType map;
-    if (windowFeatures.xSet)
-        map.set(&quot;x&quot;, API::Double::create(windowFeatures.x));
-    if (windowFeatures.ySet)
-        map.set(&quot;y&quot;, API::Double::create(windowFeatures.y));
-    if (windowFeatures.widthSet)
-        map.set(&quot;width&quot;, API::Double::create(windowFeatures.width));
-    if (windowFeatures.heightSet)
-        map.set(&quot;height&quot;, API::Double::create(windowFeatures.height));
-    map.set(&quot;menuBarVisible&quot;, API::Boolean::create(windowFeatures.menuBarVisible));
-    map.set(&quot;statusBarVisible&quot;, API::Boolean::create(windowFeatures.statusBarVisible));
-    map.set(&quot;toolBarVisible&quot;, API::Boolean::create(windowFeatures.toolBarVisible));
-    map.set(&quot;locationBarVisible&quot;, API::Boolean::create(windowFeatures.locationBarVisible));
-    map.set(&quot;scrollbarsVisible&quot;, API::Boolean::create(windowFeatures.scrollbarsVisible));
-    map.set(&quot;resizable&quot;, API::Boolean::create(windowFeatures.resizable));
-    map.set(&quot;fullscreen&quot;, API::Boolean::create(windowFeatures.fullscreen));
-    map.set(&quot;dialog&quot;, API::Boolean::create(windowFeatures.dialog));
-    RefPtr&lt;ImmutableDictionary&gt; 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&lt;API::URLRequest&gt; 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&amp; 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&amp; 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&amp; message, const String&amp; 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-&gt;string();
-    string-&gt;deref();
-
-    return result;
-}
-
-void WebUIClient::setStatusText(WebPageProxy* page, const String&amp; 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&amp; data, WebEvent::Modifiers modifiers, API::Object* userData)
-{
-    if (!m_client.mouseDidMoveOverElement &amp;&amp; !m_client.mouseDidMoveOverElement_deprecatedForUseWithV0)
-        return;
-
-    if (m_client.base.version &gt; 0 &amp;&amp; !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&lt;WebHitTestResult&gt; 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-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())),
-                toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationPluginURLKey())),
-                toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationPluginspageAttributeURLKey())),
-                m_client.base.clientInfo);
-    }
-
-    if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1)
-        m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1(
-            toAPI(page),
-            pluginUnavailabilityReason,
-            toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())),
-            toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationPluginURLKey())),
-            toAPI(pluginInformation-&gt;get&lt;API::String&gt;(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&amp; 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&amp; 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&amp; 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&amp; 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&amp; databaseName, const String&amp; 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&amp; 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&amp; 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&amp; suggestedFilename, const String&amp; mimeType, const String&amp; 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&amp; 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 &quot;APIClient.h&quot;
-#include &quot;WKPage.h&quot;
-#include &quot;WebEvent.h&quot;
-#include &quot;WebHitTestResult.h&quot;
-#include &quot;WebOpenPanelParameters.h&quot;
-#include &lt;wtf/Forward.h&gt;
-#include &lt;wtf/PassRefPtr.h&gt;
-
-namespace API {
-class Data;
-
-template&lt;&gt; struct ClientTraits&lt;WKPageUIClientBase&gt; {
-    typedef std::tuple&lt;WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2&gt; 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&lt;WKPageUIClientBase&gt; {
-public:
-    PassRefPtr&lt;WebPageProxy&gt; createNewPage(WebPageProxy*, const WebCore::ResourceRequest&amp;, const WebCore::WindowFeatures&amp;, 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&amp;, WebFrameProxy*);
-    bool runJavaScriptConfirm(WebPageProxy*, const String&amp;, WebFrameProxy*);
-    String runJavaScriptPrompt(WebPageProxy*, const String&amp;, const String&amp;, WebFrameProxy*);
-
-    void setStatusText(WebPageProxy*, const String&amp;);
-    void mouseDidMoveOverElement(WebPageProxy*, const WebHitTestResult::Data&amp;, 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&amp;);
-
-    bool implementsDidNotHandleWheelEvent() const;
-    void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&amp;);
-
-    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&amp;);
-    WebCore::FloatRect windowFrame(WebPageProxy*);
-
-    bool canRunBeforeUnloadConfirmPanel() const;
-    bool runBeforeUnloadConfirmPanel(WebPageProxy*, const String&amp;, WebFrameProxy*);
-
-    void didDraw(WebPageProxy*);
-    void pageDidScroll(WebPageProxy*);
-
-    unsigned long long exceededDatabaseQuota(WebPageProxy*, WebFrameProxy*, WebSecurityOrigin*, const String&amp; databaseName, const String&amp; 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&amp;);
-    void drawFooter(WebPageProxy*, WebFrameProxy*, const WebCore::FloatRect&amp;);
-    void printFrame(WebPageProxy*, WebFrameProxy*);
-
-    bool canRunModal() const;
-    void runModal(WebPageProxy*);
-
-    void saveDataToFileInDownloadsFolder(WebPageProxy*, const String&amp; suggestedFilename, const String&amp; mimeType, const String&amp; originatingURLString, API::Data*);
-
-    bool shouldInterruptJavaScript(WebPageProxy*);
-
-#if ENABLE(INPUT_TYPE_COLOR)
-    bool showColorPicker(WebPageProxy*, const String&amp;, 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-&gt;initializeUIClient(reinterpret_cast&lt;const WKPageUIClientBase*&gt;(&amp;uiClient));
</del><ins>+    WKPageSetPageUIClient(toAPI(inspectorPage), &amp;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 &quot;config.h&quot;
</span><span class="cx"> #import &quot;WebPageProxy.h&quot;
</span><span class="cx"> 
</span><ins>+#import &quot;APIUIClient.h&quot;
</ins><span class="cx"> #import &quot;AttributedString.h&quot;
</span><span class="cx"> #import &quot;ColorSpaceData.h&quot;
</span><span class="cx"> #import &quot;DataReference.h&quot;
</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-&gt;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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A4A9C9912B821CD008FE984 /* NetscapePluginModuleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetscapePluginModuleMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginQuirks.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1A4D664718A2D91A00D82E21 /* APIUIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIUIClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1A4F976A100E7B6600637A18 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A4F976B100E7B6600637A18 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A4F976C100E7B6600637A18 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A4F976E100E7B6600637A18 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;; };
-                1A594AB9112A1FB6009DE7C7 /* WebUIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUIClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 1A5B1C4E1898606F004FCF9B /* WKNavigation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNavigation.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A5B1C4F1898606F004FCF9B /* WKNavigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A5B1C5218987EDF004FCF9B /* WebDocumentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDocumentLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;;
</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 = &quot;&lt;group&gt;&quot;;
</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>