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

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

<h3>Log Message</h3>
<pre>Move more of the Navigation infrastructure down to WebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=140395

Reviewed by Anders Carlsson.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::didStartProvisionalLoadForFrame):
(API::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
(API::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
(API::LoaderClient::didCommitLoadForFrame):
(API::LoaderClient::didFinishDocumentLoadForFrame):
(API::LoaderClient::didFinishLoadForFrame):
(API::LoaderClient::didFailLoadWithErrorForFrame):
(API::LoaderClient::didSameDocumentNavigationForFrame):
(API::LoaderClient::didReceiveTitleForFrame):
(API::LoaderClient::didFirstLayoutForFrame):
(API::LoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(API::LoaderClient::didRemoveFrameFromHierarchy):
(API::LoaderClient::didDisplayInsecureContentForFrame):
(API::LoaderClient::didRunInsecureContentForFrame):
(API::LoaderClient::didDetectXSSForFrame):
(API::LoaderClient::didLayout):
(API::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame):
(API::LoaderClient::didReceiveAuthenticationChallengeInFrame):
(API::LoaderClient::didStartProgress):
(API::LoaderClient::didChangeProgress):
(API::LoaderClient::didFinishProgress):
(API::LoaderClient::processDidBecomeUnresponsive):
(API::LoaderClient::interactionOccurredWhileProcessUnresponsive):
(API::LoaderClient::processDidBecomeResponsive):
(API::LoaderClient::processDidCrash):
(API::LoaderClient::didChangeBackForwardList):
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
(API::LoaderClient::willGoToBackForwardListItem):
(API::LoaderClient::pluginLoadPolicy):
(API::LoaderClient::didFailToInitializePlugin):
(API::LoaderClient::didBlockInsecurePluginVersion):
(API::LoaderClient::webGLLoadPolicy):
(API::LoaderClient::resolveWebGLLoadPolicy):
(API::LoaderClient::didDestroyNavigation): Deleted.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::LoaderClient::didStartProvisionalLoadForFrame):
(WebKit::NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::NavigationState::LoaderClient::didCommitLoadForFrame):
(WebKit::NavigationState::LoaderClient::didFinishDocumentLoadForFrame):
(WebKit::NavigationState::LoaderClient::didFinishLoadForFrame):
(WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):
(WebKit::NavigationState::LoaderClient::didSameDocumentNavigationForFrame):
(WebKit::NavigationState::LoaderClient::didLayout):
(WebKit::NavigationState::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame):
(WebKit::NavigationState::LoaderClient::didReceiveAuthenticationChallengeInFrame):
(WebKit::NavigationState::LoaderClient::processDidCrash):
(WebKit::NavigationState::LoaderClient::didDestroyNavigation): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didChangeBackForwardList):
(WebKit::WebPageProxy::willGoToBackForwardListItem):
(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
(WebKit::WebPageProxy::findPlugin):
(WebKit::WebPageProxy::didStartProgress):
(WebKit::WebPageProxy::didChangeProgress):
(WebKit::WebPageProxy::didFinishProgress):
(WebKit::WebPageProxy::didDestroyNavigation):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didReceiveTitleForFrame):
(WebKit::WebPageProxy::didFirstLayoutForFrame):
(WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
(WebKit::WebPageProxy::didLayout):
(WebKit::WebPageProxy::didRemoveFrameFromHierarchy):
(WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
(WebKit::WebPageProxy::didRunInsecureContentForFrame):
(WebKit::WebPageProxy::didDetectXSSForFrame):
(WebKit::WebPageProxy::webGLPolicyForURL):
(WebKit::WebPageProxy::resolveWebGLPolicyForURL):
(WebKit::WebPageProxy::processDidBecomeUnresponsive):
(WebKit::WebPageProxy::interactionOccurredWhileProcessUnresponsive):
(WebKit::WebPageProxy::processDidBecomeResponsive):
(WebKit::WebPageProxy::processDidCrash):
(WebKit::WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame):
(WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
(WebKit::WebPageProxy::didFailToInitializePlugin):
(WebKit::WebPageProxy::didBlockInsecurePluginVersion):
- Moves conversion from navigationID to API::Navigation into WebPageProxy
  from NavigationState.
- Changes API::LoaderClient to pass WebPageProxy and WebFrameProxy by reference
  rather than pointer, and to take an API::Navigation instead of a navigationID.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
Move access of the navigationID to after calling into the client bundle to avoid
passing a navigationID of a deleted navigation to the UIProcess. This problem was
caught via the WebKit2.StopLoadingDuringDidFailProvisionalLoadTest API test, which
now exercises the Navigation code path. Had that test been written using a Navigation
delegate, the issue would have happened prior to this change.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPILoaderClienth">trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCocoaNavigationStateh">trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCocoaNavigationStatemm">trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/ChangeLog        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -1,3 +1,110 @@
</span><ins>+2015-01-13  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Move more of the Navigation infrastructure down to WebPageProxy
+        https://bugs.webkit.org/show_bug.cgi?id=140395
+
+        Reviewed by Anders Carlsson.
+
+        * UIProcess/API/APILoaderClient.h:
+        (API::LoaderClient::didStartProvisionalLoadForFrame):
+        (API::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (API::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
+        (API::LoaderClient::didCommitLoadForFrame):
+        (API::LoaderClient::didFinishDocumentLoadForFrame):
+        (API::LoaderClient::didFinishLoadForFrame):
+        (API::LoaderClient::didFailLoadWithErrorForFrame):
+        (API::LoaderClient::didSameDocumentNavigationForFrame):
+        (API::LoaderClient::didReceiveTitleForFrame):
+        (API::LoaderClient::didFirstLayoutForFrame):
+        (API::LoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
+        (API::LoaderClient::didRemoveFrameFromHierarchy):
+        (API::LoaderClient::didDisplayInsecureContentForFrame):
+        (API::LoaderClient::didRunInsecureContentForFrame):
+        (API::LoaderClient::didDetectXSSForFrame):
+        (API::LoaderClient::didLayout):
+        (API::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame):
+        (API::LoaderClient::didReceiveAuthenticationChallengeInFrame):
+        (API::LoaderClient::didStartProgress):
+        (API::LoaderClient::didChangeProgress):
+        (API::LoaderClient::didFinishProgress):
+        (API::LoaderClient::processDidBecomeUnresponsive):
+        (API::LoaderClient::interactionOccurredWhileProcessUnresponsive):
+        (API::LoaderClient::processDidBecomeResponsive):
+        (API::LoaderClient::processDidCrash):
+        (API::LoaderClient::didChangeBackForwardList):
+        (API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
+        (API::LoaderClient::willGoToBackForwardListItem):
+        (API::LoaderClient::pluginLoadPolicy):
+        (API::LoaderClient::didFailToInitializePlugin):
+        (API::LoaderClient::didBlockInsecurePluginVersion):
+        (API::LoaderClient::webGLLoadPolicy):
+        (API::LoaderClient::resolveWebGLLoadPolicy):
+        (API::LoaderClient::didDestroyNavigation): Deleted.
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetPageLoaderClient):
+        * UIProcess/Cocoa/NavigationState.h:
+        * UIProcess/Cocoa/NavigationState.mm:
+        (WebKit::NavigationState::LoaderClient::didStartProvisionalLoadForFrame):
+        (WebKit::NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
+        (WebKit::NavigationState::LoaderClient::didCommitLoadForFrame):
+        (WebKit::NavigationState::LoaderClient::didFinishDocumentLoadForFrame):
+        (WebKit::NavigationState::LoaderClient::didFinishLoadForFrame):
+        (WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):
+        (WebKit::NavigationState::LoaderClient::didSameDocumentNavigationForFrame):
+        (WebKit::NavigationState::LoaderClient::didLayout):
+        (WebKit::NavigationState::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame):
+        (WebKit::NavigationState::LoaderClient::didReceiveAuthenticationChallengeInFrame):
+        (WebKit::NavigationState::LoaderClient::processDidCrash):
+        (WebKit::NavigationState::LoaderClient::didDestroyNavigation): Deleted.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::didChangeBackForwardList):
+        (WebKit::WebPageProxy::willGoToBackForwardListItem):
+        (WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
+        (WebKit::WebPageProxy::findPlugin):
+        (WebKit::WebPageProxy::didStartProgress):
+        (WebKit::WebPageProxy::didChangeProgress):
+        (WebKit::WebPageProxy::didFinishProgress):
+        (WebKit::WebPageProxy::didDestroyNavigation):
+        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didCommitLoadForFrame):
+        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
+        (WebKit::WebPageProxy::didFinishLoadForFrame):
+        (WebKit::WebPageProxy::didFailLoadForFrame):
+        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
+        (WebKit::WebPageProxy::didReceiveTitleForFrame):
+        (WebKit::WebPageProxy::didFirstLayoutForFrame):
+        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
+        (WebKit::WebPageProxy::didLayout):
+        (WebKit::WebPageProxy::didRemoveFrameFromHierarchy):
+        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
+        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
+        (WebKit::WebPageProxy::didDetectXSSForFrame):
+        (WebKit::WebPageProxy::webGLPolicyForURL):
+        (WebKit::WebPageProxy::resolveWebGLPolicyForURL):
+        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
+        (WebKit::WebPageProxy::interactionOccurredWhileProcessUnresponsive):
+        (WebKit::WebPageProxy::processDidBecomeResponsive):
+        (WebKit::WebPageProxy::processDidCrash):
+        (WebKit::WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame):
+        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
+        (WebKit::WebPageProxy::didFailToInitializePlugin):
+        (WebKit::WebPageProxy::didBlockInsecurePluginVersion):
+        - Moves conversion from navigationID to API::Navigation into WebPageProxy
+          from NavigationState.
+        - Changes API::LoaderClient to pass WebPageProxy and WebFrameProxy by reference
+          rather than pointer, and to take an API::Navigation instead of a navigationID.
+
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
+        Move access of the navigationID to after calling into the client bundle to avoid
+        passing a navigationID of a deleted navigation to the UIProcess. This problem was
+        caught via the WebKit2.StopLoadingDuringDidFailProvisionalLoadTest API test, which
+        now exercises the Navigation code path. Had that test been written using a Navigation
+        delegate, the issue would have happened prior to this change.
+
</ins><span class="cx"> 2015-01-13  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Begin stubbing out a per page process lifetime tracker object
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPILoaderClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -50,50 +50,50 @@
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><span class="cx"> class Dictionary;
</span><ins>+class Navigation;
</ins><span class="cx"> class Object;
</span><span class="cx"> 
</span><span class="cx"> class LoaderClient {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~LoaderClient() { }
</span><span class="cx"> 
</span><del>-    virtual void didStartProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
-    virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
-    virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, const WebCore::ResourceError&amp;, API::Object*) { }
-    virtual void didCommitLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
-    virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
-    virtual void didFinishLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
-    virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, const WebCore::ResourceError&amp;, API::Object*) { }
-    virtual void didSameDocumentNavigationForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, WebKit::SameDocumentNavigationType, API::Object*) { }
-    virtual void didReceiveTitleForFrame(WebKit::WebPageProxy*, const WTF::String&amp;, WebKit::WebFrameProxy*, API::Object*) { }
-    virtual void didFirstLayoutForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
-    virtual void didDestroyNavigation(WebKit::WebPageProxy*, uint64_t) { }
</del><ins>+    virtual void didStartProvisionalLoadForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, API::Object*) { }
+    virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, API::Object*) { }
+    virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) { }
+    virtual void didCommitLoadForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, API::Object*) { }
+    virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, API::Object*) { }
+    virtual void didFinishLoadForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, API::Object*) { }
+    virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) { }
+    virtual void didSameDocumentNavigationForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, WebKit::SameDocumentNavigationType, API::Object*) { }
+    virtual void didReceiveTitleForFrame(WebKit::WebPageProxy&amp;, const WTF::String&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
+    virtual void didFirstLayoutForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: We should consider removing didFirstVisuallyNonEmptyLayoutForFrame since it is replaced by didLayout.
</span><del>-    virtual void didFirstVisuallyNonEmptyLayoutForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
</del><ins>+    virtual void didFirstVisuallyNonEmptyLayoutForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
</ins><span class="cx"> 
</span><del>-    virtual void didRemoveFrameFromHierarchy(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
-    virtual void didDisplayInsecureContentForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
-    virtual void didRunInsecureContentForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
-    virtual void didDetectXSSForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
</del><ins>+    virtual void didRemoveFrameFromHierarchy(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
+    virtual void didDisplayInsecureContentForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
+    virtual void didRunInsecureContentForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
+    virtual void didDetectXSSForFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Object*) { }
</ins><span class="cx"> 
</span><del>-    virtual void didLayout(WebKit::WebPageProxy*, WebCore::LayoutMilestones, API::Object*) { }
</del><ins>+    virtual void didLayout(WebKit::WebPageProxy&amp;, WebCore::LayoutMilestones, API::Object*) { }
</ins><span class="cx">     
</span><del>-    virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebProtectionSpace*) { return false; }
-    virtual void didReceiveAuthenticationChallengeInFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::AuthenticationChallengeProxy*) { }
</del><ins>+    virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, WebKit::WebProtectionSpace*) { return false; }
+    virtual void didReceiveAuthenticationChallengeInFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, WebKit::AuthenticationChallengeProxy*) { }
</ins><span class="cx"> 
</span><del>-    virtual void didStartProgress(WebKit::WebPageProxy*) { }
-    virtual void didChangeProgress(WebKit::WebPageProxy*) { }
-    virtual void didFinishProgress(WebKit::WebPageProxy*) { }
</del><ins>+    virtual void didStartProgress(WebKit::WebPageProxy&amp;) { }
+    virtual void didChangeProgress(WebKit::WebPageProxy&amp;) { }
+    virtual void didFinishProgress(WebKit::WebPageProxy&amp;) { }
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: These three functions should not be part of this client.
</span><del>-    virtual void processDidBecomeUnresponsive(WebKit::WebPageProxy*) { }
-    virtual void interactionOccurredWhileProcessUnresponsive(WebKit::WebPageProxy*) { }
-    virtual void processDidBecomeResponsive(WebKit::WebPageProxy*) { }
-    virtual void processDidCrash(WebKit::WebPageProxy*) { }
</del><ins>+    virtual void processDidBecomeUnresponsive(WebKit::WebPageProxy&amp;) { }
+    virtual void interactionOccurredWhileProcessUnresponsive(WebKit::WebPageProxy&amp;) { }
+    virtual void processDidBecomeResponsive(WebKit::WebPageProxy&amp;) { }
+    virtual void processDidCrash(WebKit::WebPageProxy&amp;) { }
</ins><span class="cx"> 
</span><del>-    virtual void didChangeBackForwardList(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem*, Vector&lt;RefPtr&lt;WebKit::WebBackForwardListItem&gt;&gt;) { }
-    virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem*) { return true; }
-    virtual void willGoToBackForwardListItem(WebKit::WebPageProxy*, WebKit::WebBackForwardListItem*, API::Object*) { }
</del><ins>+    virtual void didChangeBackForwardList(WebKit::WebPageProxy&amp;, WebKit::WebBackForwardListItem*, Vector&lt;RefPtr&lt;WebKit::WebBackForwardListItem&gt;&gt;) { }
+    virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy&amp;, WebKit::WebBackForwardListItem*) { return true; }
+    virtual void willGoToBackForwardListItem(WebKit::WebPageProxy&amp;, WebKit::WebBackForwardListItem*, API::Object*) { }
</ins><span class="cx"> 
</span><span class="cx">     virtual PassRefPtr&lt;Data&gt; webCryptoMasterKey(WebKit::WebPageProxy&amp;) { return nullptr; }
</span><span class="cx"> 
</span><span class="lines">@@ -103,14 +103,14 @@
</span><span class="cx">     virtual void didUpdateHistoryTitle(WebKit::WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy&amp;) { }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-    virtual WebKit::PluginModuleLoadPolicy pluginLoadPolicy(WebKit::WebPageProxy*, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary*, WTF::String&amp; /* unavailabilityDescription */) { return currentPluginLoadPolicy; }
-    virtual void didFailToInitializePlugin(WebKit::WebPageProxy*, API::Dictionary*) { }
-    virtual void didBlockInsecurePluginVersion(WebKit::WebPageProxy*, API::Dictionary*) { }
</del><ins>+    virtual WebKit::PluginModuleLoadPolicy pluginLoadPolicy(WebKit::WebPageProxy&amp;, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary*, WTF::String&amp; /* unavailabilityDescription */) { return currentPluginLoadPolicy; }
+    virtual void didFailToInitializePlugin(WebKit::WebPageProxy&amp;, API::Dictionary*) { }
+    virtual void didBlockInsecurePluginVersion(WebKit::WebPageProxy&amp;, API::Dictionary*) { }
</ins><span class="cx"> #endif // ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-    virtual WebCore::WebGLLoadPolicy webGLLoadPolicy(WebKit::WebPageProxy*, const WTF::String&amp;) const { return WebCore::WebGLLoadPolicy::WebGLAllowCreation; }
-    virtual WebCore::WebGLLoadPolicy resolveWebGLLoadPolicy(WebKit::WebPageProxy*, const WTF::String&amp;) const { return WebCore::WebGLLoadPolicy::WebGLAllowCreation; }
</del><ins>+    virtual WebCore::WebGLLoadPolicy webGLLoadPolicy(WebKit::WebPageProxy&amp;, const WTF::String&amp;) const { return WebCore::WebGLLoadPolicy::WebGLAllowCreation; }
+    virtual WebCore::WebGLLoadPolicy resolveWebGLLoadPolicy(WebKit::WebPageProxy&amp;, const WTF::String&amp;) const { return WebCore::WebGLLoadPolicy::WebGLAllowCreation; }
</ins><span class="cx"> #endif // ENABLE(WEBGL)
</span><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -785,207 +785,207 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        virtual void didStartProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, API::Object* userData) override
</del><ins>+        virtual void didStartProvisionalLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didStartProvisionalLoadForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didStartProvisionalLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didStartProvisionalLoadForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, API::Object* userData) override
</del><ins>+        virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, const ResourceError&amp; error, API::Object* userData) override
</del><ins>+        virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, const ResourceError&amp; error, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFailProvisionalLoadWithErrorForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFailProvisionalLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFailProvisionalLoadWithErrorForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, API::Object* userData) override
</del><ins>+        virtual void didCommitLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didCommitLoadForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didCommitLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didCommitLoadForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, API::Object* userData) override
</del><ins>+        virtual void didFinishDocumentLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFinishDocumentLoadForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFinishDocumentLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFinishDocumentLoadForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFinishLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, API::Object* userData) override
</del><ins>+        virtual void didFinishLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFinishLoadForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFinishLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFinishLoadForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, const ResourceError&amp; error, API::Object* userData) override
</del><ins>+        virtual void didFailLoadWithErrorForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, const ResourceError&amp; error, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFailLoadWithErrorForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFailLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFailLoadWithErrorForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(error), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didSameDocumentNavigationForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, SameDocumentNavigationType type, API::Object* userData) override
</del><ins>+        virtual void didSameDocumentNavigationForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Navigation*, SameDocumentNavigationType type, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didSameDocumentNavigationForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didSameDocumentNavigationForFrame(toAPI(page), toAPI(frame), toAPI(type), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didSameDocumentNavigationForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(type), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didReceiveTitleForFrame(WebPageProxy* page, const String&amp; title, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didReceiveTitleForFrame(WebPageProxy&amp; page, const String&amp; title, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didReceiveTitleForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didReceiveTitleForFrame(toAPI(page), toAPI(title.impl()), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didReceiveTitleForFrame(toAPI(&amp;page), toAPI(title.impl()), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFirstLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didFirstLayoutForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFirstLayoutForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFirstLayoutForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFirstLayoutForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFirstVisuallyNonEmptyLayoutForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFirstVisuallyNonEmptyLayoutForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didFirstVisuallyNonEmptyLayoutForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didLayout(WebPageProxy* page, LayoutMilestones milestones, API::Object* userData) override
</del><ins>+        virtual void didLayout(WebPageProxy&amp; page, LayoutMilestones milestones, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didLayout)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didLayout(toAPI(page), toWKLayoutMilestones(milestones), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didLayout(toAPI(&amp;page), toWKLayoutMilestones(milestones), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didRemoveFrameFromHierarchy(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didRemoveFrameFromHierarchy(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didRemoveFrameFromHierarchy)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didRemoveFrameFromHierarchy(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didRemoveFrameFromHierarchy(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didDisplayInsecureContentForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didDisplayInsecureContentForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didDisplayInsecureContentForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didDisplayInsecureContentForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didDisplayInsecureContentForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didRunInsecureContentForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didRunInsecureContentForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didRunInsecureContentForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didRunInsecureContentForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didRunInsecureContentForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didDetectXSSForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
</del><ins>+        virtual void didDetectXSSForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didDetectXSSForFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didDetectXSSForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
</del><ins>+            m_client.didDetectXSSForFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebPageProxy* page, WebFrameProxy* frame, WebProtectionSpace* protectionSpace) override
</del><ins>+        virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, WebProtectionSpace* protectionSpace) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.canAuthenticateAgainstProtectionSpaceInFrame)
</span><span class="cx">                 return false;
</span><span class="cx"> 
</span><del>-            return m_client.canAuthenticateAgainstProtectionSpaceInFrame(toAPI(page), toAPI(frame), toAPI(protectionSpace), m_client.base.clientInfo);
</del><ins>+            return m_client.canAuthenticateAgainstProtectionSpaceInFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(protectionSpace), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didReceiveAuthenticationChallengeInFrame(WebPageProxy* page, WebFrameProxy* frame, AuthenticationChallengeProxy* authenticationChallenge) override
</del><ins>+        virtual void didReceiveAuthenticationChallengeInFrame(WebPageProxy&amp; page, WebFrameProxy&amp; frame, AuthenticationChallengeProxy* authenticationChallenge) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didReceiveAuthenticationChallengeInFrame)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didReceiveAuthenticationChallengeInFrame(toAPI(page), toAPI(frame), toAPI(authenticationChallenge), m_client.base.clientInfo);
</del><ins>+            m_client.didReceiveAuthenticationChallengeInFrame(toAPI(&amp;page), toAPI(&amp;frame), toAPI(authenticationChallenge), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didStartProgress(WebPageProxy* page) override
</del><ins>+        virtual void didStartProgress(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didStartProgress)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didStartProgress(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.didStartProgress(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didChangeProgress(WebPageProxy* page) override
</del><ins>+        virtual void didChangeProgress(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didChangeProgress)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didChangeProgress(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.didChangeProgress(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didFinishProgress(WebPageProxy* page) override
</del><ins>+        virtual void didFinishProgress(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didFinishProgress)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.didFinishProgress(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.didFinishProgress(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void processDidBecomeUnresponsive(WebPageProxy* page) override
</del><ins>+        virtual void processDidBecomeUnresponsive(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.processDidBecomeUnresponsive)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.processDidBecomeUnresponsive(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.processDidBecomeUnresponsive(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void interactionOccurredWhileProcessUnresponsive(WebPageProxy* page) override
</del><ins>+        virtual void interactionOccurredWhileProcessUnresponsive(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.interactionOccurredWhileProcessUnresponsive)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.interactionOccurredWhileProcessUnresponsive(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.interactionOccurredWhileProcessUnresponsive(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void processDidBecomeResponsive(WebPageProxy* page) override
</del><ins>+        virtual void processDidBecomeResponsive(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.processDidBecomeResponsive)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.processDidBecomeResponsive(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.processDidBecomeResponsive(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void processDidCrash(WebPageProxy* page) override
</del><ins>+        virtual void processDidCrash(WebPageProxy&amp; page) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.processDidCrash)
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><del>-            m_client.processDidCrash(toAPI(page), m_client.base.clientInfo);
</del><ins>+            m_client.processDidCrash(toAPI(&amp;page), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didChangeBackForwardList(WebPageProxy* page, WebBackForwardListItem* addedItem, Vector&lt;RefPtr&lt;WebBackForwardListItem&gt;&gt; removedItems) override
</del><ins>+        virtual void didChangeBackForwardList(WebPageProxy&amp; page, WebBackForwardListItem* addedItem, Vector&lt;RefPtr&lt;WebBackForwardListItem&gt;&gt; removedItems) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.didChangeBackForwardList)
</span><span class="cx">                 return;
</span><span class="lines">@@ -1000,21 +1000,21 @@
</span><span class="cx">                 removedItemsArray = API::Array::create(WTF::move(removedItemsVector));
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            m_client.didChangeBackForwardList(toAPI(page), toAPI(addedItem), toAPI(removedItemsArray.get()), m_client.base.clientInfo);
</del><ins>+            m_client.didChangeBackForwardList(toAPI(&amp;page), toAPI(addedItem), toAPI(removedItemsArray.get()), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy* page, WebKit::WebBackForwardListItem* item) override
</del><ins>+        virtual bool shouldKeepCurrentBackForwardListItemInList(WebKit::WebPageProxy&amp; page, WebKit::WebBackForwardListItem* item) override
</ins><span class="cx">         {
</span><span class="cx">             if (!m_client.shouldKeepCurrentBackForwardListItemInList)
</span><span class="cx">                 return true;
</span><span class="cx"> 
</span><del>-            return m_client.shouldKeepCurrentBackForwardListItemInList(toAPI(page), toAPI(item), m_client.base.clientInfo);
</del><ins>+            return m_client.shouldKeepCurrentBackForwardListItemInList(toAPI(&amp;page), toAPI(item), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void willGoToBackForwardListItem(WebPageProxy* page, WebBackForwardListItem* item, API::Object* userData) override
</del><ins>+        virtual void willGoToBackForwardListItem(WebPageProxy&amp; page, WebBackForwardListItem* item, API::Object* userData) override
</ins><span class="cx">         {
</span><span class="cx">             if (m_client.willGoToBackForwardListItem)
</span><del>-                m_client.willGoToBackForwardListItem(toAPI(page), toAPI(item), toAPI(userData), m_client.base.clientInfo);
</del><ins>+                m_client.willGoToBackForwardListItem(toAPI(&amp;page), toAPI(item), toAPI(userData), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         virtual PassRefPtr&lt;API::Data&gt; webCryptoMasterKey(WebPageProxy&amp; page) override
</span><span class="lines">@@ -1023,36 +1023,36 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-        virtual void didFailToInitializePlugin(WebPageProxy* page, API::Dictionary* pluginInformation) override
</del><ins>+        virtual void didFailToInitializePlugin(WebPageProxy&amp; page, API::Dictionary* pluginInformation) override
</ins><span class="cx">         {
</span><span class="cx">             if (m_client.didFailToInitializePlugin_deprecatedForUseWithV0)
</span><del>-                m_client.didFailToInitializePlugin_deprecatedForUseWithV0(toAPI(page), toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())), m_client.base.clientInfo);
</del><ins>+                m_client.didFailToInitializePlugin_deprecatedForUseWithV0(toAPI(&amp;page), toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())), m_client.base.clientInfo);
</ins><span class="cx"> 
</span><span class="cx">             if (m_client.pluginDidFail_deprecatedForUseWithV1)
</span><del>-                m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())), 0, 0, m_client.base.clientInfo);
</del><ins>+                m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(&amp;page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())), 0, 0, m_client.base.clientInfo);
</ins><span class="cx"> 
</span><span class="cx">             if (m_client.pluginDidFail)
</span><del>-                m_client.pluginDidFail(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation), m_client.base.clientInfo);
</del><ins>+                m_client.pluginDidFail(toAPI(&amp;page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual void didBlockInsecurePluginVersion(WebPageProxy* page, API::Dictionary* pluginInformation) override
</del><ins>+        virtual void didBlockInsecurePluginVersion(WebPageProxy&amp; page, API::Dictionary* pluginInformation) override
</ins><span class="cx">         {
</span><span class="cx">             if (m_client.pluginDidFail_deprecatedForUseWithV1)
</span><del>-                m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeInsecurePlugInVersion, toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())), toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationBundleIdentifierKey())), toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationBundleVersionKey())), m_client.base.clientInfo);
</del><ins>+                m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(&amp;page), kWKErrorCodeInsecurePlugInVersion, toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationMIMETypeKey())), toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationBundleIdentifierKey())), toAPI(pluginInformation-&gt;get&lt;API::String&gt;(pluginInformationBundleVersionKey())), m_client.base.clientInfo);
</ins><span class="cx"> 
</span><span class="cx">             if (m_client.pluginDidFail)
</span><del>-                m_client.pluginDidFail(toAPI(page), kWKErrorCodeInsecurePlugInVersion, toAPI(pluginInformation), m_client.base.clientInfo);
</del><ins>+                m_client.pluginDidFail(toAPI(&amp;page), kWKErrorCodeInsecurePlugInVersion, toAPI(pluginInformation), m_client.base.clientInfo);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy* page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary* pluginInformation, String&amp; unavailabilityDescription) override
</del><ins>+        virtual PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy&amp; page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary* pluginInformation, String&amp; unavailabilityDescription) override
</ins><span class="cx">         {
</span><span class="cx">             WKStringRef unavailabilityDescriptionOut = 0;
</span><span class="cx">             PluginModuleLoadPolicy loadPolicy = currentPluginLoadPolicy;
</span><span class="cx"> 
</span><span class="cx">             if (m_client.pluginLoadPolicy_deprecatedForUseWithV2)
</span><del>-                loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy_deprecatedForUseWithV2(toAPI(page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation), m_client.base.clientInfo));
</del><ins>+                loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy_deprecatedForUseWithV2(toAPI(&amp;page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation), m_client.base.clientInfo));
</ins><span class="cx">             else if (m_client.pluginLoadPolicy)
</span><del>-                loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation), &amp;unavailabilityDescriptionOut, m_client.base.clientInfo));
</del><ins>+                loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(&amp;page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation), &amp;unavailabilityDescriptionOut, m_client.base.clientInfo));
</ins><span class="cx"> 
</span><span class="cx">             if (unavailabilityDescriptionOut) {
</span><span class="cx">                 RefPtr&lt;API::String&gt; webUnavailabilityDescription = adoptRef(toImpl(unavailabilityDescriptionOut));
</span><span class="lines">@@ -1064,22 +1064,22 @@
</span><span class="cx"> #endif // ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGL)
</span><del>-        virtual WebCore::WebGLLoadPolicy webGLLoadPolicy(WebPageProxy* page, const String&amp; url) const override
</del><ins>+        virtual WebCore::WebGLLoadPolicy webGLLoadPolicy(WebPageProxy&amp; page, const String&amp; url) const override
</ins><span class="cx">         {
</span><span class="cx">             WebCore::WebGLLoadPolicy loadPolicy = WebGLAllowCreation;
</span><span class="cx"> 
</span><span class="cx">             if (m_client.webGLLoadPolicy)
</span><del>-                loadPolicy = toWebGLLoadPolicy(m_client.webGLLoadPolicy(toAPI(page), toAPI(url.impl()), m_client.base.clientInfo));
</del><ins>+                loadPolicy = toWebGLLoadPolicy(m_client.webGLLoadPolicy(toAPI(&amp;page), toAPI(url.impl()), m_client.base.clientInfo));
</ins><span class="cx"> 
</span><span class="cx">             return loadPolicy;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        virtual WebCore::WebGLLoadPolicy resolveWebGLLoadPolicy(WebPageProxy* page, const String&amp; url) const override
</del><ins>+        virtual WebCore::WebGLLoadPolicy resolveWebGLLoadPolicy(WebPageProxy&amp; page, const String&amp; url) const override
</ins><span class="cx">         {
</span><span class="cx">             WebCore::WebGLLoadPolicy loadPolicy = WebGLAllowCreation;
</span><span class="cx"> 
</span><span class="cx">             if (m_client.resolveWebGLLoadPolicy)
</span><del>-                loadPolicy = toWebGLLoadPolicy(m_client.resolveWebGLLoadPolicy(toAPI(page), toAPI(url.impl()), m_client.base.clientInfo));
</del><ins>+                loadPolicy = toWebGLLoadPolicy(m_client.resolveWebGLLoadPolicy(toAPI(&amp;page), toAPI(url.impl()), m_client.base.clientInfo));
</ins><span class="cx"> 
</span><span class="cx">             return loadPolicy;
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaNavigationStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -93,30 +93,29 @@
</span><span class="cx">         ~LoaderClient();
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        virtual void didStartProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
-        virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) override;
-        virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&amp;, API::Object*) override;
-        virtual void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
-        virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) override;
-        virtual void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
-        virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&amp;, API::Object*) override;
-        virtual void didSameDocumentNavigationForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, SameDocumentNavigationType, API::Object*) override;
-        virtual void didDestroyNavigation(WebKit::WebPageProxy*, uint64_t navigationID) override;
-        virtual void didLayout(WebKit::WebPageProxy*, WebCore::LayoutMilestones, API::Object*) override;
-        virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebProtectionSpace*) override;
-        virtual void didReceiveAuthenticationChallengeInFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::AuthenticationChallengeProxy*) override;
-        virtual void processDidCrash(WebKit::WebPageProxy*) override;
-        virtual PassRefPtr&lt;API::Data&gt; webCryptoMasterKey(WebKit::WebPageProxy&amp;) override;
</del><ins>+        virtual void didStartProvisionalLoadForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, API::Object*) override;
+        virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, API::Object*) override;
+        virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) override;
+        virtual void didCommitLoadForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, API::Object*) override;
+        virtual void didFinishDocumentLoadForFrame(WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, API::Navigation*, API::Object*) override;
+        virtual void didFinishLoadForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, API::Object*) override;
+        virtual void didFailLoadWithErrorForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, const WebCore::ResourceError&amp;, API::Object*) override;
+        virtual void didSameDocumentNavigationForFrame(WebPageProxy&amp;, WebFrameProxy&amp;, API::Navigation*, SameDocumentNavigationType, API::Object*) override;
+        virtual void didLayout(WebPageProxy&amp;, WebCore::LayoutMilestones, API::Object*) override;
+        virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, WebKit::WebProtectionSpace*) override;
+        virtual void didReceiveAuthenticationChallengeInFrame(WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, WebKit::AuthenticationChallengeProxy*) override;
+        virtual void processDidCrash(WebPageProxy&amp;) override;
+        virtual PassRefPtr&lt;API::Data&gt; webCryptoMasterKey(WebPageProxy&amp;) override;
</ins><span class="cx"> 
</span><span class="cx"> #if USE(QUICK_LOOK)
</span><span class="cx">         virtual void didStartLoadForQuickLookDocumentInMainFrame(const WTF::String&amp; fileName, const WTF::String&amp; uti) override;
</span><span class="cx">         virtual void didFinishLoadForQuickLookDocumentInMainFrame(const WebKit::QuickLookDocumentData&amp;) override;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-        virtual void didNavigateWithNavigationData(WebKit::WebPageProxy&amp;, const WebKit::WebNavigationDataStore&amp;, WebKit::WebFrameProxy&amp;) override;
-        virtual void didPerformClientRedirect(WebKit::WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy&amp;) override;
-        virtual void didPerformServerRedirect(WebKit::WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy&amp;) override;
-        virtual void didUpdateHistoryTitle(WebKit::WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebKit::WebFrameProxy&amp;) override;
</del><ins>+        virtual void didNavigateWithNavigationData(WebPageProxy&amp;, const WebNavigationDataStore&amp;, WebFrameProxy&amp;) override;
+        virtual void didPerformClientRedirect(WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebFrameProxy&amp;) override;
+        virtual void didPerformServerRedirect(WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebFrameProxy&amp;) override;
+        virtual void didUpdateHistoryTitle(WebPageProxy&amp;, const WTF::String&amp;, const WTF::String&amp;, WebFrameProxy&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">         NavigationState&amp; m_navigationState;
</span><span class="cx">     };
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaNavigationStatemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -361,9 +361,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didStartProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didStartProvisionalLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewDidStartProvisionalNavigation)
</span><span class="lines">@@ -373,17 +373,17 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    [navigationDelegate webView:m_navigationState.m_webView didStartProvisionalNavigation:navigation];
</del><ins>+    [navigationDelegate webView:m_navigationState.m_webView didStartProvisionalNavigation:wkNavigation];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy* page, WebKit::WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy&amp; page, WebKit::WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewDidReceiveServerRedirectForProvisionalNavigation)
</span><span class="lines">@@ -393,12 +393,12 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    [navigationDelegate webView:m_navigationState.m_webView didReceiveServerRedirectForProvisionalNavigation:navigation];
</del><ins>+    [navigationDelegate webView:m_navigationState.m_webView didReceiveServerRedirectForProvisionalNavigation:wkNavigation];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static RetainPtr&lt;NSError&gt; createErrorWithRecoveryAttempter(WKWebView *webView, WebFrameProxy&amp; webFrameProxy, NSError *originalError)
</span><span class="lines">@@ -415,24 +415,24 @@
</span><span class="cx">     return adoptNS([[NSError alloc] initWithDomain:originalError.domain code:originalError.code userInfo:userInfo.get()]);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError&amp; error, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame()) {
</del><ins>+    if (!webFrameProxy.isMainFrame()) {
</ins><span class="cx">         if (!m_navigationState.m_navigationDelegateMethods.webViewNavigationDidFailProvisionalLoadInSubframeWithError)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
</span><del>-        auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, *webFrameProxy, error);
</del><ins>+        auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, webFrameProxy, error);
</ins><span class="cx">         // FIXME: Get the main frame's current navigation.
</span><del>-        [(id &lt;WKNavigationDelegatePrivate&gt;)navigationDelegate _webView:m_navigationState.m_webView navigation:nil didFailProvisionalLoadInSubframe:adoptNS([[WKFrameInfo alloc] initWithWebFrameProxy:*webFrameProxy]).get() withError:errorWithRecoveryAttempter.get()];
</del><ins>+        [(id &lt;WKNavigationDelegatePrivate&gt;)navigationDelegate _webView:m_navigationState.m_webView navigation:nil didFailProvisionalLoadInSubframe:adoptNS([[WKFrameInfo alloc] initWithWebFrameProxy:webFrameProxy]).get() withError:errorWithRecoveryAttempter.get()];
</ins><span class="cx"> 
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    RetainPtr&lt;WKNavigation&gt; navigation;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().takeNavigation(navigationID).get());
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    RetainPtr&lt;WKNavigation&gt; wkNavigation;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx">     
</span><span class="cx">     // FIXME: Set the error on the navigation object.
</span><span class="cx"> 
</span><span class="lines">@@ -443,13 +443,13 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, *webFrameProxy, error);
-    [navigationDelegate webView:m_navigationState.m_webView didFailProvisionalNavigation:navigation.get() withError:errorWithRecoveryAttempter.get()];
</del><ins>+    auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, webFrameProxy, error);
+    [navigationDelegate webView:m_navigationState.m_webView didFailProvisionalNavigation:wkNavigation.get() withError:errorWithRecoveryAttempter.get()];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didCommitLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewDidCommitNavigation)
</span><span class="lines">@@ -459,17 +459,17 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    [navigationDelegate webView:m_navigationState.m_webView didCommitNavigation:navigation];
</del><ins>+    [navigationDelegate webView:m_navigationState.m_webView didCommitNavigation:wkNavigation];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didFinishDocumentLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewNavigationDidFinishDocumentLoad)
</span><span class="lines">@@ -479,17 +479,17 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView navigationDidFinishDocumentLoad:navigation];
</del><ins>+    [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView navigationDidFinishDocumentLoad:wkNavigation];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didFinishLoadForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didFinishLoadForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewDidFinishNavigation)
</span><span class="lines">@@ -499,17 +499,17 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    [navigationDelegate webView:m_navigationState.m_webView didFinishNavigation:navigation];
</del><ins>+    [navigationDelegate webView:m_navigationState.m_webView didFinishNavigation:wkNavigation];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError&amp; error, API::Object* userData)
</del><ins>+void NavigationState::LoaderClient::didFailLoadWithErrorForFrame(WebPageProxy&amp; page, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, const WebCore::ResourceError&amp; error, API::Object* userData)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewDidFailNavigationWithError)
</span><span class="lines">@@ -519,18 +519,18 @@
</span><span class="cx">     if (!navigationDelegate)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    // FIXME: We should assert that navigation is not null here, but it's currently null for some navigations through the page cache.
+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, *webFrameProxy, error);
-    [navigationDelegate webView:m_navigationState.m_webView didFailNavigation:navigation withError:errorWithRecoveryAttempter.get()];
</del><ins>+    auto errorWithRecoveryAttempter = createErrorWithRecoveryAttempter(m_navigationState.m_webView, webFrameProxy, error);
+    [navigationDelegate webView:m_navigationState.m_webView didFailNavigation:wkNavigation withError:errorWithRecoveryAttempter.get()];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didSameDocumentNavigationForFrame(WebPageProxy* page, WebFrameProxy* webFrameProxy, uint64_t navigationID, SameDocumentNavigationType navigationType, API::Object*)
</del><ins>+void NavigationState::LoaderClient::didSameDocumentNavigationForFrame(WebPageProxy&amp;, WebFrameProxy&amp; webFrameProxy, API::Navigation* navigation, SameDocumentNavigationType navigationType, API::Object*)
</ins><span class="cx"> {
</span><del>-    if (!webFrameProxy-&gt;isMainFrame())
</del><ins>+    if (!webFrameProxy.isMainFrame())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewNavigationDidSameDocumentNavigation)
</span><span class="lines">@@ -541,20 +541,15 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: We should assert that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
</span><del>-    WKNavigation *navigation = nil;
-    if (navigationID)
-        navigation = wrapper(page-&gt;navigationState().navigation(navigationID));
</del><ins>+    WKNavigation *wkNavigation = nil;
+    if (navigation)
+        wkNavigation = wrapper(*navigation);
</ins><span class="cx"> 
</span><del>-    [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView navigation:navigation didSameDocumentNavigation:toWKSameDocumentNavigationType(navigationType)];
</del><ins>+    [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView navigation:wkNavigation didSameDocumentNavigation:toWKSameDocumentNavigationType(navigationType)];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didDestroyNavigation(WebPageProxy* page, uint64_t navigationID)
</del><ins>+void NavigationState::LoaderClient::didLayout(WebKit::WebPageProxy&amp;, WebCore::LayoutMilestones layoutMilestones, API::Object*)
</ins><span class="cx"> {
</span><del>-    page-&gt;navigationState().didDestroyNavigation(navigationID);
-}
-
-void NavigationState::LoaderClient::didLayout(WebKit::WebPageProxy*, WebCore::LayoutMilestones layoutMilestones, API::Object*)
-{
</del><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewRenderingProgressDidChange)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -565,7 +560,7 @@
</span><span class="cx">     [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView renderingProgressDidChange:renderingProgressEvents(layoutMilestones)];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool NavigationState::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebProtectionSpace* protectionSpace)
</del><ins>+bool NavigationState::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame(WebKit::WebPageProxy&amp;, WebKit::WebFrameProxy&amp;, WebKit::WebProtectionSpace* protectionSpace)
</ins><span class="cx"> {
</span><span class="cx">     if (m_navigationState.m_navigationDelegateMethods.webViewDidReceiveAuthenticationChallengeCompletionHandler)
</span><span class="cx">         return true;
</span><span class="lines">@@ -580,7 +575,7 @@
</span><span class="cx">     return [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView canAuthenticateAgainstProtectionSpace:protectionSpace-&gt;protectionSpace().nsSpace()];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::didReceiveAuthenticationChallengeInFrame(WebPageProxy*, WebFrameProxy*, AuthenticationChallengeProxy* authenticationChallenge)
</del><ins>+void NavigationState::LoaderClient::didReceiveAuthenticationChallengeInFrame(WebPageProxy&amp;, WebFrameProxy&amp;, AuthenticationChallengeProxy* authenticationChallenge)
</ins><span class="cx"> {
</span><span class="cx"> #if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
</span><span class="cx">     if (m_navigationState.m_navigationDelegateMethods.webViewDidReceiveAuthenticationChallengeCompletionHandler) {
</span><span class="lines">@@ -637,10 +632,8 @@
</span><span class="cx">     [static_cast&lt;id &lt;WKNavigationDelegatePrivate&gt;&gt;(navigationDelegate.get()) _webView:m_navigationState.m_webView didReceiveAuthenticationChallenge:wrapper(*authenticationChallenge)];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NavigationState::LoaderClient::processDidCrash(WebKit::WebPageProxy* page)
</del><ins>+void NavigationState::LoaderClient::processDidCrash(WebKit::WebPageProxy&amp; page)
</ins><span class="cx"> {
</span><del>-    page-&gt;navigationState().clearAllNavigations();
-
</del><span class="cx">     if (!m_navigationState.m_navigationDelegateMethods.webViewWebProcessDidCrash)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -1033,7 +1033,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didChangeBackForwardList(WebBackForwardListItem* added, Vector&lt;RefPtr&lt;WebBackForwardListItem&gt;&gt; removed)
</span><span class="cx"> {
</span><del>-    m_loaderClient-&gt;didChangeBackForwardList(this, added, WTF::move(removed));
</del><ins>+    m_loaderClient-&gt;didChangeBackForwardList(*this, added, WTF::move(removed));
</ins><span class="cx"> 
</span><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="cx"> 
</span><span class="lines">@@ -1044,12 +1044,12 @@
</span><span class="cx"> void WebPageProxy::willGoToBackForwardListItem(uint64_t itemID, const UserData&amp; userData)
</span><span class="cx"> {
</span><span class="cx">     if (WebBackForwardListItem* item = m_process-&gt;webBackForwardItem(itemID))
</span><del>-        m_loaderClient-&gt;willGoToBackForwardListItem(this, item, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+        m_loaderClient-&gt;willGoToBackForwardListItem(*this, item, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebPageProxy::shouldKeepCurrentBackForwardListItemInList(WebBackForwardListItem* item)
</span><span class="cx"> {
</span><del>-    return m_loaderClient-&gt;shouldKeepCurrentBackForwardListItemInList(this, item);
</del><ins>+    return m_loaderClient-&gt;shouldKeepCurrentBackForwardListItemInList(*this, item);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebPageProxy::canShowMIMEType(const String&amp; mimeType)
</span><span class="lines">@@ -1689,7 +1689,7 @@
</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>+    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 class="lines">@@ -2557,7 +2557,7 @@
</span><span class="cx">     m_pageLoadState.didStartProgress(transaction);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didStartProgress(this);
</del><ins>+    m_loaderClient-&gt;didStartProgress(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didChangeProgress(double value)
</span><span class="lines">@@ -2566,7 +2566,7 @@
</span><span class="cx">     m_pageLoadState.didChangeProgress(transaction, value);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didChangeProgress(this);
</del><ins>+    m_loaderClient-&gt;didChangeProgress(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFinishProgress()
</span><span class="lines">@@ -2575,7 +2575,7 @@
</span><span class="cx">     m_pageLoadState.didFinishProgress(transaction);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didFinishProgress(this);
</del><ins>+    m_loaderClient-&gt;didFinishProgress(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::setNetworkRequestsInProgress(bool networkRequestsInProgress)
</span><span class="lines">@@ -2586,7 +2586,8 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didDestroyNavigation(uint64_t navigationID)
</span><span class="cx"> {
</span><del>-    m_loaderClient-&gt;didDestroyNavigation(this, navigationID);
</del><ins>+    // FIXME: Message check the navigationID.
+    m_navigationState-&gt;didDestroyNavigation(navigationID);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; url, const String&amp; unreachableURL, const UserData&amp; userData)
</span><span class="lines">@@ -2599,6 +2600,11 @@
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx">     MESSAGE_CHECK_URL(url);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
</ins><span class="cx">     if (frame-&gt;isMainFrame())
</span><span class="cx">         m_pageLoadState.didStartProvisionalLoad(transaction, url, unreachableURL);
</span><span class="cx"> 
</span><span class="lines">@@ -2606,7 +2612,7 @@
</span><span class="cx">     frame-&gt;didStartProvisionalLoad(url);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didStartProvisionalLoadForFrame(this, frame, navigationID, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didStartProvisionalLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&amp; url, const UserData&amp; userData)
</span><span class="lines">@@ -2615,6 +2621,11 @@
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx">     MESSAGE_CHECK_URL(url);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
</ins><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="cx"> 
</span><span class="cx">     if (frame-&gt;isMainFrame())
</span><span class="lines">@@ -2623,7 +2634,7 @@
</span><span class="cx">     frame-&gt;didReceiveServerRedirectForProvisionalLoad(url);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, navigationID, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didReceiveServerRedirectForProvisionalLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const ResourceError&amp; error, const UserData&amp; userData)
</span><span class="lines">@@ -2631,6 +2642,11 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = navigationState().takeNavigation(navigationID);
+
</ins><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="cx"> 
</span><span class="cx">     if (frame-&gt;isMainFrame())
</span><span class="lines">@@ -2639,7 +2655,7 @@
</span><span class="cx">     frame-&gt;didFailProvisionalLoad();
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didFailProvisionalLoadWithErrorForFrame(this, frame, navigationID, error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didFailProvisionalLoadWithErrorForFrame(*this, *frame, navigation.get(), error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::clearLoadDependentCallbacks()
</span><span class="lines">@@ -2660,6 +2676,11 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     if (frame-&gt;isMainFrame()) {
</span><span class="cx">         m_hasReceivedLayerTreeTransactionAfterDidCommitLoad = false;
</span><span class="lines">@@ -2707,7 +2728,7 @@
</span><span class="cx">         m_pageScaleFactor = 1;
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didCommitLoadForFrame(this, frame, navigationID, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didCommitLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&amp; userData)
</span><span class="lines">@@ -2715,7 +2736,12 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;didFinishDocumentLoadForFrame(this, frame, navigationID, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
+    m_loaderClient-&gt;didFinishDocumentLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&amp; userData)
</span><span class="lines">@@ -2723,6 +2749,11 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
</ins><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="cx"> 
</span><span class="cx">     bool isMainFrame = frame-&gt;isMainFrame();
</span><span class="lines">@@ -2732,7 +2763,7 @@
</span><span class="cx">     frame-&gt;didFinishLoad();
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didFinishLoadForFrame(this, frame, navigationID, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didFinishLoadForFrame(*this, *frame, navigation.get(), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> 
</span><span class="cx">     if (isMainFrame)
</span><span class="cx">         m_pageClient.didFinishLoadForMainFrame();
</span><span class="lines">@@ -2743,6 +2774,11 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
</ins><span class="cx">     clearLoadDependentCallbacks();
</span><span class="cx"> 
</span><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="lines">@@ -2753,7 +2789,7 @@
</span><span class="cx">     frame-&gt;didFailLoad();
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didFailLoadWithErrorForFrame(this, frame, navigationID, error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didFailLoadWithErrorForFrame(*this, *frame, navigation.get(), error, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didSameDocumentNavigationForFrame(uint64_t frameID, uint64_t navigationID, uint32_t opaqueSameDocumentNavigationType, const String&amp; url, const UserData&amp; userData)
</span><span class="lines">@@ -2762,6 +2798,11 @@
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx">     MESSAGE_CHECK_URL(url);
</span><span class="cx"> 
</span><ins>+    // FIXME: We should message check that navigationID is not zero here, but it's currently zero for some navigations through the page cache.
+    RefPtr&lt;API::Navigation&gt; navigation;
+    if (frame-&gt;isMainFrame() &amp;&amp; navigationID)
+        navigation = &amp;navigationState().navigation(navigationID);
+
</ins><span class="cx">     auto transaction = m_pageLoadState.transaction();
</span><span class="cx"> 
</span><span class="cx">     bool isMainFrame = frame-&gt;isMainFrame();
</span><span class="lines">@@ -2774,7 +2815,7 @@
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><span class="cx"> 
</span><span class="cx">     SameDocumentNavigationType navigationType = static_cast&lt;SameDocumentNavigationType&gt;(opaqueSameDocumentNavigationType);
</span><del>-    m_loaderClient-&gt;didSameDocumentNavigationForFrame(this, frame, navigationID, navigationType, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didSameDocumentNavigationForFrame(*this, *frame, navigation.get(), navigationType, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> 
</span><span class="cx">     if (isMainFrame)
</span><span class="cx">         m_pageClient.didSameDocumentNavigationForMainFrame(navigationType);
</span><span class="lines">@@ -2793,7 +2834,7 @@
</span><span class="cx">     frame-&gt;didChangeTitle(title);
</span><span class="cx">     
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didReceiveTitleForFrame(this, title, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didReceiveTitleForFrame(*this, title, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFirstLayoutForFrame(uint64_t frameID, const UserData&amp; userData)
</span><span class="lines">@@ -2801,7 +2842,7 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;didFirstLayoutForFrame(this, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didFirstLayoutForFrame(*this, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, const UserData&amp; userData)
</span><span class="lines">@@ -2809,7 +2850,7 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;didFirstVisuallyNonEmptyLayoutForFrame(this, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didFirstVisuallyNonEmptyLayoutForFrame(*this, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> 
</span><span class="cx">     if (frame-&gt;isMainFrame())
</span><span class="cx">         m_pageClient.didFirstVisuallyNonEmptyLayoutForMainFrame();
</span><span class="lines">@@ -2817,7 +2858,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didLayout(uint32_t layoutMilestones, const UserData&amp; userData)
</span><span class="cx"> {
</span><del>-    m_loaderClient-&gt;didLayout(this, static_cast&lt;LayoutMilestones&gt;(layoutMilestones), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didLayout(*this, static_cast&lt;LayoutMilestones&gt;(layoutMilestones), m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didRemoveFrameFromHierarchy(uint64_t frameID, const UserData&amp; userData)
</span><span class="lines">@@ -2825,7 +2866,7 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;didRemoveFrameFromHierarchy(this, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didRemoveFrameFromHierarchy(*this, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didDisplayInsecureContentForFrame(uint64_t frameID, const UserData&amp; userData)
</span><span class="lines">@@ -2837,7 +2878,7 @@
</span><span class="cx">     m_pageLoadState.didDisplayOrRunInsecureContent(transaction);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didDisplayInsecureContentForFrame(this, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didDisplayInsecureContentForFrame(*this, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didRunInsecureContentForFrame(uint64_t frameID, const UserData&amp; userData)
</span><span class="lines">@@ -2849,7 +2890,7 @@
</span><span class="cx">     m_pageLoadState.didDisplayOrRunInsecureContent(transaction);
</span><span class="cx"> 
</span><span class="cx">     m_pageLoadState.commitChanges();
</span><del>-    m_loaderClient-&gt;didRunInsecureContentForFrame(this, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didRunInsecureContentForFrame(*this, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didDetectXSSForFrame(uint64_t frameID, const UserData&amp; userData)
</span><span class="lines">@@ -2857,7 +2898,7 @@
</span><span class="cx">     WebFrameProxy* frame = m_process-&gt;webFrame(frameID);
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;didDetectXSSForFrame(this, frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</del><ins>+    m_loaderClient-&gt;didDetectXSSForFrame(*this, *frame, m_process-&gt;transformHandlesToObjects(userData.object()).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::frameDidBecomeFrameSet(uint64_t frameID, bool value)
</span><span class="lines">@@ -3212,12 +3253,12 @@
</span><span class="cx"> #if ENABLE(WEBGL)
</span><span class="cx"> void WebPageProxy::webGLPolicyForURL(const String&amp; url, uint32_t&amp; loadPolicy)
</span><span class="cx"> {
</span><del>-    loadPolicy = static_cast&lt;uint32_t&gt;(m_loaderClient-&gt;webGLLoadPolicy(this, url));
</del><ins>+    loadPolicy = static_cast&lt;uint32_t&gt;(m_loaderClient-&gt;webGLLoadPolicy(*this, url));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::resolveWebGLPolicyForURL(const String&amp; url, uint32_t&amp; loadPolicy)
</span><span class="cx"> {
</span><del>-    loadPolicy = static_cast&lt;uint32_t&gt;(m_loaderClient-&gt;resolveWebGLLoadPolicy(this, url));
</del><ins>+    loadPolicy = static_cast&lt;uint32_t&gt;(m_loaderClient-&gt;resolveWebGLLoadPolicy(*this, url));
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(WEBGL)
</span><span class="cx"> 
</span><span class="lines">@@ -4385,7 +4426,7 @@
</span><span class="cx"> 
</span><span class="cx">     updateBackingStoreDiscardableState();
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;processDidBecomeUnresponsive(this);
</del><ins>+    m_loaderClient-&gt;processDidBecomeUnresponsive(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::interactionOccurredWhileProcessUnresponsive()
</span><span class="lines">@@ -4393,7 +4434,7 @@
</span><span class="cx">     if (!isValid())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;interactionOccurredWhileProcessUnresponsive(this);
</del><ins>+    m_loaderClient-&gt;interactionOccurredWhileProcessUnresponsive(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::processDidBecomeResponsive()
</span><span class="lines">@@ -4403,7 +4444,7 @@
</span><span class="cx">     
</span><span class="cx">     updateBackingStoreDiscardableState();
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;processDidBecomeResponsive(this);
</del><ins>+    m_loaderClient-&gt;processDidBecomeResponsive(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::processDidCrash()
</span><span class="lines">@@ -4415,7 +4456,9 @@
</span><span class="cx"> 
</span><span class="cx">     resetStateAfterProcessExited();
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;processDidCrash(this);
</del><ins>+    navigationState().clearAllNavigations();
+
+    m_loaderClient-&gt;processDidCrash(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::resetState(ResetStateReason resetStateReason)
</span><span class="lines">@@ -4642,7 +4685,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;WebProtectionSpace&gt; protectionSpace = WebProtectionSpace::create(coreProtectionSpace);
</span><span class="cx"> 
</span><del>-    canAuthenticate = m_loaderClient-&gt;canAuthenticateAgainstProtectionSpaceInFrame(this, frame, protectionSpace.get());
</del><ins>+    canAuthenticate = m_loaderClient-&gt;canAuthenticateAgainstProtectionSpaceInFrame(*this, *frame, protectionSpace.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didReceiveAuthenticationChallenge(uint64_t frameID, const AuthenticationChallenge&amp; coreChallenge, uint64_t challengeID)
</span><span class="lines">@@ -4658,7 +4701,7 @@
</span><span class="cx">     MESSAGE_CHECK(frame);
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;AuthenticationChallengeProxy&gt; authenticationChallenge = prpAuthenticationChallenge;
</span><del>-    m_loaderClient-&gt;didReceiveAuthenticationChallengeInFrame(this, frame, authenticationChallenge.get());
</del><ins>+    m_loaderClient-&gt;didReceiveAuthenticationChallengeInFrame(*this, *frame, authenticationChallenge.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String&amp; originIdentifier, const String&amp; databaseName, const String&amp; displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, PassRefPtr&lt;Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply&gt; reply)
</span><span class="lines">@@ -4843,7 +4886,7 @@
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> void WebPageProxy::didFailToInitializePlugin(const String&amp; mimeType, const String&amp; frameURLString, const String&amp; pageURLString)
</span><span class="cx"> {
</span><del>-    m_loaderClient-&gt;didFailToInitializePlugin(this, createPluginInformationDictionary(mimeType, frameURLString, pageURLString).get());
</del><ins>+    m_loaderClient-&gt;didFailToInitializePlugin(*this, createPluginInformationDictionary(mimeType, frameURLString, pageURLString).get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::didBlockInsecurePluginVersion(const String&amp; mimeType, const String&amp; pluginURLString, const String&amp; frameURLString, const String&amp; pageURLString, bool replacementObscured)
</span><span class="lines">@@ -4862,7 +4905,7 @@
</span><span class="cx">     UNUSED_PARAM(replacementObscured);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    m_loaderClient-&gt;didBlockInsecurePluginVersion(this, pluginInformation.get());
</del><ins>+    m_loaderClient-&gt;didBlockInsecurePluginVersion(*this, pluginInformation.get());
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(NETSCAPE_PLUGIN_API)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebFrameLoaderClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (178374 => 178375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2015-01-13 22:00:35 UTC (rev 178374)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp        2015-01-13 22:22:27 UTC (rev 178375)
</span><span class="lines">@@ -465,13 +465,23 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;API::Object&gt; userData;
</span><span class="cx"> 
</span><del>-    uint64_t navigationID = static_cast&lt;WebDocumentLoader*&gt;(m_frame-&gt;coreFrame()-&gt;loader().provisionalDocumentLoader())-&gt;navigationID();
-
</del><span class="cx">     // Notify the bundle client.
</span><span class="cx">     webPage-&gt;injectedBundleLoaderClient().didFailProvisionalLoadWithErrorForFrame(webPage, m_frame, error, userData);
</span><span class="cx"> 
</span><span class="cx">     webPage-&gt;sandboxExtensionTracker().didFailProvisionalLoad(m_frame);
</span><span class="cx"> 
</span><ins>+    // FIXME: This is gross. This is necessary because if the client calls WKBundlePageStopLoading() from within the didFailProvisionalLoadWithErrorForFrame
+    // injected bundle client call, that will cause the provisional DocumentLoader to be disconnected from the Frame, and didDistroyNavigation message
+    // to be sent to the UIProcess (and the destruction of the DocumentLoader). If that happens, and we had captured the navigationID before injected bundle 
+    // client call, the DidFailProvisionalLoadForFrame would send a navigationID of a destroyed Navigation, and the UIProcess would not be able to find it
+    // in its table.
+    //
+    // A better solution to this problem would be find a clean way to postpone the disconnection of the DocumentLoader from the Frame until
+    // the entire FrameLoaderClient function was complete.
+    uint64_t navigationID = 0;
+    if (auto documentLoader = m_frame-&gt;coreFrame()-&gt;loader().provisionalDocumentLoader())
+        navigationID = static_cast&lt;WebDocumentLoader*&gt;(documentLoader)-&gt;navigationID();
+
</ins><span class="cx">     // Notify the UIProcess.
</span><span class="cx">     webPage-&gt;send(Messages::WebPageProxy::DidFailProvisionalLoadForFrame(m_frame-&gt;frameID(), navigationID, error, UserData(WebProcess::shared().transformObjectsToHandles(userData.get()).get())));
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>