Changeset 205556 in webkit


Ignore:
Timestamp:
Sep 7, 2016 11:13:08 AM (8 years ago)
Author:
Michael Catanzaro
Message:

[EFL] Switch to ENABLE_NETWORK_CACHE
https://bugs.webkit.org/show_bug.cgi?id=152676

Reviewed by Alex Christensen.

.:

Build with -Wno-error=missing-field-initializers to avoid spurious build failures.

  • Source/cmake/OptionsEfl.cmake:

Source/WebCore:

  • PlatformEfl.cmake: Add GRefPtrSoup to build.
  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::clearOldSoupCache): Renamed from clearCache.
(WebCore::SoupNetworkSession::setCache): Deleted.
(WebCore::SoupNetworkSession::cache): Deleted.
(WebCore::SoupNetworkSession::clearCache): Deleted.

  • platform/network/soup/SoupNetworkSession.h:

Source/WebKit2:

Nowadays GTK+ always uses the network cache, and never the soup cache. Remove support for
using the soup cache, and switch the EFL port to use network cache.

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:

(WebKit::NetworkCache::BlobStorage::add): Check return value of link to placate
-Werror=unused-result on EFL builder

  • NetworkProcess/efl/NetworkProcessMainEfl.cpp:
  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::getCacheDiskFreeSize):
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::platformSetCacheModel):
(WebKit::NetworkProcess::clearDiskCache):

  • PlatformEfl.cmake: Add files to build.
  • UIProcess/API/efl/APIWebsiteDataStoreEfl.cpp:

(API::WebsiteDataStore::defaultNetworkCacheDirectory): Use a saner location.

  • UIProcess/API/gtk/APIWebsiteDataStoreGtk.cpp:

(API::WebsiteDataStore::defaultNetworkCacheDirectory):

  • UIProcess/API/gtk/WebKitPrivate.h:
  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • WebProcess/efl/WebProcessMainEfl.cpp:
  • config.h:
Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r205549 r205556  
     12016-09-07  Michael Catanzaro  <mcatanzaro@igalia.com>
     2
     3        [EFL] Switch to ENABLE_NETWORK_CACHE
     4        https://bugs.webkit.org/show_bug.cgi?id=152676
     5
     6        Reviewed by Alex Christensen.
     7
     8        Build with -Wno-error=missing-field-initializers to avoid spurious build failures.
     9
     10        * Source/cmake/OptionsEfl.cmake:
     11
    1122016-09-07  Youenn Fablet  <youenn@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r205554 r205556  
     12016-09-07  Michael Catanzaro  <mcatanzaro@igalia.com>
     2
     3        [EFL] Switch to ENABLE_NETWORK_CACHE
     4        https://bugs.webkit.org/show_bug.cgi?id=152676
     5
     6        Reviewed by Alex Christensen.
     7
     8        * PlatformEfl.cmake: Add GRefPtrSoup to build.
     9        * platform/network/soup/SoupNetworkSession.cpp:
     10        (WebCore::SoupNetworkSession::clearOldSoupCache): Renamed from clearCache.
     11        (WebCore::SoupNetworkSession::setCache): Deleted.
     12        (WebCore::SoupNetworkSession::cache): Deleted.
     13        (WebCore::SoupNetworkSession::clearCache): Deleted.
     14        * platform/network/soup/SoupNetworkSession.h:
     15
    1162016-09-07  Chris Dumez  <cdumez@apple.com>
    217
  • trunk/Source/WebCore/PlatformEfl.cmake

    r204483 r205556  
    196196    platform/network/soup/CredentialStorageSoup.cpp
    197197    platform/network/soup/DNSSoup.cpp
     198    platform/network/soup/GRefPtrSoup.cpp
    198199    platform/network/soup/NetworkStorageSessionSoup.cpp
    199200    platform/network/soup/ProxyServerSoup.cpp
  • trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp

    r198127 r205556  
    161161}
    162162
    163 void SoupNetworkSession::setCache(SoupCache* cache)
    164 {
    165     ASSERT(!soup_session_get_feature(m_soupSession.get(), SOUP_TYPE_CACHE));
    166     soup_session_add_feature(m_soupSession.get(), SOUP_SESSION_FEATURE(cache));
    167 }
    168 
    169 SoupCache* SoupNetworkSession::cache() const
    170 {
    171     SoupSessionFeature* soupCache = soup_session_get_feature(m_soupSession.get(), SOUP_TYPE_CACHE);
    172     return soupCache ? SOUP_CACHE(soupCache) : nullptr;
    173 }
    174 
    175163static inline bool stringIsNumeric(const char* str)
    176164{
     
    183171}
    184172
    185 void SoupNetworkSession::clearCache(const String& cacheDirectory)
     173// Old versions of WebKit created this cache.
     174void SoupNetworkSession::clearOldSoupCache(const String& cacheDirectory)
    186175{
    187176    CString cachePath = fileSystemRepresentation(cacheDirectory);
  • trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h

    r187586 r205556  
    5959    SoupCookieJar* cookieJar() const;
    6060
    61     void setCache(SoupCache*);
    62     SoupCache* cache() const;
    63     static void clearCache(const String& cacheDirectory);
     61    static void clearOldSoupCache(const String& cacheDirectory);
    6462
    6563    void setSSLPolicy(SSLPolicy);
  • trunk/Source/WebKit2/ChangeLog

    r205549 r205556  
     12016-09-07  Michael Catanzaro  <mcatanzaro@igalia.com>
     2
     3        [EFL] Switch to ENABLE_NETWORK_CACHE
     4        https://bugs.webkit.org/show_bug.cgi?id=152676
     5
     6        Reviewed by Alex Christensen.
     7
     8        Nowadays GTK+ always uses the network cache, and never the soup cache. Remove support for
     9        using the soup cache, and switch the EFL port to use network cache.
     10
     11        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
     12        (WebKit::NetworkCache::BlobStorage::add): Check return value of link to placate
     13        -Werror=unused-result on EFL builder
     14        * NetworkProcess/efl/NetworkProcessMainEfl.cpp:
     15        * NetworkProcess/soup/NetworkProcessSoup.cpp:
     16        (WebKit::getCacheDiskFreeSize):
     17        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
     18        (WebKit::NetworkProcess::platformSetCacheModel):
     19        (WebKit::NetworkProcess::clearDiskCache):
     20        * PlatformEfl.cmake: Add files to build.
     21        * UIProcess/API/efl/APIWebsiteDataStoreEfl.cpp:
     22        (API::WebsiteDataStore::defaultNetworkCacheDirectory): Use a saner location.
     23        * UIProcess/API/gtk/APIWebsiteDataStoreGtk.cpp:
     24        (API::WebsiteDataStore::defaultNetworkCacheDirectory):
     25        * UIProcess/API/gtk/WebKitPrivate.h:
     26        * UIProcess/soup/WebProcessPoolSoup.cpp:
     27        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
     28        * WebProcess/efl/WebProcessMainEfl.cpp:
     29        * config.h:
     30
    1312016-09-07  Youenn Fablet  <youenn@apple.com>
    232
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheBlobStorage.cpp

    r204466 r205556  
    9898        auto existingData = mapFile(blobPath.data());
    9999        if (bytesEqual(existingData, data)) {
    100             link(blobPath.data(), linkPath.data());
     100            if (link(blobPath.data(), linkPath.data()) == -1)
     101                WTFLogAlways("Failed to create hard link from %s to %s", blobPath.data(), linkPath.data());
    101102            return { existingData, hash };
    102103        }
     
    108109        return { };
    109110
    110     link(blobPath.data(), linkPath.data());
     111    if (link(blobPath.data(), linkPath.data()) == -1)
     112        WTFLogAlways("Failed to create hard link from %s to %s", blobPath.data(), linkPath.data());
    111113
    112114    m_approximateSize += mappedData.size();
  • trunk/Source/WebKit2/NetworkProcess/efl/NetworkProcessMainEfl.cpp

    r192697 r205556  
    5454    void platformFinalize() override
    5555    {
    56         if (SoupCache* soupCache = SoupNetworkSession::defaultSession().cache()) {
    57             soup_cache_flush(soupCache);
    58             soup_cache_dump(soupCache);
    59         }
    60 
    6156        ecore_shutdown();
    6257    }
  • trunk/Source/WebKit2/NetworkProcess/soup/NetworkProcessSoup.cpp

    r203857 r205556  
    5656    m_diskCacheDirectory = parameters.diskCacheDirectory;
    5757
    58 #if ENABLE(NETWORK_CACHE)
    59     // Clear the old soup cache if it exists.
    60     SoupNetworkSession::defaultSession().clearCache(WebCore::directoryName(m_diskCacheDirectory));
     58    SoupNetworkSession::defaultSession().clearOldSoupCache(WebCore::directoryName(m_diskCacheDirectory));
    6159
    6260    NetworkCache::Cache::Parameters cacheParameters {
     
    6765    };
    6866    NetworkCache::singleton().initialize(m_diskCacheDirectory, cacheParameters);
    69 #else
    70     // We used to use the given cache directory for the soup cache, but now we use a subdirectory to avoid
    71     // conflicts with other cache files in the same directory. Remove the old cache files if they still exist.
    72     SoupNetworkSession::defaultSession().clearCache(WebCore::directoryName(m_diskCacheDirectory));
    73 
    74     GRefPtr<SoupCache> soupCache = adoptGRef(soup_cache_new(m_diskCacheDirectory.utf8().data(), SOUP_CACHE_SINGLE_USER));
    75     SoupNetworkSession::defaultSession().setCache(soupCache.get());
    76     // Set an initial huge max_size for the SoupCache so the call to soup_cache_load() won't evict any cached
    77     // resource. The final size of the cache will be set by NetworkProcess::platformSetCacheModel().
    78     unsigned initialMaxSize = soup_cache_get_max_size(soupCache.get());
    79     soup_cache_set_max_size(soupCache.get(), G_MAXUINT);
    80     soup_cache_load(soupCache.get());
    81     soup_cache_set_max_size(soupCache.get(), initialMaxSize);
    82 #endif
    8367
    8468    if (!parameters.cookiePersistentStoragePath.isEmpty()) {
     
    9478}
    9579
    96 void NetworkProcess::platformSetURLCacheSize(unsigned /*urlCacheMemoryCapacity*/, uint64_t urlCacheDiskCapacity)
     80void NetworkProcess::platformSetURLCacheSize(unsigned, uint64_t)
    9781{
    98 #if !ENABLE(NETWORK_CACHE)
    99     SoupCache* cache = SoupNetworkSession::defaultSession().cache();
    100     if (urlCacheDiskCapacity > soup_cache_get_max_size(cache))
    101         soup_cache_set_max_size(cache, urlCacheDiskCapacity);
    102 #else
    103     UNUSED_PARAM(urlCacheDiskCapacity);
    104 #endif
    10582}
    10683
     
    125102void NetworkProcess::clearDiskCache(std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler)
    126103{
    127 #if ENABLE(NETWORK_CACHE)
    128104    NetworkCache::singleton().clear(modifiedSince, WTFMove(completionHandler));
    129 #else
    130     UNUSED_PARAM(modifiedSince);
    131     UNUSED_PARAM(completionHandler);
    132     soup_cache_clear(SoupNetworkSession::defaultSession().cache());
    133 #endif
    134105}
    135106
  • trunk/Source/WebKit2/PlatformEfl.cmake

    r205266 r205556  
    88
    99    NetworkProcess/Downloads/soup/DownloadSoup.cpp
     10
     11    NetworkProcess/cache/NetworkCacheCodersSoup.cpp
     12    NetworkProcess/cache/NetworkCacheDataSoup.cpp
     13    NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp
    1014
    1115    NetworkProcess/efl/NetworkProcessMainEfl.cpp
  • trunk/Source/WebKit2/UIProcess/API/efl/APIWebsiteDataStoreEfl.cpp

    r197592 r205556  
    3939String WebsiteDataStore::defaultNetworkCacheDirectory()
    4040{
    41 #if ENABLE(NETWORK_CACHE)
    42     static const char networkCacheSubdirectory[] = "WebKitCache";
    43 #else
    44     static const char networkCacheSubdirectory[] = "webkit";
    45 #endif
    46 
    47     return cacheDirectoryFileSystemRepresentation(networkCacheSubdirectory);
     41    return cacheDirectoryFileSystemRepresentation("WebKitEfl" EINA_PATH_SEP_S "WebKitCache");
    4842}
    4943
  • trunk/Source/WebKit2/UIProcess/API/gtk/APIWebsiteDataStoreGtk.cpp

    r197592 r205556  
    3636}
    3737
     38// FIXME: The other directories in this file are shared between all applications using WebKitGTK+.
     39// Why is only this directory namespaced to a particular application?
    3840String WebsiteDataStore::defaultNetworkCacheDirectory()
    3941{
    40 #if ENABLE(NETWORK_CACHE)
    41     static const char networkCacheSubdirectory[] = "WebKitCache";
    42 #else
    43     static const char networkCacheSubdirectory[] = "webkit";
    44 #endif
    45     return cacheDirectoryFileSystemRepresentation(WebCore::pathByAppendingComponent(WebCore::filenameToString(g_get_prgname()), networkCacheSubdirectory));
     42    return cacheDirectoryFileSystemRepresentation(WebCore::pathByAppendingComponent(WebCore::filenameToString(g_get_prgname()), "WebKitCache"));
    4643}
    4744
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h

    r187485 r205556  
    128128};
    129129
    130 #if ENABLE(NETWORK_CACHE)
    131130static const char networkCacheSubdirectory[] = "WebKitCache";
    132 #else
    133 static const char networkCacheSubdirectory[] = "webkit";
    134 #endif
    135131
    136132#endif // WebKitPrivate_h
  • trunk/Source/WebKit2/UIProcess/soup/WebProcessPoolSoup.cpp

    r204097 r205556  
    4242    parameters.languages = WebCore::userPreferredLanguages();
    4343    parameters.urlSchemesRegisteredForCustomProtocols = supplement<WebSoupCustomProtocolRequestManager>()->registeredSchemesForCustomProtocols();
    44 #if ENABLE(NETWORK_CACHE)
    4544    parameters.shouldEnableNetworkCacheEfficacyLogging = false;
    46 #endif
    4745}
    4846
  • trunk/Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp

    r195725 r205556  
    105105    void platformFinalize() override
    106106    {
    107         if (SoupCache* soupCache = SoupNetworkSession::defaultSession().cache()) {
    108             soup_cache_flush(soupCache);
    109             soup_cache_dump(soupCache);
    110         }
    111 
    112107        edje_shutdown();
    113108        ecore_evas_shutdown();
  • trunk/Source/WebKit2/config.h

    r201267 r205556  
    100100
    101101#ifndef ENABLE_NETWORK_CACHE
    102 #if PLATFORM(COCOA) || PLATFORM(GTK)
     102#if PLATFORM(COCOA) || USE(SOUP)
    103103#define ENABLE_NETWORK_CACHE 1
    104104#else
  • trunk/Source/cmake/OptionsEfl.cmake

    r205180 r205556  
    99# FIXME: Disable WERROR in clang build because of many warnings.
    1010if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
    11     set(ADDITIONAL_COMPILER_FLAGS ENABLE_WERROR)
     11    set(ADDITIONAL_COMPILER_FLAGS ENABLE_WERROR "-Wno-error=missing-field-initializers")
    1212endif ()
    1313
Note: See TracChangeset for help on using the changeset viewer.