Changeset 163217 in webkit


Ignore:
Timestamp:
Jan 31, 2014 4:24:30 PM (10 years ago)
Author:
commit-queue@webkit.org
Message:

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

Patch by Martin Hock <mhock@apple.com> 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:
Location:
trunk/Source/WebKit2
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r163212 r163217  
     12014-01-31  Martin Hock  <mhock@apple.com>
     2
     3        Add session support to WebPlatformStrategies
     4        https://bugs.webkit.org/show_bug.cgi?id=127926
     5
     6        Reviewed by Alexey Proskuryakov.
     7
     8        * NetworkProcess/mac/RemoteNetworkingContext.mm:
     9        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
     10        * Shared/SessionTracker.cpp:
     11        (WebKit::storageSessionToID):
     12        (WebKit::SessionTracker::session):
     13        (WebKit::SessionTracker::sessionID):
     14        (WebKit::SessionTracker::setSession):
     15        (WebKit::SessionTracker::destroySession):
     16        * Shared/SessionTracker.h:
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::setSession):
     19        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
     20        (WebKit::WebPlatformStrategies::cookiesForDOM):
     21        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
     22        (WebKit::WebPlatformStrategies::cookiesEnabled):
     23        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
     24        (WebKit::WebPlatformStrategies::getRawCookies):
     25        (WebKit::WebPlatformStrategies::deleteCookie):
     26        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
     27        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
     28        * WebProcess/WebPage/WebPage.cpp:
     29        (WebKit::WebPage::setSessionID): Ensure the storage session exists.
     30        * WebProcess/WebPage/WebPage.h:
     31
    1322014-01-31  Alexey Proskuryakov  <ap@apple.com>
    233
  • trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm

    r163150 r163217  
    8080void RemoteNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)
    8181{
     82    ASSERT(SessionTracker::isEphemeralID(sessionID));
     83
    8284    if (SessionTracker::session(sessionID))
    8385        return;
  • trunk/Source/WebKit2/Shared/SessionTracker.cpp

    r163150 r163217  
    4545}
    4646
     47static HashMap<const NetworkStorageSession*, uint64_t>& storageSessionToID()
     48{
     49    ASSERT(isMainThread());
     50
     51    static NeverDestroyed<HashMap<const NetworkStorageSession*, uint64_t>> map;
     52    return map.get();
     53}
     54
    4755static String& identifierBase()
    4856{
     
    6775    if (sessionID == defaultSessionID)
    6876        return &NetworkStorageSession::defaultStorageSession();
    69     return staticSessionMap().add(sessionID, nullptr).iterator->value.get();
     77    return staticSessionMap().get(sessionID);
     78}
     79
     80uint64_t SessionTracker::sessionID(const NetworkStorageSession& session)
     81{
     82    if (&session == &NetworkStorageSession::defaultStorageSession())
     83        return defaultSessionID;
     84    return storageSessionToID().get(&session);
    7085}
    7186
     
    7388{
    7489    ASSERT(sessionID != defaultSessionID);
    75     staticSessionMap().add(sessionID, nullptr).iterator->value = std::move(session);
     90    storageSessionToID().set(session.get(), sessionID);
     91    staticSessionMap().set(sessionID, std::move(session));
    7692}
    7793
     
    7995{
    8096    ASSERT(isMainThread());
    81 
    82     staticSessionMap().remove(sessionID);
     97    if (staticSessionMap().contains(sessionID)) {
     98        storageSessionToID().remove(session(sessionID));
     99        staticSessionMap().remove(sessionID);
     100    }
    83101}
    84102
  • trunk/Source/WebKit2/Shared/SessionTracker.h

    r163150 r163217  
    4444    static const String& getIdentifierBase();
    4545    static WebCore::NetworkStorageSession* session(uint64_t sessionID);
     46    static uint64_t sessionID(const WebCore::NetworkStorageSession&);
    4647    static void setSession(uint64_t sessionID, std::unique_ptr<WebCore::NetworkStorageSession>);
    4748    static void destroySession(uint64_t sessionID);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r163201 r163217  
    513513
    514514#if ENABLE(NETWORK_PROCESS)
    515     m_process->context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(session.getID()));
     515    if (session.isEphemeral())
     516        m_process->context().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(session.getID()));
    516517#endif
    517518}
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp

    r163150 r163217  
    7474namespace WebKit {
    7575
    76 #if ENABLE(NETWORK_PROCESS)
    77 static uint64_t legacySessionID(const NetworkStorageSession &session)
    78 {
    79     return session.isPrivateBrowsingSession() ? SessionTracker::legacyPrivateSessionID : SessionTracker::defaultSessionID;
    80 }
    81 #endif
    82 
    8376void WebPlatformStrategies::initialize()
    8477{
     
    142135    if (WebProcess::shared().usesNetworkProcess()) {
    143136        String result;
    144         if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(result), 0))
     137        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(result), 0))
    145138            return String();
    146139        return result;
     
    155148#if ENABLE(NETWORK_PROCESS)
    156149    if (WebProcess::shared().usesNetworkProcess()) {
    157         WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::SetCookiesFromDOM(legacySessionID(session), firstParty, url, cookieString), 0);
     150        WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::SetCookiesFromDOM(SessionTracker::sessionID(session), firstParty, url, cookieString), 0);
    158151        return;
    159152    }
     
    168161    if (WebProcess::shared().usesNetworkProcess()) {
    169162        bool result;
    170         if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesEnabled(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesEnabled::Reply(result), 0))
     163        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookiesEnabled(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookiesEnabled::Reply(result), 0))
    171164            return false;
    172165        return result;
     
    182175    if (WebProcess::shared().usesNetworkProcess()) {
    183176        String result;
    184         if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue::Reply(result), 0))
     177        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue::Reply(result), 0))
    185178            return String();
    186179        return result;
     
    195188#if ENABLE(NETWORK_PROCESS)
    196189    if (WebProcess::shared().usesNetworkProcess()) {
    197         if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::GetRawCookies(legacySessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::GetRawCookies::Reply(rawCookies), 0))
     190        if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::GetRawCookies(SessionTracker::sessionID(session), firstParty, url), Messages::NetworkConnectionToWebProcess::GetRawCookies::Reply(rawCookies), 0))
    198191            return false;
    199192        return true;
     
    208201#if ENABLE(NETWORK_PROCESS)
    209202    if (WebProcess::shared().usesNetworkProcess()) {
    210         WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::DeleteCookie(legacySessionID(session), url, cookieName), 0);
     203        WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::DeleteCookie(SessionTracker::sessionID(session), url, cookieName), 0);
    211204        return;
    212205    }
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm

    r163150 r163217  
    4545void WebFrameNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)
    4646{
     47    ASSERT(SessionTracker::isEphemeralID(sessionID));
     48
    4749    if (SessionTracker::session(sessionID))
    4850        return;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r163150 r163217  
    21362136}
    21372137
     2138void WebPage::setSessionID(uint64_t sessionID)
     2139{
     2140    m_sessionID = sessionID;
     2141    if (SessionTracker::isEphemeralID(sessionID))
     2142        WebProcess::shared().ensurePrivateBrowsingSession(sessionID);
     2143}
     2144
    21382145void WebPage::didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, uint32_t policyAction, uint64_t downloadID)
    21392146{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r163150 r163217  
    182182    uint64_t pageID() const { return m_pageID; }
    183183    uint64_t sessionID() const;
    184     void setSessionID(uint64_t sessionID) { m_sessionID = sessionID; }
     184    void setSessionID(uint64_t);
    185185
    186186    void setSize(const WebCore::IntSize&);
Note: See TracChangeset for help on using the changeset viewer.