Title: [114958] trunk/Source/WebKit2
Revision
114958
Author
kl...@webkit.org
Date
2012-04-23 15:52:13 -0700 (Mon, 23 Apr 2012)

Log Message

[Mac] WebProcess should empty cache on a background thread/block.
<http://webkit.org/b/84619>
<rdar://problem/10668689>

Reviewed by Anders Carlsson.

Move the removeAllCachedResponses call to a dispatch queue and wait for it on exit.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess):
* WebProcess/WebProcess.h:
(WebProcess):
* WebProcess/mac/WebProcessMac.mm:
(WebKit::WebProcess::platformClearResourceCaches):
(WebKit::WebProcess::platformTerminate):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (114957 => 114958)


--- trunk/Source/WebKit2/ChangeLog	2012-04-23 22:41:01 UTC (rev 114957)
+++ trunk/Source/WebKit2/ChangeLog	2012-04-23 22:52:13 UTC (rev 114958)
@@ -1,3 +1,21 @@
+2012-04-23  Andreas Kling  <kl...@webkit.org>
+
+        [Mac] WebProcess should empty cache on a background thread/block.
+        <http://webkit.org/b/84619>
+        <rdar://problem/10668689>
+
+        Reviewed by Anders Carlsson.
+
+        Move the removeAllCachedResponses call to a dispatch queue and wait for it on exit.
+
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::WebProcess):
+        * WebProcess/WebProcess.h:
+        (WebProcess):
+        * WebProcess/mac/WebProcessMac.mm:
+        (WebKit::WebProcess::platformClearResourceCaches):
+        (WebKit::WebProcess::platformTerminate):
+
 2012-04-23  Allan Sandfeld Jensen  <allan.jen...@nokia.com>
 
         [Qt][WK2] Convert touch-point area.

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (114957 => 114958)


--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp	2012-04-23 22:41:01 UTC (rev 114957)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp	2012-04-23 22:52:13 UTC (rev 114958)
@@ -135,6 +135,9 @@
 #if USE(ACCELERATED_COMPOSITING) && PLATFORM(MAC)
     , m_compositingRenderServerPort(MACH_PORT_NULL)
 #endif
+#if PLATFORM(MAC)
+    , m_clearResourceCachesDispatchGroup(0)
+#endif
     , m_fullKeyboardAccessEnabled(false)
 #if PLATFORM(QT)
     , m_networkAccessManager(0)

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (114957 => 114958)


--- trunk/Source/WebKit2/WebProcess/WebProcess.h	2012-04-23 22:41:01 UTC (rev 114957)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h	2012-04-23 22:52:13 UTC (rev 114958)
@@ -48,6 +48,10 @@
 class QNetworkAccessManager;
 #endif
 
+#if PLATFORM(MAC)
+#include <dispatch/dispatch.h>
+#endif
+
 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
 #include "WebNotificationManager.h"
 #endif
@@ -254,6 +258,7 @@
 #endif
 #if PLATFORM(MAC)
     pid_t m_presenterApplicationPid;
+    dispatch_group_t m_clearResourceCachesDispatchGroup;
 #endif
 
     bool m_fullKeyboardAccessEnabled;

Modified: trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm (114957 => 114958)


--- trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm	2012-04-23 22:41:01 UTC (rev 114957)
+++ trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm	2012-04-23 22:52:13 UTC (rev 114958)
@@ -130,7 +130,13 @@
 {
     if (cachesToClear == InMemoryResourceCachesOnly)
         return;
-    [[NSURLCache sharedURLCache] removeAllCachedResponses];
+
+    if (!m_clearResourceCachesDispatchGroup)
+        m_clearResourceCachesDispatchGroup = dispatch_group_create();
+
+    dispatch_group_async(m_clearResourceCachesDispatchGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        [[NSURLCache sharedURLCache] removeAllCachedResponses];
+    });
 }
 
 #if ENABLE(WEB_PROCESS_SANDBOX)
@@ -284,6 +290,11 @@
 
 void WebProcess::platformTerminate()
 {
+    if (m_clearResourceCachesDispatchGroup) {
+        dispatch_group_wait(m_clearResourceCachesDispatchGroup, DISPATCH_TIME_FOREVER);
+        dispatch_release(m_clearResourceCachesDispatchGroup);
+        m_clearResourceCachesDispatchGroup = 0;
+    }
 }
 
 void WebProcess::secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData& response)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to