<!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>[179588] trunk</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Add WKPageNavigationClient as C SPI around API::NavigationClient, and adopt in WKTR
https://bugs.webkit.org/show_bug.cgi?id=141217

Reviewed by Sam Weinig.

* Shared/API/c/WKBase.h:
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKFrameInfoRef.cpp: Added.
(WKFrameInfoGetTypeID):
* UIProcess/API/C/WKFrameInfoRef.h: Added.
* UIProcess/API/C/WKNavigationActionRef.cpp: Added.
(WKNavigationActionGetTypeID):
* UIProcess/API/C/WKNavigationActionRef.h: Added.
* UIProcess/API/C/WKNavigationRef.cpp: Added.
(WKNavigationGetTypeID):
* UIProcess/API/C/WKNavigationRef.h: Added.
* UIProcess/API/C/WKNavigationResponseRef.cpp: Added.
(WKNavigationResponseGetTypeID):
(WKNavigationResponseCanShowMIMEType):
* UIProcess/API/C/WKNavigationResponseRef.h: Added.
Add tiny C wrappers around API::{FrameInfo, NavigationAction, Navigation, NavigationResponse}.

* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForPluginLoad):
Add a default implementation of decidePolicyForPluginLoad.

* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKPage.h:
Add WKPageSetPageNavigationClient, which connects API::NavigationClient to
the new WKPageNavigationClient C SPI.

* UIProcess/API/C/WKPageNavigationClient.h: Added.
Add WKPageNavigationClient, which one can use in place of WKPageLoaderClient
and WKPagePolicyClient and which has the same semantics as the Modern ObjC API
(including things like API::Navigation as WKNavigationRef, etc.)

* UIProcess/API/C/WKPageLoaderClient.h:
* UIProcess/API/C/WKPageRenderingProgressEvents.h: Added.
* UIProcess/API/C/WKPageRenderingProgressEventsInternal.h: Added.
(pageRenderingProgressEvents):
* UIProcess/API/C/WKPluginLoadPolicy.h: Added.
Pull some enums out into their own files (WKPageRenderingProgressEvents is
duplicated from the Modern ObjC API's _WKRenderingProgressEvents, WKPluginLoadPolicy
is pulled out of WKPageLoaderClient).

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
Add an equivalent of pluginLoadPolicy to the NavigationClient.

* WebKit2.xcodeproj/project.pbxproj:

* WebKitTestRunner/TestController.cpp:
(WTR::copyWebCryptoMasterKey):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::ensureViewSupportsOptions):
(WTR::TestController::didCommitNavigation):
(WTR::TestController::didFinishNavigation):
(WTR::TestController::canAuthenticateAgainstProtectionSpace):
(WTR::TestController::didReceiveAuthenticationChallenge):
(WTR::TestController::decidePolicyForPluginLoad):
(WTR::TestController::decidePolicyForNavigationAction):
(WTR::TestController::decidePolicyForNavigationResponse):
(WTR::TestController::didCommitLoadForFrame): Deleted.
(WTR::TestController::didFinishLoadForFrame): Deleted.
* WebKitTestRunner/TestController.h:
Adopt WKPageNavigationClient and adjust to its semantics (navigations are main-frame-only, etc.)</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedAPIcWKBaseh">trunk/Source/WebKit2/Shared/API/c/WKBase.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPINavigationClienth">trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKAPICasth">trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageh">trunk/Source/WebKit2/UIProcess/API/C/WKPage.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageLoaderClienth">trunk/Source/WebKit2/UIProcess/API/C/WKPageLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllercpp">trunk/Tools/WebKitTestRunner/TestController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerTestControllerh">trunk/Tools/WebKitTestRunner/TestController.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKFrameInfoRefcpp">trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKFrameInfoRefh">trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKNavigationActionRefcpp">trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKNavigationActionRefh">trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKNavigationRefcpp">trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKNavigationRefh">trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKNavigationResponseRefcpp">trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKNavigationResponseRefh">trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageNavigationClienth">trunk/Source/WebKit2/UIProcess/API/C/WKPageNavigationClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageRenderingProgressEventsh">trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEvents.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageRenderingProgressEventsInternalh">trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEventsInternal.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPluginLoadPolicyh">trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/ChangeLog        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -1,3 +1,57 @@
</span><ins>+2015-02-03  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        Add WKPageNavigationClient as C SPI around API::NavigationClient, and adopt in WKTR
+        https://bugs.webkit.org/show_bug.cgi?id=141217
+
+        Reviewed by Sam Weinig.
+
+        * Shared/API/c/WKBase.h:
+        * UIProcess/API/C/WKAPICast.h:
+        * UIProcess/API/C/WKFrameInfoRef.cpp: Added.
+        (WKFrameInfoGetTypeID):
+        * UIProcess/API/C/WKFrameInfoRef.h: Added.
+        * UIProcess/API/C/WKNavigationActionRef.cpp: Added.
+        (WKNavigationActionGetTypeID):
+        * UIProcess/API/C/WKNavigationActionRef.h: Added.
+        * UIProcess/API/C/WKNavigationRef.cpp: Added.
+        (WKNavigationGetTypeID):
+        * UIProcess/API/C/WKNavigationRef.h: Added.
+        * UIProcess/API/C/WKNavigationResponseRef.cpp: Added.
+        (WKNavigationResponseGetTypeID):
+        (WKNavigationResponseCanShowMIMEType):
+        * UIProcess/API/C/WKNavigationResponseRef.h: Added.
+        Add tiny C wrappers around API::{FrameInfo, NavigationAction, Navigation, NavigationResponse}.
+
+        * UIProcess/API/APINavigationClient.h:
+        (API::NavigationClient::decidePolicyForPluginLoad):
+        Add a default implementation of decidePolicyForPluginLoad.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetPageNavigationClient):
+        * UIProcess/API/C/WKPage.h:
+        Add WKPageSetPageNavigationClient, which connects API::NavigationClient to
+        the new WKPageNavigationClient C SPI.
+        
+        * UIProcess/API/C/WKPageNavigationClient.h: Added.
+        Add WKPageNavigationClient, which one can use in place of WKPageLoaderClient
+        and WKPagePolicyClient and which has the same semantics as the Modern ObjC API
+        (including things like API::Navigation as WKNavigationRef, etc.)
+
+        * UIProcess/API/C/WKPageLoaderClient.h:
+        * UIProcess/API/C/WKPageRenderingProgressEvents.h: Added.
+        * UIProcess/API/C/WKPageRenderingProgressEventsInternal.h: Added.
+        (pageRenderingProgressEvents):
+        * UIProcess/API/C/WKPluginLoadPolicy.h: Added.
+        Pull some enums out into their own files (WKPageRenderingProgressEvents is
+        duplicated from the Modern ObjC API's _WKRenderingProgressEvents, WKPluginLoadPolicy
+        is pulled out of WKPageLoaderClient).
+
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::findPlugin):
+        Add an equivalent of pluginLoadPolicy to the NavigationClient.
+
+        * WebKit2.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2015-02-03  Timothy Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Every PageOverlayClientImpl leaks
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedAPIcWKBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/API/c/WKBase.h (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/API/c/WKBase.h        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/Shared/API/c/WKBase.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -100,6 +100,7 @@
</span><span class="cx"> typedef const struct OpaqueWKDatabaseManager* WKDatabaseManagerRef;
</span><span class="cx"> typedef const struct OpaqueWKDownload* WKDownloadRef;
</span><span class="cx"> typedef const struct OpaqueWKFormSubmissionListener* WKFormSubmissionListenerRef;
</span><ins>+typedef const struct OpaqueWKFrameInfo* WKFrameInfoRef;
</ins><span class="cx"> typedef const struct OpaqueWKFrame* WKFrameRef;
</span><span class="cx"> typedef const struct OpaqueWKFramePolicyListener* WKFramePolicyListenerRef;
</span><span class="cx"> typedef const struct OpaqueWKGeolocationManager* WKGeolocationManagerRef;
</span><span class="lines">@@ -111,7 +112,10 @@
</span><span class="cx"> typedef const struct OpaqueWKInspector* WKInspectorRef;
</span><span class="cx"> typedef const struct OpaqueWKKeyValueStorageManager* WKKeyValueStorageManagerRef;
</span><span class="cx"> typedef const struct OpaqueWKMediaCacheManager* WKMediaCacheManagerRef;
</span><ins>+typedef const struct OpaqueWKNavigationAction* WKNavigationActionRef;
</ins><span class="cx"> typedef const struct OpaqueWKNavigationData* WKNavigationDataRef;
</span><ins>+typedef const struct OpaqueWKNavigation* WKNavigationRef;
+typedef const struct OpaqueWKNavigationResponse* WKNavigationResponseRef;
</ins><span class="cx"> typedef const struct OpaqueWKNotification* WKNotificationRef;
</span><span class="cx"> typedef const struct OpaqueWKNotificationManager* WKNotificationManagerRef;
</span><span class="cx"> typedef const struct OpaqueWKNotificationPermissionRequest* WKNotificationPermissionRequestRef;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPINavigationClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/UIProcess/API/APINavigationClient.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -104,6 +104,13 @@
</span><span class="cx">     {
</span><span class="cx">         listener-&gt;use();
</span><span class="cx">     }
</span><ins>+    
+#if ENABLE(NETSCAPE_PLUGIN_API)
+    virtual WebKit::PluginModuleLoadPolicy decidePolicyForPluginLoad(WebKit::WebPageProxy&amp;, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary*, WTF::String&amp;)
+    {
+        return currentPluginLoadPolicy;
+    }
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace API
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKAPICasth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -51,7 +51,11 @@
</span><span class="cx"> #include &lt;WebCore/Settings.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><ins>+class FrameInfo;
+class Navigation;
+class NavigationAction;
</ins><span class="cx"> class NavigationData;
</span><ins>+class NavigationResponse;
</ins><span class="cx"> class PageConfiguration;
</span><span class="cx"> class ProcessPoolConfiguration;
</span><span class="cx"> class SessionState;
</span><span class="lines">@@ -125,6 +129,7 @@
</span><span class="cx"> WK_ADD_API_MAPPING(WKDownloadRef, DownloadProxy)
</span><span class="cx"> WK_ADD_API_MAPPING(WKFormSubmissionListenerRef, WebFormSubmissionListenerProxy)
</span><span class="cx"> WK_ADD_API_MAPPING(WKFramePolicyListenerRef, WebFramePolicyListenerProxy)
</span><ins>+WK_ADD_API_MAPPING(WKFrameInfoRef, API::FrameInfo)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKFrameRef, WebFrameProxy)
</span><span class="cx"> WK_ADD_API_MAPPING(WKGeolocationManagerRef, WebGeolocationManagerProxy)
</span><span class="cx"> WK_ADD_API_MAPPING(WKGeolocationPermissionRequestRef, GeolocationPermissionRequestProxy)
</span><span class="lines">@@ -134,7 +139,10 @@
</span><span class="cx"> WK_ADD_API_MAPPING(WKIconDatabaseRef, WebIconDatabase)
</span><span class="cx"> WK_ADD_API_MAPPING(WKKeyValueStorageManagerRef, WebKeyValueStorageManager)
</span><span class="cx"> WK_ADD_API_MAPPING(WKMediaCacheManagerRef, WebMediaCacheManagerProxy)
</span><ins>+WK_ADD_API_MAPPING(WKNavigationActionRef, API::NavigationAction)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKNavigationDataRef, API::NavigationData)
</span><ins>+WK_ADD_API_MAPPING(WKNavigationRef, API::Navigation)
+WK_ADD_API_MAPPING(WKNavigationResponseRef, API::NavigationResponse)
</ins><span class="cx"> WK_ADD_API_MAPPING(WKNotificationManagerRef, WebNotificationManagerProxy)
</span><span class="cx"> WK_ADD_API_MAPPING(WKNotificationPermissionRequestRef, NotificationPermissionRequest)
</span><span class="cx"> WK_ADD_API_MAPPING(WKNotificationProviderRef, WebNotificationProvider)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKFrameInfoRefcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.cpp (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.cpp                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WKFrameInfoRef.h&quot;
+
+#include &quot;APIFrameInfo.h&quot;
+#include &quot;WKAPICast.h&quot;
+
+using namespace WebKit;
+
+WKTypeID WKFrameInfoGetTypeID()
+{
+    return toAPI(API::FrameInfo::APIType);
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKFrameInfoRefh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKFrameInfoRef.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKFrameInfoRef_h
+#define WKFrameInfoRef_h
+
+#include &lt;WebKit/WKBase.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+WK_EXPORT WKTypeID WKFrameInfoGetTypeID();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKFrameInfoRef_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKNavigationActionRefcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.cpp (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.cpp                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WKNavigationActionRef.h&quot;
+
+#include &quot;APINavigationAction.h&quot;
+#include &quot;WKAPICast.h&quot;
+
+using namespace WebKit;
+
+WKTypeID WKNavigationActionGetTypeID()
+{
+    return toAPI(API::NavigationAction::APIType);
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKNavigationActionRefh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKNavigationActionRef.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKNavigationActionRef_h
+#define WKNavigationActionRef_h
+
+#include &lt;WebKit/WKBase.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+WK_EXPORT WKTypeID WKNavigationActionGetTypeID();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKNavigationActionRef_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKNavigationRefcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.cpp (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.cpp                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WKNavigationRef.h&quot;
+
+#include &quot;APINavigation.h&quot;
+#include &quot;WKAPICast.h&quot;
+
+using namespace WebKit;
+
+WKTypeID WKNavigationGetTypeID()
+{
+    return toAPI(API::Navigation::APIType);
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKNavigationRefh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKNavigationRef.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKNavigationRef_h
+#define WKNavigationRef_h
+
+#include &lt;WebKit/WKBase.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+WK_EXPORT WKTypeID WKNavigationGetTypeID();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKNavigationRef_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKNavigationResponseRefcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.cpp (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.cpp                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WKNavigationResponseRef.h&quot;
+
+#include &quot;APINavigationResponse.h&quot;
+#include &quot;WKAPICast.h&quot;
+
+using namespace WebKit;
+
+WKTypeID WKNavigationResponseGetTypeID()
+{
+    return toAPI(API::NavigationResponse::APIType);
+}
+
+bool WKNavigationResponseCanShowMIMEType(WKNavigationResponseRef response)
+{
+    return toImpl(response)-&gt;canShowMIMEType();
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKNavigationResponseRefh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKNavigationResponseRef.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKNavigationResponseRef_h
+#define WKNavigationResponseRef_h
+
+#include &lt;WebKit/WKBase.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+WK_EXPORT WKTypeID WKNavigationResponseGetTypeID();
+    
+WK_EXPORT bool WKNavigationResponseCanShowMIMEType(WKNavigationResponseRef);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKNavigationResponseRef_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -32,7 +32,9 @@
</span><span class="cx"> #include &quot;APIData.h&quot;
</span><span class="cx"> #include &quot;APIDictionary.h&quot;
</span><span class="cx"> #include &quot;APIFindClient.h&quot;
</span><ins>+#include &quot;APIFrameInfo.h&quot;
</ins><span class="cx"> #include &quot;APILoaderClient.h&quot;
</span><ins>+#include &quot;APINavigationClient.h&quot;
</ins><span class="cx"> #include &quot;APIPolicyClient.h&quot;
</span><span class="cx"> #include &quot;APISessionState.h&quot;
</span><span class="cx"> #include &quot;APIUIClient.h&quot;
</span><span class="lines">@@ -46,6 +48,7 @@
</span><span class="cx"> #include &quot;PrintInfo.h&quot;
</span><span class="cx"> #include &quot;WKAPICast.h&quot;
</span><span class="cx"> #include &quot;WKPagePolicyClientInternal.h&quot;
</span><ins>+#include &quot;WKPageRenderingProgressEventsInternal.h&quot;
</ins><span class="cx"> #include &quot;WKPluginInformation.h&quot;
</span><span class="cx"> #include &quot;WebBackForwardList.h&quot;
</span><span class="cx"> #include &quot;WebFormClient.h&quot;
</span><span class="lines">@@ -77,6 +80,10 @@
</span><span class="cx">     typedef std::tuple&lt;WKPageLoaderClientV0, WKPageLoaderClientV1, WKPageLoaderClientV2, WKPageLoaderClientV3, WKPageLoaderClientV4, WKPageLoaderClientV5&gt; Versions;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template&lt;&gt; struct ClientTraits&lt;WKPageNavigationClientBase&gt; {
+    typedef std::tuple&lt;WKPageNavigationClientV0&gt; Versions;
+};
+
</ins><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><span class="lines">@@ -1736,6 +1743,153 @@
</span><span class="cx">     toImpl(pageRef)-&gt;setUIClient(std::make_unique&lt;UIClient&gt;(wkClient));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKPageSetPageNavigationClient(WKPageRef pageRef, const WKPageNavigationClientBase* wkClient)
+{
+    class NavigationClient : public API::Client&lt;WKPageNavigationClientBase&gt;, public API::NavigationClient {
+    public:
+        explicit NavigationClient(const WKPageNavigationClientBase* client)
+        {
+            initialize(client);
+        }
+
+    private:
+        virtual void decidePolicyForNavigationAction(WebPageProxy&amp; page, API::NavigationAction&amp; navigationAction, Ref&lt;WebKit::WebFramePolicyListenerProxy&gt;&amp;&amp; listener, API::Object* userData) override
+        {
+            if (!m_client.decidePolicyForNavigationAction)
+                return;
+            m_client.decidePolicyForNavigationAction(toAPI(&amp;page), toAPI(&amp;navigationAction), toAPI(listener.ptr()), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void decidePolicyForNavigationResponse(WebPageProxy&amp; page, API::NavigationResponse&amp; navigationResponse, Ref&lt;WebKit::WebFramePolicyListenerProxy&gt;&amp;&amp; listener, API::Object* userData) override
+        {
+            if (!m_client.decidePolicyForNavigationResponse)
+                return;
+            m_client.decidePolicyForNavigationResponse(toAPI(&amp;page), toAPI(&amp;navigationResponse), toAPI(listener.ptr()), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didStartProvisionalNavigation(WebPageProxy&amp; page, API::Navigation* navigation, API::Object* userData) override
+        {
+            if (!m_client.didStartProvisionalNavigation)
+                return;
+            m_client.didStartProvisionalNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didReceiveServerRedirectForProvisionalNavigation(WebPageProxy&amp; page, API::Navigation* navigation, API::Object* userData) override
+        {
+            if (!m_client.didReceiveServerRedirectForProvisionalNavigation)
+                return;
+            m_client.didReceiveServerRedirectForProvisionalNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didFailProvisionalNavigationWithError(WebPageProxy&amp; page, WebFrameProxy&amp;, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object* userData) override
+        {
+            if (!m_client.didFailProvisionalNavigation)
+                return;
+            m_client.didFailProvisionalNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(error), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didCommitNavigation(WebPageProxy&amp; page, API::Navigation* navigation, API::Object* userData) override
+        {
+            if (!m_client.didCommitNavigation)
+                return;
+            m_client.didCommitNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didFinishNavigation(WebPageProxy&amp; page, API::Navigation* navigation, API::Object* userData) override
+        {
+            if (!m_client.didFinishNavigation)
+                return;
+            m_client.didFinishNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didFailNavigationWithError(WebPageProxy&amp; page, WebFrameProxy&amp;, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object* userData) override
+        {
+            if (!m_client.didFailNavigation)
+                return;
+            m_client.didFailNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(error), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didFailProvisionalLoadInSubframeWithError(WebPageProxy&amp; page, WebFrameProxy&amp; subframe, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object* userData) override
+        {
+            if (!m_client.didFailProvisionalLoadInSubframe)
+                return;
+            m_client.didFailProvisionalLoadInSubframe(toAPI(&amp;page), toAPI(navigation), toAPI(API::FrameInfo::create(subframe).ptr()), toAPI(error), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didFinishDocumentLoad(WebPageProxy&amp; page, API::Navigation* navigation, API::Object* userData) override
+        {
+            if (!m_client.didFinishDocumentLoad)
+                return;
+            m_client.didFinishDocumentLoad(toAPI(&amp;page), toAPI(navigation), toAPI(userData), m_client.base.clientInfo);
+        }
+
+        virtual void didSameDocumentNavigation(WebPageProxy&amp; page, API::Navigation* navigation, WebKit::SameDocumentNavigationType navigationType, API::Object* userData) override
+        {
+            if (!m_client.didSameDocumentNavigation)
+                return;
+            m_client.didSameDocumentNavigation(toAPI(&amp;page), toAPI(navigation), toAPI(navigationType), toAPI(userData), m_client.base.clientInfo);
+        }
+        
+        virtual void renderingProgressDidChange(WebPageProxy&amp; page, WebCore::LayoutMilestones milestones, API::Object* userData) override
+        {
+            if (!m_client.renderingProgressDidChange)
+                return;
+            m_client.renderingProgressDidChange(toAPI(&amp;page), pageRenderingProgressEvents(milestones), toAPI(userData), m_client.base.clientInfo);
+        }
+        
+        virtual bool canAuthenticateAgainstProtectionSpace(WebPageProxy&amp; page, WebProtectionSpace* protectionSpace) override
+        {
+            if (!m_client.canAuthenticateAgainstProtectionSpace)
+                return false;
+            return m_client.canAuthenticateAgainstProtectionSpace(toAPI(&amp;page), toAPI(protectionSpace), m_client.base.clientInfo);
+        }
+        
+        virtual void didReceiveAuthenticationChallenge(WebPageProxy&amp; page, AuthenticationChallengeProxy* authenticationChallenge) override
+        {
+            if (!m_client.didReceiveAuthenticationChallenge)
+                return;
+            m_client.didReceiveAuthenticationChallenge(toAPI(&amp;page), toAPI(authenticationChallenge), m_client.base.clientInfo);
+        }
+
+        virtual void processDidCrash(WebPageProxy&amp; page) override
+        {
+            if (!m_client.webProcessDidCrash)
+                return;
+            m_client.webProcessDidCrash(toAPI(&amp;page), m_client.base.clientInfo);
+        }
+
+        virtual PassRefPtr&lt;API::Data&gt; webCryptoMasterKey(WebPageProxy&amp; page) override
+        {
+            if (!m_client.copyWebCryptoMasterKey)
+                return nullptr;
+            return adoptRef(toImpl(m_client.copyWebCryptoMasterKey(toAPI(&amp;page), m_client.base.clientInfo)));
+        }
+        
+#if ENABLE(NETSCAPE_PLUGIN_API)
+        virtual PluginModuleLoadPolicy decidePolicyForPluginLoad(WebPageProxy&amp; page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary* pluginInformation, String&amp; unavailabilityDescription) override
+        {
+            WKStringRef unavailabilityDescriptionOut = 0;
+            PluginModuleLoadPolicy loadPolicy = currentPluginLoadPolicy;
+            
+            if (m_client.decidePolicyForPluginLoad)
+                loadPolicy = toPluginModuleLoadPolicy(m_client.decidePolicyForPluginLoad(toAPI(&amp;page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation), &amp;unavailabilityDescriptionOut, m_client.base.clientInfo));
+            
+            if (unavailabilityDescriptionOut) {
+                RefPtr&lt;API::String&gt; webUnavailabilityDescription = adoptRef(toImpl(unavailabilityDescriptionOut));
+                unavailabilityDescription = webUnavailabilityDescription-&gt;string();
+            }
+            
+            return loadPolicy;
+        }
+#endif
+    };
+
+    WebPageProxy* webPageProxy = toImpl(pageRef);
+
+    auto navigationClient = std::make_unique&lt;NavigationClient&gt;(wkClient);
+    webPageProxy-&gt;setNavigationClient(WTF::move(navigationClient));
+}
+
</ins><span class="cx"> void WKPageSetSession(WKPageRef pageRef, WKSessionRef session)
</span><span class="cx"> {
</span><span class="cx">     toImpl(pageRef)-&gt;setSessionID(toImpl(session)-&gt;getID());
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> #include &lt;WebKit/WKPageFormClient.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageLoadTypes.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageLoaderClient.h&gt;
</span><ins>+#include &lt;WebKit/WKPageNavigationClient.h&gt;
</ins><span class="cx"> #include &lt;WebKit/WKPagePolicyClient.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageUIClient.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageVisibilityTypes.h&gt;
</span><span class="lines">@@ -212,9 +213,12 @@
</span><span class="cx"> WK_EXPORT void WKPageSetPageFindClient(WKPageRef page, const WKPageFindClientBase* client);
</span><span class="cx"> WK_EXPORT void WKPageSetPageFindMatchesClient(WKPageRef page, const WKPageFindMatchesClientBase* client);
</span><span class="cx"> WK_EXPORT void WKPageSetPageFormClient(WKPageRef page, const WKPageFormClientBase* client);
</span><ins>+WK_EXPORT void WKPageSetPageUIClient(WKPageRef page, const WKPageUIClientBase* client);
+
+// A client can implement either a navigation client or loader and policy clients, but never both.
</ins><span class="cx"> WK_EXPORT void WKPageSetPageLoaderClient(WKPageRef page, const WKPageLoaderClientBase* client);
</span><span class="cx"> WK_EXPORT void WKPageSetPagePolicyClient(WKPageRef page, const WKPagePolicyClientBase* client);
</span><del>-WK_EXPORT void WKPageSetPageUIClient(WKPageRef page, const WKPageUIClientBase* client);
</del><ins>+WK_EXPORT void WKPageSetPageNavigationClient(WKPageRef page, const WKPageNavigationClientBase* client);
</ins><span class="cx"> 
</span><span class="cx"> WK_EXPORT void WKPageSetSession(WKPageRef page, WKSessionRef session);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageLoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPageLoaderClient.h (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPageLoaderClient.h        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageLoaderClient.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -29,20 +29,13 @@
</span><span class="cx"> #include &lt;WebKit/WKBase.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKErrorRef.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKPageLoadTypes.h&gt;
</span><ins>+#include &lt;WebKit/WKPluginLoadPolicy.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> extern &quot;C&quot; {
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> enum {
</span><del>-    kWKPluginLoadPolicyLoadNormally = 0,
-    kWKPluginLoadPolicyBlocked,
-    kWKPluginLoadPolicyInactive,
-    kWKPluginLoadPolicyLoadUnsandboxed,
-};
-typedef uint32_t WKPluginLoadPolicy;
-
-enum {
</del><span class="cx">     kWKWebGLLoadPolicyBlocked = 0,
</span><span class="cx">     kWKWebGLLoadPolicyLoadNormally,
</span><span class="cx">     kWKWebGLLoadPolicyPending
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageNavigationClienth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKPageNavigationClient.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPageNavigationClient.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageNavigationClient.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,105 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKPageNavigationClient_h
+#define WKPageNavigationClient_h
+
+#include &lt;WebKit/WKBase.h&gt;
+#include &lt;WebKit/WKPageLoadTypes.h&gt;
+#include &lt;WebKit/WKPageRenderingProgressEvents.h&gt;
+#include &lt;WebKit/WKPluginLoadPolicy.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+typedef void (*WKPageNavigationDecidePolicyForNavigationActionCallback)(WKPageRef page, WKNavigationActionRef navigationAction, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDecidePolicyForNavigationResponseCallback)(WKPageRef page, WKNavigationResponseRef navigationResponse, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidStartProvisionalNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidReceiveServerRedirectForProvisionalNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidFailProvisionalNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKErrorRef error, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidCommitNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidFinishNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidFailNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKErrorRef error, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidFailProvisionalLoadInSubframeCallback)(WKPageRef page, WKNavigationRef navigation, WKFrameInfoRef subframe, WKErrorRef error, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidFinishDocumentLoadCallback)(WKPageRef page, WKNavigationRef navigation, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidSameDocumentNavigationCallback)(WKPageRef page, WKNavigationRef navigation, WKSameDocumentNavigationType navigationType, WKTypeRef userData, const void* clientInfo);
+
+typedef void (*WKPageNavigationRenderingProgressDidChangeCallback)(WKPageRef page, WKPageRenderingProgressEvents progressEvents, WKTypeRef userData, const void* clientInfo);
+    
+typedef bool (*WKPageNavigationCanAuthenticateAgainstProtectionSpaceCallback)(WKPageRef page, WKProtectionSpaceRef protectionSpace, const void* clientInfo);
+
+typedef void (*WKPageNavigationDidReceiveAuthenticationChallengeCallback)(WKPageRef page, WKAuthenticationChallengeRef challenge, const void* clientInfo);
+
+typedef void (*WKPageNavigationWebProcessDidCrashCallback)(WKPageRef page, const void* clientInfo);
+
+typedef WKDataRef (*WKPageNavigationCopyWebCryptoMasterKeyCallback)(WKPageRef page, const void* clientInfo);
+    
+typedef WKPluginLoadPolicy (*WKPageNavigationDecidePolicyForPluginLoadCallback)(WKPageRef page, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInfoDictionary, WKStringRef* unavailabilityDescription, const void* clientInfo);
+
+typedef struct WKPageNavigationClientBase {
+    int version;
+    const void* clientInfo;
+} WKPageNavigationClientBase;
+
+typedef struct WKPageNavigationClientV0 {
+    WKPageNavigationClientBase base;
+
+    // Version 0.
+    WKPageNavigationDecidePolicyForNavigationActionCallback decidePolicyForNavigationAction;
+    WKPageNavigationDecidePolicyForNavigationResponseCallback decidePolicyForNavigationResponse;
+    WKPageNavigationDecidePolicyForPluginLoadCallback decidePolicyForPluginLoad;
+    WKPageNavigationDidStartProvisionalNavigationCallback didStartProvisionalNavigation;
+    WKPageNavigationDidReceiveServerRedirectForProvisionalNavigationCallback didReceiveServerRedirectForProvisionalNavigation;
+    WKPageNavigationDidFailProvisionalNavigationCallback didFailProvisionalNavigation;
+    WKPageNavigationDidCommitNavigationCallback didCommitNavigation;
+    WKPageNavigationDidFinishNavigationCallback didFinishNavigation;
+    WKPageNavigationDidFailNavigationCallback didFailNavigation;
+    WKPageNavigationDidFailProvisionalLoadInSubframeCallback didFailProvisionalLoadInSubframe;
+    WKPageNavigationDidFinishDocumentLoadCallback didFinishDocumentLoad;
+    WKPageNavigationDidSameDocumentNavigationCallback didSameDocumentNavigation;
+    WKPageNavigationRenderingProgressDidChangeCallback renderingProgressDidChange;
+    WKPageNavigationCanAuthenticateAgainstProtectionSpaceCallback canAuthenticateAgainstProtectionSpace;
+    WKPageNavigationDidReceiveAuthenticationChallengeCallback didReceiveAuthenticationChallenge;
+    WKPageNavigationWebProcessDidCrashCallback webProcessDidCrash;
+    WKPageNavigationCopyWebCryptoMasterKeyCallback copyWebCryptoMasterKey;
+} WKPageNavigationClientV0;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKPageNavigationClient_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageRenderingProgressEventsh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEvents.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEvents.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEvents.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKPageRenderingProgressEvents_h
+#define WKPageRenderingProgressEvents_h
+
+#include &lt;stdint.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+enum {
+    WKPageRenderingProgressEventFirstLayout = 1 &lt;&lt; 0,
+    WKPageRenderingProgressEventFirstVisuallyNonEmptyLayout = 1 &lt;&lt; 1,
+    WKPageRenderingProgressEventFirstPaintWithSignificantArea = 1 &lt;&lt; 2,
+    WKPageRenderingProgressEventReachedSessionRestorationRenderTreeSizeThreshold = 1 &lt;&lt; 3
+};
+typedef uint32_t WKPageRenderingProgressEvents;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKPageRenderingProgressEvents_h */
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageRenderingProgressEventsInternalh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEventsInternal.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEventsInternal.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageRenderingProgressEventsInternal.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKPageRenderingProgressEvents.h&quot;
+
+#import &lt;WebCore/LayoutMilestones.h&gt;
+
+static inline WKPageRenderingProgressEvents pageRenderingProgressEvents(WebCore::LayoutMilestones milestones)
+{
+    WKPageRenderingProgressEvents events = 0;
+    
+    if (milestones &amp; WebCore::DidFirstLayout)
+        events |= WKPageRenderingProgressEventFirstLayout;
+    
+    if (milestones &amp; WebCore::DidFirstVisuallyNonEmptyLayout)
+        events |= WKPageRenderingProgressEventFirstVisuallyNonEmptyLayout;
+    
+    if (milestones &amp; WebCore::DidHitRelevantRepaintedObjectsAreaThreshold)
+        events |= WKPageRenderingProgressEventFirstPaintWithSignificantArea;
+    
+    if (milestones &amp; WebCore::ReachedSessionRestorationRenderTreeSizeThreshold)
+        events |= WKPageRenderingProgressEventReachedSessionRestorationRenderTreeSizeThreshold;
+    
+    return events;
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPluginLoadPolicyh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h (0 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPluginLoadPolicy.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKPluginLoadPolicy_h
+#define WKPluginLoadPolicy_h
+
+#include &lt;stdint.h&gt;
+
+#ifdef __cplusplus
+extern &quot;C&quot; {
+#endif
+
+enum {
+    kWKPluginLoadPolicyLoadNormally = 0,
+    kWKPluginLoadPolicyBlocked,
+    kWKPluginLoadPolicyInactive,
+    kWKPluginLoadPolicyLoadUnsandboxed,
+};
+typedef uint32_t WKPluginLoadPolicy;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKPluginLoadPolicy_h */
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -1741,7 +1741,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     RefPtr&lt;API::Dictionary&gt; pluginInformation = createPluginInformationDictionary(plugin, frameURLString, String(), pageURLString, String(), String());
</span><del>-    pluginLoadPolicy = m_loaderClient-&gt;pluginLoadPolicy(*this, static_cast&lt;PluginModuleLoadPolicy&gt;(pluginLoadPolicy), pluginInformation.get(), unavailabilityDescription);
</del><ins>+    if (m_navigationClient)
+        pluginLoadPolicy = m_navigationClient-&gt;decidePolicyForPluginLoad(*this, static_cast&lt;PluginModuleLoadPolicy&gt;(pluginLoadPolicy), pluginInformation.get(), unavailabilityDescription);
+    else
+        pluginLoadPolicy = m_loaderClient-&gt;pluginLoadPolicy(*this, static_cast&lt;PluginModuleLoadPolicy&gt;(pluginLoadPolicy), pluginInformation.get(), unavailabilityDescription);
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(frameURLString);
</span><span class="cx">     UNUSED_PARAM(pageURLString);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -590,6 +590,14 @@
</span><span class="cx">                 2D2ADF1016364D8200197E47 /* PDFPluginChoiceAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D2ADF0E16364D8200197E47 /* PDFPluginChoiceAnnotation.mm */; };
</span><span class="cx">                 2D353B1219F8305D000EEACD /* ActionMenuHitTestResult.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D353B1019F8305D000EEACD /* ActionMenuHitTestResult.mm */; };
</span><span class="cx">                 2D353B1319F8305D000EEACD /* ActionMenuHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D353B1119F8305D000EEACD /* ActionMenuHitTestResult.h */; };
</span><ins>+                2D3A65DA1A7C3A1F00CAC637 /* WKNavigationActionRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D3A65D81A7C3A1F00CAC637 /* WKNavigationActionRef.cpp */; };
+                2D3A65DB1A7C3A1F00CAC637 /* WKNavigationActionRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3A65D91A7C3A1F00CAC637 /* WKNavigationActionRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                2D3A65DE1A7C3A7D00CAC637 /* WKNavigationResponseRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D3A65DC1A7C3A7D00CAC637 /* WKNavigationResponseRef.cpp */; };
+                2D3A65DF1A7C3A7D00CAC637 /* WKNavigationResponseRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3A65DD1A7C3A7D00CAC637 /* WKNavigationResponseRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                2D3A65E21A7C3A9300CAC637 /* WKNavigationRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D3A65E01A7C3A9300CAC637 /* WKNavigationRef.cpp */; };
+                2D3A65E31A7C3A9300CAC637 /* WKNavigationRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3A65E11A7C3A9300CAC637 /* WKNavigationRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                2D3A65E61A7C3AA700CAC637 /* WKFrameInfoRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D3A65E41A7C3AA700CAC637 /* WKFrameInfoRef.cpp */; };
+                2D3A65E71A7C3AA700CAC637 /* WKFrameInfoRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3A65E51A7C3AA700CAC637 /* WKFrameInfoRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2D3EF4421917646300034184 /* WebMemoryPressureHandlerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D3EF4401917646300034184 /* WebMemoryPressureHandlerIOS.mm */; };
</span><span class="cx">                 2D3EF4431917646300034184 /* WebMemoryPressureHandlerIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D3EF4411917646300034184 /* WebMemoryPressureHandlerIOS.h */; };
</span><span class="cx">                 2D429BFD1721E2C700EC681F /* PDFPluginPasswordField.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D429BFB1721E2BA00EC681F /* PDFPluginPasswordField.mm */; };
</span><span class="lines">@@ -606,6 +614,7 @@
</span><span class="cx">                 2D6B371C18A967AD0042AE80 /* _WKThumbnailView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D6B371A18A967AD0042AE80 /* _WKThumbnailView.mm */; };
</span><span class="cx">                 2D6CD119189058A500E5A4A0 /* ViewSnapshotStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6CD117189058A500E5A4A0 /* ViewSnapshotStore.h */; };
</span><span class="cx">                 2D6CD11A189058A500E5A4A0 /* ViewSnapshotStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D6CD118189058A500E5A4A0 /* ViewSnapshotStore.mm */; };
</span><ins>+                2D7303791A7C2B7500F8F487 /* WKPageNavigationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7303781A7C2B7500F8F487 /* WKPageNavigationClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2D7AAFD318C8640600A7ACD4 /* WKWebViewContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7AAFD218C8640600A7ACD4 /* WKWebViewContentProvider.h */; };
</span><span class="cx">                 2D7AAFD618C956AF00A7ACD4 /* WKWebViewConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7AAFD518C956AF00A7ACD4 /* WKWebViewConfigurationInternal.h */; };
</span><span class="cx">                 2D7F13101A702FBA009A6FBD /* ProcessType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7F130F1A702FBA009A6FBD /* ProcessType.h */; };
</span><span class="lines">@@ -638,11 +647,14 @@
</span><span class="cx">                 2DA944B91884EA3900ED86DB /* WebBackForwardListProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DA944B51884EA3500ED86DB /* WebBackForwardListProxyIOS.mm */; };
</span><span class="cx">                 2DA944BA1884EA3C00ED86DB /* WebPageIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DA944B61884EA3500ED86DB /* WebPageIOS.mm */; };
</span><span class="cx">                 2DA944BD188511E700ED86DB /* NetworkProcessIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DA944BC188511E700ED86DB /* NetworkProcessIOS.mm */; };
</span><ins>+                2DABA7721A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DABA7711A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h */; };
+                2DABA7741A817EE600EF0F1A /* WKPluginLoadPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DABA7731A817EE600EF0F1A /* WKPluginLoadPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2DACE64E18ADBFF000E4CA76 /* _WKThumbnailViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DACE64D18ADBFF000E4CA76 /* _WKThumbnailViewInternal.h */; };
</span><span class="cx">                 2DAF06D618BD1A470081CEB1 /* SmartMagnificationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DAF06D418BD1A470081CEB1 /* SmartMagnificationController.h */; };
</span><span class="cx">                 2DAF06D718BD1A470081CEB1 /* SmartMagnificationController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DAF06D518BD1A470081CEB1 /* SmartMagnificationController.mm */; };
</span><span class="cx">                 2DC6D9C318C44A610043BAD4 /* WKWebViewContentProviderRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DC6D9C118C44A610043BAD4 /* WKWebViewContentProviderRegistry.h */; };
</span><span class="cx">                 2DC6D9C418C44A610043BAD4 /* WKWebViewContentProviderRegistry.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DC6D9C218C44A610043BAD4 /* WKWebViewContentProviderRegistry.mm */; };
</span><ins>+                2DD12A081A8177F3002C74E6 /* WKPageRenderingProgressEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DD12A071A8177F3002C74E6 /* WKPageRenderingProgressEvents.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2DD13BD518F7DADD00E130A1 /* FindControllerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DD13BD318F7DADD00E130A1 /* FindControllerIOS.mm */; };
</span><span class="cx">                 2DD9EB2D1A6F012500BB1267 /* APINavigationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DD9EB2C1A6F012500BB1267 /* APINavigationClient.h */; };
</span><span class="cx">                 2DDE0AFA18298CC900F97EAA /* RemoteLayerTreePropertyApplier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DDE0AF818298CC900F97EAA /* RemoteLayerTreePropertyApplier.h */; };
</span><span class="lines">@@ -2693,6 +2705,14 @@
</span><span class="cx">                 2D2ADF0E16364D8200197E47 /* PDFPluginChoiceAnnotation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PDFPluginChoiceAnnotation.mm; path = PDF/PDFPluginChoiceAnnotation.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D353B1019F8305D000EEACD /* ActionMenuHitTestResult.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ActionMenuHitTestResult.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D353B1119F8305D000EEACD /* ActionMenuHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActionMenuHitTestResult.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2D3A65D81A7C3A1F00CAC637 /* WKNavigationActionRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNavigationActionRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65D91A7C3A1F00CAC637 /* WKNavigationActionRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigationActionRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65DC1A7C3A7D00CAC637 /* WKNavigationResponseRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNavigationResponseRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65DD1A7C3A7D00CAC637 /* WKNavigationResponseRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigationResponseRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65E01A7C3A9300CAC637 /* WKNavigationRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNavigationRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65E11A7C3A9300CAC637 /* WKNavigationRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigationRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65E41A7C3AA700CAC637 /* WKFrameInfoRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKFrameInfoRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D3A65E51A7C3AA700CAC637 /* WKFrameInfoRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFrameInfoRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2D3EF4401917646300034184 /* WebMemoryPressureHandlerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebMemoryPressureHandlerIOS.mm; path = ios/WebMemoryPressureHandlerIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D3EF4411917646300034184 /* WebMemoryPressureHandlerIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebMemoryPressureHandlerIOS.h; path = ios/WebMemoryPressureHandlerIOS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D429BFA1721E2BA00EC681F /* PDFPluginPasswordField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDFPluginPasswordField.h; path = PDF/PDFPluginPasswordField.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2712,6 +2732,7 @@
</span><span class="cx">                 2D6CD118189058A500E5A4A0 /* ViewSnapshotStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewSnapshotStore.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D70AB1318A1D51A00026D6E /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = &quot;Info-iOS.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D70AB1418A1D57C00026D6E /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = &quot;Info-iOS.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2D7303781A7C2B7500F8F487 /* WKPageNavigationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageNavigationClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2D7AAFD218C8640600A7ACD4 /* WKWebViewContentProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewContentProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D7AAFD518C956AF00A7ACD4 /* WKWebViewConfigurationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewConfigurationInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D7F130F1A702FBA009A6FBD /* ProcessType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessType.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2748,12 +2769,15 @@
</span><span class="cx">                 2DA944B51884EA3500ED86DB /* WebBackForwardListProxyIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebBackForwardListProxyIOS.mm; path = ios/WebBackForwardListProxyIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DA944B61884EA3500ED86DB /* WebPageIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebPageIOS.mm; path = ios/WebPageIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DA944BC188511E700ED86DB /* NetworkProcessIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkProcessIOS.mm; path = NetworkProcess/ios/NetworkProcessIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2DABA7711A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageRenderingProgressEventsInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2DABA7731A817EE600EF0F1A /* WKPluginLoadPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPluginLoadPolicy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2DACE64D18ADBFF000E4CA76 /* _WKThumbnailViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKThumbnailViewInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DAF06D418BD1A470081CEB1 /* SmartMagnificationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SmartMagnificationController.h; path = ios/SmartMagnificationController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DAF06D518BD1A470081CEB1 /* SmartMagnificationController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SmartMagnificationController.mm; path = ios/SmartMagnificationController.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DAF06D818BD23BA0081CEB1 /* SmartMagnificationController.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = SmartMagnificationController.messages.in; path = ios/SmartMagnificationController.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DC6D9C118C44A610043BAD4 /* WKWebViewContentProviderRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewContentProviderRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DC6D9C218C44A610043BAD4 /* WKWebViewContentProviderRegistry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewContentProviderRegistry.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2DD12A071A8177F3002C74E6 /* WKPageRenderingProgressEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageRenderingProgressEvents.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2DD13BD318F7DADD00E130A1 /* FindControllerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FindControllerIOS.mm; path = ios/FindControllerIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DD9EB2C1A6F012500BB1267 /* APINavigationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APINavigationClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2DDE0AF818298CC900F97EAA /* RemoteLayerTreePropertyApplier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerTreePropertyApplier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -6229,6 +6253,8 @@
</span><span class="cx">                                 BCE469581214EDF4000B98EB /* WKFormSubmissionListener.h */,
</span><span class="cx">                                 BCD01398110FA420003B8A67 /* WKFrame.cpp */,
</span><span class="cx">                                 BCD01397110FA420003B8A67 /* WKFrame.h */,
</span><ins>+                                2D3A65E41A7C3AA700CAC637 /* WKFrameInfoRef.cpp */,
+                                2D3A65E51A7C3AA700CAC637 /* WKFrameInfoRef.h */,
</ins><span class="cx">                                 BCB9F6A41123DD0D00A137E0 /* WKFramePolicyListener.cpp */,
</span><span class="cx">                                 BCB9F6A31123DD0D00A137E0 /* WKFramePolicyListener.h */,
</span><span class="cx">                                 BC54CC1112D674EE005C67B0 /* WKGeolocationManager.cpp */,
</span><span class="lines">@@ -6248,8 +6274,14 @@
</span><span class="cx">                                 33D3A3B31339600B00709BE4 /* WKMediaCacheManager.cpp */,
</span><span class="cx">                                 33D3A3B41339600B00709BE4 /* WKMediaCacheManager.h */,
</span><span class="cx">                                 C09AE5E8125257C20025825D /* WKNativeEvent.h */,
</span><ins>+                                2D3A65D81A7C3A1F00CAC637 /* WKNavigationActionRef.cpp */,
+                                2D3A65D91A7C3A1F00CAC637 /* WKNavigationActionRef.h */,
</ins><span class="cx">                                 BCF69FA81176D1CB00471A52 /* WKNavigationDataRef.cpp */,
</span><span class="cx">                                 BCF69FA71176D1CB00471A52 /* WKNavigationDataRef.h */,
</span><ins>+                                2D3A65E01A7C3A9300CAC637 /* WKNavigationRef.cpp */,
+                                2D3A65E11A7C3A9300CAC637 /* WKNavigationRef.h */,
+                                2D3A65DC1A7C3A7D00CAC637 /* WKNavigationResponseRef.cpp */,
+                                2D3A65DD1A7C3A7D00CAC637 /* WKNavigationResponseRef.h */,
</ins><span class="cx">                                 318BE17614743E6000A8FBB2 /* WKNotification.cpp */,
</span><span class="cx">                                 318BE17814743E6A00A8FBB2 /* WKNotification.h */,
</span><span class="cx">                                 318BE17414743DD600A8FBB2 /* WKNotificationManager.cpp */,
</span><span class="lines">@@ -6275,10 +6307,14 @@
</span><span class="cx">                                 BC7B633612A45ABA00D174A4 /* WKPageGroup.cpp */,
</span><span class="cx">                                 BC7B633512A45ABA00D174A4 /* WKPageGroup.h */,
</span><span class="cx">                                 1AB8A1EB1840080900E9AE69 /* WKPageLoaderClient.h */,
</span><ins>+                                2D7303781A7C2B7500F8F487 /* WKPageNavigationClient.h */,
</ins><span class="cx">                                 1AB8A1ED18400ACB00E9AE69 /* WKPagePolicyClient.h */,
</span><span class="cx">                                 373CEAD71859553F008C363D /* WKPagePolicyClientInternal.h */,
</span><span class="cx">                                 BC177464118B9FF4007D9E9A /* WKPagePrivate.h */,
</span><ins>+                                2DD12A071A8177F3002C74E6 /* WKPageRenderingProgressEvents.h */,
+                                2DABA7711A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h */,
</ins><span class="cx">                                 1AB8A1F118400B6200E9AE69 /* WKPageUIClient.h */,
</span><ins>+                                2DABA7731A817EE600EF0F1A /* WKPluginLoadPolicy.h */,
</ins><span class="cx">                                 1AC86FF1130B46D3002C1257 /* WKPluginSiteDataManager.cpp */,
</span><span class="cx">                                 1AC86FF2130B46D3002C1257 /* WKPluginSiteDataManager.h */,
</span><span class="cx">                                 BCD597CF112B56AC00EC8C23 /* WKPreferences.cpp */,
</span><span class="lines">@@ -7416,11 +7452,18 @@
</span><span class="cx">                                 1AABFE3A1829C1ED005B070E /* _WKRemoteObjectInterfaceInternal.h in Headers */,
</span><span class="cx">                                 1A9E32891821636900F5D04C /* _WKRemoteObjectRegistry.h in Headers */,
</span><span class="cx">                                 1A9E32A11823018900F5D04C /* _WKRemoteObjectRegistryInternal.h in Headers */,
</span><ins>+                                2DABA7741A817EE600EF0F1A /* WKPluginLoadPolicy.h in Headers */,
+                                2DD12A081A8177F3002C74E6 /* WKPageRenderingProgressEvents.h in Headers */,
+                                2D7303791A7C2B7500F8F487 /* WKPageNavigationClient.h in Headers */,
</ins><span class="cx">                                 377216B81A4E6BE000DCA718 /* _WKRenderingProgressEvents.h in Headers */,
</span><span class="cx">                                 1F604BAA1889FBB800EE0395 /* _WKRenderingProgressEventsInternal.h in Headers */,
</span><span class="cx">                                 376311FD1A3FB5F7005A2E51 /* _WKSameDocumentNavigationType.h in Headers */,
</span><span class="cx">                                 376311FE1A3FB600005A2E51 /* _WKSameDocumentNavigationTypeInternal.h in Headers */,
</span><span class="cx">                                 376C511A1957452E0007B0FA /* _WKSecurityOrigin.h in Headers */,
</span><ins>+                                2D3A65DB1A7C3A1F00CAC637 /* WKNavigationActionRef.h in Headers */,
+                                2D3A65DF1A7C3A7D00CAC637 /* WKNavigationResponseRef.h in Headers */,
+                                2D3A65E31A7C3A9300CAC637 /* WKNavigationRef.h in Headers */,
+                                2D3A65E71A7C3AA700CAC637 /* WKFrameInfoRef.h in Headers */,
</ins><span class="cx">                                 376C511D19574F5F0007B0FA /* _WKSecurityOriginInternal.h in Headers */,
</span><span class="cx">                                 1A002D44196B338900B9AD44 /* _WKSessionState.h in Headers */,
</span><span class="cx">                                 1A002D43196B337000B9AD44 /* _WKSessionStateInternal.h in Headers */,
</span><span class="lines">@@ -7917,6 +7960,7 @@
</span><span class="cx">                                 1A043F6A12514D8B00FFBFB5 /* WebProcessConnectionMessages.h in Headers */,
</span><span class="cx">                                 BC306824125A6B9400E71278 /* WebProcessCreationParameters.h in Headers */,
</span><span class="cx">                                 BC3066BF125A442100E71278 /* WebProcessMessages.h in Headers */,
</span><ins>+                                2DABA7721A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h in Headers */,
</ins><span class="cx">                                 7CE4D21B1A4914A300C7F152 /* WebProcessPool.h in Headers */,
</span><span class="cx">                                 7CE4D2281A4916C200C7F152 /* WebProcessPoolMessages.h in Headers */,
</span><span class="cx">                                 BC032DD510F4389F0058C15A /* WebProcessProxy.h in Headers */,
</span><span class="lines">@@ -9184,6 +9228,7 @@
</span><span class="cx">                                 A7D792D61767CB6E00881CBE /* ActivityAssertion.cpp in Sources */,
</span><span class="cx">                                 8372DB281A67562800C697C5 /* WebPageDiagnosticLoggingClient.cpp in Sources */,
</span><span class="cx">                                 BC64696F11DBE603006455B0 /* APIArray.cpp in Sources */,
</span><ins>+                                2D3A65E21A7C3A9300CAC637 /* WKNavigationRef.cpp in Sources */,
</ins><span class="cx">                                 1AAB037C185F99D800EDF501 /* APIData.cpp in Sources */,
</span><span class="cx">                                 1A1EF1991A1D5B420023200A /* APIDataCocoa.mm in Sources */,
</span><span class="cx">                                 7C1BA33D1A4A0E600043E249 /* APIDictionary.cpp in Sources */,
</span><span class="lines">@@ -9281,6 +9326,7 @@
</span><span class="cx">                                 1A90C1F51264FD71003E44D4 /* FindController.cpp in Sources */,
</span><span class="cx">                                 2DD13BD518F7DADD00E130A1 /* FindControllerIOS.mm in Sources */,
</span><span class="cx">                                 BCE81D8C1319F7EF00241910 /* FontInfo.cpp in Sources */,
</span><ins>+                                2D3A65DE1A7C3A7D00CAC637 /* WKNavigationResponseRef.cpp in Sources */,
</ins><span class="cx">                                 1AE00D601831792100087DD7 /* FrameLoadState.cpp in Sources */,
</span><span class="cx">                                 BC06F43012DBB9B6002D78DE /* GeolocationPermissionRequestManager.cpp in Sources */,
</span><span class="cx">                                 BC06F44B12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.cpp in Sources */,
</span><span class="lines">@@ -9428,6 +9474,7 @@
</span><span class="cx">                                 1AA4792312A59FD9008236C3 /* PluginProcessMac.mm in Sources */,
</span><span class="cx">                                 BC82838C16B45F0700A278FE /* PluginProcessMain.mm in Sources */,
</span><span class="cx">                                 1A0EC604124A9F2C007EF4A5 /* PluginProcessManager.cpp in Sources */,
</span><ins>+                                2D3A65E61A7C3AA700CAC637 /* WKFrameInfoRef.cpp in Sources */,
</ins><span class="cx">                                 9F54F8951648AE0F007DF81A /* PluginProcessManagerMac.mm in Sources */,
</span><span class="cx">                                 1A043CEB124FE38F00FFBFB5 /* PluginProcessMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 1A0EC75F124BC7B2007EF4A5 /* PluginProcessProxy.cpp in Sources */,
</span><span class="lines">@@ -9611,6 +9658,7 @@
</span><span class="cx">                                 BC0E5FE612D697160012A72A /* WebGeolocationManager.cpp in Sources */,
</span><span class="cx">                                 BC0E606112D6BA910012A72A /* WebGeolocationManagerMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC54CACC12D64291005C67B0 /* WebGeolocationManagerProxy.cpp in Sources */,
</span><ins>+                                2D3A65DA1A7C3A1F00CAC637 /* WKNavigationActionRef.cpp in Sources */,
</ins><span class="cx">                                 BC0E618212D6CB1D0012A72A /* WebGeolocationManagerProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BC0E607412D6BC200012A72A /* WebGeolocationPosition.cpp in Sources */,
</span><span class="cx">                                 BC1BE1F312D54DBD0004A228 /* WebGeolocationProvider.cpp in Sources */,
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Tools/ChangeLog        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2015-02-03  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        Add WKPageNavigationClient as C SPI around API::NavigationClient, and adopt in WKTR
+        https://bugs.webkit.org/show_bug.cgi?id=141217
+
+        Reviewed by Sam Weinig.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::copyWebCryptoMasterKey):
+        (WTR::TestController::createOtherPage):
+        (WTR::TestController::createWebViewWithOptions):
+        (WTR::TestController::ensureViewSupportsOptions):
+        (WTR::TestController::didCommitNavigation):
+        (WTR::TestController::didFinishNavigation):
+        (WTR::TestController::canAuthenticateAgainstProtectionSpace):
+        (WTR::TestController::didReceiveAuthenticationChallenge):
+        (WTR::TestController::decidePolicyForPluginLoad):
+        (WTR::TestController::decidePolicyForNavigationAction):
+        (WTR::TestController::decidePolicyForNavigationResponse):
+        (WTR::TestController::didCommitLoadForFrame): Deleted.
+        (WTR::TestController::didFinishLoadForFrame): Deleted.
+        * WebKitTestRunner/TestController.h:
+        Adopt WKPageNavigationClient and adjust to its semantics (navigations are main-frame-only, etc.)
+
</ins><span class="cx"> 2015-02-03  Dhi Aurrahman  &lt;diorahman@rockybars.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed. Add myself as a committer.
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.cpp        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &lt;WebKit/WKCookieManager.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKCredential.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKIconDatabase.h&gt;
</span><ins>+#include &lt;WebKit/WKNavigationResponseRef.h&gt;
</ins><span class="cx"> #include &lt;WebKit/WKNotification.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKNotificationManager.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKNotificationPermissionRequest.h&gt;
</span><span class="lines">@@ -84,7 +85,7 @@
</span><span class="cx">     return staticBlankURL;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static WKDataRef copyWebCryptoMasterKey(WKContextRef, const void*)
</del><ins>+static WKDataRef copyWebCryptoMasterKey(WKPageRef, const void*)
</ins><span class="cx"> {
</span><span class="cx">     // Any 128 bit key would do, all we need for testing is to implement the callback.
</span><span class="cx">     return WKDataCreate((const uint8_t*)&quot;\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f&quot;, 16);
</span><span class="lines">@@ -256,62 +257,29 @@
</span><span class="cx">         decidePolicyForUserMediaPermissionRequest,
</span><span class="cx">     };
</span><span class="cx">     WKPageSetPageUIClient(newPage, &amp;otherPageUIClient.base);
</span><del>-
-    WKPageLoaderClientV5 pageLoaderClient = {
-        { 5, &amp;TestController::singleton() },
-        0, // didStartProvisionalLoadForFrame
-        0, // didReceiveServerRedirectForProvisionalLoadForFrame
-        0, // didFailProvisionalLoadWithErrorForFrame
-        0, // didCommitLoadForFrame,
-        0, // didFinishDocumentLoadForFrame
-        0, // didFinishLoadForFrame,
-        0, // didFailLoadWithErrorForFrame
-        0, // didSameDocumentNavigationForFrame
-        0, // didReceiveTitleForFrame
-        0, // didFirstLayoutForFrame
-        0, // didFirstVisuallyNonEmptyLayoutForFrame
-        0, // didRemoveFrameFromHierarchy
-        0, // didFailToInitializePlugin
-        0, // didDisplayInsecureContentForFrame
-        canAuthenticateAgainstProtectionSpaceInFrame,
-        didReceiveAuthenticationChallengeInFrame,
-        0, // didStartProgress
-        0, // didChangeProgress
-        0, // didFinishProgress
-        0, // didBecomeUnresponsive
-        0, // didBecomeResponsive
</del><ins>+    
+    WKPageNavigationClientV0 pageNavigationClient = {
+        { 0, &amp;TestController::singleton() },
+        decidePolicyForNavigationAction,
+        decidePolicyForNavigationResponse,
+        decidePolicyForPluginLoad,
+        0, // didStartProvisionalNavigation
+        0, // didReceiveServerRedirectForProvisionalNavigation
+        0, // didFailProvisionalNavigation
+        0, // didCommitNavigation
+        0, // didFinishNavigation
+        0, // didFailNavigation
+        0, // didFailProvisionalLoadInSubframe
+        0, // didFinishDocumentLoad
+        0, // didSameDocumentNavigation
+        0, // renderingProgressDidChange
+        canAuthenticateAgainstProtectionSpace,
+        didReceiveAuthenticationChallenge,
</ins><span class="cx">         processDidCrash,
</span><del>-        0, // didChangeBackForwardList
-        0, // shouldGoToBackForwardListItem
-        0, // didRunInsecureContentForFrame
-        0, // didDetectXSSForFrame
-        0, // didNewFirstVisuallyNonEmptyLayout_unavailable
-        0, // willGoToBackForwardListItem
-        0, // interactionOccurredWhileProcessUnresponsive
-        0, // pluginDidFail_deprecatedForUseWithV1
-        0, // didReceiveIntentForFrame
-        0, // registerIntentServiceForFrame
-        0, // didLayout
-        0, // pluginLoadPolicy_deprecatedForUseWithV2
-        0, // pluginDidFail
-        pluginLoadPolicy, // pluginLoadPolicy
-        0, // webGLLoadPolicy
-        0, // resolveWebGLLoadPolicy
-        0, // shouldKeepCurrentBackForwardListItemInList
</del><ins>+        copyWebCryptoMasterKey,
</ins><span class="cx">     };
</span><del>-    WKPageSetPageLoaderClient(view-&gt;page(), &amp;pageLoaderClient.base);
</del><ins>+    WKPageSetPageNavigationClient(newPage, &amp;pageNavigationClient.base);
</ins><span class="cx"> 
</span><del>-    WKPagePolicyClientV1 pagePolicyClient = {
-        { 1, &amp;TestController::singleton() },
-        0, // decidePolicyForNavigationAction_deprecatedForUseWithV0
-        0, // decidePolicyForNewWindowAction
-        0, // decidePolicyForResponse_deprecatedForUseWithV0
-        0, // unableToImplementPolicy
-        decidePolicyForNavigationAction,
-        decidePolicyForResponse,
-    };
-    WKPageSetPagePolicyClient(view-&gt;page(), &amp;pagePolicyClient.base);
-
</del><span class="cx">     view-&gt;didInitializeClients();
</span><span class="cx"> 
</span><span class="cx">     TestController::singleton().updateWindowScaleForTest(view, *TestController::singleton().m_currentInvocation);
</span><span class="lines">@@ -415,15 +383,6 @@
</span><span class="cx"> 
</span><span class="cx">     platformInitializeContext();
</span><span class="cx"> 
</span><del>-    WKContextClientV1 contextClient = {
-        { 1, this },
-        nullptr, // plugInAutoStartOriginHashesChanged
-        nullptr, // networkProcessDidCrash,
-        nullptr, // plugInInformationBecameAvailable,
-        copyWebCryptoMasterKey
-    };
-    WKContextSetClient(m_context.get(), &amp;contextClient.base);
-
</del><span class="cx">     WKContextInjectedBundleClientV1 injectedBundleClient = {
</span><span class="cx">         { 1, this },
</span><span class="cx">         didReceiveMessageFromInjectedBundle,
</span><span class="lines">@@ -526,61 +485,28 @@
</span><span class="cx">     };
</span><span class="cx">     WKPageSetPageUIClient(m_mainWebView-&gt;page(), &amp;pageUIClient.base);
</span><span class="cx"> 
</span><del>-    WKPageLoaderClientV5 pageLoaderClient = {
-        { 5, this },
-        0, // didStartProvisionalLoadForFrame
-        0, // didReceiveServerRedirectForProvisionalLoadForFrame
-        0, // didFailProvisionalLoadWithErrorForFrame
-        didCommitLoadForFrame,
-        0, // didFinishDocumentLoadForFrame
-        didFinishLoadForFrame,
-        0, // didFailLoadWithErrorForFrame
-        0, // didSameDocumentNavigationForFrame
-        0, // didReceiveTitleForFrame
-        0, // didFirstLayoutForFrame
-        0, // didFirstVisuallyNonEmptyLayoutForFrame
-        0, // didRemoveFrameFromHierarchy
-        0, // didFailToInitializePlugin
-        0, // didDisplayInsecureContentForFrame
-        canAuthenticateAgainstProtectionSpaceInFrame,
-        didReceiveAuthenticationChallengeInFrame,
-        0, // didStartProgress
-        0, // didChangeProgress
-        0, // didFinishProgress
-        0, // didBecomeUnresponsive
-        0, // didBecomeResponsive
</del><ins>+    WKPageNavigationClientV0 pageNavigationClient = {
+        { 0, this },
+        decidePolicyForNavigationAction,
+        decidePolicyForNavigationResponse,
+        decidePolicyForPluginLoad,
+        0, // didStartProvisionalNavigation
+        0, // didReceiveServerRedirectForProvisionalNavigation
+        0, // didFailProvisionalNavigation
+        didCommitNavigation,
+        didFinishNavigation,
+        0, // didFailNavigation
+        0, // didFailProvisionalLoadInSubframe
+        0, // didFinishDocumentLoad
+        0, // didSameDocumentNavigation
+        0, // renderingProgressDidChange
+        canAuthenticateAgainstProtectionSpace,
+        didReceiveAuthenticationChallenge,
</ins><span class="cx">         processDidCrash,
</span><del>-        0, // didChangeBackForwardList
-        0, // shouldGoToBackForwardListItem
-        0, // didRunInsecureContentForFrame
-        0, // didDetectXSSForFrame
-        0, // didNewFirstVisuallyNonEmptyLayout_unavailable
-        0, // willGoToBackForwardListItem
-        0, // interactionOccurredWhileProcessUnresponsive
-        0, // pluginDidFail_deprecatedForUseWithV1
-        0, // didReceiveIntentForFrame
-        0, // registerIntentServiceForFrame
-        0, // didLayout
-        0, // pluginLoadPolicy_deprecatedForUseWithV2
-        0, // pluginDidFail
-        pluginLoadPolicy, // pluginLoadPolicy
-        0, // webGLLoadPolicy
-        0, // resolveWebGLLoadPolicy
-        0, // shouldKeepCurrentBackForwardListItemInList
</del><ins>+        copyWebCryptoMasterKey,
</ins><span class="cx">     };
</span><del>-    WKPageSetPageLoaderClient(m_mainWebView-&gt;page(), &amp;pageLoaderClient.base);
</del><ins>+    WKPageSetPageNavigationClient(m_mainWebView-&gt;page(), &amp;pageNavigationClient.base);
</ins><span class="cx"> 
</span><del>-    WKPagePolicyClientV1 pagePolicyClient = {
-        { 1, this },
-        0, // decidePolicyForNavigationAction_deprecatedForUseWithV0
-        0, // decidePolicyForNewWindowAction
-        0, // decidePolicyForResponse_deprecatedForUseWithV0
-        0, // unableToImplementPolicy
-        decidePolicyForNavigationAction,
-        decidePolicyForResponse,
-    };
-    WKPageSetPagePolicyClient(m_mainWebView-&gt;page(), &amp;pagePolicyClient.base);
-
</del><span class="cx">     m_mainWebView-&gt;didInitializeClients();
</span><span class="cx"> 
</span><span class="cx">     // Generally, the tests should default to running at 1x. updateWindowScaleForTest() will adjust the scale to
</span><span class="lines">@@ -592,8 +518,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (m_mainWebView &amp;&amp; !m_mainWebView-&gt;viewSupportsOptions(options)) {
</span><span class="cx">         WKPageSetPageUIClient(m_mainWebView-&gt;page(), 0);
</span><del>-        WKPageSetPageLoaderClient(m_mainWebView-&gt;page(), 0);
-        WKPageSetPagePolicyClient(m_mainWebView-&gt;page(), 0);
</del><ins>+        WKPageSetPageNavigationClient(m_mainWebView-&gt;page(), 0);
</ins><span class="cx">         WKPageClose(m_mainWebView-&gt;page());
</span><span class="cx">         
</span><span class="cx">         m_mainWebView = nullptr;
</span><span class="lines">@@ -1275,19 +1200,19 @@
</span><span class="cx">     return m_currentInvocation-&gt;didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// WKPageLoaderClient
</del><ins>+// WKPageNavigationClient
</ins><span class="cx"> 
</span><del>-void TestController::didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void* clientInfo)
</del><ins>+void TestController::didCommitNavigation(WKPageRef page, WKNavigationRef navigation, WKTypeRef, const void* clientInfo)
</ins><span class="cx"> {
</span><del>-    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didCommitLoadForFrame(page, frame);
</del><ins>+    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didCommitNavigation(page, navigation);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void* clientInfo)
</del><ins>+void TestController::didFinishNavigation(WKPageRef page, WKNavigationRef navigation, WKTypeRef, const void* clientInfo)
</ins><span class="cx"> {
</span><del>-    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didFinishLoadForFrame(page, frame);
</del><ins>+    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didFinishNavigation(page, navigation);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool TestController::canAuthenticateAgainstProtectionSpaceInFrame(WKPageRef, WKFrameRef, WKProtectionSpaceRef protectionSpace, const void*)
</del><ins>+bool TestController::canAuthenticateAgainstProtectionSpace(WKPageRef, WKProtectionSpaceRef protectionSpace, const void*)
</ins><span class="cx"> {
</span><span class="cx">     WKProtectionSpaceAuthenticationScheme authenticationScheme = WKProtectionSpaceGetAuthenticationScheme(protectionSpace);
</span><span class="cx"> 
</span><span class="lines">@@ -1299,9 +1224,9 @@
</span><span class="cx">     return authenticationScheme &lt;= kWKProtectionSpaceAuthenticationSchemeHTTPDigest;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::didReceiveAuthenticationChallengeInFrame(WKPageRef page, WKFrameRef frame, WKAuthenticationChallengeRef authenticationChallenge, const void *clientInfo)
</del><ins>+void TestController::didReceiveAuthenticationChallenge(WKPageRef page, WKAuthenticationChallengeRef authenticationChallenge, const void *clientInfo)
</ins><span class="cx"> {
</span><del>-    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveAuthenticationChallengeInFrame(page, frame, authenticationChallenge);
</del><ins>+    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;didReceiveAuthenticationChallenge(page, /*frame,*/ authenticationChallenge);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TestController::processDidCrash(WKPageRef page, const void* clientInfo)
</span><span class="lines">@@ -1309,35 +1234,29 @@
</span><span class="cx">     static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;processDidCrash();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WKPluginLoadPolicy TestController::pluginLoadPolicy(WKPageRef page, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo)
</del><ins>+WKPluginLoadPolicy TestController::decidePolicyForPluginLoad(WKPageRef page, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo)
</ins><span class="cx"> {
</span><del>-    return static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;pluginLoadPolicy(page, currentPluginLoadPolicy, pluginInformation, unavailabilityDescription);
</del><ins>+    return static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;decidePolicyForPluginLoad(page, currentPluginLoadPolicy, pluginInformation, unavailabilityDescription);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-WKPluginLoadPolicy TestController::pluginLoadPolicy(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription)
</del><ins>+WKPluginLoadPolicy TestController::decidePolicyForPluginLoad(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription)
</ins><span class="cx"> {
</span><span class="cx">     if (m_shouldBlockAllPlugins)
</span><span class="cx">         return kWKPluginLoadPolicyBlocked;
</span><span class="cx">     return currentPluginLoadPolicy;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::didCommitLoadForFrame(WKPageRef page, WKFrameRef frame)
</del><ins>+void TestController::didCommitNavigation(WKPageRef page, WKNavigationRef navigation)
</ins><span class="cx"> {
</span><del>-    if (!WKFrameIsMainFrame(frame))
-        return;
-
</del><span class="cx">     mainWebView()-&gt;focus();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame)
</del><ins>+void TestController::didFinishNavigation(WKPageRef page, WKNavigationRef navigation)
</ins><span class="cx"> {
</span><span class="cx">     if (m_state != Resetting)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!WKFrameIsMainFrame(frame))
-        return;
-
-    WKRetainPtr&lt;WKURLRef&gt; wkURL(AdoptWK, WKFrameCopyURL(frame));
</del><ins>+    WKRetainPtr&lt;WKURLRef&gt; wkURL(AdoptWK, WKFrameCopyURL(WKPageGetMainFrame(page)));
</ins><span class="cx">     if (!WKURLIsEqual(wkURL.get(), blankURL()))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -1345,7 +1264,7 @@
</span><span class="cx">     singleton().notifyDone();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::didReceiveAuthenticationChallengeInFrame(WKPageRef page, WKFrameRef frame, WKAuthenticationChallengeRef authenticationChallenge)
</del><ins>+void TestController::didReceiveAuthenticationChallenge(WKPageRef page, WKAuthenticationChallengeRef authenticationChallenge)
</ins><span class="cx"> {
</span><span class="cx">     WKProtectionSpaceRef protectionSpace = WKAuthenticationChallengeGetProtectionSpace(authenticationChallenge);
</span><span class="cx">     WKAuthenticationDecisionListenerRef decisionListener = WKAuthenticationChallengeGetDecisionListener(authenticationChallenge);
</span><span class="lines">@@ -1488,7 +1407,7 @@
</span><span class="cx">     printf(&quot;MISSING PLUGIN BUTTON PRESSED\n&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKFrameRef, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
</del><ins>+void TestController::decidePolicyForNavigationAction(WKPageRef, WKNavigationActionRef navigationAction, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
</ins><span class="cx"> {
</span><span class="cx">     static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;decidePolicyForNavigationAction(listener);
</span><span class="cx"> }
</span><span class="lines">@@ -1503,17 +1422,16 @@
</span><span class="cx">     WKFramePolicyListenerUse(listener);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::decidePolicyForResponse(WKPageRef, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, bool canShowMIMEType, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
</del><ins>+void TestController::decidePolicyForNavigationResponse(WKPageRef, WKNavigationResponseRef navigationResponse, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
</ins><span class="cx"> {
</span><del>-    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;decidePolicyForResponse(frame, response, listener);
</del><ins>+    static_cast&lt;TestController*&gt;(const_cast&lt;void*&gt;(clientInfo))-&gt;decidePolicyForNavigationResponse(navigationResponse, listener);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TestController::decidePolicyForResponse(WKFrameRef frame, WKURLResponseRef response, WKFramePolicyListenerRef listener)
</del><ins>+void TestController::decidePolicyForNavigationResponse(WKNavigationResponseRef navigationResponse, WKFramePolicyListenerRef listener)
</ins><span class="cx"> {
</span><span class="cx">     // Even though Response was already checked by WKBundlePagePolicyClient, the check did not include plugins
</span><span class="cx">     // so we have to re-check again.
</span><del>-    WKRetainPtr&lt;WKStringRef&gt; wkMIMEType(AdoptWK, WKURLResponseCopyMIMEType(response));
-    if (WKFrameCanShowMIMEType(frame, wkMIMEType.get())) {
</del><ins>+    if (WKNavigationResponseCanShowMIMEType(navigationResponse)) {
</ins><span class="cx">         WKFramePolicyListenerUse(listener);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerTestControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/TestController.h (179587 => 179588)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/TestController.h        2015-02-04 02:00:38 UTC (rev 179587)
+++ trunk/Tools/WebKitTestRunner/TestController.h        2015-02-04 04:02:50 UTC (rev 179588)
</span><span class="lines">@@ -150,18 +150,18 @@
</span><span class="cx"> 
</span><span class="cx">     void didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef messageBodyDictionary, bool synchronous);
</span><span class="cx"> 
</span><del>-    // WKPageLoaderClient
-    static void didCommitLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef userData, const void*);
-    void didCommitLoadForFrame(WKPageRef, WKFrameRef);
</del><ins>+    // WKPageNavigationClient
+    static void didCommitNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
+    void didCommitNavigation(WKPageRef, WKNavigationRef);
</ins><span class="cx"> 
</span><del>-    static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef userData, const void*);
-    void didFinishLoadForFrame(WKPageRef, WKFrameRef);
</del><ins>+    static void didFinishNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
+    void didFinishNavigation(WKPageRef, WKNavigationRef);
</ins><span class="cx"> 
</span><span class="cx">     static void processDidCrash(WKPageRef, const void* clientInfo);
</span><span class="cx">     void processDidCrash();
</span><span class="cx"> 
</span><del>-    static WKPluginLoadPolicy pluginLoadPolicy(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo);
-    WKPluginLoadPolicy pluginLoadPolicy(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription);
</del><ins>+    static WKPluginLoadPolicy decidePolicyForPluginLoad(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo);
+    WKPluginLoadPolicy decidePolicyForPluginLoad(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription);
</ins><span class="cx">     
</span><span class="cx"> 
</span><span class="cx">     static void decidePolicyForNotificationPermissionRequest(WKPageRef, WKSecurityOriginRef, WKNotificationPermissionRequestRef, const void*);
</span><span class="lines">@@ -169,17 +169,16 @@
</span><span class="cx"> 
</span><span class="cx">     static void unavailablePluginButtonClicked(WKPageRef, WKPluginUnavailabilityReason, WKDictionaryRef, const void*);
</span><span class="cx"> 
</span><del>-    static bool canAuthenticateAgainstProtectionSpaceInFrame(WKPageRef, WKFrameRef, WKProtectionSpaceRef, const void *clientInfo);
</del><ins>+    static bool canAuthenticateAgainstProtectionSpace(WKPageRef, WKProtectionSpaceRef, const void *clientInfo);
</ins><span class="cx"> 
</span><del>-    static void didReceiveAuthenticationChallengeInFrame(WKPageRef, WKFrameRef, WKAuthenticationChallengeRef, const void *clientInfo);
-    void didReceiveAuthenticationChallengeInFrame(WKPageRef, WKFrameRef, WKAuthenticationChallengeRef);
</del><ins>+    static void didReceiveAuthenticationChallenge(WKPageRef, WKAuthenticationChallengeRef, const void *clientInfo);
+    void didReceiveAuthenticationChallenge(WKPageRef, WKAuthenticationChallengeRef);
</ins><span class="cx"> 
</span><del>-    // WKPagePolicyClient
-    static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKFrameRef, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
</del><ins>+    static void decidePolicyForNavigationAction(WKPageRef, WKNavigationActionRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
</ins><span class="cx">     void decidePolicyForNavigationAction(WKFramePolicyListenerRef);
</span><span class="cx"> 
</span><del>-    static void decidePolicyForResponse(WKPageRef, WKFrameRef, WKURLResponseRef, WKURLRequestRef, bool canShowMIMEType, WKFramePolicyListenerRef, WKTypeRef, const void*);
-    void decidePolicyForResponse(WKFrameRef, WKURLResponseRef, WKFramePolicyListenerRef);
</del><ins>+    static void decidePolicyForNavigationResponse(WKPageRef, WKNavigationResponseRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
+    void decidePolicyForNavigationResponse(WKNavigationResponseRef, WKFramePolicyListenerRef);
</ins><span class="cx"> 
</span><span class="cx">     // WKContextHistoryClient
</span><span class="cx">     static void didNavigateWithNavigationData(WKContextRef, WKPageRef, WKNavigationDataRef, WKFrameRef, const void*);
</span></span></pre>
</div>
</div>

</body>
</html>