Changeset 240031 in webkit


Ignore:
Timestamp:
Jan 15, 2019 9:03:07 PM (5 years ago)
Author:
achristensen@apple.com
Message:

Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
https://bugs.webkit.org/show_bug.cgi?id=193368

Reviewed by Geoff Garen.

Source/WebCore:

The NetworkStorageSession ownership needs to move to the WebKit/WebKitLegacy layer instead of being a process-global static map.

  • loader/EmptyClients.cpp:
  • platform/network/CredentialStorage.cpp:

(WebCore::CredentialStorage::defaultCredentialStorage): Deleted.

  • platform/network/CredentialStorage.h:
  • platform/network/NetworkStorageSession.h:
  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::switchToNewTestingSession):
(WebCore::NetworkStorageSession::ensureSession):

  • platform/network/cf/NetworkStorageSessionCFNetWin.cpp:

(WebCore::createPrivateStorageSession):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):
(WebCore::ResourceHandle::getCredential):

Source/WebKit:

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::getAuthenticationInfo):

Source/WebKitLegacy/mac:

  • Misc/WebCache.mm:

(+[WebCache clearCachedCredentials]):

  • Misc/WebDownload.mm:

(-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):

  • Plugins/WebBaseNetscapePluginView.mm:

(WebKit::getAuthenticationInfo):

Source/WebKitLegacy/win:

  • WebDownloadCFNet.cpp:

(WebDownload::didReceiveAuthenticationChallenge):

Location:
trunk/Source
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r240027 r240031  
     12019-01-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=193368
     5
     6        Reviewed by Geoff Garen.
     7
     8        The NetworkStorageSession ownership needs to move to the WebKit/WebKitLegacy layer instead of being a process-global static map.
     9
     10        * loader/EmptyClients.cpp:
     11        * platform/network/CredentialStorage.cpp:
     12        (WebCore::CredentialStorage::defaultCredentialStorage): Deleted.
     13        * platform/network/CredentialStorage.h:
     14        * platform/network/NetworkStorageSession.h:
     15        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
     16        (WebCore::NetworkStorageSession::switchToNewTestingSession):
     17        (WebCore::NetworkStorageSession::ensureSession):
     18        * platform/network/cf/NetworkStorageSessionCFNetWin.cpp:
     19        (WebCore::createPrivateStorageSession):
     20        * platform/network/curl/ResourceHandleCurl.cpp:
     21        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
     22        (WebCore::ResourceHandle::receivedCredential):
     23        (WebCore::ResourceHandle::getCredential):
     24
    1252019-01-15  Ryosuke Niwa  <rniwa@webkit.org>
    226
  • trunk/Source/WebCore/loader/EmptyClients.cpp

    r240014 r240031  
    289289
    290290    bool shouldClearReferrerOnHTTPSToHTTPRedirect() const { return true; }
    291     NetworkStorageSession* storageSession() const final { return &NetworkStorageSession::defaultStorageSession(); }
     291    NetworkStorageSession* storageSession() const final { return nullptr; }
    292292
    293293#if PLATFORM(COCOA)
  • trunk/Source/WebCore/platform/network/CredentialStorage.cpp

    r238771 r240031  
    3535
    3636namespace WebCore {
    37 
    38 CredentialStorage& CredentialStorage::defaultCredentialStorage()
    39 {
    40     return NetworkStorageSession::defaultStorageSession().credentialStorage();
    41 }
    4237
    4338static String originStringFromURL(const URL& url)
  • trunk/Source/WebCore/platform/network/CredentialStorage.h

    r238771 r240031  
    3939class CredentialStorage {
    4040public:
    41     WEBCORE_EXPORT static CredentialStorage& defaultCredentialStorage();
    42 
    4341    // WebCore session credential storage.
    4442    WEBCORE_EXPORT void set(const String&, const Credential&, const ProtectionSpace&, const URL&);
  • trunk/Source/WebCore/platform/network/NetworkStorageSession.h

    r239724 r240031  
    209209};
    210210
    211 #if PLATFORM(COCOA)
     211#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
    212212WEBCORE_EXPORT CFURLStorageSessionRef createPrivateStorageSession(CFStringRef identifier);
    213 #elif USE(CFURLCONNECTION)
    214 CFURLStorageSessionRef createPrivateStorageSession(CFStringRef identifier, CFURLStorageSessionRef defaultStorageSession);
    215213#endif
    216214
  • trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp

    r239724 r240031  
    9999    String sessionName = String::format("WebKit Test-%u", static_cast<uint32_t>(getCurrentProcessID()));
    100100
    101     RetainPtr<CFURLStorageSessionRef> session;
    102 #if PLATFORM(COCOA)
    103     session = adoptCF(createPrivateStorageSession(sessionName.createCFString().get()));
    104 #else
    105     session = adoptCF(createPrivateStorageSession(sessionName.createCFString().get(), defaultStorageSession().platformSession()));
    106 #endif
     101    auto session = adoptCF(createPrivateStorageSession(sessionName.createCFString().get()));
    107102
    108103    RetainPtr<CFHTTPCookieStorageRef> cookieStorage;
     
    132127
    133128    RetainPtr<CFURLStorageSessionRef> storageSession;
    134     if (sessionID.isEphemeral()) {
    135 #if PLATFORM(COCOA)
     129    if (sessionID.isEphemeral())
    136130        storageSession = adoptCF(createPrivateStorageSession(cfIdentifier.get()));
    137 #else
    138         storageSession = adoptCF(createPrivateStorageSession(cfIdentifier.get(), defaultNetworkStorageSession()->platformSession()));
    139 #endif
    140     } else
     131    else
    141132        storageSession = createCFStorageSessionForIdentifier(cfIdentifier.get());
    142133
  • trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp

    r240014 r240031  
    6262namespace WebCore {
    6363
    64 CFURLStorageSessionRef createPrivateStorageSession(CFStringRef identifier, CFURLStorageSessionRef defaultStorageSession)
     64CFURLStorageSessionRef createPrivateStorageSession(CFStringRef identifier)
    6565{
    6666    const void* sessionPropertyKeys[] = { _kCFURLStorageSessionIsPrivate };
     
    7373    CFURLCacheRef cache = _CFURLStorageSessionCopyCache(kCFAllocatorDefault, storageSession);
    7474    CFURLCacheSetDiskCapacity(cache, 0);
    75     CFURLCacheRef defaultCache;
    76     if (defaultStorageSession)
    77         defaultCache = _CFURLStorageSessionCopyCache(kCFAllocatorDefault, defaultStorageSession);
    78     else
    79         defaultCache = CFURLCacheCopySharedURLCache();
     75    CFURLCacheRef defaultCache = CFURLCacheCopySharedURLCache();
    8076    CFURLCacheSetMemoryCapacity(cache, CFURLCacheMemoryCapacity(defaultCache));
    8177    CFRelease(defaultCache);
     
    8379   
    8480    CFHTTPCookieStorageRef cookieStorage = _CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, storageSession);
    85     CFHTTPCookieStorageRef defaultCookieStorage;
    86     if (defaultStorageSession)
    87         defaultCookieStorage = _CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, defaultStorageSession);
    88     else
    89         defaultCookieStorage = _CFHTTPCookieStorageGetDefault(kCFAllocatorDefault);
     81    CFHTTPCookieStorageRef defaultCookieStorage = _CFHTTPCookieStorageGetDefault(kCFAllocatorDefault);
    9082    CFHTTPCookieStorageSetCookieAcceptPolicy(cookieStorage, CFHTTPCookieStorageGetCookieAcceptPolicy(defaultCookieStorage));
    91     if (defaultStorageSession)
    92         CFRelease(defaultCookieStorage);
    9383    CFRelease(cookieStorage);
    9484   
  • trunk/Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp

    r240014 r240031  
    146146        addCacheValidationHeaders(request);
    147147
    148         auto& storageSession = NetworkStorageSession::defaultStorageSession();
     148        auto& storageSession = *context()->storageSession(PAL::SessionID::defaultSessionID());
    149149        auto& cookieJar = storageSession.cookieStorage();
    150150        auto includeSecureCookies = request.url().protocolIs("https") ? IncludeSecureCookies::Yes : IncludeSecureCookies::No;
     
    232232        if (challenge.failureResponse().httpStatusCode() == 401)
    233233            urlToStore = challenge.failureResponse().url();
    234         CredentialStorage::defaultCredentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore);
     234        context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore);
    235235
    236236        restartRequestWithCredential(challenge.protectionSpace(), credential);
     
    247247            // There is a race condition here, since a different credential might have already been stored by another ResourceHandle,
    248248            // but the observable effect should be very minor, if any.
    249             CredentialStorage::defaultCredentialStorage().remove(partition, challenge.protectionSpace());
     249            context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().remove(partition, challenge.protectionSpace());
    250250        }
    251251
    252252        if (!challenge.previousFailureCount()) {
    253             Credential credential = CredentialStorage::defaultCredentialStorage().get(partition, challenge.protectionSpace());
     253            Credential credential = context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().get(partition, challenge.protectionSpace());
    254254            if (!credential.isEmpty() && credential != d->m_initialCredential) {
    255255                ASSERT(credential.persistence() == CredentialPersistenceNone);
    256256                if (challenge.failureResponse().httpStatusCode() == 401) {
    257257                    // Store the credential back, possibly adding it as a default for this directory.
    258                     CredentialStorage::defaultCredentialStorage().set(partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
     258                    context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());
    259259                }
    260260
     
    290290        if (challenge.failureResponse().httpStatusCode() == 401) {
    291291            URL urlToStore = challenge.failureResponse().url();
    292             CredentialStorage::defaultCredentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore);
     292            context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore);
    293293        }
    294294    }
     
    347347            // <rdar://problem/7174050> - For URLs that match the paths of those previously challenged for HTTP Basic authentication,
    348348            // try and reuse the credential preemptively, as allowed by RFC 2617.
    349             d->m_initialCredential = CredentialStorage::defaultCredentialStorage().get(partition, request.url());
     349            d->m_initialCredential = context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().get(partition, request.url());
    350350        } else if (!redirect) {
    351351            // If there is already a protection space known for the URL, update stored credentials
     
    353353            // XMLHttpRequest with known incorrect credentials, and aborting it immediately (so that
    354354            // an authentication dialog doesn't pop up).
    355             CredentialStorage::defaultCredentialStorage().set(partition, credential, request.url());
     355            context()->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, request.url());
    356356        }
    357357    }
  • trunk/Source/WebKit/ChangeLog

    r240030 r240031  
     12019-01-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=193368
     5
     6        Reviewed by Geoff Garen.
     7
     8        * WebProcess/Plugins/PluginView.cpp:
     9        (WebKit::PluginView::getAuthenticationInfo):
     10
    1112019-01-15  Alex Christensen  <achristensen@webkit.org>
    212
  • trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp

    r240014 r240031  
    5858#include <WebCore/MouseEvent.h>
    5959#include <WebCore/NetscapePlugInStreamLoader.h>
     60#include <WebCore/NetworkStorageSession.h>
    6061#include <WebCore/Page.h>
    6162#include <WebCore/PlatformMouseEvent.h>
     
    16031604
    16041605    String partitionName = contentDocument->topDocument().domainForCachePartition();
    1605     Credential credential = CredentialStorage::defaultCredentialStorage().get(partitionName, protectionSpace);
     1606    Credential credential = NetworkStorageSession::defaultStorageSession().credentialStorage().get(partitionName, protectionSpace);
    16061607    if (credential.isEmpty())
    1607         credential = CredentialStorage::defaultCredentialStorage().getFromPersistentStorage(protectionSpace);
     1608        credential = NetworkStorageSession::defaultStorageSession().credentialStorage().getFromPersistentStorage(protectionSpace);
    16081609
    16091610    if (!credential.hasPassword())
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r240014 r240031  
     12019-01-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=193368
     5
     6        Reviewed by Geoff Garen.
     7
     8        * Misc/WebCache.mm:
     9        (+[WebCache clearCachedCredentials]):
     10        * Misc/WebDownload.mm:
     11        (-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):
     12        * Plugins/WebBaseNetscapePluginView.mm:
     13        (WebKit::getAuthenticationInfo):
     14
    1152019-01-15  Alex Christensen  <achristensen@webkit.org>
    216
  • trunk/Source/WebKitLegacy/mac/Misc/WebCache.mm

    r240014 r240031  
    3838#import <WebCore/Document.h>
    3939#import <WebCore/MemoryCache.h>
     40#import <WebCore/NetworkStorageSession.h>
    4041#import <wtf/MainThread.h>
    4142#import <wtf/RunLoop.h>
     
    214215{
    215216    [WebView _makeAllWebViewsPerformSelector:@selector(_clearCredentials)];
    216     WebCore::CredentialStorage::defaultCredentialStorage().clearCredentials();
     217    WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage().clearCredentials();
    217218}
    218219
  • trunk/Source/WebKitLegacy/mac/Misc/WebDownload.mm

    r237266 r240031  
    3333#import <WebCore/Credential.h>
    3434#import <WebCore/CredentialStorage.h>
     35#import <WebCore/NetworkStorageSession.h>
    3536#import <WebCore/ProtectionSpace.h>
    3637#import <WebKitLegacy/WebPanelAuthenticationHandler.h>
     
    9596    // Try previously stored credential first.
    9697    if (![challenge previousFailureCount]) {
    97         NSURLCredential *credential = CredentialStorage::defaultCredentialStorage().get(emptyString(), ProtectionSpace([challenge protectionSpace])).nsCredential();
     98        NSURLCredential *credential = NetworkStorageSession::defaultStorageSession().credentialStorage().get(emptyString(), ProtectionSpace([challenge protectionSpace])).nsCredential();
    9899        if (credential) {
    99100            [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
  • trunk/Source/WebKitLegacy/mac/Plugins/WebBaseNetscapePluginView.mm

    r236846 r240031  
    4848#import <WebCore/FrameLoader.h>
    4949#import <WebCore/HTMLPlugInElement.h>
     50#import <WebCore/NetworkStorageSession.h>
    5051#import <WebCore/Page.h>
    5152#import <WebCore/ProtectionSpace.h>
     
    872873    RetainPtr<NSURLProtectionSpace> protectionSpace = adoptNS([[NSURLProtectionSpace alloc] initWithHost:host port:port protocol:protocol realm:realm authenticationMethod:authenticationMethod]);
    873874   
    874     NSURLCredential *credential = CredentialStorage::defaultCredentialStorage().get(emptyString(), ProtectionSpace(protectionSpace.get())).nsCredential();
     875    NSURLCredential *credential = WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage().get(emptyString(), ProtectionSpace(protectionSpace.get())).nsCredential();
    875876    if (!credential)
    876877        credential = [[NSURLCredentialStorage sharedCredentialStorage] defaultCredentialForProtectionSpace:protectionSpace.get()];
  • trunk/Source/WebKitLegacy/win/ChangeLog

    r240028 r240031  
     12019-01-15  Alex Christensen  <achristensen@webkit.org>
     2
     3        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
     4        https://bugs.webkit.org/show_bug.cgi?id=193368
     5
     6        Reviewed by Geoff Garen.
     7
     8        * WebDownloadCFNet.cpp:
     9        (WebDownload::didReceiveAuthenticationChallenge):
     10
    1112019-01-15  Alex Christensen  <achristensen@webkit.org>
    212
  • trunk/Source/WebKitLegacy/win/WebDownloadCFNet.cpp

    r229209 r240031  
    4848#include <WebCore/DownloadBundle.h>
    4949#include <WebCore/LoaderRunLoopCF.h>
     50#include <WebCore/NetworkStorageSession.h>
    5051#include <WebCore/ResourceError.h>
    5152#include <WebCore/ResourceHandle.h>
     
    376377    // Try previously stored credential first.
    377378    if (!CFURLAuthChallengeGetPreviousFailureCount(challenge)) {
    378         Credential credential = CredentialStorage::defaultCredentialStorage().get(emptyString(), core(CFURLAuthChallengeGetProtectionSpace(challenge)));
     379        Credential credential = WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage().get(emptyString(), core(CFURLAuthChallengeGetProtectionSpace(challenge)));
    379380        if (!credential.isEmpty()) {
    380381            RetainPtr<CFURLCredentialRef> cfCredential = adoptCF(createCF(credential));
Note: See TracChangeset for help on using the changeset viewer.