Title: [176845] trunk/Source/WebKit2
Revision
176845
Author
[email protected]
Date
2014-12-05 09:33:29 -0800 (Fri, 05 Dec 2014)

Log Message

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):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (176844 => 176845)


--- 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)
@@ -1,3 +1,38 @@
+2014-12-05  Anders Carlsson  <[email protected]>
+
+        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):
+
 2014-12-05  Eric Carlson  <[email protected]>
 
         [iOS] allow host application to opt-out of alternate fullscreen pt. 2

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (176844 => 176845)


--- 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)
@@ -1640,7 +1640,7 @@
 
 void WKPageSetSession(WKPageRef pageRef, WKSessionRef session)
 {
-    toImpl(pageRef)->setSession(*toImpl(session));
+    toImpl(pageRef)->setSessionID(toImpl(session)->getID());
 }
 
 void WKPageRunJavaScriptInMainFrame(WKPageRef pageRef, WKStringRef scriptRef, void* context, WKPageRunJavaScriptFunction callback)

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKSessionRef.cpp (176844 => 176845)


--- 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)
@@ -33,7 +33,11 @@
 
 WKSessionRef WKSessionCreate(bool isEphemeral)
 {
-    RefPtr<API::Session> session = API::Session::create(isEphemeral);
+    // The implementation doesn't support non-ephemeral
+    if (!isEphemeral)
+        return nullptr;
+
+    RefPtr<API::Session> session = API::Session::createEphemeral();
     return toAPI(session.release().leakRef());
 }
 

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (176844 => 176845)


--- 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)
@@ -271,7 +271,7 @@
 
     webPageConfiguration.userContentController = [_configuration userContentController]->_userContentControllerProxy.get();
     webPageConfiguration.visitedLinkProvider = [_configuration _visitedLinkProvider]->_visitedLinkProvider.get();
-    webPageConfiguration.session = [_configuration _websiteDataStore]->_session.get();
+    webPageConfiguration.sessionID = [_configuration _websiteDataStore]->_session->getID();
     
     RefPtr<WebKit::WebPageGroup> pageGroup;
     NSString *groupIdentifier = configuration._groupIdentifier;

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm (176844 => 176845)


--- 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)
@@ -39,7 +39,7 @@
 
 + (instancetype)nonPersistentDataStore
 {
-    RefPtr<API::Session> session = API::Session::create(true);
+    RefPtr<API::Session> session = API::Session::createEphemeral();
     return [wrapper(*session.release().leakRef()) autorelease];
 }
 

Modified: trunk/Source/WebKit2/UIProcess/APISession.cpp (176844 => 176845)


--- 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)
@@ -30,12 +30,12 @@
 
 namespace API {
 
-static uint64_t generateID(bool isEphemeral)
+static uint64_t generateID()
 {
     ASSERT(RunLoop::isMain());
 
     static uint64_t uniqueSessionID = WebCore::SessionID::legacyPrivateSessionID().sessionID();
-    ASSERT_UNUSED(isEphemeral, isEphemeral);
+
     return ++uniqueSessionID;
 }
 
@@ -47,28 +47,20 @@
     return *defaultSession;
 }
 
-Session& Session::legacyPrivateSession()
+Session::Session()
+    : m_sessionID(generateID())
 {
-    ASSERT(RunLoop::isMain());
-
-    static Session* legacyPrivateSession = new Session(WebCore::SessionID::legacyPrivateSessionID());
-    return *legacyPrivateSession;
 }
 
-Session::Session(bool isEphemeral)
-    : m_sessionID(generateID(isEphemeral))
-{
-}
-
 Session::Session(WebCore::SessionID sessionID)
     : m_sessionID(sessionID)
 {
 }
 
-PassRefPtr<Session> Session::create(bool isEphemeral)
+PassRefPtr<Session> Session::createEphemeral()
 {
     // FIXME: support creation of non-default, non-ephemeral sessions
-    return adoptRef(new Session(isEphemeral));
+    return adoptRef(new Session());
 }
 
 bool Session::isEphemeral() const

Modified: trunk/Source/WebKit2/UIProcess/APISession.h (176844 => 176845)


--- 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)
@@ -34,17 +34,17 @@
 
 class Session : public API::ObjectImpl<API::Object::Type::Session> {
 public:
-    // 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<Session> create(bool isEphemeral);
+    static PassRefPtr<Session> createEphemeral();
+    virtual ~Session();
+
     static Session& defaultSession();
-    static Session& legacyPrivateSession();
     bool isEphemeral() const;
     WebCore::SessionID getID() const;
-    virtual ~Session();
 
 private:
-    explicit Session(bool isEphemeral);
+    Session();
     explicit Session(WebCore::SessionID);
+
     WebCore::SessionID m_sessionID;
 };
 

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (176844 => 176845)


--- 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)
@@ -860,8 +860,8 @@
         configuration.preferences = &configuration.pageGroup->preferences();
     if (!configuration.visitedLinkProvider)
         configuration.visitedLinkProvider = m_visitedLinkProvider.get();
-    if (!configuration.session)
-        configuration.session = configuration.preferences->privateBrowsingEnabled() ? &API::Session::legacyPrivateSession() : &API::Session::defaultSession();
+    if (!configuration.sessionID.isValid())
+        configuration.sessionID = configuration.preferences->privateBrowsingEnabled() ? SessionID::legacyPrivateSessionID() : SessionID::defaultSessionID();
 
     RefPtr<WebProcessProxy> process;
     if (m_processModel == ProcessModelSharedSecondaryProcess) {

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (176844 => 176845)


--- 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)
@@ -321,7 +321,7 @@
     , m_isTrackingTouchEvents(false)
 #endif
     , m_pageID(pageID)
-    , m_session(*configuration.session)
+    , m_sessionID(configuration.sessionID)
     , m_isPageSuspended(false)
     , m_addsVisitedLinks(true)
 #if ENABLE(REMOTE_INSPECTOR)
@@ -418,7 +418,7 @@
     // FIXME: If we ever expose the session storage size as a preference, we need to pass it here.
     IPC::Connection* connection = m_process->state() == WebProcessProxy::State::Running ? m_process->connection() : nullptr;
     m_process->context().storageManager().createSessionStorageNamespace(m_pageID, connection, std::numeric_limits<unsigned>::max());
-    setSession(*configuration.session);
+    setSessionID(configuration.sessionID);
 
 #if PLATFORM(COCOA)
     const CFIndex viewStateChangeRunLoopOrder = (CFIndex)RunLoopObserver::WellKnownRunLoopOrders::CoreAnimationCommit - 1;
@@ -611,14 +611,14 @@
     return navigationID;
 }
 
-void WebPageProxy::setSession(API::Session& session)
+void WebPageProxy::setSessionID(SessionID sessionID)
 {
-    m_session = session;
-    m_process->send(Messages::WebPage::SetSessionID(session.getID()), m_pageID);
+    m_sessionID = sessionID;
+    m_process->send(Messages::WebPage::SetSessionID(sessionID), m_pageID);
 
 #if ENABLE(NETWORK_PROCESS)
-    if (session.isEphemeral())
-        m_process->context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(session.getID()));
+    if (sessionID.isEphemeral())
+        m_process->context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(sessionID));
 #endif
 }
 
@@ -4602,7 +4602,7 @@
     parameters.gapBetweenPages = m_gapBetweenPages;
     parameters.userAgent = userAgent();
     parameters.itemStates = m_backForwardList->itemStates();
-    parameters.sessionID = m_session->getID();
+    parameters.sessionID = m_sessionID;
     parameters.highestUsedBackForwardItemID = WebBackForwardListItem::highedUsedItemID();
     parameters.userContentControllerID = m_userContentController ? m_userContentController->identifier() : 0;
     parameters.visitedLinkTableID = m_visitedLinkProvider->identifier();

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (176844 => 176845)


--- 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)
@@ -227,7 +227,7 @@
     WebUserContentControllerProxy* userContentController = nullptr;
     VisitedLinkProvider* visitedLinkProvider = nullptr;
 
-    API::Session* session = nullptr;
+    WebCore::SessionID sessionID;
     WebPageProxy* relatedPage = nullptr;
 
     WebPreferencesStore::ValueMap preferenceValues;
@@ -244,10 +244,9 @@
     static PassRefPtr<WebPageProxy> create(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
     virtual ~WebPageProxy();
 
-    void setSession(API::Session&);
-
     uint64_t pageID() const { return m_pageID; }
-    WebCore::SessionID sessionID() const { return m_session->getID(); }
+    WebCore::SessionID sessionID() const { return m_sessionID; }
+    void setSessionID(WebCore::SessionID);
 
     WebFrameProxy* mainFrame() const { return m_mainFrame.get(); }
     WebFrameProxy* focusedFrame() const { return m_focusedFrame.get(); }
@@ -1492,7 +1491,7 @@
 #endif
 
     const uint64_t m_pageID;
-    Ref<API::Session> m_session;
+    WebCore::SessionID m_sessionID;
 
     bool m_isPageSuspended;
     bool m_addsVisitedLinks;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to