Title: [185474] trunk/Source/WebKit2
Revision
185474
Author
[email protected]
Date
2015-06-11 14:11:45 -0700 (Thu, 11 Jun 2015)

Log Message

Reimplement WKOriginDataManager in terms of API::WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=145889

Reviewed by Dan Bernstein.

* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextGetOriginDataManager):
* UIProcess/API/C/WKOriginDataManager.cpp:
(WKOriginDataManagerGetTypeID):
(WKOriginDataManagerGetOrigins):
(WKOriginDataManagerDeleteEntriesForOrigin):
(WKOriginDataManagerDeleteEntriesModifiedBetweenDates):
(WKOriginDataManagerDeleteAllEntries):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (185473 => 185474)


--- trunk/Source/WebKit2/ChangeLog	2015-06-11 21:06:23 UTC (rev 185473)
+++ trunk/Source/WebKit2/ChangeLog	2015-06-11 21:11:45 UTC (rev 185474)
@@ -1,3 +1,20 @@
+2015-06-11  Anders Carlsson  <[email protected]>
+
+        Reimplement WKOriginDataManager in terms of API::WebsiteDataStore
+        https://bugs.webkit.org/show_bug.cgi?id=145889
+
+        Reviewed by Dan Bernstein.
+
+        * UIProcess/API/C/WKAPICast.h:
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextGetOriginDataManager):
+        * UIProcess/API/C/WKOriginDataManager.cpp:
+        (WKOriginDataManagerGetTypeID):
+        (WKOriginDataManagerGetOrigins):
+        (WKOriginDataManagerDeleteEntriesForOrigin):
+        (WKOriginDataManagerDeleteEntriesModifiedBetweenDates):
+        (WKOriginDataManagerDeleteAllEntries):
+
 2015-06-11  Brent Fulgham  <[email protected]>
 
         Full screen video space can be resized to 1pt wide

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h (185473 => 185474)


--- trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2015-06-11 21:06:23 UTC (rev 185473)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2015-06-11 21:11:45 UTC (rev 185474)
@@ -152,7 +152,6 @@
 WK_ADD_API_MAPPING(WKNotificationRef, WebNotification)
 WK_ADD_API_MAPPING(WKOpenPanelParametersRef, WebOpenPanelParameters)
 WK_ADD_API_MAPPING(WKOpenPanelResultListenerRef, WebOpenPanelResultListenerProxy)
-WK_ADD_API_MAPPING(WKOriginDataManagerRef, WebOriginDataManagerProxy)
 WK_ADD_API_MAPPING(WKPageGroupRef, WebPageGroup)
 WK_ADD_API_MAPPING(WKPageConfigurationRef, API::PageConfiguration)
 WK_ADD_API_MAPPING(WKPageRef, WebPageProxy)

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


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2015-06-11 21:06:23 UTC (rev 185473)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2015-06-11 21:11:45 UTC (rev 185474)
@@ -478,9 +478,9 @@
     return toAPI(toImpl(contextRef)->supplement<WebResourceCacheManagerProxy>());
 }
 
-WKOriginDataManagerRef WKContextGetOriginDataManager(WKContextRef contextRef)
+WKOriginDataManagerRef WKContextGetOriginDataManager(WKContextRef context)
 {
-    return toAPI(toImpl(contextRef)->supplement<WebOriginDataManagerProxy>());
+    return reinterpret_cast<WKOriginDataManagerRef>(toAPI(toImpl(context)->websiteDataStore()));
 }
 
 void WKContextStartMemorySampler(WKContextRef contextRef, WKDoubleRef interval)

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp (185473 => 185474)


--- trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp	2015-06-11 21:06:23 UTC (rev 185473)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKOriginDataManager.cpp	2015-06-11 21:11:45 UTC (rev 185474)
@@ -26,38 +26,68 @@
 #include "config.h"
 #include "WKOriginDataManager.h"
 
+#include "APIWebsiteDataStore.h"
 #include "WKAPICast.h"
-#include "WebOriginDataManagerProxy.h"
+#include "WebsiteDataRecord.h"
 
 using namespace WebKit;
 
 WKTypeID WKOriginDataManagerGetTypeID()
 {
-    return toAPI(WebOriginDataManagerProxy::APIType);
+    return toAPI(API::WebsiteDataStore::APIType);
 }
 
-void WKOriginDataManagerGetOrigins(WKOriginDataManagerRef originDataManagerRef, WKOriginDataTypes types, void* context, WKOriginDataManagerGetOriginsFunction callback)
+void WKOriginDataManagerGetOrigins(WKOriginDataManagerRef originDataManager, WKOriginDataTypes types, void* context, WKOriginDataManagerGetOriginsFunction callback)
 {
-    toImpl(originDataManagerRef)->getOrigins(types, toGenericCallbackFunction(context, callback));
+    // This is the only type supported.
+    ASSERT_UNUSED(types, types == kWKIndexedDatabaseData);
+
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(originDataManager))->websiteDataStore();
+    websiteDataStore.fetchData(WebsiteDataTypes::WebsiteDataTypeIndexedDBDatabases, [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 WKOriginDataManagerDeleteEntriesForOrigin(WKOriginDataManagerRef originDataManagerRef, WKOriginDataTypes types, WKSecurityOriginRef originRef, void* context, WKOriginDataManagerDeleteEntriesCallbackFunction callback)
+void WKOriginDataManagerDeleteEntriesForOrigin(WKOriginDataManagerRef originDataManager, WKOriginDataTypes types, WKSecurityOriginRef origin, void* context, WKOriginDataManagerDeleteEntriesCallbackFunction callback)
 {
-    toImpl(originDataManagerRef)->deleteEntriesForOrigin(types, toImpl(originRef), [context, callback](CallbackBase::Error error) {
-        callback(error != CallbackBase::Error::None ? toAPI(API::Error::create().ptr()) : 0, context);
+    // This is the only type supported.
+    ASSERT_UNUSED(types, types == kWKIndexedDatabaseData);
+
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(originDataManager))->websiteDataStore();
+
+    WebsiteDataRecord dataRecord;
+    dataRecord.add(WebsiteDataTypes::WebsiteDataTypeIndexedDBDatabases, &toImpl(origin)->securityOrigin());
+
+    websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypeIndexedDBDatabases, { dataRecord }, [context, callback] {
+        callback(nullptr, context);
     });
 }
 
-void WKOriginDataManagerDeleteEntriesModifiedBetweenDates(WKOriginDataManagerRef originDataManagerRef, WKOriginDataTypes types, double startDate, double endDate, void* context, WKOriginDataManagerDeleteEntriesCallbackFunction callback)
+void WKOriginDataManagerDeleteEntriesModifiedBetweenDates(WKOriginDataManagerRef originDataManager, WKOriginDataTypes types, double startDate, double endDate, void* context, WKOriginDataManagerDeleteEntriesCallbackFunction callback)
 {
-    toImpl(originDataManagerRef)->deleteEntriesModifiedBetweenDates(types, startDate, endDate, [context, callback](CallbackBase::Error error) {
-        callback(error != CallbackBase::Error::None ? toAPI(API::Error::create().ptr()) : 0, context);
+    // This is the only type supported.
+    ASSERT_UNUSED(types, types == kWKIndexedDatabaseData);
+    UNUSED_PARAM(endDate);
+
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(originDataManager))->websiteDataStore();
+    websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypeIndexedDBDatabases, std::chrono::system_clock::from_time_t(startDate), [context, callback] {
+        callback(nullptr, context);
     });
 }
 
-void WKOriginDataManagerDeleteAllEntries(WKOriginDataManagerRef originDataManagerRef, WKOriginDataTypes types, void* context, WKOriginDataManagerDeleteEntriesCallbackFunction callback)
+void WKOriginDataManagerDeleteAllEntries(WKOriginDataManagerRef originDataManager, WKOriginDataTypes types, void* context, WKOriginDataManagerDeleteEntriesCallbackFunction callback)
 {
-    toImpl(originDataManagerRef)->deleteAllEntries(types, [context, callback](CallbackBase::Error error) {
-        callback(error != CallbackBase::Error::None ? toAPI(API::Error::create().ptr()) : 0, context);
+    // This is the only type supported.
+    ASSERT_UNUSED(types, types == kWKIndexedDatabaseData);
+
+    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(originDataManager))->websiteDataStore();
+    websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypeIndexedDBDatabases, std::chrono::system_clock::time_point::min(), [context, callback] {
+        callback(nullptr, context);
     });
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to