Title: [184669] trunk/Source/WebKit2
Revision
184669
Author
[email protected]
Date
2015-05-20 16:04:15 -0700 (Wed, 20 May 2015)

Log Message

Refactor process pool enumeration code in WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=145218

Reviewed by Tim Horton.

Also make sure to keep the WebProcessPool objects alive for the duration of the various data store
operations. This is the first step towards having the data store create a single process pool lazily if
there are no web views associated with the data store.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::processPools):
* UIProcess/WebsiteData/WebsiteDataStore.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (184668 => 184669)


--- trunk/Source/WebKit2/ChangeLog	2015-05-20 23:01:24 UTC (rev 184668)
+++ trunk/Source/WebKit2/ChangeLog	2015-05-20 23:04:15 UTC (rev 184669)
@@ -1,3 +1,20 @@
+2015-05-20  Anders Carlsson  <[email protected]>
+
+        Refactor process pool enumeration code in WebsiteDataStore
+        https://bugs.webkit.org/show_bug.cgi?id=145218
+
+        Reviewed by Tim Horton.
+
+        Also make sure to keep the WebProcessPool objects alive for the duration of the various data store
+        operations. This is the first step towards having the data store create a single process pool lazily if
+        there are no web views associated with the data store.
+
+        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+        (WebKit::WebsiteDataStore::fetchData):
+        (WebKit::WebsiteDataStore::removeData):
+        (WebKit::WebsiteDataStore::processPools):
+        * UIProcess/WebsiteData/WebsiteDataStore.h:
+
 2015-05-20  Alex Christensen  <[email protected]>
 
         [Content Extensions] Relax restrictions on triggers that match everything.

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (184668 => 184669)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp	2015-05-20 23:01:24 UTC (rev 184668)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp	2015-05-20 23:04:15 UTC (rev 184669)
@@ -215,11 +215,7 @@
 
     auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataFetch(dataTypes, !isPersistent());
     if (networkProcessAccessType != ProcessAccessType::None) {
-        HashSet<WebProcessPool*> processPools;
-        for (auto& process : processes())
-            processPools.add(&process->processPool());
-
-        for (auto& processPool : processPools) {
+        for (auto processPool : processPools()) {
             switch (networkProcessAccessType) {
             case ProcessAccessType::OnlyIfLaunched:
                 if (!processPool->networkProcess())
@@ -235,7 +231,7 @@
             }
 
             callbackAggregator->addPendingCallback();
-            processPool->networkProcess()->fetchWebsiteData(m_sessionID, dataTypes, [callbackAggregator](WebsiteData websiteData) {
+            processPool->networkProcess()->fetchWebsiteData(m_sessionID, dataTypes, [callbackAggregator, processPool](WebsiteData websiteData) {
                 callbackAggregator->removePendingCallback(WTF::move(websiteData));
             });
         }
@@ -335,15 +331,11 @@
 
 #if ENABLE(DATABASE_PROCESS)
     if (dataTypes & WebsiteDataTypeIndexedDBDatabases && isPersistent()) {
-        HashSet<WebProcessPool*> processPools;
-        for (auto& process : processes())
-            processPools.add(&process->processPool());
-
-        for (auto& processPool : processPools) {
+        for (auto processPool : processPools()) {
             processPool->ensureDatabaseProcess();
 
             callbackAggregator->addPendingCallback();
-            processPool->databaseProcess()->fetchWebsiteData(m_sessionID, dataTypes, [callbackAggregator](WebsiteData websiteData) {
+            processPool->databaseProcess()->fetchWebsiteData(m_sessionID, dataTypes, [callbackAggregator, processPool](WebsiteData websiteData) {
                 callbackAggregator->removePendingCallback(WTF::move(websiteData));
             });
         }
@@ -417,11 +409,7 @@
 
     auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
     if (networkProcessAccessType != ProcessAccessType::None) {
-        HashSet<WebProcessPool*> processPools;
-        for (auto& process : processes())
-            processPools.add(&process->processPool());
-
-        for (auto& processPool : processPools) {
+        for (auto processPool : processPools()) {
             switch (networkProcessAccessType) {
             case ProcessAccessType::OnlyIfLaunched:
                 if (!processPool->networkProcess())
@@ -437,7 +425,7 @@
             }
 
             callbackAggregator->addPendingCallback();
-            processPool->networkProcess()->deleteWebsiteData(m_sessionID, dataTypes, modifiedSince, [callbackAggregator] {
+            processPool->networkProcess()->deleteWebsiteData(m_sessionID, dataTypes, modifiedSince, [callbackAggregator, processPool] {
                 callbackAggregator->removePendingCallback();
             });
         }
@@ -516,15 +504,11 @@
 
 #if ENABLE(DATABASE_PROCESS)
     if (dataTypes & WebsiteDataTypeIndexedDBDatabases && isPersistent()) {
-        HashSet<WebProcessPool*> processPools;
-        for (auto& process : processes())
-            processPools.add(&process->processPool());
-
-        for (auto& processPool : processPools) {
+        for (auto processPool : processPools()) {
             processPool->ensureDatabaseProcess();
 
             callbackAggregator->addPendingCallback();
-            processPool->databaseProcess()->deleteWebsiteData(m_sessionID, dataTypes, modifiedSince, [callbackAggregator]() {
+            processPool->databaseProcess()->deleteWebsiteData(m_sessionID, dataTypes, modifiedSince, [callbackAggregator, processPool] {
                 callbackAggregator->removePendingCallback();
             });
         }
@@ -577,11 +561,7 @@
 
     auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
     if (networkProcessAccessType != ProcessAccessType::None) {
-        HashSet<WebProcessPool*> processPools;
-        for (auto& process : processes())
-            processPools.add(&process->processPool());
-
-        for (auto& processPool : processPools) {
+        for (auto processPool : processPools()) {
             switch (networkProcessAccessType) {
             case ProcessAccessType::OnlyIfLaunched:
                 if (!processPool->networkProcess())
@@ -603,7 +583,7 @@
             }
 
             callbackAggregator->addPendingCallback();
-            processPool->networkProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, cookieHostNames, [callbackAggregator] {
+            processPool->networkProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, cookieHostNames, [callbackAggregator, processPool] {
                 callbackAggregator->removePendingCallback();
             });
         }
@@ -697,15 +677,11 @@
 
 #if ENABLE(DATABASE_PROCESS)
     if (dataTypes & WebsiteDataTypeIndexedDBDatabases && isPersistent()) {
-        HashSet<WebProcessPool*> processPools;
-        for (auto& process : processes())
-            processPools.add(&process->processPool());
-
-        for (auto& processPool : processPools) {
+        for (auto processPool : processPools()) {
             processPool->ensureDatabaseProcess();
 
             callbackAggregator->addPendingCallback();
-            processPool->databaseProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, [callbackAggregator]() {
+            processPool->databaseProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, [callbackAggregator, processPool] {
                 callbackAggregator->removePendingCallback();
             });
         }
@@ -752,4 +728,13 @@
         m_storageManager->processDidCloseConnection(webProcessProxy, connection);
 }
 
+HashSet<RefPtr<WebProcessPool>> WebsiteDataStore::processPools() const
+{
+    HashSet<RefPtr<WebProcessPool>> processPools;
+    for (auto& process : processes())
+        processPools.add(&process->processPool());
+
+    return processPools;
 }
+
+}

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h (184668 => 184669)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h	2015-05-20 23:01:24 UTC (rev 184668)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.h	2015-05-20 23:04:15 UTC (rev 184669)
@@ -40,6 +40,7 @@
 
 class StorageManager;
 class WebPageProxy;
+class WebProcessPool;
 struct WebsiteDataRecord;
 
 class WebsiteDataStore : public RefCounted<WebsiteDataStore>, public WebProcessLifetimeObserver {
@@ -83,6 +84,8 @@
     void platformInitialize();
     void platformDestroy();
 
+    HashSet<RefPtr<WebProcessPool>> processPools() const;
+
     const uint64_t m_identifier;
     const WebCore::SessionID m_sessionID;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to