Modified: trunk/Source/WebKit2/ChangeLog (185456 => 185457)
--- trunk/Source/WebKit2/ChangeLog 2015-06-11 16:00:40 UTC (rev 185456)
+++ trunk/Source/WebKit2/ChangeLog 2015-06-11 17:01:46 UTC (rev 185457)
@@ -1,3 +1,18 @@
+2015-06-10 Anders Carlsson <[email protected]>
+
+ Rewrite WKPluginSiteDataManager using WebsiteDataStore functions
+ https://bugs.webkit.org/show_bug.cgi?id=145868
+
+ Reviewed by Antti Koivisto.
+
+ * UIProcess/API/C/WKPluginSiteDataManager.cpp:
+ (WKPluginSiteDataManagerGetSitesWithData):
+ (WKPluginSiteDataManagerClearSiteData):
+ (WKPluginSiteDataManagerClearAllSiteData):
+ (toNPClearSiteDataFlags): Deleted.
+ * UIProcess/Plugins/WebPluginSiteDataManager.h:
+ (WebKit::WebPluginSiteDataManager::processPool):
+
2015-06-11 Antti Koivisto <[email protected]>
3% cold PLT regression from network cache on iOS
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPluginSiteDataManager.cpp (185456 => 185457)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPluginSiteDataManager.cpp 2015-06-11 16:00:40 UTC (rev 185456)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPluginSiteDataManager.cpp 2015-06-11 17:01:46 UTC (rev 185457)
@@ -29,14 +29,9 @@
#include "APIObject.h"
#include "WKAPICast.h"
#include "WebPluginSiteDataManager.h"
+#include "WebProcessPool.h"
+#include "WebsiteDataRecord.h"
-#if ENABLE(NETSCAPE_PLUGIN_API)
-#include <WebCore/npapi.h>
-#if defined(MOZ_X11)
-#undef None
-#endif
-#endif
-
using namespace WebKit;
WKTypeID WKPluginSiteDataManagerGetTypeID()
@@ -48,55 +43,61 @@
#endif
}
-void WKPluginSiteDataManagerGetSitesWithData(WKPluginSiteDataManagerRef managerRef, void* context, WKPluginSiteDataManagerGetSitesWithDataFunction callback)
+void WKPluginSiteDataManagerGetSitesWithData(WKPluginSiteDataManagerRef manager, void* context, WKPluginSiteDataManagerGetSitesWithDataFunction callback)
{
#if ENABLE(NETSCAPE_PLUGIN_API)
- toImpl(managerRef)->getSitesWithData(toGenericCallbackFunction(context, callback));
+ auto& websiteDataStore = toImpl(manager)->processPool().websiteDataStore()->websiteDataStore();
+ websiteDataStore.fetchData(WebsiteDataTypes::WebsiteDataTypePlugInData, [context, callback](Vector<WebsiteDataRecord> dataRecords) {
+ Vector<String> hostNames;
+ for (const auto& dataRecord : dataRecords) {
+ for (const auto& hostName : dataRecord.pluginDataHostNames)
+ hostNames.append(hostName);
+ }
+
+ callback(toAPI(API::Array::createStringArray(hostNames).ptr()), nullptr, context);
+ });
#else
- UNUSED_PARAM(managerRef);
+ UNUSED_PARAM(manager);
UNUSED_PARAM(context);
UNUSED_PARAM(callback);
#endif
}
-#if ENABLE(NETSCAPE_PLUGIN_API)
-static uint64_t toNPClearSiteDataFlags(WKClearSiteDataFlags flags)
+void WKPluginSiteDataManagerClearSiteData(WKPluginSiteDataManagerRef manager, WKArrayRef sites, WKClearSiteDataFlags flags, uint64_t maxAgeInSeconds, void* context, WKPluginSiteDataManagerClearSiteDataFunction callback)
{
- if (flags == kWKClearSiteDataFlagsClearAll)
- return NP_CLEAR_ALL;
+ // These are the only parameters supported.
+ ASSERT_UNUSED(flags, flags == kWKClearSiteDataFlagsClearAll);
+ ASSERT_UNUSED(maxAgeInSeconds, maxAgeInSeconds == std::numeric_limits<uint64_t>::max());
- uint64_t result = 0;
- if (flags & kWKClearSiteDataFlagsClearCache)
- result |= NP_CLEAR_CACHE;
- return result;
-}
-#endif
+#if ENABLE(NETSCAPE_PLUGIN_API)
+ WebsiteDataRecord dataRecord;
+ for (const auto& string : toImpl(sites)->elementsOfType<API::String>())
+ dataRecord.pluginDataHostNames.add(string->string());
-void WKPluginSiteDataManagerClearSiteData(WKPluginSiteDataManagerRef managerRef, WKArrayRef sitesRef, WKClearSiteDataFlags flags, uint64_t maxAgeInSeconds, void* context, WKPluginSiteDataManagerClearSiteDataFunction function)
-{
-#if ENABLE(NETSCAPE_PLUGIN_API)
- toImpl(managerRef)->clearSiteData(toImpl(sitesRef), toNPClearSiteDataFlags(flags), maxAgeInSeconds, [context, function](CallbackBase::Error error) {
- function(error == CallbackBase::Error::None ? nullptr : toAPI(API::Error::create().ptr()), context);
+ auto& websiteDataStore = toImpl(manager)->processPool().websiteDataStore()->websiteDataStore();
+ websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypePlugInData, { dataRecord }, [context, callback] {
+ callback(nullptr, context);
});
#else
- UNUSED_PARAM(managerRef);
- UNUSED_PARAM(sitesRef);
+ UNUSED_PARAM(manager);
+ UNUSED_PARAM(sites);
UNUSED_PARAM(flags);
UNUSED_PARAM(maxAgeInSeconds);
UNUSED_PARAM(context);
- UNUSED_PARAM(function);
+ UNUSED_PARAM(callback);
#endif
}
-void WKPluginSiteDataManagerClearAllSiteData(WKPluginSiteDataManagerRef managerRef, void* context, WKPluginSiteDataManagerClearSiteDataFunction function)
+void WKPluginSiteDataManagerClearAllSiteData(WKPluginSiteDataManagerRef manager, void* context, WKPluginSiteDataManagerClearSiteDataFunction callback)
{
#if ENABLE(NETSCAPE_PLUGIN_API)
- toImpl(managerRef)->clearSiteData(0, NP_CLEAR_ALL, std::numeric_limits<uint64_t>::max(), [context, function](CallbackBase::Error error) {
- function(error == CallbackBase::Error::None ? nullptr : toAPI(API::Error::create().ptr()), context);
+ auto& websiteDataStore = toImpl(manager)->processPool().websiteDataStore()->websiteDataStore();
+ websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypePlugInData, std::chrono::system_clock::time_point::min(), [context, callback] {
+ callback(nullptr, context);
});
#else
- UNUSED_PARAM(managerRef);
+ UNUSED_PARAM(manager);
UNUSED_PARAM(context);
- UNUSED_PARAM(function);
+ UNUSED_PARAM(callback);
#endif
}
Modified: trunk/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h (185456 => 185457)
--- trunk/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h 2015-06-11 16:00:40 UTC (rev 185456)
+++ trunk/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h 2015-06-11 17:01:46 UTC (rev 185457)
@@ -47,6 +47,8 @@
static PassRefPtr<WebPluginSiteDataManager> create(WebProcessPool*);
virtual ~WebPluginSiteDataManager();
+ WebProcessPool& processPool() { return *m_processPool; }
+
void invalidate();
void clearProcessPool() { m_processPool = nullptr; }