<!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>[176845] 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/176845">176845</a></dd>
<dt>Author</dt> <dd>andersca@apple.com</dd>
<dt>Date</dt> <dd>2014-12-05 09:33:29 -0800 (Fri, 05 Dec 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make WebPageProxy hold on to a SessionID instead of an API:Session
https://bugs.webkit.org/show_bug.cgi?id=139302

Reviewed by Sam Weinig.

This is in preparation for adding API::WebsiteDataStore. Currently we have to keep the
Session ID and the WebsiteDataStore separate because we still need to support toggling private browsing.

* UIProcess/API/C/WKPage.cpp:
(WKPageSetSession):
* UIProcess/API/C/WKSessionRef.cpp:
(WKSessionCreate):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
* UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
(+[_WKWebsiteDataStore nonPersistentDataStore]):
* UIProcess/APISession.cpp:
(API::generateID):
(API::Session::Session):
(API::Session::createEphemeral):
(API::Session::legacyPrivateSession): Deleted.
(API::Session::create): Deleted.
* UIProcess/APISession.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::createWebPage):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::setSessionID):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setSession): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::sessionID):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKSessionRefcpp">trunk/Source/WebKit2/UIProcess/API/C/WKSessionRef.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoa_WKWebsiteDataStoremm">trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPISessioncpp">trunk/Source/WebKit2/UIProcess/APISession.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPISessionh">trunk/Source/WebKit2/UIProcess/APISession.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebContextcpp">trunk/Source/WebKit2/UIProcess/WebContext.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/ChangeLog        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2014-12-05  Anders Carlsson  &lt;andersca@apple.com&gt;
+
+        Make WebPageProxy hold on to a SessionID instead of an API:Session
+        https://bugs.webkit.org/show_bug.cgi?id=139302
+
+        Reviewed by Sam Weinig.
+
+        This is in preparation for adding API::WebsiteDataStore. Currently we have to keep the
+        Session ID and the WebsiteDataStore separate because we still need to support toggling private browsing.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetSession):
+        * UIProcess/API/C/WKSessionRef.cpp:
+        (WKSessionCreate):
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView initWithFrame:configuration:]):
+        * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
+        (+[_WKWebsiteDataStore nonPersistentDataStore]):
+        * UIProcess/APISession.cpp:
+        (API::generateID):
+        (API::Session::Session):
+        (API::Session::createEphemeral):
+        (API::Session::legacyPrivateSession): Deleted.
+        (API::Session::create): Deleted.
+        * UIProcess/APISession.h:
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::createWebPage):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::setSessionID):
+        (WebKit::WebPageProxy::creationParameters):
+        (WebKit::WebPageProxy::setSession): Deleted.
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::sessionID):
+
</ins><span class="cx"> 2014-12-05  Eric Carlson  &lt;eric.carlson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] allow host application to opt-out of alternate fullscreen pt. 2
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -1640,7 +1640,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WKPageSetSession(WKPageRef pageRef, WKSessionRef session)
</span><span class="cx"> {
</span><del>-    toImpl(pageRef)-&gt;setSession(*toImpl(session));
</del><ins>+    toImpl(pageRef)-&gt;setSessionID(toImpl(session)-&gt;getID());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WKPageRunJavaScriptInMainFrame(WKPageRef pageRef, WKStringRef scriptRef, void* context, WKPageRunJavaScriptFunction callback)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKSessionRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKSessionRef.cpp (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKSessionRef.cpp        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKSessionRef.cpp        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -33,7 +33,11 @@
</span><span class="cx"> 
</span><span class="cx"> WKSessionRef WKSessionCreate(bool isEphemeral)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;API::Session&gt; session = API::Session::create(isEphemeral);
</del><ins>+    // The implementation doesn't support non-ephemeral
+    if (!isEphemeral)
+        return nullptr;
+
+    RefPtr&lt;API::Session&gt; session = API::Session::createEphemeral();
</ins><span class="cx">     return toAPI(session.release().leakRef());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -271,7 +271,7 @@
</span><span class="cx"> 
</span><span class="cx">     webPageConfiguration.userContentController = [_configuration userContentController]-&gt;_userContentControllerProxy.get();
</span><span class="cx">     webPageConfiguration.visitedLinkProvider = [_configuration _visitedLinkProvider]-&gt;_visitedLinkProvider.get();
</span><del>-    webPageConfiguration.session = [_configuration _websiteDataStore]-&gt;_session.get();
</del><ins>+    webPageConfiguration.sessionID = [_configuration _websiteDataStore]-&gt;_session-&gt;getID();
</ins><span class="cx">     
</span><span class="cx">     RefPtr&lt;WebKit::WebPageGroup&gt; pageGroup;
</span><span class="cx">     NSString *groupIdentifier = configuration._groupIdentifier;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoa_WKWebsiteDataStoremm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> + (instancetype)nonPersistentDataStore
</span><span class="cx"> {
</span><del>-    RefPtr&lt;API::Session&gt; session = API::Session::create(true);
</del><ins>+    RefPtr&lt;API::Session&gt; session = API::Session::createEphemeral();
</ins><span class="cx">     return [wrapper(*session.release().leakRef()) autorelease];
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPISessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/APISession.cpp (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/APISession.cpp        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/APISession.cpp        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -30,12 +30,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="cx"> 
</span><del>-static uint64_t generateID(bool isEphemeral)
</del><ins>+static uint64_t generateID()
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(RunLoop::isMain());
</span><span class="cx"> 
</span><span class="cx">     static uint64_t uniqueSessionID = WebCore::SessionID::legacyPrivateSessionID().sessionID();
</span><del>-    ASSERT_UNUSED(isEphemeral, isEphemeral);
</del><ins>+
</ins><span class="cx">     return ++uniqueSessionID;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -47,28 +47,20 @@
</span><span class="cx">     return *defaultSession;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Session&amp; Session::legacyPrivateSession()
</del><ins>+Session::Session()
+    : m_sessionID(generateID())
</ins><span class="cx"> {
</span><del>-    ASSERT(RunLoop::isMain());
-
-    static Session* legacyPrivateSession = new Session(WebCore::SessionID::legacyPrivateSessionID());
-    return *legacyPrivateSession;
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-Session::Session(bool isEphemeral)
-    : m_sessionID(generateID(isEphemeral))
-{
-}
-
</del><span class="cx"> Session::Session(WebCore::SessionID sessionID)
</span><span class="cx">     : m_sessionID(sessionID)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;Session&gt; Session::create(bool isEphemeral)
</del><ins>+PassRefPtr&lt;Session&gt; Session::createEphemeral()
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: support creation of non-default, non-ephemeral sessions
</span><del>-    return adoptRef(new Session(isEphemeral));
</del><ins>+    return adoptRef(new Session());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Session::isEphemeral() const
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPISessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/APISession.h (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/APISession.h        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/APISession.h        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -34,17 +34,17 @@
</span><span class="cx"> 
</span><span class="cx"> class Session : public API::ObjectImpl&lt;API::Object::Type::Session&gt; {
</span><span class="cx"> public:
</span><del>-    // FIXME: We can create sessions on demand, because we hardcode the fact that all sessions but the default one are ephemeral. We'll need to create them explicitly once sessions have more configuration options.
-    static PassRefPtr&lt;Session&gt; create(bool isEphemeral);
</del><ins>+    static PassRefPtr&lt;Session&gt; createEphemeral();
+    virtual ~Session();
+
</ins><span class="cx">     static Session&amp; defaultSession();
</span><del>-    static Session&amp; legacyPrivateSession();
</del><span class="cx">     bool isEphemeral() const;
</span><span class="cx">     WebCore::SessionID getID() const;
</span><del>-    virtual ~Session();
</del><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    explicit Session(bool isEphemeral);
</del><ins>+    Session();
</ins><span class="cx">     explicit Session(WebCore::SessionID);
</span><ins>+
</ins><span class="cx">     WebCore::SessionID m_sessionID;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebContext.cpp        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -860,8 +860,8 @@
</span><span class="cx">         configuration.preferences = &amp;configuration.pageGroup-&gt;preferences();
</span><span class="cx">     if (!configuration.visitedLinkProvider)
</span><span class="cx">         configuration.visitedLinkProvider = m_visitedLinkProvider.get();
</span><del>-    if (!configuration.session)
-        configuration.session = configuration.preferences-&gt;privateBrowsingEnabled() ? &amp;API::Session::legacyPrivateSession() : &amp;API::Session::defaultSession();
</del><ins>+    if (!configuration.sessionID.isValid())
+        configuration.sessionID = configuration.preferences-&gt;privateBrowsingEnabled() ? SessionID::legacyPrivateSessionID() : SessionID::defaultSessionID();
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;WebProcessProxy&gt; process;
</span><span class="cx">     if (m_processModel == ProcessModelSharedSecondaryProcess) {
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -321,7 +321,7 @@
</span><span class="cx">     , m_isTrackingTouchEvents(false)
</span><span class="cx"> #endif
</span><span class="cx">     , m_pageID(pageID)
</span><del>-    , m_session(*configuration.session)
</del><ins>+    , m_sessionID(configuration.sessionID)
</ins><span class="cx">     , m_isPageSuspended(false)
</span><span class="cx">     , m_addsVisitedLinks(true)
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="lines">@@ -418,7 +418,7 @@
</span><span class="cx">     // FIXME: If we ever expose the session storage size as a preference, we need to pass it here.
</span><span class="cx">     IPC::Connection* connection = m_process-&gt;state() == WebProcessProxy::State::Running ? m_process-&gt;connection() : nullptr;
</span><span class="cx">     m_process-&gt;context().storageManager().createSessionStorageNamespace(m_pageID, connection, std::numeric_limits&lt;unsigned&gt;::max());
</span><del>-    setSession(*configuration.session);
</del><ins>+    setSessionID(configuration.sessionID);
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     const CFIndex viewStateChangeRunLoopOrder = (CFIndex)RunLoopObserver::WellKnownRunLoopOrders::CoreAnimationCommit - 1;
</span><span class="lines">@@ -611,14 +611,14 @@
</span><span class="cx">     return navigationID;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::setSession(API::Session&amp; session)
</del><ins>+void WebPageProxy::setSessionID(SessionID sessionID)
</ins><span class="cx"> {
</span><del>-    m_session = session;
-    m_process-&gt;send(Messages::WebPage::SetSessionID(session.getID()), m_pageID);
</del><ins>+    m_sessionID = sessionID;
+    m_process-&gt;send(Messages::WebPage::SetSessionID(sessionID), m_pageID);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><del>-    if (session.isEphemeral())
-        m_process-&gt;context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(session.getID()));
</del><ins>+    if (sessionID.isEphemeral())
+        m_process-&gt;context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(sessionID));
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -4602,7 +4602,7 @@
</span><span class="cx">     parameters.gapBetweenPages = m_gapBetweenPages;
</span><span class="cx">     parameters.userAgent = userAgent();
</span><span class="cx">     parameters.itemStates = m_backForwardList-&gt;itemStates();
</span><del>-    parameters.sessionID = m_session-&gt;getID();
</del><ins>+    parameters.sessionID = m_sessionID;
</ins><span class="cx">     parameters.highestUsedBackForwardItemID = WebBackForwardListItem::highedUsedItemID();
</span><span class="cx">     parameters.userContentControllerID = m_userContentController ? m_userContentController-&gt;identifier() : 0;
</span><span class="cx">     parameters.visitedLinkTableID = m_visitedLinkProvider-&gt;identifier();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (176844 => 176845)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-12-05 17:26:03 UTC (rev 176844)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-12-05 17:33:29 UTC (rev 176845)
</span><span class="lines">@@ -227,7 +227,7 @@
</span><span class="cx">     WebUserContentControllerProxy* userContentController = nullptr;
</span><span class="cx">     VisitedLinkProvider* visitedLinkProvider = nullptr;
</span><span class="cx"> 
</span><del>-    API::Session* session = nullptr;
</del><ins>+    WebCore::SessionID sessionID;
</ins><span class="cx">     WebPageProxy* relatedPage = nullptr;
</span><span class="cx"> 
</span><span class="cx">     WebPreferencesStore::ValueMap preferenceValues;
</span><span class="lines">@@ -244,10 +244,9 @@
</span><span class="cx">     static PassRefPtr&lt;WebPageProxy&gt; create(PageClient&amp;, WebProcessProxy&amp;, uint64_t pageID, const WebPageConfiguration&amp;);
</span><span class="cx">     virtual ~WebPageProxy();
</span><span class="cx"> 
</span><del>-    void setSession(API::Session&amp;);
-
</del><span class="cx">     uint64_t pageID() const { return m_pageID; }
</span><del>-    WebCore::SessionID sessionID() const { return m_session-&gt;getID(); }
</del><ins>+    WebCore::SessionID sessionID() const { return m_sessionID; }
+    void setSessionID(WebCore::SessionID);
</ins><span class="cx"> 
</span><span class="cx">     WebFrameProxy* mainFrame() const { return m_mainFrame.get(); }
</span><span class="cx">     WebFrameProxy* focusedFrame() const { return m_focusedFrame.get(); }
</span><span class="lines">@@ -1492,7 +1491,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     const uint64_t m_pageID;
</span><del>-    Ref&lt;API::Session&gt; m_session;
</del><ins>+    WebCore::SessionID m_sessionID;
</ins><span class="cx"> 
</span><span class="cx">     bool m_isPageSuspended;
</span><span class="cx">     bool m_addsVisitedLinks;
</span></span></pre>
</div>
</div>

</body>
</html>