Changeset 185262 in webkit


Ignore:
Timestamp:
Jun 5, 2015 2:31:27 PM (9 years ago)
Author:
andersca@apple.com
Message:

Make the network cache directory part of WKContextConfigurationRef
https://bugs.webkit.org/show_bug.cgi?id=145711

Reviewed by Antti Koivisto.

Source/WebKit2:

Also, make the UI process be in control of where we place the new network cache.
When using the Modern WebKit API, put the cache in ~/Library/Caches/<Bundle ID>/WebKit/NetworkCache,
and put the cache in ~/Library/Caches/<Bundle ID>/WebKitCache otherwise (this is just for Safari).

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::open):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDiskCacheDirectory): Deleted.

  • UIProcess/API/C/WKContextConfigurationRef.cpp:

(WKContextConfigurationCopyDiskCacheDirectory):
(WKContextConfigurationSetDiskCacheDirectory):

  • UIProcess/API/C/WKContextConfigurationRef.h:
  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
(WebKit::WebProcessPool::isNetworkCacheEnabled):
(WebKit::WebProcessPool::platformDefaultDiskCacheDirectory): Deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::legacyWebsiteDataStoreConfiguration):
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::diskCacheDirectory): Deleted.

  • UIProcess/WebProcessPool.h:

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r185261 r185262  
     12015-06-05  Anders Carlsson  <andersca@apple.com>
     2
     3        Make the network cache directory part of WKContextConfigurationRef
     4        https://bugs.webkit.org/show_bug.cgi?id=145711
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Also, make the UI process be in control of where we place the new network cache.
     9        When using the Modern WebKit API, put the cache in ~/Library/Caches/<Bundle ID>/WebKit/NetworkCache,
     10        and put the cache in ~/Library/Caches/<Bundle ID>/WebKitCache otherwise (this is just for Safari).
     11
     12        * NetworkProcess/cache/NetworkCacheStorage.cpp:
     13        (WebKit::NetworkCache::Storage::open):
     14        * UIProcess/API/APIProcessPoolConfiguration.cpp:
     15        (API::ProcessPoolConfiguration::createWithLegacyOptions):
     16        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
     17        (API::ProcessPoolConfiguration::copy):
     18        * UIProcess/API/APIProcessPoolConfiguration.h:
     19        * UIProcess/API/C/WKContext.cpp:
     20        (WKContextSetDiskCacheDirectory): Deleted.
     21        * UIProcess/API/C/WKContextConfigurationRef.cpp:
     22        (WKContextConfigurationCopyDiskCacheDirectory):
     23        (WKContextConfigurationSetDiskCacheDirectory):
     24        * UIProcess/API/C/WKContextConfigurationRef.h:
     25        * UIProcess/API/C/WKContextPrivate.h:
     26        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     27        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
     28        (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
     29        (WebKit::WebProcessPool::isNetworkCacheEnabled):
     30        (WebKit::WebProcessPool::platformDefaultDiskCacheDirectory): Deleted.
     31        * UIProcess/WebProcessPool.cpp:
     32        (WebKit::legacyWebsiteDataStoreConfiguration):
     33        (WebKit::WebProcessPool::WebProcessPool):
     34        (WebKit::WebProcessPool::ensureNetworkProcess):
     35        (WebKit::WebProcessPool::diskCacheDirectory): Deleted.
     36        * UIProcess/WebProcessPool.h:
     37
    1382015-06-05  Anders Carlsson  <andersca@apple.com>
    239
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp

    r185251 r185262  
    4242namespace NetworkCache {
    4343
    44 static const char networkCacheSubdirectory[] = "WebKitCache";
    4544static const char versionDirectoryPrefix[] = "Version ";
    4645static const char recordsDirectoryName[] = "Records";
     
    8079    ASSERT(RunLoop::isMain());
    8180
    82     String networkCachePath = WebCore::pathByAppendingComponent(cachePath, networkCacheSubdirectory);
    83 
    84     if (!WebCore::makeAllDirectories(networkCachePath))
     81    if (!WebCore::makeAllDirectories(cachePath))
    8582        return nullptr;
    86     return std::unique_ptr<Storage>(new Storage(networkCachePath));
     83    return std::unique_ptr<Storage>(new Storage(cachePath));
    8784}
    8885
  • trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp

    r185261 r185262  
    4747
    4848    configuration->m_applicationCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory();
     49    configuration->m_diskCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory();
    4950    configuration->m_indexedDBDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory();
    5051    configuration->m_localStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory();
     
    5758ProcessPoolConfiguration::ProcessPoolConfiguration()
    5859    : m_applicationCacheDirectory(WebsiteDataStore::defaultApplicationCacheDirectory())
     60    , m_diskCacheDirectory(WebsiteDataStore::defaultNetworkCacheDirectory())
    5961    , m_indexedDBDatabaseDirectory(WebsiteDataStore::defaultIndexedDBDatabaseDirectory())
    6062    , m_localStorageDirectory(WebsiteDataStore::defaultLocalStorageDirectory())
     
    7981    copy->m_diskCacheSizeOverride = this->m_diskCacheSizeOverride;
    8082    copy->m_applicationCacheDirectory = this->m_applicationCacheDirectory;
     83    copy->m_diskCacheDirectory = this->m_diskCacheDirectory;
    8184    copy->m_indexedDBDatabaseDirectory = this->m_indexedDBDatabaseDirectory;
    8285    copy->m_injectedBundlePath = this->m_injectedBundlePath;
  • trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h

    r185261 r185262  
    6767    void setApplicationCacheDirectory(const WTF::String& applicationCacheDirectory) { m_applicationCacheDirectory = applicationCacheDirectory; }
    6868
     69    WTF::String diskCacheDirectory() const { return m_diskCacheDirectory; }
     70    void setDiskCacheDirectory(const WTF::String& diskCacheDirectory) { m_diskCacheDirectory = diskCacheDirectory; }
     71
    6972    WTF::String indexedDBDatabaseDirectory() const { return m_indexedDBDatabaseDirectory; }
    7073    void setIndexedDBDatabaseDirectory(const WTF::String& indexedDBDatabaseDirectory) { m_indexedDBDatabaseDirectory = indexedDBDatabaseDirectory; }
     
    9598
    9699    WTF::String m_applicationCacheDirectory;
     100    WTF::String m_diskCacheDirectory;
    97101    WTF::String m_indexedDBDatabaseDirectory;
    98102    WTF::String m_injectedBundlePath;
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r185261 r185262  
    505505}
    506506
    507 WK_EXPORT void WKContextSetDiskCacheDirectory(WKContextRef contextRef, WKStringRef diskCacheDirectory)
    508 {
    509     toImpl(contextRef)->setDiskCacheDirectory(toImpl(diskCacheDirectory)->string());
    510 }
    511 
    512507WK_EXPORT void WKContextSetCookieStorageDirectory(WKContextRef contextRef, WKStringRef cookieStorageDirectory)
    513508{
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.cpp

    r185261 r185262  
    4141   
    4242    return toAPI(&configuration.leakRef());
     43}
     44
     45WKStringRef WKContextConfigurationCopyDiskCacheDirectory(WKContextConfigurationRef configuration)
     46{
     47    return toCopiedAPI(toImpl(configuration)->diskCacheDirectory());
     48}
     49
     50void WKContextConfigurationSetDiskCacheDirectory(WKContextConfigurationRef configuration, WKStringRef diskCacheDirectory)
     51{
     52    toImpl(configuration)->setDiskCacheDirectory(toImpl(diskCacheDirectory)->string());
    4353}
    4454
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.h

    r185261 r185262  
    3838WK_EXPORT void WKContextConfigurationSetApplicationCacheDirectory(WKContextConfigurationRef configuration, WKStringRef applicationCacheDirectory);
    3939
     40WK_EXPORT WKStringRef WKContextConfigurationCopyDiskCacheDirectory(WKContextConfigurationRef configuration);
     41WK_EXPORT void WKContextConfigurationSetDiskCacheDirectory(WKContextConfigurationRef configuration, WKStringRef diskCacheDirectory);
     42
    4043WK_EXPORT WKStringRef WKContextConfigurationCopyIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration);
    4144WK_EXPORT void WKContextConfigurationSetIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef indexedDBDatabaseDirectory);
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

    r185261 r185262  
    6565WK_EXPORT void WKContextAllowSpecificHTTPSCertificateForHost(WKContextRef context, WKCertificateInfoRef certificate, WKStringRef host);
    6666
    67 WK_EXPORT void WKContextSetDiskCacheDirectory(WKContextRef context, WKStringRef diskCacheDirectory);
    6867WK_EXPORT void WKContextSetCookieStorageDirectory(WKContextRef context, WKStringRef cookieStorageDirectory);
    6968
  • trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r185251 r185262  
    253253
    254254#if ENABLE(NETWORK_CACHE)
    255     bool networkCacheEnabledByDefaults = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
    256     parameters.shouldEnableNetworkCache = networkCacheEnabledByDefaults && linkedOnOrAfter(LibraryVersion::FirstWithNetworkCache);
     255    parameters.shouldEnableNetworkCache = isNetworkCacheEnabled();
    257256    parameters.shouldEnableNetworkCacheEfficacyLogging = [defaults boolForKey:WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey];
    258257#endif
     
    269268{
    270269    unregisterNotificationObservers();
    271 }
    272 
    273 String WebProcessPool::platformDefaultDiskCacheDirectory() const
    274 {
    275     RetainPtr<NSString> cachePath = adoptNS((NSString *)WKCopyFoundationCacheDirectory());
    276     if (!cachePath)
    277         cachePath = @"~/Library/Caches/com.apple.WebKit.WebProcess";
    278     return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
    279270}
    280271
     
    389380    NSString* cachePath = [cacheDir stringByAppendingPathComponent:appName];
    390381    return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
     382}
     383
     384String WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory()
     385{
     386    RetainPtr<NSString> cachePath = adoptNS((NSString *)WKCopyFoundationCacheDirectory());
     387    if (!cachePath)
     388        cachePath = @"~/Library/Caches/com.apple.WebKit.WebProcess";
     389
     390#if ENABLE(NETWORK_CACHE)
     391    if (isNetworkCacheEnabled())
     392        cachePath = [cachePath stringByAppendingPathComponent:@"WebKitCache"];
     393#endif
     394
     395    return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
     396}
     397
     398bool WebProcessPool::isNetworkCacheEnabled()
     399{
     400#if ENABLE(NETWORK_CACHE)
     401    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     402
     403    bool networkCacheEnabledByDefaults = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
     404
     405    return networkCacheEnabledByDefaults && linkedOnOrAfter(LibraryVersion::FirstWithNetworkCache);
     406#else
     407    return false;
     408#endif
    391409}
    392410
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp

    r185261 r185262  
    139139    configuration.applicationCacheDirectory = WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory();
    140140    configuration.mediaKeysStorageDirectory = WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory();
     141    configuration.networkCacheDirectory = WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory();
    141142
    142143    return configuration;
     
    167168#endif
    168169    , m_applicationCacheDirectory(configuration.applicationCacheDirectory())
     170    , m_diskCacheDirectory(configuration.diskCacheDirectory())
    169171    , m_indexedDBDatabaseDirectory(configuration.indexedDBDatabaseDirectory())
    170172    , m_mediaKeysStorageDirectory(configuration.mediaKeysStorageDirectory())
     
    417419    parameters.canHandleHTTPSServerTrustEvaluation = m_canHandleHTTPSServerTrustEvaluation;
    418420
    419     parameters.diskCacheDirectory = stringByResolvingSymlinksInPath(diskCacheDirectory());
     421    parameters.diskCacheDirectory = m_diskCacheDirectory;
    420422    if (!parameters.diskCacheDirectory.isEmpty())
    421423        SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle);
     
    11831185}
    11841186
    1185 String WebProcessPool::diskCacheDirectory() const
    1186 {
    1187     if (!m_overrideDiskCacheDirectory.isEmpty())
    1188         return m_overrideDiskCacheDirectory;
    1189 
    1190     return platformDefaultDiskCacheDirectory();
    1191 }
    1192 
    11931187#if ENABLE(SECCOMP_FILTERS)
    11941188String WebProcessPool::cookieStorageDirectory() const
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.h

    r185261 r185262  
    246246    void setIconDatabasePath(const String&);
    247247    String iconDatabasePath() const;
    248     void setDiskCacheDirectory(const String& dir) { m_overrideDiskCacheDirectory = dir; }
    249248    void setCookieStorageDirectory(const String& dir) { m_overrideCookieStorageDirectory = dir; }
    250249
     
    365364    static String legacyPlatformDefaultMediaKeysStorageDirectory();
    366365    static String legacyPlatformDefaultApplicationCacheDirectory();
     366    static String legacyPlatformDefaultNetworkCacheDirectory();
     367    static bool isNetworkCacheEnabled();
    367368
    368369private:
     
    395396
    396397    String platformDefaultIconDatabasePath() const;
    397 
    398     String diskCacheDirectory() const;
    399     String platformDefaultDiskCacheDirectory() const;
    400398
    401399#if PLATFORM(IOS) || ENABLE(SECCOMP_FILTERS)
     
    506504
    507505    String m_overrideIconDatabasePath;
    508     String m_overrideDiskCacheDirectory;
    509506    String m_overrideCookieStorageDirectory;
    510507
    511508    String m_applicationCacheDirectory;
     509    String m_diskCacheDirectory;
    512510    String m_indexedDBDatabaseDirectory;
    513511    String m_mediaKeysStorageDirectory;
  • trunk/Tools/ChangeLog

    r185261 r185262  
     12015-06-05  Anders Carlsson  <andersca@apple.com>
     2
     3        Make the network cache directory part of WKContextConfigurationRef
     4        https://bugs.webkit.org/show_bug.cgi?id=145711
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * WebKitTestRunner/TestController.cpp:
     9        (WTR::TestController::initialize):
     10
    1112015-06-05  Anders Carlsson  <andersca@apple.com>
    212
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r185261 r185262  
    360360
    361361        WKContextConfigurationSetApplicationCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "ApplicationCache").get());
     362        WKContextConfigurationSetDiskCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "Cache").get());
    362363        WKContextConfigurationSetIndexedDBDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "IndexedDB").get());
    363364        WKContextConfigurationSetLocalStorageDirectory(configuration.get(), toWK(temporaryFolder + separator + "LocalStorage").get());
     
    377378        String temporaryFolder = String::fromUTF8(dumpRenderTreeTemp);
    378379
    379         const char separator = '/';
    380 
    381380        // FIXME: This should be migrated to WKContextConfigurationRef.
    382         WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get());
    383381        // Disable icon database to avoid fetching <http://127.0.0.1:8000/favicon.ico> and making tests flaky.
    384382        // Invividual tests can enable it using testRunner.setIconDatabaseEnabled, although it's not currently supported in WebKitTestRunner.
Note: See TracChangeset for help on using the changeset viewer.