Title: [185529] trunk/Source/WebKit2
Revision
185529
Author
[email protected]
Date
2015-06-12 18:40:57 -0700 (Fri, 12 Jun 2015)

Log Message

Reimplement WKResourceCacheManagerRef on top of WKWebsiteDataStoreRef
https://bugs.webkit.org/show_bug.cgi?id=145951

Reviewed by Darin Adler.

* UIProcess/API/C/WKContext.cpp:
(WKContextGetResourceCacheManager):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerGetTypeID):
(toWebsiteDataTypes):
(WKResourceCacheManagerGetCacheOrigins):
(WKResourceCacheManagerClearCacheForOrigin):
(WKResourceCacheManagerClearCacheForAllOrigins):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (185528 => 185529)


--- trunk/Source/WebKit2/ChangeLog	2015-06-13 01:35:08 UTC (rev 185528)
+++ trunk/Source/WebKit2/ChangeLog	2015-06-13 01:40:57 UTC (rev 185529)
@@ -1,5 +1,21 @@
 2015-06-12  Anders Carlsson  <[email protected]>
 
+        Reimplement WKResourceCacheManagerRef on top of WKWebsiteDataStoreRef
+        https://bugs.webkit.org/show_bug.cgi?id=145951
+
+        Reviewed by Darin Adler.
+
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextGetResourceCacheManager):
+        * UIProcess/API/C/WKResourceCacheManager.cpp:
+        (WKResourceCacheManagerGetTypeID):
+        (toWebsiteDataTypes):
+        (WKResourceCacheManagerGetCacheOrigins):
+        (WKResourceCacheManagerClearCacheForOrigin):
+        (WKResourceCacheManagerClearCacheForAllOrigins):
+
+2015-06-12  Anders Carlsson  <[email protected]>
+
         Reimplement WKApplicationCacheManagerRef as WKWebsiteDataStoreRef
         https://bugs.webkit.org/show_bug.cgi?id=145950
 

Modified: trunk/Source/WebKit2/Shared/SecurityOriginData.h (185528 => 185529)


--- trunk/Source/WebKit2/Shared/SecurityOriginData.h	2015-06-13 01:35:08 UTC (rev 185528)
+++ trunk/Source/WebKit2/Shared/SecurityOriginData.h	2015-06-13 01:40:57 UTC (rev 185529)
@@ -1,4 +1,4 @@
-/*
+ /*
  * Copyright (C) 2011 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (185528 => 185529)


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2015-06-13 01:35:08 UTC (rev 185528)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2015-06-13 01:40:57 UTC (rev 185529)
@@ -472,9 +472,9 @@
 #endif
 }
 
-WKResourceCacheManagerRef WKContextGetResourceCacheManager(WKContextRef contextRef)
+WKResourceCacheManagerRef WKContextGetResourceCacheManager(WKContextRef context)
 {
-    return toAPI(toImpl(contextRef)->supplement<WebResourceCacheManagerProxy>());
+    return reinterpret_cast<WKResourceCacheManagerRef>(WKContextGetWebsiteDataStore(context));
 }
 
 WKOriginDataManagerRef WKContextGetOriginDataManager(WKContextRef context)

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp (185528 => 185529)


--- trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp	2015-06-13 01:35:08 UTC (rev 185528)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp	2015-06-13 01:40:57 UTC (rev 185529)
@@ -26,27 +26,68 @@
 #include "config.h"
 #include "WKResourceCacheManager.h"
 
-#include "WebResourceCacheManagerProxy.h"
+#include "APIWebsiteDataStore.h"
 #include "WKAPICast.h"
+#include "WebsiteDataRecord.h"
 
 using namespace WebKit;
 
 WKTypeID WKResourceCacheManagerGetTypeID()
 {
-    return toAPI(WebResourceCacheManagerProxy::APIType);
+    return toAPI(API::WebsiteDataStore::APIType);
 }
 
-void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef cacheManagerRef, void* context, WKResourceCacheManagerGetCacheOriginsFunction callback)
+static WebsiteDataTypes toWebsiteDataTypes(WKResourceCachesToClear cachesToClear)
 {
-    toImpl(cacheManagerRef)->getCacheOrigins(toGenericCallbackFunction(context, callback));
+    using WebsiteDataTypes = WebKit::WebsiteDataTypes;
+
+    int websiteDataTypes = WebsiteDataTypeMemoryCache;
+
+    if (cachesToClear == WKResourceCachesToClearAll)
+        websiteDataTypes |= WebsiteDataTypeDiskCache;
+
+    return static_cast<WebsiteDataTypes>(websiteDataTypes);
 }
 
-void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManagerRef, WKSecurityOriginRef originRef, WKResourceCachesToClear cachesToClear)
+void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef cacheManager, void* context, WKResourceCacheManagerGetCacheOriginsFunction callback)
 {
-    toImpl(cacheManagerRef)->clearCacheForOrigin(toImpl(originRef), toResourceCachesToClear(cachesToClear));
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
+    websiteDataStore.fetchData(toWebsiteDataTypes(WKResourceCachesToClearAll), [context, callback](Vector<WebsiteDataRecord> dataRecords) {
+        Vector<RefPtr<API::Object>> securityOrigins;
+        for (const auto& dataRecord : dataRecords) {
+            for (const auto& origin : dataRecord.origins)
+                securityOrigins.append(API::SecurityOrigin::create(origin));
+        }
+
+        callback(toAPI(API::Array::create(WTF::move(securityOrigins)).ptr()), nullptr, context);
+    });
 }
 
-void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManagerRef, WKResourceCachesToClear cachesToClear)
+void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManager, WKSecurityOriginRef origin, WKResourceCachesToClear cachesToClear)
 {
-    toImpl(cacheManagerRef)->clearCacheForAllOrigins(toResourceCachesToClear(cachesToClear));
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
+
+    Vector<WebsiteDataRecord> dataRecords;
+
+    {
+        WebsiteDataRecord dataRecord;
+        dataRecord.add(WebsiteDataTypes::WebsiteDataTypeMemoryCache, &toImpl(origin)->securityOrigin());
+
+        dataRecords.append(dataRecord);
+    }
+
+    if (cachesToClear == WKResourceCachesToClearAll) {
+        WebsiteDataRecord dataRecord;
+        dataRecord.add(WebsiteDataTypes::WebsiteDataTypeDiskCache, &toImpl(origin)->securityOrigin());
+
+        dataRecords.append(dataRecord);
+    }
+
+    websiteDataStore.removeData(toWebsiteDataTypes(cachesToClear), dataRecords, [] { });
 }
+
+void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManager, WKResourceCachesToClear cachesToClear)
+{
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
+    websiteDataStore.removeData(toWebsiteDataTypes(cachesToClear), std::chrono::system_clock::time_point::min(), [] { });
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to