Title: [163217] trunk/Source/WebKit2
Revision
163217
Author
[email protected]
Date
2014-01-31 16:24:30 -0800 (Fri, 31 Jan 2014)

Log Message

Add session support to WebPlatformStrategies
https://bugs.webkit.org/show_bug.cgi?id=127926

Patch by Martin Hock <[email protected]> on 2014-01-31
Reviewed by Alexey Proskuryakov.

* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
* Shared/SessionTracker.cpp:
(WebKit::storageSessionToID):
(WebKit::SessionTracker::session):
(WebKit::SessionTracker::sessionID):
(WebKit::SessionTracker::setSession):
(WebKit::SessionTracker::destroySession):
* Shared/SessionTracker.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setSession):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::setCookiesFromDOM):
(WebKit::WebPlatformStrategies::cookiesEnabled):
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebKit::WebPlatformStrategies::getRawCookies):
(WebKit::WebPlatformStrategies::deleteCookie):
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setSessionID): Ensure the storage session exists.
* WebProcess/WebPage/WebPage.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (163216 => 163217)


--- trunk/Source/WebKit2/ChangeLog	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/ChangeLog	2014-02-01 00:24:30 UTC (rev 163217)
@@ -1,3 +1,34 @@
+2014-01-31  Martin Hock  <[email protected]>
+
+        Add session support to WebPlatformStrategies
+        https://bugs.webkit.org/show_bug.cgi?id=127926
+
+        Reviewed by Alexey Proskuryakov.
+
+        * NetworkProcess/mac/RemoteNetworkingContext.mm:
+        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
+        * Shared/SessionTracker.cpp:
+        (WebKit::storageSessionToID):
+        (WebKit::SessionTracker::session):
+        (WebKit::SessionTracker::sessionID):
+        (WebKit::SessionTracker::setSession):
+        (WebKit::SessionTracker::destroySession):
+        * Shared/SessionTracker.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::setSession):
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        (WebKit::WebPlatformStrategies::cookiesForDOM):
+        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
+        (WebKit::WebPlatformStrategies::cookiesEnabled):
+        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
+        (WebKit::WebPlatformStrategies::getRawCookies):
+        (WebKit::WebPlatformStrategies::deleteCookie):
+        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
+        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::setSessionID): Ensure the storage session exists.
+        * WebProcess/WebPage/WebPage.h:
+
 2014-01-31  Alexey Proskuryakov  <[email protected]>
 
         Expose creation and modification times for LocalStorage

Modified: trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm (163216 => 163217)


--- trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm	2014-02-01 00:24:30 UTC (rev 163217)
@@ -79,6 +79,8 @@
 
 void RemoteNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)
 {
+    ASSERT(SessionTracker::isEphemeralID(sessionID));
+
     if (SessionTracker::session(sessionID))
         return;
 

Modified: trunk/Source/WebKit2/Shared/SessionTracker.cpp (163216 => 163217)


--- trunk/Source/WebKit2/Shared/SessionTracker.cpp	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/Shared/SessionTracker.cpp	2014-02-01 00:24:30 UTC (rev 163217)
@@ -44,6 +44,14 @@
     return map.get();
 }
 
+static HashMap<const NetworkStorageSession*, uint64_t>& storageSessionToID()
+{
+    ASSERT(isMainThread());
+
+    static NeverDestroyed<HashMap<const NetworkStorageSession*, uint64_t>> map;
+    return map.get();
+}
+
 static String& identifierBase()
 {
     ASSERT(isMainThread());
@@ -66,20 +74,30 @@
 {
     if (sessionID == defaultSessionID)
         return &NetworkStorageSession::defaultStorageSession();
-    return staticSessionMap().add(sessionID, nullptr).iterator->value.get();
+    return staticSessionMap().get(sessionID);
 }
 
+uint64_t SessionTracker::sessionID(const NetworkStorageSession& session)
+{
+    if (&session == &NetworkStorageSession::defaultStorageSession())
+        return defaultSessionID;
+    return storageSessionToID().get(&session);
+}
+
 void SessionTracker::setSession(uint64_t sessionID, std::unique_ptr<NetworkStorageSession> session)
 {
     ASSERT(sessionID != defaultSessionID);
-    staticSessionMap().add(sessionID, nullptr).iterator->value = std::move(session);
+    storageSessionToID().set(session.get(), sessionID);
+    staticSessionMap().set(sessionID, std::move(session));
 }
 
 void SessionTracker::destroySession(uint64_t sessionID)
 {
     ASSERT(isMainThread());
-
-    staticSessionMap().remove(sessionID);
+    if (staticSessionMap().contains(sessionID)) {
+        storageSessionToID().remove(session(sessionID));
+        staticSessionMap().remove(sessionID);
+    }
 }
 
 void SessionTracker::setIdentifierBase(const String& identifier)

Modified: trunk/Source/WebKit2/Shared/SessionTracker.h (163216 => 163217)


--- trunk/Source/WebKit2/Shared/SessionTracker.h	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/Shared/SessionTracker.h	2014-02-01 00:24:30 UTC (rev 163217)
@@ -43,6 +43,7 @@
     static const HashMap<uint64_t, std::unique_ptr<WebCore::NetworkStorageSession>>& sessionMap();
     static const String& getIdentifierBase();
     static WebCore::NetworkStorageSession* session(uint64_t sessionID);
+    static uint64_t sessionID(const WebCore::NetworkStorageSession&);
     static void setSession(uint64_t sessionID, std::unique_ptr<WebCore::NetworkStorageSession>);
     static void destroySession(uint64_t sessionID);
     static void setIdentifierBase(const String&);

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (163216 => 163217)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2014-02-01 00:24:30 UTC (rev 163217)
@@ -512,7 +512,8 @@
     m_process->send(Messages::WebPage::SetSessionID(session.getID()), m_pageID);
 
 #if ENABLE(NETWORK_PROCESS)
-    m_process->context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(session.getID()));
+    if (session.isEphemeral())
+        m_process->context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(session.getID()));
 #endif
 }
 

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (163216 => 163217)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2014-02-01 00:24:30 UTC (rev 163217)
@@ -73,13 +73,6 @@
 
 namespace WebKit {
 
-#if ENABLE(NETWORK_PROCESS)
-static uint64_t legacySessionID(const NetworkStorageSession &session)
-{
-    return session.isPrivateBrowsingSession() ? SessionTracker::legacyPrivateSessionID : SessionTracker::defaultSessionID;
-}
-#endif
-
 void WebPlatformStrategies::initialize()
 {
     static NeverDestroyed<WebPlatformStrategies> platformStrategies;
@@ -141,7 +134,7 @@
 #if ENABLE(NETWORK_PROCESS)
     if (WebProcess::shared().usesNetworkProcess()) {
         String result;
-        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(result), 0))
+        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(result), 0))
             return String();
         return result;
     }
@@ -154,7 +147,7 @@
 {
 #if ENABLE(NETWORK_PROCESS)
     if (WebProcess::shared().usesNetworkProcess()) {
-        WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::SetCookiesFromDOM(legacySessionID(session), firstParty, url, cookieString), 0);
+        WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::SetCookiesFromDOM(SessionTracker::sessionID(session), firstParty, url, cookieString), 0);
         return;
     }
 #endif
@@ -167,7 +160,7 @@
 #if ENABLE(NETWORK_PROCESS)
     if (WebProcess::shared().usesNetworkProcess()) {
         bool result;
-        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesEnabled(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesEnabled::Reply(result), 0))
+        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesEnabled(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesEnabled::Reply(result), 0))
             return false;
         return result;
     }
@@ -181,7 +174,7 @@
 #if ENABLE(NETWORK_PROCESS)
     if (WebProcess::shared().usesNetworkProcess()) {
         String result;
-        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue::Reply(result), 0))
+        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue::Reply(result), 0))
             return String();
         return result;
     }
@@ -194,7 +187,7 @@
 {
 #if ENABLE(NETWORK_PROCESS)
     if (WebProcess::shared().usesNetworkProcess()) {
-        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::GetRawCookies(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::GetRawCookies::Reply(rawCookies), 0))
+        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::GetRawCookies(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::GetRawCookies::Reply(rawCookies), 0))
             return false;
         return true;
     }
@@ -207,7 +200,7 @@
 {
 #if ENABLE(NETWORK_PROCESS)
     if (WebProcess::shared().usesNetworkProcess()) {
-        WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::DeleteCookie(legacySessionID(session), url, cookieName), 0);
+        WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::DeleteCookie(SessionTracker::sessionID(session), url, cookieName), 0);
         return;
     }
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm (163216 => 163217)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm	2014-02-01 00:24:30 UTC (rev 163217)
@@ -44,6 +44,8 @@
     
 void WebFrameNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)
 {
+    ASSERT(SessionTracker::isEphemeralID(sessionID));
+
     if (SessionTracker::session(sessionID))
         return;
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (163216 => 163217)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2014-02-01 00:24:30 UTC (rev 163217)
@@ -2135,6 +2135,13 @@
     return m_page->settings().privateBrowsingEnabled() ? SessionTracker::legacyPrivateSessionID : SessionTracker::defaultSessionID;
 }
 
+void WebPage::setSessionID(uint64_t sessionID)
+{
+    m_sessionID = sessionID;
+    if (SessionTracker::isEphemeralID(sessionID))
+        WebProcess::shared().ensurePrivateBrowsingSession(sessionID);
+}
+
 void WebPage::didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, uint32_t policyAction, uint64_t downloadID)
 {
     WebFrame* frame = WebProcess::shared().webFrame(frameID);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (163216 => 163217)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-01-31 23:57:29 UTC (rev 163216)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2014-02-01 00:24:30 UTC (rev 163217)
@@ -181,7 +181,7 @@
     WebCore::Page* corePage() const { return m_page.get(); }
     uint64_t pageID() const { return m_pageID; }
     uint64_t sessionID() const;
-    void setSessionID(uint64_t sessionID) { m_sessionID = sessionID; }
+    void setSessionID(uint64_t);
 
     void setSize(const WebCore::IntSize&);
     const WebCore::IntSize& size() const { return m_viewSize; }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to