⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 185529 in webkit


Ignore:
Timestamp:
Jun 12, 2015, 6:40:57 PM (11 years ago)
Author:
andersca@apple.com
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):

Location:
trunk/Source/WebKit2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r185527 r185529  
     12015-06-12  Anders Carlsson  <andersca@apple.com>
     2
     3        Reimplement WKResourceCacheManagerRef on top of WKWebsiteDataStoreRef
     4        https://bugs.webkit.org/show_bug.cgi?id=145951
     5
     6        Reviewed by Darin Adler.
     7
     8        * UIProcess/API/C/WKContext.cpp:
     9        (WKContextGetResourceCacheManager):
     10        * UIProcess/API/C/WKResourceCacheManager.cpp:
     11        (WKResourceCacheManagerGetTypeID):
     12        (toWebsiteDataTypes):
     13        (WKResourceCacheManagerGetCacheOrigins):
     14        (WKResourceCacheManagerClearCacheForOrigin):
     15        (WKResourceCacheManagerClearCacheForAllOrigins):
     16
    1172015-06-12  Anders Carlsson  <andersca@apple.com>
    218
  • trunk/Source/WebKit2/Shared/SecurityOriginData.h

    r180568 r185529  
    1 /*
     1 /*
    22 * Copyright (C) 2011 Apple Inc. All rights reserved.
    33 *
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r185527 r185529  
    473473}
    474474
    475 WKResourceCacheManagerRef WKContextGetResourceCacheManager(WKContextRef contextRef)
    476 {
    477     return toAPI(toImpl(contextRef)->supplement<WebResourceCacheManagerProxy>());
     475WKResourceCacheManagerRef WKContextGetResourceCacheManager(WKContextRef context)
     476{
     477    return reinterpret_cast<WKResourceCacheManagerRef>(WKContextGetWebsiteDataStore(context));
    478478}
    479479
  • trunk/Source/WebKit2/UIProcess/API/C/WKResourceCacheManager.cpp

    r170000 r185529  
    2727#include "WKResourceCacheManager.h"
    2828
    29 #include "WebResourceCacheManagerProxy.h"
     29#include "APIWebsiteDataStore.h"
    3030#include "WKAPICast.h"
     31#include "WebsiteDataRecord.h"
    3132
    3233using namespace WebKit;
     
    3435WKTypeID WKResourceCacheManagerGetTypeID()
    3536{
    36     return toAPI(WebResourceCacheManagerProxy::APIType);
     37    return toAPI(API::WebsiteDataStore::APIType);
    3738}
    3839
    39 void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef cacheManagerRef, void* context, WKResourceCacheManagerGetCacheOriginsFunction callback)
     40static WebsiteDataTypes toWebsiteDataTypes(WKResourceCachesToClear cachesToClear)
    4041{
    41     toImpl(cacheManagerRef)->getCacheOrigins(toGenericCallbackFunction(context, callback));
     42    using WebsiteDataTypes = WebKit::WebsiteDataTypes;
     43
     44    int websiteDataTypes = WebsiteDataTypeMemoryCache;
     45
     46    if (cachesToClear == WKResourceCachesToClearAll)
     47        websiteDataTypes |= WebsiteDataTypeDiskCache;
     48
     49    return static_cast<WebsiteDataTypes>(websiteDataTypes);
    4250}
    4351
    44 void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManagerRef, WKSecurityOriginRef originRef, WKResourceCachesToClear cachesToClear)
     52void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef cacheManager, void* context, WKResourceCacheManagerGetCacheOriginsFunction callback)
    4553{
    46     toImpl(cacheManagerRef)->clearCacheForOrigin(toImpl(originRef), toResourceCachesToClear(cachesToClear));
     54    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
     55    websiteDataStore.fetchData(toWebsiteDataTypes(WKResourceCachesToClearAll), [context, callback](Vector<WebsiteDataRecord> dataRecords) {
     56        Vector<RefPtr<API::Object>> securityOrigins;
     57        for (const auto& dataRecord : dataRecords) {
     58            for (const auto& origin : dataRecord.origins)
     59                securityOrigins.append(API::SecurityOrigin::create(origin));
     60        }
     61
     62        callback(toAPI(API::Array::create(WTF::move(securityOrigins)).ptr()), nullptr, context);
     63    });
    4764}
    4865
    49 void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManagerRef, WKResourceCachesToClear cachesToClear)
     66void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManager, WKSecurityOriginRef origin, WKResourceCachesToClear cachesToClear)
    5067{
    51     toImpl(cacheManagerRef)->clearCacheForAllOrigins(toResourceCachesToClear(cachesToClear));
     68    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
     69
     70    Vector<WebsiteDataRecord> dataRecords;
     71
     72    {
     73        WebsiteDataRecord dataRecord;
     74        dataRecord.add(WebsiteDataTypes::WebsiteDataTypeMemoryCache, &toImpl(origin)->securityOrigin());
     75
     76        dataRecords.append(dataRecord);
     77    }
     78
     79    if (cachesToClear == WKResourceCachesToClearAll) {
     80        WebsiteDataRecord dataRecord;
     81        dataRecord.add(WebsiteDataTypes::WebsiteDataTypeDiskCache, &toImpl(origin)->securityOrigin());
     82
     83        dataRecords.append(dataRecord);
     84    }
     85
     86    websiteDataStore.removeData(toWebsiteDataTypes(cachesToClear), dataRecords, [] { });
    5287}
     88
     89void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManager, WKResourceCachesToClear cachesToClear)
     90{
     91    auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
     92    websiteDataStore.removeData(toWebsiteDataTypes(cachesToClear), std::chrono::system_clock::time_point::min(), [] { });
     93}
Note: See TracChangeset for help on using the changeset viewer.