Changeset 215941 in webkit
- Timestamp:
- Apr 28, 2017 1:48:40 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 34 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r215940 r215941 1 2017-04-28 Brady Eidson <beidson@apple.com> 2 3 Start of support for multiple WebsiteDataStore/SessionIDs per process 4 https://bugs.webkit.org/show_bug.cgi?id=171422 5 6 Reviewed by Geoffrey Garen. 7 8 Covered by API tests. 9 10 * platform/network/NetworkStorageSession.h: 11 * platform/network/cf/NetworkStorageSessionCFNet.cpp: 12 (WebCore::NetworkStorageSession::ensureSession): 13 * platform/spi/cf/CFNetworkSPI.h: 14 1 15 2017-04-28 Chris Dumez <cdumez@apple.com> 2 16 -
trunk/Source/WebCore/platform/network/NetworkStorageSession.h
r215883 r215941 74 74 75 75 #if PLATFORM(COCOA) || USE(CFURLCONNECTION) 76 WEBCORE_EXPORT static void ensureSession(SessionID, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&&); 76 77 NetworkStorageSession(SessionID, RetainPtr<CFURLStorageSessionRef>&&, RetainPtr<CFHTTPCookieStorageRef>&&); 77 78 -
trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp
r215928 r215941 116 116 } 117 117 118 void NetworkStorageSession::ensureSession(SessionID sessionID, const String& identifierBase )118 void NetworkStorageSession::ensureSession(SessionID sessionID, const String& identifierBase, RetainPtr<CFHTTPCookieStorageRef>&& cookieStorage) 119 119 { 120 120 auto addResult = globalSessionMap().add(sessionID, nullptr); … … 134 134 storageSession = createCFStorageSessionForIdentifier(cfIdentifier.get()); 135 135 136 RetainPtr<CFHTTPCookieStorageRef> cookieStorage = storageSession ? adoptCF(_CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, storageSession.get())) : nullptr; 136 if (!cookieStorage && storageSession) 137 cookieStorage = adoptCF(_CFURLStorageSessionCopyCookieStorage(kCFAllocatorDefault, storageSession.get())); 138 137 139 addResult.iterator->value = std::make_unique<NetworkStorageSession>(sessionID, WTFMove(storageSession), WTFMove(cookieStorage)); 140 } 141 142 void NetworkStorageSession::ensureSession(SessionID sessionID, const String& identifierBase) 143 { 144 ensureSession(sessionID, identifierBase, nullptr); 138 145 } 139 146 -
trunk/Source/WebCore/platform/spi/cf/CFNetworkSPI.h
r215883 r215941 185 185 186 186 CFHTTPCookieStorageRef _CFHTTPCookieStorageGetDefault(CFAllocatorRef); 187 CFHTTPCookieStorageRef CFHTTPCookieStorageCreateFromFile(CFAllocatorRef, CFURLRef, CFHTTPCookieStorageRef); 188 187 189 void CFHTTPCookieStorageSetCookie(CFHTTPCookieStorageRef, CFHTTPCookieRef); 188 190 void CFHTTPCookieStorageSetCookieAcceptPolicy(CFHTTPCookieStorageRef, CFHTTPCookieStorageAcceptPolicy); -
trunk/Source/WebKit2/CMakeLists.txt
r215606 r215941 213 213 Shared/WebUserContentControllerDataTypes.cpp 214 214 Shared/WebWheelEvent.cpp 215 Shared/WebsiteDataStoreParameters.cpp 215 216 216 217 Shared/API/APIArray.cpp -
trunk/Source/WebKit2/ChangeLog
r215939 r215941 1 2017-04-28 Brady Eidson <beidson@apple.com> 2 3 Start of support for multiple WebsiteDataStore/SessionIDs per process 4 https://bugs.webkit.org/show_bug.cgi?id=171422 5 6 Reviewed by Geoffrey Garen. 7 8 * CMakeLists.txt: 9 * WebKit2.xcodeproj/project.pbxproj: 10 11 * NetworkProcess/NetworkProcess.cpp: 12 (WebKit::NetworkProcess::addWebsiteDataStore): 13 (WebKit::NetworkProcess::destroySession): 14 (WebKit::NetworkProcess::destroyPrivateBrowsingSession): Deleted. 15 * NetworkProcess/NetworkProcess.h: 16 * NetworkProcess/NetworkProcess.messages.in: 17 18 * NetworkProcess/RemoteNetworkingContext.h: 19 * NetworkProcess/mac/RemoteNetworkingContext.mm: 20 (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): 21 * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp: 22 (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): 23 24 * Shared/WebsiteDataStoreParameters.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h. 25 (WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters): 26 (WebKit::WebsiteDataStoreParameters::encode): 27 (WebKit::WebsiteDataStoreParameters::decode): 28 * Shared/WebsiteDataStoreParameters.h: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h. 29 30 * UIProcess/API/APIWebsiteDataStore.cpp: 31 (API::WebsiteDataStore::defaultDataStore): 32 (API::WebsiteDataStore::createLegacy): 33 (API::WebsiteDataStore::WebsiteDataStore): 34 (API::WebsiteDataStore::create): Deleted. 35 * UIProcess/API/APIWebsiteDataStore.h: 36 37 * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: 38 (-[WKWebsiteDataStore _initWithConfiguration:]): 39 40 * UIProcess/API/gtk/WebKitWebsiteDataManager.cpp: 41 (webkitWebsiteDataManagerCreate): 42 (webkitWebsiteDataManagerGetDataStore): 43 44 * UIProcess/WebPageProxy.cpp: 45 (WebKit::m_weakPtrFactory): 46 * UIProcess/WebPageProxy.h: 47 48 * UIProcess/WebProcessPool.cpp: 49 (WebKit::WebProcessPool::WebProcessPool): 50 (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled): 51 (WebKit::WebProcessPool::pageAddedToProcess): 52 (WebKit::WebProcessPool::pageRemovedFromProcess): 53 54 * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: 55 (WebKit::WebsiteDataStore::parameters): 56 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 57 (WebKit::WebsiteDataStore::create): 58 (WebKit::WebsiteDataStore::WebsiteDataStore): 59 (WebKit::WebsiteDataStore::~WebsiteDataStore): 60 (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): 61 (WebKit::WebsiteDataStore::parameters): 62 * UIProcess/WebsiteData/WebsiteDataStore.h: 63 64 * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h: 65 * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm: 66 (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession): 67 (WebKit::WebFrameNetworkingContext::storageSession): 68 * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp: 69 (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession): 70 * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h: 71 72 * WebProcess/WebProcess.cpp: 73 (WebKit::WebProcess::addWebsiteDataStore): 74 (WebKit::WebProcess::destroySession): 75 (WebKit::WebProcess::destroyPrivateBrowsingSession): Deleted. 76 * WebProcess/WebProcess.h: 77 * WebProcess/WebProcess.messages.in: 78 * WebProcess/cocoa/WebProcessCocoa.mm: 79 1 80 2017-04-28 Youenn Fablet <youenn@apple.com> 2 81 -
trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp
r215104 r215941 246 246 static NetworkStorageSession& storageSession(SessionID sessionID) 247 247 { 248 if (sessionID.isEphemeral()) { 249 if (auto* privateStorageSession = NetworkStorageSession::storageSession(sessionID)) 250 return *privateStorageSession; 248 ASSERT(sessionID.isValid()); 249 if (sessionID != SessionID::defaultSessionID()) { 250 if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) 251 return *storageSession; 252 251 253 // Some requests with private browsing mode requested may still be coming shortly after NetworkProcess was told to destroy its session. 252 254 // FIXME: Find a way to track private browsing sessions more rigorously. 253 LOG_ERROR(" Private browsingwas 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.");255 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."); 254 256 } 255 257 return NetworkStorageSession::defaultStorageSession(); -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp
r215741 r215941 292 292 } 293 293 294 void NetworkProcess::destroyPrivateBrowsingSession(SessionID sessionID) 294 void NetworkProcess::addWebsiteDataStore(WebsiteDataStoreParameters&& parameters) 295 { 296 RemoteNetworkingContext::ensureWebsiteDataStoreSession(WTFMove(parameters)); 297 } 298 299 void NetworkProcess::destroySession(SessionID sessionID) 295 300 { 296 301 SessionTracker::destroySession(sessionID); -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h
r215741 r215941 62 62 enum class WebsiteDataType; 63 63 struct NetworkProcessCreationParameters; 64 struct WebsiteDataStoreParameters; 64 65 65 66 class NetworkProcess : public ChildProcess, private DownloadManager::Client { … … 160 161 void initializeNetworkProcess(NetworkProcessCreationParameters&&); 161 162 void createNetworkConnectionToWebProcess(); 162 void destroyPrivateBrowsingSession(WebCore::SessionID); 163 void addWebsiteDataStore(WebsiteDataStoreParameters&&); 164 void destroySession(WebCore::SessionID); 163 165 164 166 void fetchWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, uint64_t callbackID); -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in
r215741 r215941 37 37 38 38 EnsurePrivateBrowsingSession(WebCore::SessionID sessionID) 39 DestroyPrivateBrowsingSession(WebCore::SessionID sessionID) 39 AddWebsiteDataStore(struct WebKit::WebsiteDataStoreParameters websiteDataStoreParameters); 40 DestroySession(WebCore::SessionID sessionID) 40 41 41 42 FetchWebsiteData(WebCore::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, OptionSet<WebKit::WebsiteDataFetchOption> fetchOptions, uint64_t callbackID) -
trunk/Source/WebKit2/NetworkProcess/RemoteNetworkingContext.h
r213760 r215941 33 33 namespace WebKit { 34 34 35 struct WebsiteDataStoreParameters; 36 35 37 class RemoteNetworkingContext final : public WebCore::NetworkingContext { 36 38 public: … … 43 45 // FIXME: Remove platform-specific code and use SessionTracker. 44 46 static void ensurePrivateBrowsingSession(WebCore::SessionID); 47 static void ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&); 45 48 46 49 bool shouldClearReferrerOnHTTPSToHTTPRedirect() const override { return m_shouldClearReferrerOnHTTPSToHTTPRedirect; } -
trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm
r213760 r215941 32 32 #import "SessionTracker.h" 33 33 #import "WebErrors.h" 34 #import "WebsiteDataStoreParameters.h" 34 35 #import <WebCore/NetworkStorageSession.h> 35 36 #import <WebCore/ResourceError.h> … … 101 102 } 102 103 104 void RemoteNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&& parameters) 105 { 106 if (NetworkStorageSession::storageSession(parameters.sessionID)) 107 return; 108 109 String base; 110 if (SessionTracker::getIdentifierBase().isNull()) 111 base = [[NSBundle mainBundle] bundleIdentifier]; 112 else 113 base = SessionTracker::getIdentifierBase(); 114 115 #if PLATFORM(IOS) 116 SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle); 117 #endif 118 119 RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage; 120 121 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 122 RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, parameters.uiProcessCookieStorageIdentifier.data(), parameters.uiProcessCookieStorageIdentifier.size())); 123 uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get())); 124 #endif 125 126 NetworkStorageSession::ensureSession(parameters.sessionID, base + '.' + String::number(parameters.sessionID.sessionID()), WTFMove(uiProcessCookieStorage)); 127 128 #if USE(NETWORK_SESSION) 129 auto networkSession = NetworkSession::create(parameters.sessionID, NetworkProcess::singleton().supplement<LegacyCustomProtocolManager>()); 130 SessionTracker::setSession(parameters.sessionID, WTFMove(networkSession)); 131 #endif 103 132 } 133 134 } -
trunk/Source/WebKit2/NetworkProcess/soup/RemoteNetworkingContextSoup.cpp
r213760 r215941 31 31 #include "NetworkSession.h" 32 32 #include "SessionTracker.h" 33 #include "WebsiteDataStoreParameters.h" 33 34 #include <WebCore/NetworkStorageSession.h> 34 35 #include <WebCore/NotImplemented.h> … … 59 60 } 60 61 62 void RemoteNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&) 63 { 64 // FIXME: Implement. 65 } 66 61 67 NetworkStorageSession& RemoteNetworkingContext::storageSession() const 62 68 { -
trunk/Source/WebKit2/Shared/WebsiteDataStoreParameters.cpp
r215940 r215941 1 1 /* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. 4 * Copyright (C) 2012 Igalia S.L. 2 * Copyright (C) 2017 Apple Inc. All rights reserved. 5 3 * 6 4 * Redistribution and use in source and binary forms, with or without … … 26 24 */ 27 25 28 #pragma once 26 #include "config.h" 27 #include "WebsiteDataStoreParameters.h" 29 28 30 #include <WebCore/FrameNetworkingContext.h> 31 #include <WebCore/SessionID.h> 29 #include "WebCoreArgumentCoders.h" 32 30 33 31 namespace WebKit { 34 32 35 class WebFrame;36 class WebFrameLoaderClient;37 33 38 class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext { 39 public: 40 static Ref<WebFrameNetworkingContext> create(WebFrame* frame) 41 { 42 return adoptRef(*new WebFrameNetworkingContext(frame)); 43 } 34 WebsiteDataStoreParameters::WebsiteDataStoreParameters() 35 { 36 } 44 37 45 static void ensurePrivateBrowsingSession(WebCore::SessionID); 38 void WebsiteDataStoreParameters::encode(IPC::Encoder& encoder) const 39 { 40 encoder << sessionID; 41 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 42 encoder << uiProcessCookieStorageIdentifier; 43 #endif 44 #if PLATFORM(IOS) 45 encoder << cookieStorageDirectoryExtensionHandle; 46 #endif 47 } 46 48 47 WebFrameLoaderClient* webFrameLoaderClient() const; 49 bool WebsiteDataStoreParameters::decode(IPC::Decoder& decoder, WebsiteDataStoreParameters& parameters) 50 { 51 if (!decoder.decode(parameters.sessionID)) 52 return false; 48 53 49 private: 50 WebFrameNetworkingContext(WebFrame*); 54 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 55 if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier)) 56 return false; 57 #endif 51 58 52 WebCore::NetworkStorageSession& storageSession() const override; 53 }; 59 #if PLATFORM(IOS) 60 if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle)) 61 return false; 62 #endif 54 63 64 return true; 55 65 } 66 67 68 } // namespace WebKit -
trunk/Source/WebKit2/Shared/WebsiteDataStoreParameters.h
r215940 r215941 1 1 /* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. 4 * Copyright (C) 2012 Igalia S.L. 2 * Copyright (C) 2017 Apple Inc. All rights reserved. 5 3 * 6 4 * Redistribution and use in source and binary forms, with or without … … 28 26 #pragma once 29 27 30 #include <WebCore/FrameNetworkingContext.h>28 #include "SandboxExtension.h" 31 29 #include <WebCore/SessionID.h> 30 #include <wtf/Vector.h> 31 #include <wtf/text/WTFString.h> 32 33 namespace IPC { 34 class Decoder; 35 class Encoder; 36 } 32 37 33 38 namespace WebKit { 34 39 35 class WebFrame; 36 class WebFrameLoaderClient;40 struct WebsiteDataStoreParameters { 41 WebsiteDataStoreParameters(); 37 42 38 class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext { 39 public: 40 static Ref<WebFrameNetworkingContext> create(WebFrame* frame) 41 { 42 return adoptRef(*new WebFrameNetworkingContext(frame)); 43 } 43 void encode(IPC::Encoder&) const; 44 static bool decode(IPC::Decoder&, WebsiteDataStoreParameters&); 44 45 45 static void ensurePrivateBrowsingSession(WebCore::SessionID);46 WebCore::SessionID sessionID; 46 47 47 WebFrameLoaderClient* webFrameLoaderClient() const; 48 49 private: 50 WebFrameNetworkingContext(WebFrame*); 51 52 WebCore::NetworkStorageSession& storageSession() const override; 48 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 49 Vector<uint8_t> uiProcessCookieStorageIdentifier; 50 #endif 51 #if PLATFORM(IOS) 52 SandboxExtension::Handle cookieStorageDirectoryExtensionHandle; 53 #endif 53 54 }; 54 55 55 } 56 } // namespace WebKit -
trunk/Source/WebKit2/UIProcess/API/APIWebsiteDataStore.cpp
r215707 r215941 36 36 WebKit::InitializeWebKit2(); 37 37 38 static WebsiteDataStore* defaultDataStore = adoptRef(new WebsiteDataStore(defaultDataStoreConfiguration() )).leakRef();38 static WebsiteDataStore* defaultDataStore = adoptRef(new WebsiteDataStore(defaultDataStoreConfiguration(), WebCore::SessionID::defaultSessionID())).leakRef(); 39 39 40 40 return *defaultDataStore; … … 46 46 } 47 47 48 Ref<WebsiteDataStore> WebsiteDataStore::create (WebKit::WebsiteDataStore::Configuration configuration)48 Ref<WebsiteDataStore> WebsiteDataStore::createLegacy(WebKit::WebsiteDataStore::Configuration configuration) 49 49 { 50 return adoptRef(*new WebsiteDataStore(WTFMove(configuration) ));50 return adoptRef(*new WebsiteDataStore(WTFMove(configuration), WebCore::SessionID::defaultSessionID())); 51 51 } 52 52 … … 56 56 } 57 57 58 WebsiteDataStore::WebsiteDataStore(WebKit::WebsiteDataStore::Configuration configuration )59 : m_websiteDataStore(WebKit::WebsiteDataStore::create(WTFMove(configuration) ))58 WebsiteDataStore::WebsiteDataStore(WebKit::WebsiteDataStore::Configuration configuration, WebCore::SessionID sessionID) 59 : m_websiteDataStore(WebKit::WebsiteDataStore::create(WTFMove(configuration), sessionID)) 60 60 { 61 61 } -
trunk/Source/WebKit2/UIProcess/API/APIWebsiteDataStore.h
r215707 r215941 38 38 static Ref<WebsiteDataStore> defaultDataStore(); 39 39 static Ref<WebsiteDataStore> createNonPersistentDataStore(); 40 static Ref<WebsiteDataStore> create (WebKit::WebsiteDataStore::Configuration);40 static Ref<WebsiteDataStore> createLegacy(WebKit::WebsiteDataStore::Configuration); 41 41 42 explicit WebsiteDataStore(WebKit::WebsiteDataStore::Configuration );42 explicit WebsiteDataStore(WebKit::WebsiteDataStore::Configuration, WebCore::SessionID); 43 43 virtual ~WebsiteDataStore(); 44 44 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
r215897 r215941 164 164 config.cookieStorageDirectory = configuration._cookieStorageDirectory.path; 165 165 166 API::Object::constructInWrapper<API::WebsiteDataStore>(self, config );166 API::Object::constructInWrapper<API::WebsiteDataStore>(self, config, WebCore::SessionID::generatePersistentSessionID()); 167 167 168 168 return self; -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp
r215106 r215941 351 351 { 352 352 WebKitWebsiteDataManager* manager = WEBKIT_WEBSITE_DATA_MANAGER(g_object_new(WEBKIT_TYPE_WEBSITE_DATA_MANAGER, nullptr)); 353 manager->priv->websiteDataStore = API::WebsiteDataStore::create (WTFMove(configuration));353 manager->priv->websiteDataStore = API::WebsiteDataStore::createLegacy(WTFMove(configuration)); 354 354 355 355 return manager; … … 370 370 API::WebsiteDataStore::defaultWebSQLDatabaseDirectory() : WebCore::stringFromFileSystemRepresentation(priv->webSQLDirectory.get()); 371 371 configuration.mediaKeysStorageDirectory = API::WebsiteDataStore::defaultMediaKeysStorageDirectory(); 372 priv->websiteDataStore = API::WebsiteDataStore::create (WTFMove(configuration));372 priv->websiteDataStore = API::WebsiteDataStore::createLegacy(WTFMove(configuration)); 373 373 } 374 374 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r215923 r215941 490 490 m_process->addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID, *this); 491 491 492 if (m_sessionID.isEphemeral()) {493 m_process->processPool().sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(m_sessionID));494 m_process->processPool().sendToAllProcesses(Messages::WebProcess::EnsurePrivateBrowsingSession(m_sessionID));495 }496 497 492 #if PLATFORM(COCOA) 498 493 const CFIndex activityStateChangeRunLoopOrder = (CFIndex)RunLoopObserver::WellKnownRunLoopOrders::CoreAnimationCommit - 1; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r215771 r215941 302 302 303 303 uint64_t pageID() const { return m_pageID; } 304 305 // FIXME: Don't keep a separate sessionID - Rely on the WebsiteDataStore 304 306 WebCore::SessionID sessionID() const { return m_sessionID; } 305 307 … … 1842 1844 1843 1845 const uint64_t m_pageID; 1846 1847 1848 // FIXME: Don't keep a separate sessionID - Rely on the WebsiteDataStore 1844 1849 const WebCore::SessionID m_sessionID; 1845 1850 -
trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp
r215923 r215941 69 69 #include "WebProcessProxy.h" 70 70 #include "WebsiteDataStore.h" 71 #include "WebsiteDataStoreParameters.h" 71 72 #include <WebCore/ApplicationCacheStorage.h> 72 73 #include <WebCore/Language.h> … … 230 231 , m_memorySamplerEnabled(false) 231 232 , m_memorySamplerInterval(1400.0) 232 , m_websiteDataStore(m_configuration->shouldHaveLegacyDataStore() ? API::WebsiteDataStore::create (legacyWebsiteDataStoreConfiguration(m_configuration)) : API::WebsiteDataStore::defaultDataStore())233 , m_websiteDataStore(m_configuration->shouldHaveLegacyDataStore() ? API::WebsiteDataStore::createLegacy(legacyWebsiteDataStoreConfiguration(m_configuration)) : API::WebsiteDataStore::defaultDataStore()) 233 234 #if PLATFORM(MAC) 234 235 , m_highPerformanceGraphicsUsageSampler(std::make_unique<HighPerformanceGraphicsUsageSampler>(*this)) … … 571 572 networkProcess()->send(Messages::NetworkProcess::EnsurePrivateBrowsingSession(SessionID::legacyPrivateSessionID()), 0); 572 573 else 573 networkProcess()->send(Messages::NetworkProcess::Destroy PrivateBrowsingSession(SessionID::legacyPrivateSessionID()), 0);574 networkProcess()->send(Messages::NetworkProcess::DestroySession(SessionID::legacyPrivateSessionID()), 0); 574 575 } 575 576 … … 577 578 sendToAllProcesses(Messages::WebProcess::EnsurePrivateBrowsingSession(SessionID::legacyPrivateSessionID())); 578 579 else 579 sendToAllProcesses(Messages::WebProcess::Destroy PrivateBrowsingSession(SessionID::legacyPrivateSessionID()));580 sendToAllProcesses(Messages::WebProcess::DestroySession(SessionID::legacyPrivateSessionID())); 580 581 } 581 582 … … 930 931 auto result = m_sessionToPagesMap.add(page.sessionID(), HashSet<WebPageProxy*>()).iterator->value.add(&page); 931 932 ASSERT_UNUSED(result, result.isNewEntry); 933 934 auto sessionID = page.sessionID(); 935 if (sessionID.isEphemeral()) { 936 sendToNetworkingProcess(Messages::NetworkProcess::EnsurePrivateBrowsingSession(sessionID)); 937 page.process().send(Messages::WebProcess::EnsurePrivateBrowsingSession(sessionID), 0); 938 } else if (sessionID != SessionID::defaultSessionID()) { 939 sendToNetworkingProcess(Messages::NetworkProcess::AddWebsiteDataStore(page.websiteDataStore().parameters())); 940 page.process().send(Messages::WebProcess::AddWebsiteDataStore(page.websiteDataStore().parameters()), 0); 941 } 932 942 } 933 943 … … 948 958 949 959 // The last user of this non-default SessionID is gone, so clean it up in the child processes. 950 951 // FIXME: Remove this ASSERT and change these messages once multiple persistent sessions exist. 952 ASSERT(sessionID.isEphemeral()); 953 networkProcess()->send(Messages::NetworkProcess::DestroyPrivateBrowsingSession(sessionID), 0); 954 page.process().send(Messages::WebProcess::DestroyPrivateBrowsingSession(sessionID), 0); 960 networkProcess()->send(Messages::NetworkProcess::DestroySession(sessionID), 0); 961 page.process().send(Messages::WebProcess::DestroySession(sessionID), 0); 955 962 } 956 963 } -
trunk/Source/WebKit2/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
r199088 r215941 29 29 #import "StorageManager.h" 30 30 #import "WebResourceLoadStatisticsStore.h" 31 #import "WebsiteDataStoreParameters.h" 32 #import <WebCore/CFNetworkSPI.h> 31 33 #import <WebCore/SearchPopupMenuCocoa.h> 32 34 #import <wtf/NeverDestroyed.h> … … 45 47 46 48 return dataStoresWithStorageManagers; 49 } 50 51 WebsiteDataStoreParameters WebsiteDataStore::parameters() 52 { 53 WebsiteDataStoreParameters parameters; 54 55 parameters.sessionID = m_sessionID; 56 57 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 58 if (m_uiProcessCookieStorageIdentifier.isEmpty()) { 59 auto cookiePath = resolvedCookieStorageDirectory().utf8(); 60 auto url = adoptCF(CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (const UInt8 *)cookiePath.data(), (CFIndex)cookiePath.length(), true)); 61 m_cfCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromFile(kCFAllocatorDefault, url.get(), nullptr)); 62 auto cfData = adoptCF(CFHTTPCookieStorageCreateIdentifyingData(kCFAllocatorDefault, m_cfCookieStorage.get())); 63 64 m_uiProcessCookieStorageIdentifier.append(CFDataGetBytePtr(cfData.get()), CFDataGetLength(cfData.get())); 65 } 66 67 parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier; 68 #endif // PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 69 70 #if PLATFORM(IOS) 71 String cookieStorageDirectory = resolvedCookieStorageDirectory(); 72 if (!cookieStorageDirectory.isEmpty()) 73 SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle); 74 #endif 75 76 return parameters; 47 77 } 48 78 -
trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp
r215907 r215941 37 37 #include "WebResourceLoadStatisticsStoreMessages.h" 38 38 #include "WebsiteData.h" 39 #include "WebsiteDataStoreParameters.h" 39 40 #include <WebCore/ApplicationCacheStorage.h> 40 41 #include <WebCore/DatabaseTracker.h> … … 64 65 } 65 66 66 Ref<WebsiteDataStore> WebsiteDataStore::create(Configuration configuration )67 { 68 return adoptRef(*new WebsiteDataStore(WTFMove(configuration) ));69 } 70 71 WebsiteDataStore::WebsiteDataStore(Configuration configuration )67 Ref<WebsiteDataStore> WebsiteDataStore::create(Configuration configuration, WebCore::SessionID sessionID) 68 { 69 return adoptRef(*new WebsiteDataStore(WTFMove(configuration), sessionID)); 70 } 71 72 WebsiteDataStore::WebsiteDataStore(Configuration configuration, WebCore::SessionID sessionID) 72 73 : m_identifier(generateIdentifier()) 73 , m_sessionID( WebCore::SessionID::defaultSessionID())74 , m_sessionID(sessionID) 74 75 , m_configuration(WTFMove(configuration)) 75 76 , m_storageManager(StorageManager::create(m_configuration.localStorageDirectory)) … … 93 94 platformDestroy(); 94 95 95 if (m_sessionID.is Ephemeral()) {96 if (m_sessionID.isValid() && m_sessionID != WebCore::SessionID::defaultSessionID()) { 96 97 for (auto& processPool : WebProcessPool::allProcessPools()) 97 processPool->sendToNetworkingProcess(Messages::NetworkProcess::Destroy PrivateBrowsingSession(m_sessionID));98 processPool->sendToNetworkingProcess(Messages::NetworkProcess::DestroySession(m_sessionID)); 98 99 } 99 100 } … … 115 116 m_resolvedConfiguration.mediaKeysStorageDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration.mediaKeysStorageDirectory); 116 117 m_resolvedConfiguration.webSQLDatabaseDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration.webSQLDatabaseDirectory); 118 m_resolvedConfiguration.cookieStorageDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(m_configuration.cookieStorageDirectory); 117 119 118 120 if (!m_configuration.javaScriptConfigurationDirectory.isEmpty()) … … 1236 1238 } 1237 1239 1238 } 1240 #if !PLATFORM(COCOA) 1241 WebsiteDataStoreParameters WebsiteDataStore::parameters() 1242 { 1243 // FIXME: Implement. 1244 1245 return { }; 1246 } 1247 #endif 1248 1249 } -
trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h
r215897 r215941 38 38 #include <wtf/text/WTFString.h> 39 39 40 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 41 #include <WebCore/CFNetworkSPI.h> 42 #endif 43 40 44 namespace WebCore { 41 45 class SecurityOrigin; … … 51 55 enum class WebsiteDataType; 52 56 struct WebsiteDataRecord; 57 struct WebsiteDataStoreParameters; 53 58 54 59 #if ENABLE(NETSCAPE_PLUGIN_API) … … 73 78 }; 74 79 static Ref<WebsiteDataStore> createNonPersistent(); 75 static Ref<WebsiteDataStore> create(Configuration );80 static Ref<WebsiteDataStore> create(Configuration, WebCore::SessionID); 76 81 virtual ~WebsiteDataStore(); 77 82 … … 109 114 bool isAssociatedProcessPool(WebProcessPool&) const; 110 115 116 WebsiteDataStoreParameters parameters(); 117 111 118 private: 112 119 explicit WebsiteDataStore(WebCore::SessionID); 113 explicit WebsiteDataStore(Configuration );120 explicit WebsiteDataStore(Configuration, WebCore::SessionID); 114 121 115 122 // WebProcessLifetimeObserver. … … 146 153 147 154 Ref<WorkQueue> m_queue; 155 156 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 157 Vector<uint8_t> m_uiProcessCookieStorageIdentifier; 158 RetainPtr<CFHTTPCookieStorageRef> m_cfCookieStorage; 159 #endif 148 160 }; 149 161 -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r215653 r215941 934 934 511B24AA132E097200065A0C /* WebIconDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511B24A8132E097200065A0C /* WebIconDatabase.cpp */; }; 935 935 511B24AB132E097200065A0C /* WebIconDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 511B24A9132E097200065A0C /* WebIconDatabase.h */; }; 936 511F7D411EB1BCF500E47B83 /* WebsiteDataStoreParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F7D401EB1BCEE00E47B83 /* WebsiteDataStoreParameters.h */; }; 937 511F7D421EB1BCF800E47B83 /* WebsiteDataStoreParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511F7D3F1EB1BCEE00E47B83 /* WebsiteDataStoreParameters.cpp */; }; 936 938 511F8A7B138B460900A95F44 /* SecItemShimLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 511F8A77138B460900A95F44 /* SecItemShimLibrary.h */; }; 937 939 511F8A81138B485D00A95F44 /* SecItemShimLibrary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 511F8A78138B460900A95F44 /* SecItemShimLibrary.mm */; }; … … 3165 3167 511B24A8132E097200065A0C /* WebIconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIconDatabase.cpp; sourceTree = "<group>"; }; 3166 3168 511B24A9132E097200065A0C /* WebIconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabase.h; sourceTree = "<group>"; }; 3169 511F7D3F1EB1BCEE00E47B83 /* WebsiteDataStoreParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebsiteDataStoreParameters.cpp; sourceTree = "<group>"; }; 3170 511F7D401EB1BCEE00E47B83 /* WebsiteDataStoreParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteDataStoreParameters.h; sourceTree = "<group>"; }; 3167 3171 511F8A77138B460900A95F44 /* SecItemShimLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SecItemShimLibrary.h; path = ../../WebProcess/mac/SecItemShimLibrary.h; sourceTree = "<group>"; }; 3168 3172 511F8A78138B460900A95F44 /* SecItemShimLibrary.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SecItemShimLibrary.mm; path = ../../WebProcess/mac/SecItemShimLibrary.mm; sourceTree = "<group>"; }; … … 5009 5013 3760881D150413E900FC82C7 /* WebRenderObject.h */, 5010 5014 5C9E567F1DF7930900C9EE33 /* WebsitePolicies.h */, 5015 511F7D3F1EB1BCEE00E47B83 /* WebsiteDataStoreParameters.cpp */, 5016 511F7D401EB1BCEE00E47B83 /* WebsiteDataStoreParameters.h */, 5011 5017 8360349D1ACB34D600626549 /* WebSQLiteDatabaseTracker.cpp */, 5012 5018 8360349E1ACB34D600626549 /* WebSQLiteDatabaseTracker.h */, … … 8059 8065 name = cache; 8060 8066 path = NetworkProcess/cache; 8061 sourceTree = "<group>";8062 };8063 F4D7BCCA1EA494FA00C421D3 /* Recovered References */ = {8064 isa = PBXGroup;8065 children = (8066 C58CDF281887548B00871536 /* InteractionInformationAtPosition.h */,8067 );8068 name = "Recovered References";8069 8067 sourceTree = "<group>"; 8070 8068 }; … … 8428 8426 5C1426F01C23F80900D41183 /* NetworkResourceLoadParameters.h in Headers */, 8429 8427 413075AC1DE85F370039EC69 /* NetworkRTCMonitor.h in Headers */, 8428 511F7D411EB1BCF500E47B83 /* WebsiteDataStoreParameters.h in Headers */, 8430 8429 41DC45961E3D6E2200B11F51 /* NetworkRTCProvider.h in Headers */, 8431 8430 413075AB1DE85F330039EC69 /* NetworkRTCSocket.h in Headers */, … … 10132 10131 1A64245F12DE29A100CAAE2C /* UpdateInfo.cpp in Sources */, 10133 10132 1AC1336718565B5700F3EC05 /* UserData.cpp in Sources */, 10133 511F7D421EB1BCF800E47B83 /* WebsiteDataStoreParameters.cpp in Sources */, 10134 10134 07297F9E1C17BBEA003F0735 /* UserMediaPermissionCheckProxy.cpp in Sources */, 10135 10135 15739BBC1B42040300D258C1 /* UserMediaPermissionRequestManager.cpp in Sources */, -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h
r197563 r215941 34 34 namespace WebKit { 35 35 36 struct WebsiteDataStoreParameters; 37 36 38 class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext { 37 39 public: … … 43 45 // FIXME: remove platform-specific code and use SessionTracker 44 46 static void ensurePrivateBrowsingSession(WebCore::SessionID); 47 static void ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&); 45 48 46 49 static void setCookieAcceptPolicyForAllContexts(HTTPCookieAcceptPolicy); -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm
r207813 r215941 32 32 #include "WebPage.h" 33 33 #include "WebProcess.h" 34 #include "WebsiteDataStoreParameters.h" 34 35 #include <WebCore/CFNetworkSPI.h> 35 36 #include <WebCore/Frame.h> … … 63 64 auto networkSession = NetworkSession::create(sessionID); 64 65 SessionTracker::setSession(sessionID, WTFMove(networkSession)); 66 #endif 67 } 68 69 void WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&& parameters) 70 { 71 if (NetworkStorageSession::storageSession(parameters.sessionID)) 72 return; 73 74 String base; 75 if (SessionTracker::getIdentifierBase().isNull()) 76 base = [[NSBundle mainBundle] bundleIdentifier]; 77 else 78 base = SessionTracker::getIdentifierBase(); 79 80 #if PLATFORM(IOS) 81 SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle); 82 #endif 83 84 RetainPtr<CFHTTPCookieStorageRef> uiProcessCookieStorage; 85 86 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 87 RetainPtr<CFDataRef> cookieStorageData = adoptCF(CFDataCreate(kCFAllocatorDefault, parameters.uiProcessCookieStorageIdentifier.data(), parameters.uiProcessCookieStorageIdentifier.size())); 88 uiProcessCookieStorage = adoptCF(CFHTTPCookieStorageCreateFromIdentifyingData(kCFAllocatorDefault, cookieStorageData.get())); 89 #endif 90 91 NetworkStorageSession::ensureSession(parameters.sessionID, base + '.' + String::number(parameters.sessionID.sessionID()), WTFMove(uiProcessCookieStorage)); 92 93 #if USE(NETWORK_SESSION) 94 auto networkSession = NetworkSession::create(parameters.sessionID); 95 SessionTracker::setSession(parameters.sessionID, WTFMove(networkSession)); 65 96 #endif 66 97 } … … 110 141 return *storageSession; 111 142 // Some requests may still be coming shortly after WebProcess was told to destroy its session. 112 LOG_ERROR(" Invalid session ID. Please file a bug unless you just disabled private browsing, in which case it's an expected race.");143 LOG_ERROR("WEB Invalid session ID. Please file a bug unless you just disabled private browsing, in which case it's an expected race."); 113 144 } 114 145 return NetworkStorageSession::defaultStorageSession(); -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp
r212626 r215941 53 53 } 54 54 55 void WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&) 56 { 57 // FIXME: Implement 58 } 59 55 60 WebFrameNetworkingContext::WebFrameNetworkingContext(WebFrame* frame) 56 61 : FrameNetworkingContext(frame->coreFrame()) -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h
r212626 r215941 35 35 class WebFrame; 36 36 class WebFrameLoaderClient; 37 struct WebsiteDataStoreParameters; 37 38 38 39 class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext { … … 44 45 45 46 static void ensurePrivateBrowsingSession(WebCore::SessionID); 47 static void ensureWebsiteDataStoreSession(WebsiteDataStoreParameters&&); 46 48 47 49 WebFrameLoaderClient* webFrameLoaderClient() const; -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r215355 r215941 514 514 } 515 515 516 void WebProcess::destroyPrivateBrowsingSession(SessionID sessionID) 516 void WebProcess::addWebsiteDataStore(WebsiteDataStoreParameters&& parameters) 517 { 518 WebFrameNetworkingContext::ensureWebsiteDataStoreSession(WTFMove(parameters)); 519 } 520 521 void WebProcess::destroySession(SessionID sessionID) 517 522 { 518 523 SessionTracker::destroySession(sessionID); -
trunk/Source/WebKit2/WebProcess/WebProcess.h
r213857 r215941 96 96 struct WebProcessCreationParameters; 97 97 struct WebsiteData; 98 struct WebsiteDataStoreParameters; 98 99 99 100 #if ENABLE(DATABASE_PROCESS) … … 181 182 182 183 void ensurePrivateBrowsingSession(WebCore::SessionID); 183 void destroyPrivateBrowsingSession(WebCore::SessionID);184 184 void ensureLegacyPrivateBrowsingSessionInNetworkProcess(); 185 void addWebsiteDataStore(WebsiteDataStoreParameters&&); 186 void destroySession(WebCore::SessionID); 185 187 186 188 void pageDidEnterWindow(uint64_t pageID); -
trunk/Source/WebKit2/WebProcess/WebProcess.messages.in
r213824 r215941 47 47 ClearCachedCredentials() 48 48 49 // Legacy private browsing session is per process. Individual pages or page groups may use the private session or the default one as appropriate.50 49 EnsurePrivateBrowsingSession(WebCore::SessionID sessionID) 51 DestroyPrivateBrowsingSession(WebCore::SessionID sessionID) 50 AddWebsiteDataStore(struct WebKit::WebsiteDataStoreParameters websiteDataStoreParameters); 51 DestroySession(WebCore::SessionID sessionID) 52 52 53 53 # Plug-ins. -
trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm
r215123 r215941 46 46 #import "WebProcessCreationParameters.h" 47 47 #import "WebProcessProxyMessages.h" 48 #import "WebsiteDataStoreParameters.h" 48 49 #import <JavaScriptCore/Options.h> 49 50 #import <WebCore/AXObjectCache.h> -
trunk/Tools/ChangeLog
r215939 r215941 1 2017-04-28 Brady Eidson <beidson@apple.com> 2 3 Start of support for multiple WebsiteDataStore/SessionIDs per process 4 https://bugs.webkit.org/show_bug.cgi?id=171422 5 6 Reviewed by Geoffrey Garen. 7 8 * TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm: 9 (TEST): 10 1 11 2017-04-28 Youenn Fablet <youenn@apple.com> 2 12 -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm
r215897 r215941 80 80 NSURL *cookieStoragePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/CookieStorage/" stringByExpandingTildeInPath]]; 81 81 82 NSURL *defaultSQLPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/WebSQL/" stringByExpandingTildeInPath]]; 83 NSURL *defaultIDBPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/IndexedDB/" stringByExpandingTildeInPath]]; 84 NSURL *defaultLocalStoragePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/LocalStorage/" stringByExpandingTildeInPath]]; 85 82 86 [[NSFileManager defaultManager] removeItemAtURL:sqlPath error:nil]; 83 87 [[NSFileManager defaultManager] removeItemAtURL:idbPath error:nil]; 84 88 [[NSFileManager defaultManager] removeItemAtURL:localStoragePath error:nil]; 85 89 [[NSFileManager defaultManager] removeItemAtURL:cookieStoragePath error:nil]; 90 [[NSFileManager defaultManager] removeItemAtURL:defaultSQLPath error:nil]; 91 [[NSFileManager defaultManager] removeItemAtURL:defaultIDBPath error:nil]; 92 [[NSFileManager defaultManager] removeItemAtURL:defaultLocalStoragePath error:nil]; 86 93 87 94 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:sqlPath.path]); … … 89 96 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:localStoragePath.path]); 90 97 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:cookieStoragePath.path]); 98 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultSQLPath.path]); 99 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultIDBPath.path]); 100 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultLocalStoragePath.path]); 91 101 92 102 _WKWebsiteDataStoreConfiguration *websiteDataStoreConfiguration = [[_WKWebsiteDataStoreConfiguration alloc] init]; … … 112 122 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:sqlPath.path]); 113 123 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:localStoragePath.path]); 114 115 // FIXME: Once this API works this should be true, and there should be a file that contains the bytes "testkey=value"124 125 // FIXME: This should be true, but comes up false. Possibly a CFNetwork issue. Being explored in <rdar://problem/31666275> 116 126 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:cookieStoragePath.path]); 117 118 // FIXME: <rdar://problem/30785618> - We don't yet support IDB database processes at custom paths per WebsiteDataStore 119 // EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:idbPath]); 127 128 // FIXME: <rdar://problem/30785618> - We don't yet support IDB database processes at custom paths per WebsiteDataStore (These should be flipped) 129 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:idbPath.path]); 130 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:defaultIDBPath.path]); 131 132 // FIXME: The default SQL and LocalStorage paths are being used for something, but they shouldn't be. (theses should be false, not true) 133 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:defaultSQLPath.path]); 134 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:defaultLocalStoragePath.path]); 120 135 } 121 136
Note: See TracChangeset
for help on using the changeset viewer.