Changeset 242975 in webkit
- Timestamp:
- Mar 14, 2019 4:08:27 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r242968 r242975 1 2019-03-14 Youenn Fablet <youenn@apple.com> 2 3 Move IDB storage in private browsing mode to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=195602 5 6 Reviewed by Brady Eidson. 7 8 Covered by existing IDB tests and added API test. 9 10 * NetworkProcess/NetworkProcess.cpp: 11 (WebKit::NetworkProcess::createIDBServer): 12 Make sure that path is empty for private sessions. 13 This will make IDB use a memory backing store. 14 * WebProcess/Databases/WebDatabaseProvider.cpp: 15 (WebKit::WebDatabaseProvider::idbConnectionToServerForSession): 16 Use NetworkProcess IDB server instead of InProcessIDBServer. 17 1 18 2019-03-14 Wenson Hsieh <wenson_hsieh@apple.com> 2 19 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r242947 r242975 2053 2053 Ref<IDBServer::IDBServer> NetworkProcess::createIDBServer(PAL::SessionID sessionID) 2054 2054 { 2055 auto path = m_idbDatabasePaths.get(sessionID); 2056 // There should already be a registered path for this PAL::SessionID. 2057 // If there's not, then where did this PAL::SessionID come from? 2058 ASSERT(!path.isEmpty()); 2055 String path; 2056 if (!sessionID.isEphemeral()) { 2057 ASSERT(m_idbDatabasePaths.contains(sessionID)); 2058 path = m_idbDatabasePaths.get(sessionID); 2059 } 2059 2060 2060 2061 auto server = IDBServer::IDBServer::create(sessionID, path, *this, [this, weakThis = makeWeakPtr(this)](PAL::SessionID sessionID, const auto& origin) -> StorageQuotaManager* { -
trunk/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.cpp
r242911 r242975 70 70 WebCore::IDBClient::IDBConnectionToServer& WebDatabaseProvider::idbConnectionToServerForSession(const PAL::SessionID& sessionID) 71 71 { 72 if (sessionID.isEphemeral()) {73 auto result = m_idbEphemeralConnectionMap.add(sessionID.sessionID(), nullptr);74 if (result.isNewEntry)75 result.iterator->value = WebCore::InProcessIDBServer::create(sessionID);76 77 return result.iterator->value->connectionToServer();78 }79 80 72 return WebProcess::singleton().ensureNetworkProcessConnection().idbConnectionToServerForSession(sessionID).coreConnectionToServer(); 81 73 } -
trunk/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.h
r220857 r242975 45 45 explicit WebDatabaseProvider(uint64_t identifier); 46 46 47 #if ENABLE(INDEXED_DATABASE)48 HashMap<uint64_t, RefPtr<WebCore::InProcessIDBServer>> m_idbEphemeralConnectionMap;49 #endif50 51 47 const uint64_t m_identifier; 52 48 }; -
trunk/Tools/ChangeLog
r242969 r242975 1 2019-03-14 Youenn Fablet <youenn@apple.com> 2 3 Move IDB storage in private browsing mode to NetworkProcess 4 https://bugs.webkit.org/show_bug.cgi?id=195602 5 6 Reviewed by Brady Eidson. 7 8 * TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm: 9 (TEST): 10 1 11 2019-03-14 Aakash Jain <aakash_jain@apple.com> 2 12 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm
r242339 r242975 32 32 #import <WebKit/WKUserContentControllerPrivate.h> 33 33 #import <WebKit/WKWebViewConfigurationPrivate.h> 34 #import <WebKit/WKWebViewPrivate.h> 34 35 #import <WebKit/_WKProcessPoolConfiguration.h> 35 36 #import <WebKit/_WKUserStyleSheet.h> … … 93 94 } 94 95 96 TEST(IndexedDB, IndexedDBPersistencePrivate) 97 { 98 RetainPtr<IndexedDBMessageHandler> handler = adoptNS([[IndexedDBMessageHandler alloc] init]); 99 RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]); 100 [[configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"]; 101 102 auto ephemeralStore = [WKWebsiteDataStore nonPersistentDataStore]; 103 configuration.get().websiteDataStore = ephemeralStore; 104 105 auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); 106 107 NSURLRequest *request = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"IndexedDBPersistence-1" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]; 108 [webView loadRequest:request]; 109 110 TestWebKitAPI::Util::run(&receivedScriptMessage); 111 receivedScriptMessage = false; 112 RetainPtr<NSString> string1 = (NSString *)[lastScriptMessage body]; 113 114 TestWebKitAPI::Util::run(&receivedScriptMessage); 115 receivedScriptMessage = false; 116 RetainPtr<NSString> string2 = (NSString *)[lastScriptMessage body]; 117 118 auto webViewPid1 = [webView _webProcessIdentifier]; 119 // Ditch this web view (ditching its web process) 120 webView = nil; 121 122 // Make a new web view to finish the test 123 webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); 124 125 request = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"IndexedDBPersistence-2" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]; 126 [webView loadRequest:request]; 127 128 TestWebKitAPI::Util::run(&receivedScriptMessage); 129 receivedScriptMessage = false; 130 RetainPtr<NSString> string3 = (NSString *)[lastScriptMessage body]; 131 132 auto webViewPid2 = [webView _webProcessIdentifier]; 133 EXPECT_NE(webViewPid1, webViewPid2); 134 135 EXPECT_WK_STREQ(@"UpgradeNeeded", string1.get()); 136 EXPECT_WK_STREQ(@"Success", string2.get()); 137 EXPECT_WK_STREQ(@"2 TestObjectStore", string3.get()); 138 } 139 95 140 TEST(IndexedDB, IndexedDBDataRemoval) 96 141 {
Note: See TracChangeset
for help on using the changeset viewer.