Changeset 240292 in webkit
- Timestamp:
- Jan 22, 2019 1:28:28 PM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 3 added
- 62 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r240277 r240292 1 2019-01-22 Alex Christensen <achristensen@webkit.org> 2 3 Move NetworkStorageSession ownership to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=193580 5 6 Reviewed by Geoff Garen. 7 8 NetworkStorageSessions used to be owned by a process-global map living in WebCore. 9 This patch moves the ownership to the WebKit/WebKitLegacy layer. 10 In WebKitLegacy they are still owned by a process-global map for compatibility. 11 In WebKit they are owned by a map owned by the NetworkProcess object. 12 There were three non-NetworkProcess uses of NetworkStorageSessions which have been dealt with thusly: 13 1. The WebProcess used to clear credentials from a NetworkStorageSession. Since this was the only use 14 of a NetworkStorageSession in the WebProcess we can conclude there were no credentials to clear, 15 so this code was removed with no change in behavior. 16 2. The WebProcess used NetworkStorageSessions to get persistent credentials. This was turned 17 into a static method that does the same thing. We should audit these calls and decide if we really want them. 18 3. The UIProcess used NetworkStorageSessions in APIHTTPCookieStore to interact with the default cookie 19 storage on Cocoa platforms. This has been replaced by functions that do the same thing directly. 20 21 * platform/network/CredentialStorage.h: 22 * platform/network/NetworkStorageSession.cpp: 23 (WebCore::NetworkStorageSession::processMayUseCookieAPI): 24 (WebCore::NetworkStorageSession::globalSessionMap): Deleted. 25 (WebCore::NetworkStorageSession::storageSession): Deleted. 26 (WebCore::NetworkStorageSession::destroySession): Deleted. 27 (WebCore::NetworkStorageSession::forEach): Deleted. 28 * platform/network/NetworkStorageSession.h: 29 * platform/network/cf/NetworkStorageSessionCFNet.cpp: 30 (WebCore::NetworkStorageSession::createCFStorageSessionForIdentifier): 31 (WebCore::createCFStorageSessionForIdentifier): Deleted. 32 (WebCore::defaultNetworkStorageSession): Deleted. 33 (WebCore::NetworkStorageSession::switchToNewTestingSession): Deleted. 34 (WebCore::NetworkStorageSession::defaultStorageSession): Deleted. 35 (WebCore::NetworkStorageSession::ensureSession): Deleted. 36 * platform/network/cf/SocketStreamHandleImplCFNet.cpp: 37 (WebCore::SocketStreamHandleImpl::getStoredCONNECTProxyCredentials): 38 * platform/network/cocoa/CookieStorageObserver.h: 39 * platform/network/curl/NetworkStorageSessionCurl.cpp: 40 (WebCore::defaultSession): Deleted. 41 (WebCore::NetworkStorageSession::defaultStorageSession): Deleted. 42 (WebCore::NetworkStorageSession::ensureSession): Deleted. 43 (WebCore::NetworkStorageSession::switchToNewTestingSession): Deleted. 44 * platform/network/soup/NetworkStorageSessionSoup.cpp: 45 (WebCore::NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage): 46 (WebCore::defaultSession): Deleted. 47 (WebCore::NetworkStorageSession::defaultStorageSession): Deleted. 48 (WebCore::NetworkStorageSession::ensureSession): Deleted. 49 (WebCore::NetworkStorageSession::switchToNewTestingSession): Deleted. 50 1 51 2019-01-22 Devin Rousso <drousso@apple.com> 2 52 -
trunk/Source/WebCore/platform/network/CredentialStorage.h
r240031 r240292 45 45 46 46 // OS persistent storage. 47 WEBCORE_EXPORT Credential getFromPersistentStorage(const ProtectionSpace&);47 WEBCORE_EXPORT static Credential getFromPersistentStorage(const ProtectionSpace&); 48 48 49 49 WEBCORE_EXPORT void clearCredentials(); -
trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp
r239737 r240292 43 43 bool NetworkStorageSession::m_processMayUseCookieAPI = false; 44 44 45 HashMap<PAL::SessionID, std::unique_ptr<NetworkStorageSession>>& NetworkStorageSession::globalSessionMap()46 {47 static NeverDestroyed<HashMap<PAL::SessionID, std::unique_ptr<NetworkStorageSession>>> map;48 return map;49 }50 51 NetworkStorageSession* NetworkStorageSession::storageSession(PAL::SessionID sessionID)52 {53 if (sessionID == PAL::SessionID::defaultSessionID())54 return &defaultStorageSession();55 return globalSessionMap().get(sessionID);56 }57 58 void NetworkStorageSession::destroySession(PAL::SessionID sessionID)59 {60 ASSERT(sessionID != PAL::SessionID::defaultSessionID());61 globalSessionMap().remove(sessionID);62 }63 64 void NetworkStorageSession::forEach(const WTF::Function<void(const WebCore::NetworkStorageSession&)>& functor)65 {66 functor(defaultStorageSession());67 for (auto& storageSession : globalSessionMap().values())68 functor(*storageSession);69 }70 71 45 bool NetworkStorageSession::processMayUseCookieAPI() 72 46 { 73 47 return m_processMayUseCookieAPI; 74 } ;48 } 75 49 76 50 void NetworkStorageSession::permitProcessToUseCookieAPI(bool value) -
trunk/Source/WebCore/platform/network/NetworkStorageSession.h
r240031 r240292 75 75 WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED; 76 76 public: 77 WEBCORE_EXPORT static NetworkStorageSession& defaultStorageSession();78 WEBCORE_EXPORT static NetworkStorageSession* storageSession(PAL::SessionID);79 WEBCORE_EXPORT static void ensureSession(PAL::SessionID, const String& identifierBase = String());80 WEBCORE_EXPORT static void destroySession(PAL::SessionID);81 WEBCORE_EXPORT static void forEach(const WTF::Function<void(const WebCore::NetworkStorageSession&)>&);82 77 WEBCORE_EXPORT static void permitProcessToUseCookieAPI(bool); 83 78 WEBCORE_EXPORT static bool processMayUseCookieAPI(); 84 79 85 WEBCORE_EXPORT static void switchToNewTestingSession();86 87 80 PAL::SessionID sessionID() const { return m_sessionID; } 88 81 CredentialStorage& credentialStorage() { return m_credentialStorage; } … … 93 86 94 87 #if PLATFORM(COCOA) || USE(CFURLCONNECTION) 95 WEBCORE_EXPORT static void ensureSession(PAL::SessionID, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&&);96 NetworkStorageSession(PAL::SessionID, RetainPtr<CFURLStorageSessionRef>&&, RetainPtr<CFHTTPCookieStorageRef>&&);97 explicit NetworkStorageSession(PAL::SessionID);88 WEBCORE_EXPORT static RetainPtr<CFURLStorageSessionRef> createCFStorageSessionForIdentifier(CFStringRef identifier); 89 WEBCORE_EXPORT NetworkStorageSession(PAL::SessionID, RetainPtr<CFURLStorageSessionRef>&&, RetainPtr<CFHTTPCookieStorageRef>&&); 90 WEBCORE_EXPORT explicit NetworkStorageSession(PAL::SessionID); 98 91 99 92 // May be null, in which case a Foundation default should be used. … … 102 95 WEBCORE_EXPORT static void setStorageAccessAPIEnabled(bool); 103 96 #elif USE(SOUP) 104 NetworkStorageSession(PAL::SessionID, std::unique_ptr<SoupNetworkSession>&&);97 WEBCORE_EXPORT NetworkStorageSession(PAL::SessionID, std::unique_ptr<SoupNetworkSession>&&); 105 98 ~NetworkStorageSession(); 106 99 … … 114 107 void saveCredentialToPersistentStorage(const ProtectionSpace&, const Credential&); 115 108 #elif USE(CURL) 116 NetworkStorageSession(PAL::SessionID, NetworkingContext*);109 WEBCORE_EXPORT NetworkStorageSession(PAL::SessionID, NetworkingContext*); 117 110 ~NetworkStorageSession(); 118 111 … … 125 118 NetworkingContext* context() const; 126 119 #else 127 NetworkStorageSession(PAL::SessionID, NetworkingContext*);120 WEBCORE_EXPORT NetworkStorageSession(PAL::SessionID, NetworkingContext*); 128 121 ~NetworkStorageSession(); 129 122 … … 167 160 168 161 private: 169 static HashMap<PAL::SessionID, std::unique_ptr<NetworkStorageSession>>& globalSessionMap();170 162 PAL::SessionID m_sessionID; 171 163 -
trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp
r240031 r240292 41 41 static bool storageAccessAPIEnabled; 42 42 43 static RetainPtr<CFURLStorageSessionRef>createCFStorageSessionForIdentifier(CFStringRef identifier)43 RetainPtr<CFURLStorageSessionRef> NetworkStorageSession::createCFStorageSessionForIdentifier(CFStringRef identifier) 44 44 { 45 45 auto storageSession = adoptCF(_CFURLStorageSessionCreate(kCFAllocatorDefault, identifier, nullptr)); … … 86 86 } 87 87 88 89 static std::unique_ptr<NetworkStorageSession>& defaultNetworkStorageSession()90 {91 ASSERT(isMainThread());92 static NeverDestroyed<std::unique_ptr<NetworkStorageSession>> session;93 return session;94 }95 96 void NetworkStorageSession::switchToNewTestingSession()97 {98 // Session name should be short enough for shared memory region name to be under the limit, otehrwise sandbox rules won't work (see <rdar://problem/13642852>).99 String sessionName = String::format("WebKit Test-%u", static_cast<uint32_t>(getCurrentProcessID()));100 101 auto session = adoptCF(createPrivateStorageSession(sessionName.createCFString().get()));102 103 RetainPtr<CFHTTPCookieStorageRef> cookieStorage;104 if (NetworkStorageSession::processMayUseCookieAPI()) {105 ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));106 if (session)107 cookieStorage = adoptCF(_CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, session.get()));108 }109 110 defaultNetworkStorageSession() = std::make_unique<NetworkStorageSession>(PAL::SessionID::defaultSessionID(), WTFMove(session), WTFMove(cookieStorage));111 }112 113 NetworkStorageSession& NetworkStorageSession::defaultStorageSession()114 {115 if (!defaultNetworkStorageSession())116 defaultNetworkStorageSession() = std::make_unique<NetworkStorageSession>(PAL::SessionID::defaultSessionID());117 return *defaultNetworkStorageSession();118 }119 120 void NetworkStorageSession::ensureSession(PAL::SessionID sessionID, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&& cookieStorage)121 {122 auto addResult = globalSessionMap().add(sessionID, nullptr);123 if (!addResult.isNewEntry)124 return;125 126 RetainPtr<CFStringRef> cfIdentifier = String(identifierBase + ".PrivateBrowsing").createCFString();127 128 RetainPtr<CFURLStorageSessionRef> storageSession;129 if (sessionID.isEphemeral())130 storageSession = adoptCF(createPrivateStorageSession(cfIdentifier.get()));131 else132 storageSession = createCFStorageSessionForIdentifier(cfIdentifier.get());133 134 if (NetworkStorageSession::processMayUseCookieAPI()) {135 ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));136 if (!cookieStorage && storageSession)137 cookieStorage = adoptCF(_CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, storageSession.get()));138 }139 140 addResult.iterator->value = std::make_unique<NetworkStorageSession>(sessionID, WTFMove(storageSession), WTFMove(cookieStorage));141 }142 143 void NetworkStorageSession::ensureSession(PAL::SessionID sessionID, const String& identifierBase)144 {145 ensureSession(sessionID, identifierBase, nullptr);146 }147 148 88 RetainPtr<CFHTTPCookieStorageRef> NetworkStorageSession::cookieStorage() const 149 89 { -
trunk/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp
r240117 r240292 371 371 Credential storedCredential; 372 372 if (auto* storageSession = m_storageSessionProvider ? m_storageSessionProvider->storageSession() : nullptr) { 373 storedCredential = storageSession->credentialStorage().getFromPersistentStorage(protectionSpace);373 storedCredential = CredentialStorage::getFromPersistentStorage(protectionSpace); 374 374 if (storedCredential.isEmpty()) 375 375 storedCredential = storageSession->credentialStorage().get(m_credentialPartition, protectionSpace); -
trunk/Source/WebCore/platform/network/cocoa/CookieStorageObserver.h
r239535 r240292 36 36 namespace WebCore { 37 37 38 class CookieStorageObserver : public ThreadSafeRefCounted<CookieStorageObserver> {38 class WEBCORE_EXPORT CookieStorageObserver : public ThreadSafeRefCounted<CookieStorageObserver> { 39 39 public: 40 40 static Ref<CookieStorageObserver> create(NSHTTPCookieStorage *); 41 CookieStorageObserver(NSHTTPCookieStorage *);42 41 ~CookieStorageObserver(); 43 42 44 void startObserving( WTF::Function<void()>&& callback);43 void startObserving(Function<void()>&& callback); 45 44 void stopObserving(); 46 45 … … 48 47 49 48 private: 49 CookieStorageObserver(NSHTTPCookieStorage *); 50 50 51 RetainPtr<NSHTTPCookieStorage> m_cookieStorage; 51 52 bool m_hasRegisteredInternalsForNotifications { false }; -
trunk/Source/WebCore/platform/network/curl/CurlResourceHandleDelegate.cpp
r235821 r240292 90 90 static const auto setCookieHeader = "set-cookie: "; 91 91 92 const auto& storageSession = NetworkStorageSession::defaultStorageSession();92 const auto& storageSession = *d()->m_context->storageSession(PAL::SessionID::defaultSessionID()); 93 93 const auto& cookieJar = storageSession.cookieStorage(); 94 94 for (const auto& header : response.headers) { -
trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp
r239427 r240292 86 86 m_cookieDatabase->open(); 87 87 return m_cookieDatabase; 88 }89 90 static std::unique_ptr<NetworkStorageSession>& defaultSession()91 {92 ASSERT(isMainThread());93 static std::unique_ptr<NetworkStorageSession> session;94 return session;95 }96 97 NetworkStorageSession& NetworkStorageSession::defaultStorageSession()98 {99 if (!defaultSession())100 defaultSession() = std::make_unique<NetworkStorageSession>(PAL::SessionID::defaultSessionID(), nullptr);101 return *defaultSession();102 }103 104 void NetworkStorageSession::ensureSession(PAL::SessionID, const String&)105 {106 // FIXME: Implement for WebKit to use.107 }108 109 void NetworkStorageSession::switchToNewTestingSession()110 {111 // FIXME: Implement for WebKit to use.112 88 } 113 89 -
trunk/Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp
r240132 r240292 146 146 addCacheValidationHeaders(request); 147 147 148 auto& storageSession = NetworkStorageSession::defaultStorageSession();148 auto& storageSession = *d->m_context->storageSession(PAL::SessionID::defaultSessionID()); 149 149 auto& cookieJar = storageSession.cookieStorage(); 150 150 auto includeSecureCookies = request.url().protocolIs("https") ? IncludeSecureCookies::Yes : IncludeSecureCookies::No; … … 232 232 if (challenge.failureResponse().httpStatusCode() == 401) 233 233 urlToStore = challenge.failureResponse().url(); 234 NetworkStorageSession::defaultStorageSession().credentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore);234 d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore); 235 235 236 236 restartRequestWithCredential(challenge.protectionSpace(), credential); … … 247 247 // There is a race condition here, since a different credential might have already been stored by another ResourceHandle, 248 248 // but the observable effect should be very minor, if any. 249 NetworkStorageSession::defaultStorageSession().credentialStorage().remove(partition, challenge.protectionSpace());249 d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().remove(partition, challenge.protectionSpace()); 250 250 } 251 251 252 252 if (!challenge.previousFailureCount()) { 253 Credential credential = NetworkStorageSession::defaultStorageSession().credentialStorage().get(partition, challenge.protectionSpace());253 Credential credential = d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().get(partition, challenge.protectionSpace()); 254 254 if (!credential.isEmpty() && credential != d->m_initialCredential) { 255 255 ASSERT(credential.persistence() == CredentialPersistenceNone); 256 256 if (challenge.failureResponse().httpStatusCode() == 401) { 257 257 // Store the credential back, possibly adding it as a default for this directory. 258 NetworkStorageSession::defaultStorageSession().credentialStorage().set(partition, credential, challenge.protectionSpace(), challenge.failureResponse().url());258 d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, challenge.protectionSpace(), challenge.failureResponse().url()); 259 259 } 260 260 … … 290 290 if (challenge.failureResponse().httpStatusCode() == 401) { 291 291 URL urlToStore = challenge.failureResponse().url(); 292 NetworkStorageSession::defaultStorageSession().credentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore);292 d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, challenge.protectionSpace(), urlToStore); 293 293 } 294 294 } … … 347 347 // <rdar://problem/7174050> - For URLs that match the paths of those previously challenged for HTTP Basic authentication, 348 348 // try and reuse the credential preemptively, as allowed by RFC 2617. 349 d->m_initialCredential = NetworkStorageSession::defaultStorageSession().credentialStorage().get(partition, request.url());349 d->m_initialCredential = d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().get(partition, request.url()); 350 350 } else if (!redirect) { 351 351 // If there is already a protection space known for the URL, update stored credentials … … 353 353 // XMLHttpRequest with known incorrect credentials, and aborting it immediately (so that 354 354 // an authentication dialog doesn't pop up). 355 NetworkStorageSession::defaultStorageSession().credentialStorage().set(partition, credential, request.url());355 d->m_context->storageSession(PAL::SessionID::defaultSessionID())->credentialStorage().set(partition, credential, request.url()); 356 356 } 357 357 } -
trunk/Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp
r229359 r240292 34 34 #include <libsoup/soup.h> 35 35 #include <wtf/CompletionHandler.h> 36 #include <wtf/Function.h> 36 37 #include <wtf/MainThread.h> 38 #include <wtf/NeverDestroyed.h> 37 39 #include <wtf/glib/GUniquePtr.h> 38 40 #include <wtf/text/CString.h> … … 77 79 } 78 80 81 Function<NetworkStorageSession&()>& globalDefaultNetworkStorageSessionAccessor() 82 { 83 static NeverDestroyed<Function<NetworkStorageSession&()>> accessor; 84 return accessor.get(); 85 } 86 87 void DNSResolveQueueSoup::setGlobalDefaultNetworkStorageSessionAccessor(Function<NetworkStorageSession&()>&& accessor) 88 { 89 globalDefaultNetworkStorageSessionAccessor() = WTFMove(accessor); 90 } 91 79 92 void DNSResolveQueueSoup::updateIsUsingProxy() 80 93 { 81 94 GRefPtr<GProxyResolver> resolver; 82 g_object_get( NetworkStorageSession::defaultStorageSession().getOrCreateSoupNetworkSession().soupSession(), "proxy-resolver", &resolver.outPtr(), nullptr);95 g_object_get(globalDefaultNetworkStorageSessionAccessor()().getOrCreateSoupNetworkSession().soupSession(), "proxy-resolver", &resolver.outPtr(), nullptr); 83 96 ASSERT(resolver); 84 97 … … 163 176 ASSERT(isMainThread()); 164 177 165 soup_session_prefetch_dns( NetworkStorageSession::defaultStorageSession().getOrCreateSoupNetworkSession().soupSession(), hostname.utf8().data(), nullptr, resolvedCallback, nullptr);178 soup_session_prefetch_dns(globalDefaultNetworkStorageSessionAccessor()().getOrCreateSoupNetworkSession().soupSession(), hostname.utf8().data(), nullptr, resolvedCallback, nullptr); 166 179 } 167 180 … … 172 185 auto address = adoptGRef(soup_address_new(hostname.utf8().data(), 0)); 173 186 auto cancellable = adoptGRef(g_cancellable_new()); 174 soup_address_resolve_async(address.get(), soup_session_get_async_context(WebCore:: NetworkStorageSession::defaultStorageSession().getOrCreateSoupNetworkSession().soupSession()), cancellable.get(), resolvedWithObserverCallback, this);187 soup_address_resolve_async(address.get(), soup_session_get_async_context(WebCore::globalDefaultNetworkStorageSessionAccessor()().getOrCreateSoupNetworkSession().soupSession()), cancellable.get(), resolvedWithObserverCallback, this); 175 188 176 189 g_object_set_data(G_OBJECT(address.get()), "identifier", GUINT_TO_POINTER(identifier)); -
trunk/Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h
r229359 r240292 33 33 namespace WebCore { 34 34 35 class NetworkStorageSession; 36 35 37 class DNSResolveQueueSoup final : public DNSResolveQueue { 36 38 public: … … 38 40 39 41 DNSResolveQueueSoup() = default; 42 static void setGlobalDefaultNetworkStorageSessionAccessor(Function<NetworkStorageSession&()>&&); 40 43 void resolve(const String& hostname, uint64_t identifier, DNSCompletionHandler&&) final; 41 44 void stopResolve(uint64_t identifier) final; -
trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
r239427 r240292 66 66 } 67 67 68 static std::unique_ptr<NetworkStorageSession>& defaultSession()69 {70 ASSERT(isMainThread());71 static NeverDestroyed<std::unique_ptr<NetworkStorageSession>> session;72 return session;73 }74 75 NetworkStorageSession& NetworkStorageSession::defaultStorageSession()76 {77 if (!defaultSession())78 defaultSession() = std::make_unique<NetworkStorageSession>(PAL::SessionID::defaultSessionID(), nullptr);79 return *defaultSession();80 }81 82 void NetworkStorageSession::ensureSession(PAL::SessionID sessionID, const String&)83 {84 ASSERT(!globalSessionMap().contains(sessionID));85 globalSessionMap().add(sessionID, std::make_unique<NetworkStorageSession>(sessionID, std::make_unique<SoupNetworkSession>(sessionID)));86 }87 88 void NetworkStorageSession::switchToNewTestingSession()89 {90 defaultSession() = std::make_unique<NetworkStorageSession>(PAL::SessionID::defaultSessionID(), std::make_unique<SoupNetworkSession>());91 }92 93 68 SoupNetworkSession& NetworkStorageSession::getOrCreateSoupNetworkSession() const 94 69 { … … 100 75 void NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage() 101 76 { 102 ASSERT(defaultSession().get() == this);103 77 m_session = nullptr; 104 78 m_cookieObserverHandler = nullptr; -
trunk/Source/WebKit/ChangeLog
r240289 r240292 1 2019-01-22 Alex Christensen <achristensen@webkit.org> 2 3 Move NetworkStorageSession ownership to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=193580 5 6 Reviewed by Geoff Garen. 7 8 * NetworkProcess/Cookies/WebCookieManager.cpp: 9 (WebKit::WebCookieManager::WebCookieManager): 10 (WebKit::WebCookieManager::getHostnamesWithCookies): 11 (WebKit::WebCookieManager::deleteCookiesForHostname): 12 (WebKit::WebCookieManager::deleteAllCookies): 13 (WebKit::WebCookieManager::deleteCookie): 14 (WebKit::WebCookieManager::deleteAllCookiesModifiedSince): 15 (WebKit::WebCookieManager::getAllCookies): 16 (WebKit::WebCookieManager::getCookies): 17 (WebKit::WebCookieManager::setCookie): 18 (WebKit::WebCookieManager::setCookies): 19 (WebKit::WebCookieManager::startObservingCookieChanges): 20 (WebKit::WebCookieManager::stopObservingCookieChanges): 21 * NetworkProcess/Cookies/WebCookieManager.h: 22 * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm: 23 (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): 24 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 25 (WebKit::storageSession): 26 (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): 27 (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): 28 (WebKit::NetworkConnectionToWebProcess::cookiesEnabled): 29 (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue): 30 (WebKit::NetworkConnectionToWebProcess::getRawCookies): 31 (WebKit::NetworkConnectionToWebProcess::deleteCookie): 32 (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame): 33 (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage): 34 * NetworkProcess/NetworkProcess.cpp: 35 (WebKit::NetworkProcess::initializeNetworkProcess): 36 (WebKit::NetworkProcess::clearCachedCredentials): 37 (WebKit::NetworkProcess::switchToNewTestingSession): 38 (WebKit::NetworkProcess::ensureSession): 39 (WebKit::NetworkProcess::storageSession const): 40 (WebKit::NetworkProcess::defaultStorageSession const): 41 (WebKit::NetworkProcess::forEachNetworkStorageSession): 42 (WebKit::NetworkProcess::destroySession): 43 (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor): 44 (WebKit::NetworkProcess::setAgeCapForClientSideCookies): 45 (WebKit::NetworkProcess::hasStorageAccessForFrame): 46 (WebKit::NetworkProcess::getAllStorageAccessEntries): 47 (WebKit::NetworkProcess::grantStorageAccess): 48 (WebKit::NetworkProcess::removeAllStorageAccess): 49 (WebKit::NetworkProcess::removePrevalentDomains): 50 (WebKit::NetworkProcess::setCacheMaxAgeCapForPrevalentResources): 51 (WebKit::NetworkProcess::resetCacheMaxAgeCapForPrevalentResources): 52 (WebKit::NetworkProcess::fetchWebsiteData): 53 (WebKit::NetworkProcess::deleteWebsiteData): 54 (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): 55 * NetworkProcess/NetworkProcess.h: 56 * NetworkProcess/NetworkResourceLoader.cpp: 57 (WebKit::NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation): 58 (WebKit::NetworkResourceLoader::logCookieInformation const): 59 * NetworkProcess/NetworkSession.cpp: 60 (WebKit::NetworkSession::networkStorageSession const): 61 * NetworkProcess/NetworkStorageSessionProvider.h: 62 * NetworkProcess/cache/NetworkCache.cpp: 63 (WebKit::NetworkCache::makeUseDecision): 64 (WebKit::NetworkCache::Cache::retrieve): 65 (WebKit::NetworkCache::Cache::makeEntry): 66 (WebKit::NetworkCache::Cache::makeRedirectEntry): 67 (WebKit::NetworkCache::Cache::update): 68 * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: 69 (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest): 70 * NetworkProcess/cocoa/NetworkProcessCocoa.mm: 71 (WebKit::NetworkProcess::platformSyncAllCookies): 72 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 73 (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): 74 (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): 75 (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): 76 (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): 77 * NetworkProcess/mac/RemoteNetworkingContext.mm: 78 (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): 79 * SourcesCocoa.txt: 80 * UIProcess/API/APIHTTPCookieStore.cpp: 81 (API::HTTPCookieStore::~HTTPCookieStore): 82 (API::HTTPCookieStore::cookies): 83 (API::HTTPCookieStore::setCookie): 84 (API::HTTPCookieStore::deleteCookie): 85 (API::HTTPCookieStore::registerObserver): 86 (API::HTTPCookieStore::unregisterObserver): 87 (API::HTTPCookieStore::registerForNewProcessPoolNotifications): 88 (API::HTTPCookieStore::flushDefaultUIProcessCookieStore): 89 (API::HTTPCookieStore::getAllDefaultUIProcessCookieStoreCookies): 90 (API::HTTPCookieStore::setCookieInDefaultUIProcessCookieStore): 91 (API::HTTPCookieStore::deleteCookieFromDefaultUIProcessCookieStore): 92 (API::HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore): 93 (API::HTTPCookieStore::stopObservingChangesToDefaultUIProcessCookieStore): 94 * UIProcess/API/APIHTTPCookieStore.h: 95 * UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm: Added. 96 (API::HTTPCookieStore::flushDefaultUIProcessCookieStore): 97 (API::HTTPCookieStore::getAllDefaultUIProcessCookieStoreCookies): 98 (API::HTTPCookieStore::setCookieInDefaultUIProcessCookieStore): 99 (API::HTTPCookieStore::deleteCookieFromDefaultUIProcessCookieStore): 100 (API::HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore): 101 (API::HTTPCookieStore::stopObservingChangesToDefaultUIProcessCookieStore): 102 * UIProcess/WebProcessPool.cpp: 103 (WebKit::WebProcessPool::clearCachedCredentials): 104 * WebKit.xcodeproj/project.pbxproj: 105 * WebProcess/Plugins/PluginView.cpp: 106 (WebKit::PluginView::getAuthenticationInfo): 107 * WebProcess/WebProcess.cpp: 108 (WebKit::WebProcess::deleteWebsiteData): 109 (WebKit::WebProcess::clearCachedCredentials): Deleted. 110 * WebProcess/WebProcess.h: 111 * WebProcess/WebProcess.messages.in: 112 1 113 2019-01-22 Per Arne Vollan <pvollan@apple.com> 2 114 -
trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp
r238771 r240292 47 47 } 48 48 49 WebCookieManager::WebCookieManager( ChildProcess& process)49 WebCookieManager::WebCookieManager(NetworkProcess& process) 50 50 : m_process(process) 51 51 { … … 58 58 { 59 59 HashSet<String> hostnames; 60 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))60 if (auto* storageSession = m_process.storageSession(sessionID)) 61 61 storageSession->getHostnamesWithCookies(hostnames); 62 62 … … 66 66 void WebCookieManager::deleteCookiesForHostname(PAL::SessionID sessionID, const String& hostname) 67 67 { 68 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))68 if (auto* storageSession = m_process.storageSession(sessionID)) 69 69 storageSession->deleteCookiesForHostnames({ hostname }); 70 70 } … … 73 73 void WebCookieManager::deleteAllCookies(PAL::SessionID sessionID) 74 74 { 75 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))75 if (auto* storageSession = m_process.storageSession(sessionID)) 76 76 storageSession->deleteAllCookies(); 77 77 } … … 79 79 void WebCookieManager::deleteCookie(PAL::SessionID sessionID, const Cookie& cookie, CallbackID callbackID) 80 80 { 81 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))81 if (auto* storageSession = m_process.storageSession(sessionID)) 82 82 storageSession->deleteCookie(cookie); 83 83 … … 87 87 void WebCookieManager::deleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time, CallbackID callbackID) 88 88 { 89 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))89 if (auto* storageSession = m_process.storageSession(sessionID)) 90 90 storageSession->deleteAllCookiesModifiedSince(time); 91 91 … … 96 96 { 97 97 Vector<Cookie> cookies; 98 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))98 if (auto* storageSession = m_process.storageSession(sessionID)) 99 99 cookies = storageSession->getAllCookies(); 100 100 … … 105 105 { 106 106 Vector<Cookie> cookies; 107 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))107 if (auto* storageSession = m_process.storageSession(sessionID)) 108 108 cookies = storageSession->getCookies(url); 109 109 … … 113 113 void WebCookieManager::setCookie(PAL::SessionID sessionID, const Cookie& cookie, CallbackID callbackID) 114 114 { 115 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))115 if (auto* storageSession = m_process.storageSession(sessionID)) 116 116 storageSession->setCookie(cookie); 117 117 … … 121 121 void WebCookieManager::setCookies(PAL::SessionID sessionID, const Vector<Cookie>& cookies, const URL& url, const URL& mainDocumentURL, CallbackID callbackID) 122 122 { 123 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))123 if (auto* storageSession = m_process.storageSession(sessionID)) 124 124 storageSession->setCookies(cookies, url, mainDocumentURL); 125 125 … … 135 135 void WebCookieManager::startObservingCookieChanges(PAL::SessionID sessionID) 136 136 { 137 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) {137 if (auto* storageSession = m_process.storageSession(sessionID)) { 138 138 WebCore::startObservingCookieChanges(*storageSession, [this, sessionID] { 139 139 notifyCookiesDidChange(sessionID); … … 144 144 void WebCookieManager::stopObservingCookieChanges(PAL::SessionID sessionID) 145 145 { 146 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))146 if (auto* storageSession = m_process.storageSession(sessionID)) 147 147 WebCore::stopObservingCookieChanges(*storageSession); 148 148 } -
trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h
r239624 r240292 46 46 namespace WebKit { 47 47 48 class ChildProcess;48 class NetworkProcess; 49 49 50 50 class WebCookieManager : public NetworkProcessSupplement, public IPC::MessageReceiver { 51 51 WTF_MAKE_NONCOPYABLE(WebCookieManager); 52 52 public: 53 WebCookieManager( ChildProcess&);53 WebCookieManager(NetworkProcess&); 54 54 ~WebCookieManager(); 55 55 … … 87 87 void stopObservingCookieChanges(PAL::SessionID); 88 88 89 ChildProcess& m_process;89 NetworkProcess& m_process; 90 90 }; 91 91 -
trunk/Source/WebKit/NetworkProcess/Cookies/mac/WebCookieManagerMac.mm
r239143 r240292 27 27 #import "WebCookieManager.h" 28 28 29 #import "NetworkProcess.h" 29 30 #import "NetworkSession.h" 30 31 #import <WebCore/NetworkStorageSession.h> … … 41 42 [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:static_cast<NSHTTPCookieAcceptPolicy>(policy)]; 42 43 43 NetworkStorageSession::forEach([&] (const NetworkStorageSession& networkStorageSession) {44 m_process.forEachNetworkStorageSession([&] (const auto& networkStorageSession) { 44 45 if (auto cookieStorage = networkStorageSession.cookieStorage()) 45 46 CFHTTPCookieStorageSetCookieAcceptPolicy(cookieStorage.get(), policy); -
trunk/Source/WebKit/NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp
r229426 r240292 28 28 29 29 #include "ChildProcess.h" 30 #include "NetworkProcess.h" 30 31 #include <WebCore/NetworkStorageSession.h> 31 32 #include <WebCore/SoupNetworkSession.h> … … 52 53 } 53 54 54 NetworkStorageSession::forEach([soupPolicy] (const NetworkStorageSession& session) {55 m_process.forEachNetworkStorageSession([soupPolicy] (const auto& session) { 55 56 soup_cookie_jar_set_accept_policy(session.cookieStorage(), soupPolicy); 56 57 }); … … 59 60 HTTPCookieAcceptPolicy WebCookieManager::platformGetHTTPCookieAcceptPolicy() 60 61 { 61 switch (soup_cookie_jar_get_accept_policy( NetworkStorageSession::defaultStorageSession().cookieStorage())) {62 switch (soup_cookie_jar_get_accept_policy(m_process.defaultStorageSession().cookieStorage())) { 62 63 case SOUP_COOKIE_JAR_ACCEPT_ALWAYS: 63 64 return HTTPCookieAcceptPolicyAlways; … … 86 87 } 87 88 88 auto& storageSession = NetworkStorageSession::defaultStorageSession();89 auto& storageSession = m_process.defaultStorageSession(); 89 90 soup_cookie_jar_set_accept_policy(jar.get(), soup_cookie_jar_get_accept_policy(storageSession.cookieStorage())); 90 91 storageSession.setCookieStorage(jar.get()); -
trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h
r240030 r240292 97 97 #if PLATFORM(COCOA) 98 98 void registerProtocolClass(NSURLSessionConfiguration*); 99 #endif 100 #if PLATFORM(COCOA) || USE(SOUP) 99 101 static void networkProcessCreated(NetworkProcess&); 100 102 #endif -
trunk/Source/WebKit/NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp
r228373 r240292 37 37 using namespace WebCore; 38 38 39 RefPtr<NetworkProcess>& lastCreatedNetworkProcess() 40 { 41 static NeverDestroyed<RefPtr<NetworkProcess>> networkProcess; 42 return networkProcess.get(); 43 } 44 45 void LegacyCustomProtocolManager::networkProcessCreated(NetworkProcess& networkProcess) 46 { 47 lastCreatedNetworkProcess() = &networkProcess; 48 } 49 39 50 LegacyCustomProtocolManager::WebSoupRequestAsyncData::WebSoupRequestAsyncData(GRefPtr<GTask>&& requestTask, WebKitSoupRequestGeneric* requestGeneric) 40 51 : task(WTFMove(requestTask)) … … 92 103 ASSERT(genericRequestClass); 93 104 genericRequestClass->schemes = const_cast<const char**>(reinterpret_cast<char**>(m_registeredSchemes->pdata)); 94 NetworkStorageSession::forEach([](const WebCore::NetworkStorageSession& session) {105 lastCreatedNetworkProcess()->forEachNetworkStorageSession([](const auto& session) { 95 106 if (auto* soupSession = session.soupNetworkSession()) 96 107 soupSession->setupCustomProtocols(); -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r240243 r240292 409 409 } 410 410 411 static NetworkStorageSession& storageSession( PAL::SessionID sessionID)411 static NetworkStorageSession& storageSession(const NetworkProcess& networkProcess, PAL::SessionID sessionID) 412 412 { 413 413 ASSERT(sessionID.isValid()); 414 414 if (sessionID != PAL::SessionID::defaultSessionID()) { 415 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))415 if (auto* storageSession = networkProcess.storageSession(sessionID)) 416 416 return *storageSession; 417 417 … … 420 420 LOG_ERROR("Non-default storage session was requested, but there was no session for it. Please file a bug unless you just disabled private browsing, in which case it's an expected race."); 421 421 } 422 return NetworkStorageSession::defaultStorageSession();422 return networkProcess.defaultStorageSession(); 423 423 } 424 424 … … 449 449 void NetworkConnectionToWebProcess::cookiesForDOM(PAL::SessionID sessionID, const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<uint64_t> frameID, Optional<uint64_t> pageID, IncludeSecureCookies includeSecureCookies, String& cookieString, bool& secureCookiesAccessed) 450 450 { 451 auto& networkStorageSession = storageSession( sessionID);451 auto& networkStorageSession = storageSession(networkProcess(), sessionID); 452 452 std::tie(cookieString, secureCookiesAccessed) = networkStorageSession.cookiesForDOM(firstParty, sameSiteInfo, url, frameID, pageID, includeSecureCookies); 453 453 #if ENABLE(RESOURCE_LOAD_STATISTICS) && !RELEASE_LOG_DISABLED … … 461 461 void NetworkConnectionToWebProcess::setCookiesFromDOM(PAL::SessionID sessionID, const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<uint64_t> frameID, Optional<uint64_t> pageID, const String& cookieString) 462 462 { 463 auto& networkStorageSession = storageSession( sessionID);463 auto& networkStorageSession = storageSession(networkProcess(), sessionID); 464 464 networkStorageSession.setCookiesFromDOM(firstParty, sameSiteInfo, url, frameID, pageID, cookieString); 465 465 #if ENABLE(RESOURCE_LOAD_STATISTICS) && !RELEASE_LOG_DISABLED … … 473 473 void NetworkConnectionToWebProcess::cookiesEnabled(PAL::SessionID sessionID, bool& result) 474 474 { 475 result = storageSession( sessionID).cookiesEnabled();475 result = storageSession(networkProcess(), sessionID).cookiesEnabled(); 476 476 } 477 477 478 478 void NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue(PAL::SessionID sessionID, const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<uint64_t> frameID, Optional<uint64_t> pageID, IncludeSecureCookies includeSecureCookies, String& cookieString, bool& secureCookiesAccessed) 479 479 { 480 std::tie(cookieString, secureCookiesAccessed) = storageSession( sessionID).cookieRequestHeaderFieldValue(firstParty, sameSiteInfo, url, frameID, pageID, includeSecureCookies);480 std::tie(cookieString, secureCookiesAccessed) = storageSession(networkProcess(), sessionID).cookieRequestHeaderFieldValue(firstParty, sameSiteInfo, url, frameID, pageID, includeSecureCookies); 481 481 } 482 482 483 483 void NetworkConnectionToWebProcess::getRawCookies(PAL::SessionID sessionID, const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, Optional<uint64_t> frameID, Optional<uint64_t> pageID, Vector<Cookie>& result) 484 484 { 485 storageSession( sessionID).getRawCookies(firstParty, sameSiteInfo, url, frameID, pageID, result);485 storageSession(networkProcess(), sessionID).getRawCookies(firstParty, sameSiteInfo, url, frameID, pageID, result); 486 486 } 487 487 488 488 void NetworkConnectionToWebProcess::deleteCookie(PAL::SessionID sessionID, const URL& url, const String& cookieName) 489 489 { 490 storageSession( sessionID).deleteCookie(url, cookieName);490 storageSession(networkProcess(), sessionID).deleteCookie(url, cookieName); 491 491 } 492 492 … … 563 563 { 564 564 #if ENABLE(RESOURCE_LOAD_STATISTICS) 565 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))565 if (auto* storageSession = networkProcess().storageSession(sessionID)) 566 566 storageSession->removeStorageAccessForFrame(frameID, pageID); 567 567 #else … … 575 575 { 576 576 #if ENABLE(RESOURCE_LOAD_STATISTICS) 577 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID))577 if (auto* storageSession = networkProcess().storageSession(sessionID)) 578 578 storageSession->removeStorageAccessForAllFramesOnPage(pageID); 579 579 #else -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r240243 r240292 92 92 #endif 93 93 94 #if USE(SOUP) 95 #include <WebCore/DNSResolveQueueSoup.h> 96 #endif 97 94 98 #if ENABLE(SERVICE_WORKER) 95 99 #include "WebSWServerToContextConnectionMessages.h" … … 143 147 #if ENABLE(LEGACY_CUSTOM_PROTOCOL_MANAGER) 144 148 addSupplement<LegacyCustomProtocolManager>(); 145 #if PLATFORM(COCOA) 149 #endif 150 #if PLATFORM(COCOA) || USE(SOUP) 146 151 LegacyCustomProtocolManager::networkProcessCreated(*this); 147 #endif148 152 #endif 149 153 #if ENABLE(PROXIMITY_NETWORKING) 150 154 addSupplement<NetworkProximityManager>(); 155 #endif 156 157 #if USE(SOUP) 158 DNSResolveQueueSoup::setGlobalDefaultNetworkStorageSessionAccessor([this] { 159 return defaultStorageSession(); 160 }); 161 defaultStorageSession().clearSoupNetworkSessionAndCookieStorage(); 151 162 #endif 152 163 … … 303 314 304 315 if (parameters.shouldUseTestingNetworkSession) 305 NetworkStorageSession::switchToNewTestingSession();316 switchToNewTestingSession(); 306 317 307 318 SandboxExtension::consumePermanently(parameters.defaultDataStoreParameters.networkSessionParameters.resourceLoadStatisticsDirectoryExtensionHandle); … … 437 448 void NetworkProcess::clearCachedCredentials() 438 449 { 439 NetworkStorageSession::defaultStorageSession().credentialStorage().clearCredentials();450 defaultStorageSession().credentialStorage().clearCredentials(); 440 451 if (auto* networkSession = this->networkSession(PAL::SessionID::defaultSessionID())) 441 452 networkSession->clearCredentials(); … … 458 469 } 459 470 471 void NetworkProcess::switchToNewTestingSession() 472 { 473 // Session name should be short enough for shared memory region name to be under the limit, otehrwise sandbox rules won't work (see <rdar://problem/13642852>). 474 String sessionName = String::format("WebKit Test-%u", static_cast<uint32_t>(getCurrentProcessID())); 475 476 auto session = adoptCF(WebCore::createPrivateStorageSession(sessionName.createCFString().get())); 477 478 #if PLATFORM(COCOA) 479 RetainPtr<CFHTTPCookieStorageRef> cookieStorage; 480 if (WebCore::NetworkStorageSession::processMayUseCookieAPI()) { 481 ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies)); 482 if (session) 483 cookieStorage = adoptCF(_CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, session.get())); 484 } 485 486 m_defaultNetworkStorageSession = std::make_unique<WebCore::NetworkStorageSession>(PAL::SessionID::defaultSessionID(), WTFMove(session), WTFMove(cookieStorage)); 487 #elif USE(SOUP) 488 m_defaultNetworkStorageSession = std::make_unique<WebCore::NetworkStorageSession>(PAL::SessionID::defaultSessionID(), std::make_unique<WebCore::SoupNetworkSession>()); 489 #endif 490 } 491 492 #if PLATFORM(COCOA) 493 void NetworkProcess::ensureSession(const PAL::SessionID& sessionID, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&& cookieStorage) 494 #else 495 void NetworkProcess::ensureSession(const PAL::SessionID& sessionID, const String& identifierBase) 496 #endif 497 { 498 auto addResult = m_networkStorageSessions.add(sessionID, nullptr); 499 if (!addResult.isNewEntry) 500 return; 501 502 #if PLATFORM(COCOA) 503 RetainPtr<CFURLStorageSessionRef> storageSession; 504 RetainPtr<CFStringRef> cfIdentifier = String(identifierBase + ".PrivateBrowsing").createCFString(); 505 if (sessionID.isEphemeral()) 506 storageSession = adoptCF(createPrivateStorageSession(cfIdentifier.get())); 507 else 508 storageSession = WebCore::NetworkStorageSession::createCFStorageSessionForIdentifier(cfIdentifier.get()); 509 510 if (NetworkStorageSession::processMayUseCookieAPI()) { 511 ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies)); 512 if (!cookieStorage && storageSession) 513 cookieStorage = adoptCF(_CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, storageSession.get())); 514 } 515 516 addResult.iterator->value = std::make_unique<NetworkStorageSession>(sessionID, WTFMove(storageSession), WTFMove(cookieStorage)); 517 #elif USE(SOUP) 518 addResult.iterator->value = std::make_unique<NetworkStorageSession>(sessionID, std::make_unique<SoupNetworkSession>(sessionID)); 519 #endif 520 } 521 522 WebCore::NetworkStorageSession* NetworkProcess::storageSession(const PAL::SessionID& sessionID) const 523 { 524 if (sessionID == PAL::SessionID::defaultSessionID()) 525 return &defaultStorageSession(); 526 return m_networkStorageSessions.get(sessionID); 527 } 528 529 WebCore::NetworkStorageSession& NetworkProcess::defaultStorageSession() const 530 { 531 if (!m_defaultNetworkStorageSession) 532 m_defaultNetworkStorageSession = std::make_unique<WebCore::NetworkStorageSession>(PAL::SessionID::defaultSessionID()); 533 return *m_defaultNetworkStorageSession; 534 } 535 536 void NetworkProcess::forEachNetworkStorageSession(const Function<void(WebCore::NetworkStorageSession&)>& functor) 537 { 538 functor(defaultStorageSession()); 539 for (auto& storageSession : m_networkStorageSessions.values()) 540 functor(*storageSession); 541 } 542 460 543 NetworkSession* NetworkProcess::networkSession(const PAL::SessionID& sessionID) const 461 544 { … … 472 555 if (auto session = m_networkSessions.take(sessionID)) 473 556 session->get().invalidateAndCancel(); 474 NetworkStorageSession::destroySession(sessionID);557 m_networkStorageSessions.remove(sessionID); 475 558 m_sessionsControlledByAutomation.remove(sessionID); 476 559 CacheStorage::Engine::destroyEngine(*this, sessionID); … … 512 595 void NetworkProcess::updatePrevalentDomainsToBlockCookiesFor(PAL::SessionID sessionID, const Vector<String>& domainsToBlock, uint64_t contextId) 513 596 { 514 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))597 if (auto* networkStorageSession = storageSession(sessionID)) 515 598 networkStorageSession->setPrevalentDomainsToBlockCookiesFor(domainsToBlock); 516 599 parentProcessConnection()->send(Messages::NetworkProcessProxy::DidUpdateBlockCookies(contextId), 0); … … 546 629 void NetworkProcess::setAgeCapForClientSideCookies(PAL::SessionID sessionID, Optional<Seconds> seconds, uint64_t contextId) 547 630 { 548 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))631 if (auto* networkStorageSession = storageSession(sessionID)) 549 632 networkStorageSession->setAgeCapForClientSideCookies(seconds); 550 633 parentProcessConnection()->send(Messages::NetworkProcessProxy::DidSetAgeCapForClientSideCookies(contextId), 0); … … 757 840 void NetworkProcess::hasStorageAccessForFrame(PAL::SessionID sessionID, const String& resourceDomain, const String& firstPartyDomain, uint64_t frameID, uint64_t pageID, uint64_t contextId) 758 841 { 759 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))842 if (auto* networkStorageSession = storageSession(sessionID)) 760 843 parentProcessConnection()->send(Messages::NetworkProcessProxy::StorageAccessOperationResult(networkStorageSession->hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID), contextId), 0); 761 844 else … … 765 848 void NetworkProcess::getAllStorageAccessEntries(PAL::SessionID sessionID, uint64_t contextId) 766 849 { 767 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))850 if (auto* networkStorageSession = storageSession(sessionID)) 768 851 parentProcessConnection()->send(Messages::NetworkProcessProxy::AllStorageAccessEntriesResult(networkStorageSession->getAllStorageAccessEntries(), contextId), 0); 769 852 else … … 795 878 { 796 879 bool isStorageGranted = false; 797 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID)) {880 if (auto* networkStorageSession = storageSession(sessionID)) { 798 881 networkStorageSession->grantStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID); 799 882 ASSERT(networkStorageSession->hasStorageAccess(resourceDomain, firstPartyDomain, frameID, pageID)); … … 844 927 void NetworkProcess::removeAllStorageAccess(PAL::SessionID sessionID, uint64_t contextId) 845 928 { 846 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))929 if (auto* networkStorageSession = storageSession(sessionID)) 847 930 networkStorageSession->removeAllStorageAccess(); 848 931 else … … 853 936 void NetworkProcess::removePrevalentDomains(PAL::SessionID sessionID, const Vector<String>& domains) 854 937 { 855 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))938 if (auto* networkStorageSession = storageSession(sessionID)) 856 939 networkStorageSession->removePrevalentDomains(domains); 857 940 } … … 859 942 void NetworkProcess::setCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID, Seconds seconds, uint64_t contextId) 860 943 { 861 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))944 if (auto* networkStorageSession = storageSession(sessionID)) 862 945 networkStorageSession->setCacheMaxAgeCapForPrevalentResources(Seconds { seconds }); 863 946 else … … 937 1020 void NetworkProcess::resetCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID, uint64_t contextId) 938 1021 { 939 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1022 if (auto* networkStorageSession = storageSession(sessionID)) 940 1023 networkStorageSession->resetCacheMaxAgeCapForPrevalentResources(); 941 1024 else … … 1014 1097 1015 1098 if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { 1016 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1099 if (auto* networkStorageSession = storageSession(sessionID)) 1017 1100 networkStorageSession->getHostnamesWithCookies(callbackAggregator->m_websiteData.hostNamesWithCookies); 1018 1101 } 1019 1102 1020 1103 if (websiteDataTypes.contains(WebsiteDataType::Credentials)) { 1021 if ( NetworkStorageSession::storageSession(sessionID))1022 callbackAggregator->m_websiteData.originsWithCredentials = NetworkStorageSession::storageSession(sessionID)->credentialStorage().originsWithCredentials();1104 if (storageSession(sessionID)) 1105 callbackAggregator->m_websiteData.originsWithCredentials = storageSession(sessionID)->credentialStorage().originsWithCredentials(); 1023 1106 } 1024 1107 … … 1031 1114 #if PLATFORM(COCOA) 1032 1115 if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { 1033 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1116 if (auto* networkStorageSession = storageSession(sessionID)) 1034 1117 getHostNamesWithHSTSCache(*networkStorageSession, callbackAggregator->m_websiteData.hostNamesWithHSTSCache); 1035 1118 } … … 1070 1153 #if PLATFORM(COCOA) 1071 1154 if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { 1072 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1155 if (auto* networkStorageSession = storageSession(sessionID)) 1073 1156 clearHSTSCache(*networkStorageSession, modifiedSince); 1074 1157 } … … 1076 1159 1077 1160 if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { 1078 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1161 if (auto* networkStorageSession = storageSession(sessionID)) 1079 1162 networkStorageSession->deleteAllCookiesModifiedSince(modifiedSince); 1080 1163 } 1081 1164 1082 1165 if (websiteDataTypes.contains(WebsiteDataType::Credentials)) { 1083 if ( NetworkStorageSession::storageSession(sessionID))1084 NetworkStorageSession::storageSession(sessionID)->credentialStorage().clearCredentials();1166 if (auto* session = storageSession(sessionID)) 1167 session->credentialStorage().clearCredentials(); 1085 1168 } 1086 1169 … … 1150 1233 { 1151 1234 if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { 1152 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1235 if (auto* networkStorageSession = storageSession(sessionID)) 1153 1236 networkStorageSession->deleteCookiesForHostnames(cookieHostNames); 1154 1237 } … … 1156 1239 #if PLATFORM(COCOA) 1157 1240 if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { 1158 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1241 if (auto* networkStorageSession = storageSession(sessionID)) 1159 1242 deleteHSTSCacheForHostNames(*networkStorageSession, HSTSCacheHostNames); 1160 1243 } … … 1254 1337 Vector<String> hostnamesWithCookiesToDelete; 1255 1338 if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { 1256 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID)) {1339 if (auto* networkStorageSession = storageSession(sessionID)) { 1257 1340 networkStorageSession->getHostnamesWithCookies(websiteDataStore.hostNamesWithCookies); 1258 1341 hostnamesWithCookiesToDelete = filterForTopLevelDomains(topPrivatelyControlledDomains, websiteDataStore.hostNamesWithCookies); … … 1264 1347 #if PLATFORM(COCOA) 1265 1348 if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { 1266 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID)) {1349 if (auto* networkStorageSession = storageSession(sessionID)) { 1267 1350 getHostNamesWithHSTSCache(*networkStorageSession, websiteDataStore.hostNamesWithHSTSCache); 1268 1351 hostnamesWithHSTSToDelete = filterForTopLevelDomains(topPrivatelyControlledDomains, websiteDataStore.hostNamesWithHSTSCache); … … 1275 1358 // FIXME: No API to delete credentials by origin 1276 1359 if (websiteDataTypes.contains(WebsiteDataType::Credentials)) { 1277 if ( NetworkStorageSession::storageSession(sessionID))1278 websiteDataStore.originsWithCredentials = NetworkStorageSession::storageSession(sessionID)->credentialStorage().originsWithCredentials();1360 if (storageSession(sessionID)) 1361 websiteDataStore.originsWithCredentials = storageSession(sessionID)->credentialStorage().originsWithCredentials(); 1279 1362 } 1280 1363 */ … … 1386 1469 Vector<String> hostnamesWithCookiesToDelete; 1387 1470 if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { 1388 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1471 if (auto* networkStorageSession = storageSession(sessionID)) 1389 1472 networkStorageSession->getHostnamesWithCookies(websiteDataStore.hostNamesWithCookies); 1390 1473 } … … 1393 1476 #if PLATFORM(COCOA) 1394 1477 if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { 1395 if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))1478 if (auto* networkStorageSession = storageSession(sessionID)) 1396 1479 getHostNamesWithHSTSCache(*networkStorageSession, websiteDataStore.hostNamesWithHSTSCache); 1397 1480 } … … 1399 1482 1400 1483 if (websiteDataTypes.contains(WebsiteDataType::Credentials)) { 1401 if ( NetworkStorageSession::storageSession(sessionID))1402 websiteDataStore.originsWithCredentials = NetworkStorageSession::storageSession(sessionID)->credentialStorage().originsWithCredentials();1484 if (auto* networkStorageSession = storageSession(sessionID)) 1485 websiteDataStore.originsWithCredentials = networkStorageSession->credentialStorage().originsWithCredentials(); 1403 1486 } 1404 1487 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r240243 r240292 47 47 #include <wtf/WeakPtr.h> 48 48 49 #if PLATFORM(COCOA) 50 typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef; 51 #endif 52 49 53 namespace IPC { 50 54 class FormDataReference; … … 133 137 void destroySession(const PAL::SessionID&); 134 138 139 void forEachNetworkStorageSession(const Function<void(WebCore::NetworkStorageSession&)>&); 140 WebCore::NetworkStorageSession* storageSession(const PAL::SessionID&) const; 141 WebCore::NetworkStorageSession& defaultStorageSession() const; 142 void switchToNewTestingSession(); 143 #if PLATFORM(COCOA) 144 void ensureSession(const PAL::SessionID&, const String& identifier, RetainPtr<CFHTTPCookieStorageRef>&&); 145 #else 146 void ensureSession(const PAL::SessionID&, const String& identifier); 147 #endif 148 135 149 bool canHandleHTTPSServerTrustEvaluation() const { return m_canHandleHTTPSServerTrustEvaluation; } 136 150 … … 427 441 HashMap<PAL::SessionID, Vector<CacheStorageParametersCallback>> m_cacheStorageParametersCallbacks; 428 442 HashMap<PAL::SessionID, Ref<NetworkSession>> m_networkSessions; 443 HashMap<PAL::SessionID, std::unique_ptr<WebCore::NetworkStorageSession>> m_networkStorageSessions; 444 mutable std::unique_ptr<WebCore::NetworkStorageSession> m_defaultNetworkStorageSession; 429 445 430 446 #if PLATFORM(COCOA) -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r240089 r240292 610 610 611 611 if (!existingCacheEntryMatchesNewResponse) { 612 if (auto networkStorageSession = WebCore::NetworkStorageSession::storageSession(sessionID()))612 if (auto* networkStorageSession = m_connection->networkProcess().storageSession(sessionID())) 613 613 return networkStorageSession->maxAgeCacheCap(request); 614 614 } … … 971 971 ASSERT(shouldLogCookieInformation(m_connection, sessionID())); 972 972 973 auto networkStorageSession = WebCore::NetworkStorageSession::storageSession(sessionID());973 auto* networkStorageSession = m_connection->networkProcess().storageSession(sessionID()); 974 974 ASSERT(networkStorageSession); 975 975 -
trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp
r240243 r240292 61 61 NetworkStorageSession& NetworkSession::networkStorageSession() const 62 62 { 63 auto* storageSession = NetworkStorageSession::storageSession(m_sessionID);63 auto* storageSession = m_networkProcess->storageSession(m_sessionID); 64 64 RELEASE_ASSERT(storageSession); 65 65 return *storageSession; -
trunk/Source/WebKit/NetworkProcess/NetworkStorageSessionProvider.h
r240117 r240292 46 46 { 47 47 if (m_networkProcess) 48 return WebCore::NetworkStorageSession::storageSession(m_sessionID);48 return m_networkProcess->storageSession(m_sessionID); 49 49 return nullptr; 50 50 } -
trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
r239974 r240292 31 31 #include "NetworkCacheStatistics.h" 32 32 #include "NetworkCacheStorage.h" 33 #include "NetworkProcess.h" 33 34 #include <WebCore/CacheValidation.h> 34 35 #include <WebCore/FileSystem.h> … … 185 186 } 186 187 187 static UseDecision makeUseDecision( const Entry& entry, const WebCore::ResourceRequest& request)188 static UseDecision makeUseDecision(NetworkProcess& networkProcess, const Entry& entry, const WebCore::ResourceRequest& request) 188 189 { 189 190 // The request is conditional so we force revalidation from the network. We merely check the disk cache … … 192 193 return UseDecision::Validate; 193 194 194 if (!WebCore::verifyVaryingRequestHeaders( WebCore::NetworkStorageSession::defaultStorageSession(), entry.varyingRequestHeaders(), request))195 if (!WebCore::verifyVaryingRequestHeaders(networkProcess.defaultStorageSession(), entry.varyingRequestHeaders(), request)) 195 196 return UseDecision::NoDueToVaryingHeaderMismatch; 196 197 … … 306 307 #if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION) 307 308 if (canUseSpeculativeRevalidation && m_speculativeLoadManager->canRetrieve(storageKey, request, frameID)) { 308 m_speculativeLoadManager->retrieve(storageKey, [ request, completionHandler = WTFMove(completionHandler), info = WTFMove(info)](std::unique_ptr<Entry> entry) mutable {309 m_speculativeLoadManager->retrieve(storageKey, [networkProcess = makeRef(networkProcess()), request, completionHandler = WTFMove(completionHandler), info = WTFMove(info)](std::unique_ptr<Entry> entry) mutable { 309 310 info.wasSpeculativeLoad = true; 310 if (entry && WebCore::verifyVaryingRequestHeaders( WebCore::NetworkStorageSession::defaultStorageSession(), entry->varyingRequestHeaders(), request))311 if (entry && WebCore::verifyVaryingRequestHeaders(networkProcess->defaultStorageSession(), entry->varyingRequestHeaders(), request)) 311 312 completeRetrieve(WTFMove(completionHandler), WTFMove(entry), info); 312 313 else … … 334 335 auto entry = Entry::decodeStorageRecord(*record); 335 336 336 auto useDecision = entry ? makeUseDecision( *entry, request) : UseDecision::NoDueToDecodeFailure;337 auto useDecision = entry ? makeUseDecision(networkProcess(), *entry, request) : UseDecision::NoDueToDecodeFailure; 337 338 switch (useDecision) { 338 339 case UseDecision::Use: … … 365 366 std::unique_ptr<Entry> Cache::makeEntry(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData) 366 367 { 367 return std::make_unique<Entry>(makeCacheKey(request), response, WTFMove(responseData), WebCore::collectVaryingRequestHeaders( WebCore::NetworkStorageSession::defaultStorageSession(), request, response));368 return std::make_unique<Entry>(makeCacheKey(request), response, WTFMove(responseData), WebCore::collectVaryingRequestHeaders(networkProcess().defaultStorageSession(), request, response)); 368 369 } 369 370 370 371 std::unique_ptr<Entry> Cache::makeRedirectEntry(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& redirectRequest) 371 372 { 372 return std::make_unique<Entry>(makeCacheKey(request), response, redirectRequest, WebCore::collectVaryingRequestHeaders( WebCore::NetworkStorageSession::defaultStorageSession(), request, response));373 return std::make_unique<Entry>(makeCacheKey(request), response, redirectRequest, WebCore::collectVaryingRequestHeaders(networkProcess().defaultStorageSession(), request, response)); 373 374 } 374 375 … … 454 455 WebCore::updateResponseHeadersAfterRevalidation(response, validatingResponse); 455 456 456 auto updateEntry = std::make_unique<Entry>(existingEntry.key(), response, existingEntry.buffer(), WebCore::collectVaryingRequestHeaders( WebCore::NetworkStorageSession::defaultStorageSession(), originalRequest, response));457 auto updateEntry = std::make_unique<Entry>(existingEntry.key(), response, existingEntry.buffer(), WebCore::collectVaryingRequestHeaders(networkProcess().defaultStorageSession(), originalRequest, response)); 457 458 auto updateRecord = updateEntry->encodeAsStorageRecord(); 458 459 -
trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp
r239815 r240292 75 75 Optional<Seconds> maxAgeCap; 76 76 #if ENABLE(RESOURCE_LOAD_STATISTICS) 77 if (auto networkStorageSession = WebCore::NetworkStorageSession::storageSession(PAL::SessionID::defaultSessionID()))77 if (auto* networkStorageSession = m_cache->networkProcess().storageSession(PAL::SessionID::defaultSessionID())) 78 78 maxAgeCap = networkStorageSession->maxAgeCacheCap(request); 79 79 #endif -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm
r239815 r240292 232 232 #if HAVE(FOUNDATION_WITH_SAVE_COOKIES_WITH_COMPLETION_HANDLER) 233 233 RefPtr<CallbackAggregator> callbackAggregator = CallbackAggregator::create(WTFMove(completionHander)); 234 WebCore::NetworkStorageSession::forEach([&] (auto& networkStorageSession) {234 forEachNetworkStorageSession([&] (auto& networkStorageSession) { 235 235 saveCookies(networkStorageSession.nsCookieStorage(), [callbackAggregator] { }); 236 236 }); -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
r240243 r240292 448 448 bool shouldIgnoreHSTS = false; 449 449 #if HAVE(CFNETWORK_WITH_IGNORE_HSTS) && ENABLE(RESOURCE_LOAD_STATISTICS) 450 shouldIgnoreHSTS = schemeWasUpgradedDueToDynamicHSTS(request) && WebCore::NetworkStorageSession::storageSession(_session->sessionID())->shouldBlockCookies(request, networkDataTask->frameID(), networkDataTask->pageID());450 shouldIgnoreHSTS = schemeWasUpgradedDueToDynamicHSTS(request) && _session->networkProcess().storageSession(_session->sessionID())->shouldBlockCookies(request, networkDataTask->frameID(), networkDataTask->pageID()); 451 451 if (shouldIgnoreHSTS) { 452 452 request = downgradeRequest(request); … … 481 481 bool shouldIgnoreHSTS = false; 482 482 #if HAVE(CFNETWORK_WITH_IGNORE_HSTS) && ENABLE(RESOURCE_LOAD_STATISTICS) 483 shouldIgnoreHSTS = schemeWasUpgradedDueToDynamicHSTS(request) && WebCore::NetworkStorageSession::storageSession(_session->sessionID())->shouldBlockCookies(request, networkDataTask->frameID(), networkDataTask->pageID());483 shouldIgnoreHSTS = schemeWasUpgradedDueToDynamicHSTS(request) && _session->networkProcess().storageSession(_session->sessionID())->shouldBlockCookies(request, networkDataTask->frameID(), networkDataTask->pageID()); 484 484 if (shouldIgnoreHSTS) { 485 485 request = downgradeRequest(request); … … 552 552 auto completionHandlerCopy = Block_copy(completionHandler); 553 553 auto sessionID = _session->sessionID(); 554 auto challengeCompletionHandler = [ completionHandlerCopy, sessionID, authenticationChallenge, taskIdentifier, partition = networkDataTask->partition()](WebKit::AuthenticationChallengeDisposition disposition, const WebCore::Credential& credential)554 auto challengeCompletionHandler = [networkProcess = makeRef(_session->networkProcess()), completionHandlerCopy, sessionID, authenticationChallenge, taskIdentifier, partition = networkDataTask->partition()](WebKit::AuthenticationChallengeDisposition disposition, const WebCore::Credential& credential) 555 555 { 556 556 #if !LOG_DISABLED … … 569 569 if (authenticationChallenge.failureResponse().httpStatusCode() == 401) 570 570 urlToStore = authenticationChallenge.failureResponse().url(); 571 if (auto storageSession = WebCore::NetworkStorageSession::storageSession(sessionID))571 if (auto storageSession = networkProcess->storageSession(sessionID)) 572 572 storageSession->credentialStorage().set(partition, nonPersistentCredential, authenticationChallenge.protectionSpace(), urlToStore); 573 573 else … … 917 917 #endif 918 918 919 auto* storageSession = WebCore::NetworkStorageSession::storageSession(parameters.sessionID);919 auto* storageSession = networkProcess.storageSession(parameters.sessionID); 920 920 RELEASE_ASSERT(storageSession); 921 921 -
trunk/Source/WebKit/NetworkProcess/curl/RemoteNetworkingContextCurl.cpp
r239815 r240292 39 39 { 40 40 auto sessionID = parameters.networkSessionParameters.sessionID; 41 if ( NetworkStorageSession::storageSession(sessionID))41 if (networkProcess.storageSession(sessionID)) 42 42 return; 43 43 44 NetworkStorageSession::ensureSession(sessionID, String::number(sessionID.sessionID()));44 networkProcess.ensureSession(sessionID, String::number(sessionID.sessionID())); 45 45 networkProcess.setSession(sessionID, NetworkSession::create(networkProcess, WTFMove(parameters.networkSessionParameters))); 46 46 } -
trunk/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm
r239815 r240292 45 45 { 46 46 auto sessionID = parameters.networkSessionParameters.sessionID; 47 if ( NetworkStorageSession::storageSession(sessionID))47 if (networkProcess.storageSession(sessionID)) 48 48 return; 49 49 … … 59 59 uiProcessCookieStorage = cookieStorageFromIdentifyingData(parameters.uiProcessCookieStorageIdentifier); 60 60 61 NetworkStorageSession::ensureSession(sessionID, base + '.' + String::number(sessionID.sessionID()), WTFMove(uiProcessCookieStorage));61 networkProcess.ensureSession(sessionID, base + '.' + String::number(sessionID.sessionID()), WTFMove(uiProcessCookieStorage)); 62 62 63 auto* session = NetworkStorageSession::storageSession(sessionID);63 auto* session = networkProcess.storageSession(sessionID); 64 64 for (const auto& cookie : parameters.pendingCookies) 65 65 session->setCookie(cookie); -
trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessMainSoup.cpp
r219290 r240292 38 38 void platformFinalize() override 39 39 { 40 WebCore::NetworkStorageSession::defaultStorageSession().clearSoupNetworkSessionAndCookieStorage();41 40 } 42 41 }; -
trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp
r239740 r240292 96 96 auto acceptLanguages = buildAcceptLanguages(languages); 97 97 SoupNetworkSession::setInitialAcceptLanguages(acceptLanguages); 98 NetworkStorageSession::forEach([&acceptLanguages](const WebCore::NetworkStorageSession& session) {98 forEachNetworkStorageSession([&acceptLanguages](const auto& session) { 99 99 if (auto* soupSession = session.soupNetworkSession()) 100 100 soupSession->setAcceptLanguages(acceptLanguages); … … 169 169 { 170 170 SoupNetworkSession::setProxySettings(settings); 171 NetworkStorageSession::forEach([](const NetworkStorageSession& session) {171 forEachNetworkStorageSession([](const auto& session) { 172 172 if (auto* soupSession = session.soupNetworkSession()) 173 173 soupSession->setupProxy(); -
trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp
r240019 r240292 47 47 NetworkSessionSoup::~NetworkSessionSoup() 48 48 { 49 if (auto* storageSession = NetworkStorageSession::storageSession(m_sessionID))49 if (auto* storageSession = networkProcess().storageSession(m_sessionID)) 50 50 storageSession->setCookieObserverHandler(nullptr); 51 51 } -
trunk/Source/WebKit/NetworkProcess/soup/RemoteNetworkingContextSoup.cpp
r239815 r240292 39 39 { 40 40 auto sessionID = parameters.networkSessionParameters.sessionID; 41 if ( NetworkStorageSession::storageSession(sessionID))41 if (networkProcess.storageSession(sessionID)) 42 42 return; 43 43 44 NetworkStorageSession::ensureSession(sessionID, String::number(sessionID.sessionID()));44 networkProcess.ensureSession(sessionID, String::number(sessionID.sessionID())); 45 45 networkProcess.setSession(sessionID, NetworkSession::create(networkProcess, WTFMove(parameters.networkSessionParameters))); 46 46 } -
trunk/Source/WebKit/SourcesCocoa.txt
r240288 r240292 256 256 UIProcess/API/Cocoa/APIAttachmentCocoa.mm 257 257 UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm 258 UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm 258 259 UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm 259 260 UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm -
trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp
r232522 r240292 50 50 ASSERT(!m_observedCookieManagerProxy); 51 51 ASSERT(!m_cookieManagerProxyObserver); 52 ASSERT(!m_observingUIProcessCookies);53 52 54 53 unregisterForNewProcessPoolNotifications(); 55 54 } 56 55 57 void HTTPCookieStore::cookies( Function<void(const Vector<WebCore::Cookie>&)>&& completionHandler)56 void HTTPCookieStore::cookies(CompletionHandler<void(const Vector<WebCore::Cookie>&)>&& completionHandler) 58 57 { 59 58 auto* pool = m_owningDataStore->processPoolForCookieStorageOperations(); … … 61 60 Vector<WebCore::Cookie> allCookies; 62 61 if (m_owningDataStore->sessionID() == PAL::SessionID::defaultSessionID()) 63 allCookies = WebCore::NetworkStorageSession::defaultStorageSession().getAllCookies();62 allCookies = getAllDefaultUIProcessCookieStoreCookies(); 64 63 allCookies.appendVector(m_owningDataStore->pendingCookies()); 65 64 66 callOnMainThread([completionHandler = WTFMove(completionHandler), allCookies] (){65 callOnMainThread([completionHandler = WTFMove(completionHandler), allCookies] () mutable { 67 66 completionHandler(allCookies); 68 67 }); … … 71 70 72 71 auto* cookieManager = pool->supplement<WebKit::WebCookieManagerProxy>(); 73 cookieManager->getAllCookies(m_owningDataStore->sessionID(), [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)] (const Vector<WebCore::Cookie>& cookies, CallbackBase::Error error){72 cookieManager->getAllCookies(m_owningDataStore->sessionID(), [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)] (const Vector<WebCore::Cookie>& cookies, CallbackBase::Error error) mutable { 74 73 completionHandler(cookies); 75 74 }); 76 75 } 77 76 78 void HTTPCookieStore::setCookie(const WebCore::Cookie& cookie, Function<void()>&& completionHandler)77 void HTTPCookieStore::setCookie(const WebCore::Cookie& cookie, CompletionHandler<void()>&& completionHandler) 79 78 { 80 79 auto* pool = m_owningDataStore->processPoolForCookieStorageOperations(); … … 82 81 // FIXME: pendingCookies used for defaultSession because session cookies cannot be propagated to Network Process with uiProcessCookieStorageIdentifier. 83 82 if (m_owningDataStore->sessionID() == PAL::SessionID::defaultSessionID() && !cookie.session) 84 WebCore::NetworkStorageSession::defaultStorageSession().setCookie(cookie);83 setCookieInDefaultUIProcessCookieStore(cookie); 85 84 else 86 85 m_owningDataStore->addPendingCookie(cookie); 87 86 88 callOnMainThread([completionHandler = WTFMove(completionHandler)] (){87 callOnMainThread([completionHandler = WTFMove(completionHandler)] () mutable { 89 88 completionHandler(); 90 89 }); … … 93 92 94 93 auto* cookieManager = pool->supplement<WebKit::WebCookieManagerProxy>(); 95 cookieManager->setCookie(m_owningDataStore->sessionID(), cookie, [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)] (CallbackBase::Error error){94 cookieManager->setCookie(m_owningDataStore->sessionID(), cookie, [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)] (CallbackBase::Error error) mutable { 96 95 completionHandler(); 97 96 }); 98 97 } 99 98 100 void HTTPCookieStore::deleteCookie(const WebCore::Cookie& cookie, Function<void()>&& completionHandler)99 void HTTPCookieStore::deleteCookie(const WebCore::Cookie& cookie, CompletionHandler<void()>&& completionHandler) 101 100 { 102 101 auto* pool = m_owningDataStore->processPoolForCookieStorageOperations(); 103 102 if (!pool) { 104 103 if (m_owningDataStore->sessionID() == PAL::SessionID::defaultSessionID() && !cookie.session) 105 WebCore::NetworkStorageSession::defaultStorageSession().deleteCookie(cookie);104 deleteCookieFromDefaultUIProcessCookieStore(cookie); 106 105 else 107 106 m_owningDataStore->removePendingCookie(cookie); 108 107 109 callOnMainThread([completionHandler = WTFMove(completionHandler)] (){108 callOnMainThread([completionHandler = WTFMove(completionHandler)] () mutable { 110 109 completionHandler(); 111 110 }); … … 114 113 115 114 auto* cookieManager = pool->supplement<WebKit::WebCookieManagerProxy>(); 116 cookieManager->deleteCookie(m_owningDataStore->sessionID(), cookie, [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)](CallbackBase::Error error) {115 cookieManager->deleteCookie(m_owningDataStore->sessionID(), cookie, [pool = WTFMove(pool), completionHandler = WTFMove(completionHandler)](CallbackBase::Error error) mutable { 117 116 completionHandler(); 118 117 }); … … 157 156 158 157 // Listen for cookie notifications in the UIProcess in the meantime. 159 WebCore::startObservingCookieChanges(WebCore::NetworkStorageSession::defaultStorageSession(),[this] () {158 startObservingChangesToDefaultUIProcessCookieStore([this] () { 160 159 cookiesDidChange(); 161 160 }); 162 161 163 162 m_observingUIProcessCookies = true; 164 165 163 return; 166 164 } … … 181 179 182 180 if (m_observingUIProcessCookies) 183 WebCore::stopObservingCookieChanges(WebCore::NetworkStorageSession::defaultStorageSession());181 stopObservingChangesToDefaultUIProcessCookieStore(); 184 182 185 183 if (m_processPoolCreationListenerIdentifier) … … 222 220 // Now that an associated process pool exists, we need to flush the UI process cookie store 223 221 // to make sure any changes are reflected within the new process pool. 224 WebCore::NetworkStorageSession::defaultStorageSession().flushCookieStore();222 flushDefaultUIProcessCookieStore(); 225 223 newProcessPool.ensureNetworkProcess(); 226 224 … … 241 239 } 242 240 241 #if !PLATFORM(COCOA) 242 void HTTPCookieStore::flushDefaultUIProcessCookieStore() { } 243 Vector<WebCore::Cookie> HTTPCookieStore::getAllDefaultUIProcessCookieStoreCookies() { return { }; } 244 void HTTPCookieStore::setCookieInDefaultUIProcessCookieStore(const WebCore::Cookie&) { } 245 void HTTPCookieStore::deleteCookieFromDefaultUIProcessCookieStore(const WebCore::Cookie&) { } 246 void HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore(Function<void()>&&) { } 247 void HTTPCookieStore::stopObservingChangesToDefaultUIProcessCookieStore() { } 248 #endif 249 243 250 } // namespace API -
trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.h
r238771 r240292 29 29 #include "HTTPCookieAcceptPolicy.h" 30 30 #include <WebCore/Cookie.h> 31 #include <wtf/CompletionHandler.h> 31 32 #include <wtf/Forward.h> 32 #include <wtf/Function.h>33 33 #include <wtf/HashSet.h> 34 34 35 35 namespace WebCore { 36 36 struct Cookie; 37 class CookieStorageObserver; 37 38 } 38 39 … … 56 57 virtual ~HTTPCookieStore(); 57 58 58 void cookies( Function<void (const Vector<WebCore::Cookie>&)>&& completionHandler);59 void setCookie(const WebCore::Cookie&, Function<void ()>&& completionHandler);60 void deleteCookie(const WebCore::Cookie&, Function<void ()>&& completionHandler);59 void cookies(CompletionHandler<void(const Vector<WebCore::Cookie>&)>&&); 60 void setCookie(const WebCore::Cookie&, CompletionHandler<void()>&&); 61 void deleteCookie(const WebCore::Cookie&, CompletionHandler<void()>&&); 61 62 62 63 class Observer { … … 78 79 void unregisterForNewProcessPoolNotifications(); 79 80 81 static void flushDefaultUIProcessCookieStore(); 82 static Vector<WebCore::Cookie> getAllDefaultUIProcessCookieStoreCookies(); 83 static void setCookieInDefaultUIProcessCookieStore(const WebCore::Cookie&); 84 static void deleteCookieFromDefaultUIProcessCookieStore(const WebCore::Cookie&); 85 void startObservingChangesToDefaultUIProcessCookieStore(Function<void()>&&); 86 void stopObservingChangesToDefaultUIProcessCookieStore(); 87 80 88 Ref<WebKit::WebsiteDataStore> m_owningDataStore; 81 89 HashSet<Observer*> m_observers; … … 86 94 87 95 uint64_t m_processPoolCreationListenerIdentifier { 0 }; 96 RefPtr<WebCore::CookieStorageObserver> m_defaultUIProcessObserver; 88 97 }; 89 98 -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r240243 r240292 1630 1630 void WebProcessPool::clearCachedCredentials() 1631 1631 { 1632 sendToAllProcesses(Messages::WebProcess::ClearCachedCredentials());1633 1632 if (m_networkProcess) 1634 1633 m_networkProcess->send(Messages::NetworkProcess::ClearCachedCredentials(), 0); -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r240288 r240292 3455 3455 5CA26D7F217ABBB600F97A35 /* WKSafeBrowsingWarning.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKSafeBrowsingWarning.mm; sourceTree = "<group>"; }; 3456 3456 5CA26D80217ABBB600F97A35 /* WKSafeBrowsingWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKSafeBrowsingWarning.h; sourceTree = "<group>"; }; 3457 5CA46E7A21F1A23900CE86B4 /* APIHTTPCookieStoreCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = APIHTTPCookieStoreCocoa.mm; path = UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm; sourceTree = SOURCE_ROOT; }; 3457 3458 5CA98549210BEB5A0057EB6B /* SafeBrowsingWarning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SafeBrowsingWarning.h; sourceTree = "<group>"; }; 3458 3459 5CA9854B210BEB730057EB6B /* SafeBrowsingWarningCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SafeBrowsingWarningCocoa.mm; sourceTree = "<group>"; }; … … 6075 6076 F41056612130699A0092281D /* APIAttachmentCocoa.mm */, 6076 6077 7CEFA9601AC0999300B910FD /* APIContentRuleListStoreCocoa.mm */, 6078 5CA46E7A21F1A23900CE86B4 /* APIHTTPCookieStoreCocoa.mm */, 6077 6079 FED3C1DA1B447AE800E0EB7F /* APISerializedScriptValueCocoa.mm */, 6078 6080 1A3635AB1A3145E500ED6197 /* APIWebsiteDataStoreCocoa.mm */, -
trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp
r240237 r240292 1603 1603 return false; 1604 1604 1605 String partitionName = contentDocument->topDocument().domainForCachePartition(); 1606 Credential credential = NetworkStorageSession::defaultStorageSession().credentialStorage().get(partitionName, protectionSpace); 1607 if (credential.isEmpty()) 1608 credential = NetworkStorageSession::defaultStorageSession().credentialStorage().getFromPersistentStorage(protectionSpace); 1609 1605 auto credential = CredentialStorage::getFromPersistentStorage(protectionSpace); 1610 1606 if (!credential.hasPassword()) 1611 1607 return false; -
trunk/Source/WebKit/WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp
r239815 r240292 39 39 using namespace WebCore; 40 40 41 void WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&& parameters)41 void WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&) 42 42 { 43 auto sessionID = parameters.networkSessionParameters.sessionID;44 ASSERT(isMainThread());45 ASSERT(sessionID.isEphemeral());46 47 if (NetworkStorageSession::storageSession(sessionID))48 return;49 50 // FIXME: Implement to ensure a data storage session.51 43 } 52 44 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp
r239815 r240292 42 42 using namespace WebCore; 43 43 44 void WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&& parameters)44 void WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&) 45 45 { 46 auto sessionID = parameters.networkSessionParameters.sessionID;47 ASSERT(RunLoop::isMain());48 49 if (NetworkStorageSession::storageSession(sessionID))50 return;51 52 NetworkStorageSession::ensureSession(sessionID, String::number(sessionID.sessionID()));53 46 } 54 47 -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r240243 r240292 579 579 } 580 580 581 void WebProcess::clearCachedCredentials()582 {583 NetworkStorageSession::defaultStorageSession().credentialStorage().clearCredentials();584 }585 586 581 WebPage* WebProcess::focusedWebPage() const 587 582 { … … 1300 1295 CrossOriginPreflightResultCache::singleton().clear(); 1301 1296 } 1302 1303 if (websiteDataTypes.contains(WebsiteDataType::Credentials)) {1304 if (WebCore::NetworkStorageSession::storageSession(sessionID))1305 NetworkStorageSession::storageSession(sessionID)->credentialStorage().clearCredentials();1306 }1307 1297 } 1308 1298 -
trunk/Source/WebKit/WebProcess/WebProcess.h
r239835 r240292 267 267 void processSuspensionCleanupTimerFired(); 268 268 269 void clearCachedCredentials();270 271 269 void platformTerminate(); 272 270 -
trunk/Source/WebKit/WebProcess/WebProcess.messages.in
r239737 r240292 51 51 UserPreferredLanguagesChanged(Vector<String> languages) 52 52 FullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled) 53 54 ClearCachedCredentials()55 53 56 54 # Plug-ins. -
trunk/Source/WebKit/WebProcess/soup/WebProcessSoup.cpp
r239671 r240292 65 65 { 66 66 WebCore::SoupNetworkSession::setProxySettings(settings); 67 WebCore::NetworkStorageSession::forEach([](const WebCore::NetworkStorageSession& session) {68 if (auto* soupSession = session.soupNetworkSession())69 soupSession->setupProxy();70 });71 67 } 72 68 -
trunk/Source/WebKitLegacy/CMakeLists.txt
r229048 r240292 13 13 Storage/WebStorageNamespaceProvider.cpp 14 14 15 WebCoreSupport/NetworkStorageSessionMap.cpp 15 16 WebCoreSupport/WebResourceLoadScheduler.cpp 16 17 WebCoreSupport/WebViewGroup.cpp -
trunk/Source/WebKitLegacy/ChangeLog
r240237 r240292 1 2019-01-22 Alex Christensen <achristensen@webkit.org> 2 3 Move NetworkStorageSession ownership to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=193580 5 6 Reviewed by Geoff Garen. 7 8 * WebCoreSupport/NetworkStorageSessionMap.cpp: Added. 9 (defaultNetworkStorageSession): 10 (globalSessionMap): 11 (NetworkStorageSessionMap::storageSession): 12 (NetworkStorageSessionMap::defaultStorageSession): 13 (NetworkStorageSessionMap::switchToNewTestingSession): 14 (NetworkStorageSessionMap::ensureSession): 15 (NetworkStorageSessionMap::destroySession): 16 * WebCoreSupport/NetworkStorageSessionMap.h: Added. 17 * WebCoreSupport/PageStorageSessionProvider.h: 18 * WebKitLegacy.xcodeproj/project.pbxproj: 19 1 20 2019-01-15 Darin Adler <darin@apple.com> 2 21 -
trunk/Source/WebKitLegacy/WebCoreSupport/PageStorageSessionProvider.h
r240117 r240292 26 26 #pragma once 27 27 28 #include "NetworkStorageSessionMap.h" 28 29 #include <WebCore/NetworkStorageSession.h> 29 30 #include <WebCore/Page.h> … … 38 39 { 39 40 if (m_page) 40 return WebCore::NetworkStorageSession::storageSession(m_page->sessionID());41 return NetworkStorageSessionMap::storageSession(m_page->sessionID()); 41 42 return nullptr; 42 43 } -
trunk/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
r240190 r240292 149 149 598ADA461202275000ABAE4E /* WebDeviceOrientationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; 150 150 5C9EF2F521F061BE003BDC56 /* PageStorageSessionProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9EF2F421F061BE003BDC56 /* PageStorageSessionProvider.h */; }; 151 5CA46E7821F1451D00CE86B4 /* NetworkStorageSessionMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA46E7621F1451D00CE86B4 /* NetworkStorageSessionMap.h */; }; 152 5CA46E7921F1451D00CE86B4 /* NetworkStorageSessionMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CA46E7721F1451D00CE86B4 /* NetworkStorageSessionMap.cpp */; }; 151 153 5CE44F4A206D70EA003EFD01 /* PingHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CE44F49206D70E9003EFD01 /* PingHandle.h */; }; 152 154 5D7BF8140C2A1D90008CE06D /* WebInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7BF8120C2A1D90008CE06D /* WebInspector.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 991 993 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProvider.h; sourceTree = "<group>"; }; 992 994 5C9EF2F421F061BE003BDC56 /* PageStorageSessionProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PageStorageSessionProvider.h; path = WebCoreSupport/PageStorageSessionProvider.h; sourceTree = SOURCE_ROOT; }; 995 5CA46E7621F1451D00CE86B4 /* NetworkStorageSessionMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkStorageSessionMap.h; path = WebCoreSupport/NetworkStorageSessionMap.h; sourceTree = SOURCE_ROOT; }; 996 5CA46E7721F1451D00CE86B4 /* NetworkStorageSessionMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkStorageSessionMap.cpp; path = WebCoreSupport/NetworkStorageSessionMap.cpp; sourceTree = SOURCE_ROOT; }; 993 997 5CE44F49206D70E9003EFD01 /* PingHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PingHandle.h; path = WebCoreSupport/PingHandle.h; sourceTree = SOURCE_ROOT; }; 994 998 5D7BF8120C2A1D90008CE06D /* WebInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebInspector.h; sourceTree = "<group>"; }; … … 2567 2571 B82958D1132707D0000D0E79 /* CorrectionPanel.h */, 2568 2572 B82958D2132707D0000D0E79 /* CorrectionPanel.mm */, 2573 5CA46E7721F1451D00CE86B4 /* NetworkStorageSessionMap.cpp */, 2574 5CA46E7621F1451D00CE86B4 /* NetworkStorageSessionMap.h */, 2569 2575 5C9EF2F421F061BE003BDC56 /* PageStorageSessionProvider.h */, 2570 2576 5CE44F49206D70E9003EFD01 /* PingHandle.h */, … … 2945 2951 1AAF5CEC0EDDE1FE008D883D /* NetscapePluginHostProxy.h in Headers */, 2946 2952 1AAF5CEE0EDDE1FE008D883D /* NetscapePluginInstanceProxy.h in Headers */, 2953 5CA46E7821F1451D00CE86B4 /* NetworkStorageSessionMap.h in Headers */, 2947 2954 E1531BD82187B954002E3F81 /* NSURLDownloadSPI.h in Headers */, 2948 2955 93D4379B1D57ABEF00AB85EA /* ObjCEventListener.h in Headers */, … … 3531 3538 1AAF5CED0EDDE1FE008D883D /* NetscapePluginHostProxy.mm in Sources */, 3532 3539 1AAF5CEF0EDDE1FE008D883D /* NetscapePluginInstanceProxy.mm in Sources */, 3540 5CA46E7921F1451D00CE86B4 /* NetworkStorageSessionMap.cpp in Sources */, 3533 3541 939810DD0824BF01008DF038 /* npapi.mm in Sources */, 3534 3542 93D4379C1D57ABEF00AB85EA /* ObjCEventListener.mm in Sources */, -
trunk/Source/WebKitLegacy/mac/ChangeLog
r240285 r240292 1 2019-01-22 Alex Christensen <achristensen@webkit.org> 2 3 Move NetworkStorageSession ownership to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=193580 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 * WebCoreSupport/WebFrameNetworkingContext.mm: 15 (WebFrameNetworkingContext::ensurePrivateBrowsingSession): 16 (WebFrameNetworkingContext::destroyPrivateBrowsingSession): 17 (WebFrameNetworkingContext::storageSession const): 18 * WebView/WebPreferences.mm: 19 (+[WebPreferences _switchNetworkLoaderToNewTestingSession]): 20 (+[WebPreferences _clearNetworkLoaderSession]): 21 (+[WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:]): 22 1 23 2019-01-22 Daniel Bates <dabates@apple.com> 2 24 -
trunk/Source/WebKitLegacy/mac/Misc/WebCache.mm
r240117 r240292 26 26 #import "WebCache.h" 27 27 28 #import "NetworkStorageSessionMap.h" 28 29 #import "WebApplicationCacheInternal.h" 29 30 #import "WebNSObjectExtras.h" … … 55 56 WebCore::NetworkStorageSession* storageSession() const final 56 57 { 57 return & WebCore::NetworkStorageSession::defaultStorageSession();58 return &NetworkStorageSessionMap::defaultStorageSession(); 58 59 } 59 60 }; … … 224 225 { 225 226 [WebView _makeAllWebViewsPerformSelector:@selector(_clearCredentials)]; 226 WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage().clearCredentials();227 NetworkStorageSessionMap::defaultStorageSession().credentialStorage().clearCredentials(); 227 228 } 228 229 -
trunk/Source/WebKitLegacy/mac/Misc/WebDownload.mm
r240031 r240292 29 29 #import <WebKitLegacy/WebDownload.h> 30 30 31 #import "NetworkStorageSessionMap.h" 32 #import "WebTypesInternal.h" 31 33 #import <Foundation/NSURLAuthenticationChallenge.h> 32 34 #import <WebCore/AuthenticationMac.h> … … 38 40 #import <pal/spi/cocoa/NSURLDownloadSPI.h> 39 41 #import <wtf/Assertions.h> 40 41 #import "WebTypesInternal.h"42 42 43 43 using namespace WebCore; … … 96 96 // Try previously stored credential first. 97 97 if (![challenge previousFailureCount]) { 98 NSURLCredential *credential = NetworkStorageSession ::defaultStorageSession().credentialStorage().get(emptyString(), ProtectionSpace([challenge protectionSpace])).nsCredential();98 NSURLCredential *credential = NetworkStorageSessionMap::defaultStorageSession().credentialStorage().get(emptyString(), ProtectionSpace([challenge protectionSpace])).nsCredential(); 99 99 if (credential) { 100 100 [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; -
trunk/Source/WebKitLegacy/mac/Plugins/WebBaseNetscapePluginView.mm
r240031 r240292 31 31 #import "WebBaseNetscapePluginView.h" 32 32 33 #import "NetworkStorageSessionMap.h" 33 34 #import "WebFrameInternal.h" 34 35 #import "WebKitLogging.h" … … 873 874 RetainPtr<NSURLProtectionSpace> protectionSpace = adoptNS([[NSURLProtectionSpace alloc] initWithHost:host port:port protocol:protocol realm:realm authenticationMethod:authenticationMethod]); 874 875 875 NSURLCredential *credential = WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage().get(emptyString(), ProtectionSpace(protectionSpace.get())).nsCredential();876 NSURLCredential *credential = NetworkStorageSessionMap::defaultStorageSession().credentialStorage().get(emptyString(), ProtectionSpace(protectionSpace.get())).nsCredential(); 876 877 if (!credential) 877 878 credential = [[NSURLCredentialStorage sharedCredentialStorage] defaultCredentialForProtectionSpace:protectionSpace.get()]; -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameNetworkingContext.mm
r239737 r240292 26 26 #import "WebFrameNetworkingContext.h" 27 27 28 #import "NetworkStorageSessionMap.h" 28 29 #import "WebFrameInternal.h" 29 30 #import "WebViewPrivate.h" … … 47 48 { 48 49 ASSERT(isMainThread()); 49 NetworkStorageSession ::ensureSession(PAL::SessionID::legacyPrivateSessionID(), [[NSBundle mainBundle] bundleIdentifier]);50 return *NetworkStorageSession ::storageSession(PAL::SessionID::legacyPrivateSessionID());50 NetworkStorageSessionMap::ensureSession(PAL::SessionID::legacyPrivateSessionID(), [[NSBundle mainBundle] bundleIdentifier]); 51 return *NetworkStorageSessionMap::storageSession(PAL::SessionID::legacyPrivateSessionID()); 51 52 } 52 53 … … 54 55 { 55 56 ASSERT(isMainThread()); 56 NetworkStorageSession ::destroySession(PAL::SessionID::legacyPrivateSessionID());57 NetworkStorageSessionMap::destroySession(PAL::SessionID::legacyPrivateSessionID()); 57 58 } 58 59 … … 95 96 ASSERT(isMainThread()); 96 97 if (frame() && frame()->page() && frame()->page()->sessionID().isEphemeral()) { 97 if (auto* session = NetworkStorageSession ::storageSession(PAL::SessionID::legacyPrivateSessionID()))98 if (auto* session = NetworkStorageSessionMap::storageSession(PAL::SessionID::legacyPrivateSessionID())) 98 99 return session; 99 100 // Some requests may still be coming shortly before WebCore updates the session ID and after WebKit destroys the private browsing session. 100 101 LOG_ERROR("Invalid session ID. Please file a bug unless you just disabled private browsing, in which case it's an expected race."); 101 102 } 102 return &NetworkStorageSession ::defaultStorageSession();103 return &NetworkStorageSessionMap::defaultStorageSession(); 103 104 } -
trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
r240251 r240292 31 31 #import "WebPreferenceKeysPrivate.h" 32 32 33 #import "NetworkStorageSessionMap.h" 33 34 #import "WebApplicationCache.h" 34 35 #import "WebFrameNetworkingContext.h" … … 1878 1879 WebThreadLock(); 1879 1880 #endif 1880 NetworkStorageSession ::switchToNewTestingSession();1881 NetworkStorageSessionMap::switchToNewTestingSession(); 1881 1882 } 1882 1883 1883 1884 + (void)_clearNetworkLoaderSession 1884 1885 { 1885 NetworkStorageSession ::defaultStorageSession().deleteAllCookies();1886 NetworkStorageSessionMap::defaultStorageSession().deleteAllCookies(); 1886 1887 } 1887 1888 1888 1889 + (void)_setCurrentNetworkLoaderSessionCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)policy 1889 1890 { 1890 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = NetworkStorageSession ::defaultStorageSession().cookieStorage();1891 ASSERT(cookieStorage); // Will fail when NetworkStorageSession ::switchToNewTestingSession() was not called beforehand.1891 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = NetworkStorageSessionMap::defaultStorageSession().cookieStorage(); 1892 ASSERT(cookieStorage); // Will fail when NetworkStorageSessionMap::switchToNewTestingSession() was not called beforehand. 1892 1893 CFHTTPCookieStorageSetCookieAcceptPolicy(cookieStorage.get(), policy); 1893 1894 } -
trunk/Source/WebKitLegacy/win/ChangeLog
r240237 r240292 1 2019-01-22 Alex Christensen <achristensen@webkit.org> 2 3 Move NetworkStorageSession ownership to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=193580 5 6 Reviewed by Geoff Garen. 7 8 * WebCoreSupport/WebFrameNetworkingContext.cpp: 9 (WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): 10 (WebFrameNetworkingContext::ensurePrivateBrowsingSession): 11 (WebFrameNetworkingContext::destroyPrivateBrowsingSession): 12 (WebFrameNetworkingContext::storageSession const): 13 * WebDownloadCFNet.cpp: 14 (WebDownload::didReceiveAuthenticationChallenge): 15 * WebPreferences.cpp: 16 (WebPreferences::clearNetworkLoaderSession): 17 (WebPreferences::switchNetworkLoaderToNewTestingSession): 18 1 19 2019-01-15 Darin Adler <darin@apple.com> 2 20 -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameNetworkingContext.cpp
r239737 r240292 26 26 #include "WebFrameNetworkingContext.h" 27 27 28 #include "NetworkStorageSessionMap.h" 28 29 #include "WebView.h" 29 30 #include <WebCore/FrameLoader.h> … … 51 52 void WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts(WebKitCookieStorageAcceptPolicy policy) 52 53 { 53 if (RetainPtr<CFHTTPCookieStorageRef> cookieStorage = NetworkStorageSession ::defaultStorageSession().cookieStorage())54 if (RetainPtr<CFHTTPCookieStorageRef> cookieStorage = NetworkStorageSessionMap::defaultStorageSession().cookieStorage()) 54 55 CFHTTPCookieStorageSetCookieAcceptPolicy(cookieStorage.get(), policy); 55 56 56 if (auto privateSession = NetworkStorageSession ::storageSession(PAL::SessionID::legacyPrivateSessionID()))57 if (auto privateSession = NetworkStorageSessionMap::storageSession(PAL::SessionID::legacyPrivateSessionID())) 57 58 CFHTTPCookieStorageSetCookieAcceptPolicy(privateSession->cookieStorage().get(), policy); 58 59 } … … 71 72 ASSERT(isMainThread()); 72 73 73 if (auto privateSession = NetworkStorageSession ::storageSession(PAL::SessionID::legacyPrivateSessionID()))74 if (auto privateSession = NetworkStorageSessionMap::storageSession(PAL::SessionID::legacyPrivateSessionID())) 74 75 return *privateSession; 75 76 … … 82 83 base = identifierBase(); 83 84 84 NetworkStorageSession ::ensureSession(PAL::SessionID::legacyPrivateSessionID(), base);85 NetworkStorageSessionMap::ensureSession(PAL::SessionID::legacyPrivateSessionID(), base); 85 86 86 87 #endif 87 return *NetworkStorageSession ::storageSession(PAL::SessionID::legacyPrivateSessionID());88 return *NetworkStorageSessionMap::storageSession(PAL::SessionID::legacyPrivateSessionID()); 88 89 } 89 90 … … 92 93 ASSERT(isMainThread()); 93 94 94 NetworkStorageSession ::destroySession(PAL::SessionID::legacyPrivateSessionID());95 NetworkStorageSessionMap::destroySession(PAL::SessionID::legacyPrivateSessionID()); 95 96 } 96 97 … … 105 106 106 107 if (frame() && frame()->page()->usesEphemeralSession()) 107 return NetworkStorageSession ::storageSession(PAL::SessionID::legacyPrivateSessionID());108 return NetworkStorageSessionMap::storageSession(PAL::SessionID::legacyPrivateSessionID()); 108 109 109 return &NetworkStorageSession ::defaultStorageSession();110 return &NetworkStorageSessionMap::defaultStorageSession(); 110 111 } -
trunk/Source/WebKitLegacy/win/WebDownloadCFNet.cpp
r240031 r240292 29 29 #include "DefaultDownloadDelegate.h" 30 30 #include "MarshallingHelpers.h" 31 #include "NetworkStorageSessionMap.h" 31 32 #include "WebError.h" 32 33 #include "WebKit.h" … … 377 378 // Try previously stored credential first. 378 379 if (!CFURLAuthChallengeGetPreviousFailureCount(challenge)) { 379 Credential credential = WebCore::NetworkStorageSession::defaultStorageSession().credentialStorage().get(emptyString(), core(CFURLAuthChallengeGetProtectionSpace(challenge)));380 Credential credential = NetworkStorageSessionMap::defaultStorageSession().credentialStorage().get(emptyString(), core(CFURLAuthChallengeGetProtectionSpace(challenge))); 380 381 if (!credential.isEmpty()) { 381 382 RetainPtr<CFURLCredentialRef> cfCredential = adoptCF(createCF(credential)); -
trunk/Source/WebKitLegacy/win/WebPreferences.cpp
r238501 r240292 28 28 #include "WebPreferences.h" 29 29 30 #include "NetworkStorageSessionMap.h" 30 31 #include "WebNotificationCenter.h" 31 32 #include "WebPreferenceKeysPrivate.h" … … 2119 2120 HRESULT WebPreferences::clearNetworkLoaderSession() 2120 2121 { 2121 NetworkStorageSession ::defaultStorageSession().deleteAllCookies();2122 NetworkStorageSessionMap::defaultStorageSession().deleteAllCookies(); 2122 2123 return S_OK; 2123 2124 } … … 2125 2126 HRESULT WebPreferences::switchNetworkLoaderToNewTestingSession() 2126 2127 { 2127 NetworkStorageSession ::switchToNewTestingSession();2128 NetworkStorageSessionMap::switchToNewTestingSession(); 2128 2129 return S_OK; 2129 2130 }
Note: See TracChangeset
for help on using the changeset viewer.