Changeset 220810 in webkit


Ignore:
Timestamp:
Aug 16, 2017 3:09:34 PM (7 years ago)
Author:
commit-queue@webkit.org
Message:

[Cache API] Implement Worker connection to the Cache storage engine
https://bugs.webkit.org/show_bug.cgi?id=175599

Patch by Youenn Fablet <youenn@apple.com> on 2017-08-16
Reviewed by Chris Dumez.

Covered by existing tests.

Adding a WorkerCacheStorageConnection to connect workers Cache/CacheStorage
to the cache storage engine.
WorkerCacheStorageConnection does this by hopping to the main thread to call the document cache storage connection to do the actual job.
Doing some CacheStorageConnection refactoring to share code with WK2 implementation of the cache storage connection.

  • Modules/cache/CacheQueryOptions.h:

(WebCore::CacheQueryOptions::isolatedCopy const):

  • Modules/cache/CacheStorageConnection.cpp:

(WebCore::CacheStorageConnection::open):
(WebCore::CacheStorageConnection::remove):
(WebCore::CacheStorageConnection::retrieveCaches):
(WebCore::CacheStorageConnection::retrieveRecords):
(WebCore::CacheStorageConnection::batchDeleteOperation):
(WebCore::CacheStorageConnection::batchPutOperation):
(WebCore::CacheStorageConnection::openOrRemoveCompleted):
(WebCore::CacheStorageConnection::updateCaches):
(WebCore::CacheStorageConnection::updateRecords):
(WebCore::CacheStorageConnection::removeRecordsCompleted):
(WebCore::CacheStorageConnection::putRecordsCompleted):

  • Modules/cache/CacheStorageConnection.h:

(WebCore::CacheStorageConnection::openCompleted):
(WebCore::CacheStorageConnection::removeCompleted):
(WebCore::CacheStorageConnection::doOpen):
(WebCore::CacheStorageConnection::doRemove):
(WebCore::CacheStorageConnection::doRetrieveCaches):
(WebCore::CacheStorageConnection::doRetrieveRecords):
(WebCore::CacheStorageConnection::doBatchDeleteOperation):
(WebCore::CacheStorageConnection::doBatchPutOperation):

  • Modules/cache/WorkerCacheStorageConnection.cpp: Added.

(WebCore::toCrossThreadRecordData):
(WebCore::fromCrossThreadRecordData):
(WebCore::WorkerCacheStorageConnection::create):
(WebCore::WorkerCacheStorageConnection::WorkerCacheStorageConnection):
(WebCore::WorkerCacheStorageConnection::doOpen):
(WebCore::WorkerCacheStorageConnection::doRemove):
(WebCore::WorkerCacheStorageConnection::doRetrieveCaches):
(WebCore::WorkerCacheStorageConnection::doRetrieveRecords):
(WebCore::WorkerCacheStorageConnection::doBatchDeleteOperation):
(WebCore::WorkerCacheStorageConnection::doBatchPutOperation):

  • Modules/cache/WorkerCacheStorageConnection.h: Added.
  • Modules/cache/WorkerGlobalScopeCaches.cpp:

(WebCore::WorkerGlobalScopeCaches::caches const):

  • WebCore.xcodeproj/project.pbxproj:
  • loader/FetchOptions.h:

(WebCore::FetchOptions::isolatedCopy const):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::cacheStorageConnection):

  • workers/WorkerGlobalScope.h:
Location:
trunk/Source/WebCore
Files:
1 added
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r220795 r220810  
    899899    Modules/cache/CacheStorageConnection.cpp
    900900    Modules/cache/DOMWindowCaches.cpp
     901    Modules/cache/WorkerCacheStorageConnection.cpp
    901902    Modules/cache/WorkerGlobalScopeCaches.cpp
    902903
  • trunk/Source/WebCore/ChangeLog

    r220809 r220810  
     12017-08-16  Youenn Fablet  <youenn@apple.com>
     2
     3        [Cache API] Implement Worker connection to the Cache storage engine
     4        https://bugs.webkit.org/show_bug.cgi?id=175599
     5
     6        Reviewed by Chris Dumez.
     7
     8        Covered by existing tests.
     9
     10        Adding a WorkerCacheStorageConnection to connect workers Cache/CacheStorage
     11        to the cache storage engine.
     12        WorkerCacheStorageConnection does this by hopping to the main thread to call the document cache storage connection to do the actual job.
     13        Doing some CacheStorageConnection refactoring to share code with WK2 implementation of the cache storage connection.
     14
     15        * Modules/cache/CacheQueryOptions.h:
     16        (WebCore::CacheQueryOptions::isolatedCopy const):
     17        * Modules/cache/CacheStorageConnection.cpp:
     18        (WebCore::CacheStorageConnection::open):
     19        (WebCore::CacheStorageConnection::remove):
     20        (WebCore::CacheStorageConnection::retrieveCaches):
     21        (WebCore::CacheStorageConnection::retrieveRecords):
     22        (WebCore::CacheStorageConnection::batchDeleteOperation):
     23        (WebCore::CacheStorageConnection::batchPutOperation):
     24        (WebCore::CacheStorageConnection::openOrRemoveCompleted):
     25        (WebCore::CacheStorageConnection::updateCaches):
     26        (WebCore::CacheStorageConnection::updateRecords):
     27        (WebCore::CacheStorageConnection::removeRecordsCompleted):
     28        (WebCore::CacheStorageConnection::putRecordsCompleted):
     29        * Modules/cache/CacheStorageConnection.h:
     30        (WebCore::CacheStorageConnection::openCompleted):
     31        (WebCore::CacheStorageConnection::removeCompleted):
     32        (WebCore::CacheStorageConnection::doOpen):
     33        (WebCore::CacheStorageConnection::doRemove):
     34        (WebCore::CacheStorageConnection::doRetrieveCaches):
     35        (WebCore::CacheStorageConnection::doRetrieveRecords):
     36        (WebCore::CacheStorageConnection::doBatchDeleteOperation):
     37        (WebCore::CacheStorageConnection::doBatchPutOperation):
     38        * Modules/cache/WorkerCacheStorageConnection.cpp: Added.
     39        (WebCore::toCrossThreadRecordData):
     40        (WebCore::fromCrossThreadRecordData):
     41        (WebCore::WorkerCacheStorageConnection::create):
     42        (WebCore::WorkerCacheStorageConnection::WorkerCacheStorageConnection):
     43        (WebCore::WorkerCacheStorageConnection::doOpen):
     44        (WebCore::WorkerCacheStorageConnection::doRemove):
     45        (WebCore::WorkerCacheStorageConnection::doRetrieveCaches):
     46        (WebCore::WorkerCacheStorageConnection::doRetrieveRecords):
     47        (WebCore::WorkerCacheStorageConnection::doBatchDeleteOperation):
     48        (WebCore::WorkerCacheStorageConnection::doBatchPutOperation):
     49        * Modules/cache/WorkerCacheStorageConnection.h: Added.
     50        * Modules/cache/WorkerGlobalScopeCaches.cpp:
     51        (WebCore::WorkerGlobalScopeCaches::caches const):
     52        * WebCore.xcodeproj/project.pbxproj:
     53        * loader/FetchOptions.h:
     54        (WebCore::FetchOptions::isolatedCopy const):
     55        * workers/WorkerGlobalScope.cpp:
     56        (WebCore::WorkerGlobalScope::cacheStorageConnection):
     57        * workers/WorkerGlobalScope.h:
     58
    1592017-08-16  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>
    260
  • trunk/Source/WebCore/Modules/cache/CacheQueryOptions.h

    r220311 r220810  
    3131
    3232struct CacheQueryOptions {
     33    CacheQueryOptions() = default;
     34    CacheQueryOptions(bool ignoreSearch, bool ignoreMethod, bool ignoreVary, String cacheName);
     35    CacheQueryOptions isolatedCopy() const { return { ignoreSearch, ignoreMethod, ignoreVary, cacheName.isolatedCopy() }; }
     36
    3337    bool ignoreSearch { false };
    3438    bool ignoreMethod { false };
     
    3741};
    3842
     43inline CacheQueryOptions::CacheQueryOptions(bool ignoreSearch, bool ignoreMethod, bool ignoreVary, String cacheName)
     44    : ignoreSearch(ignoreSearch)
     45    , ignoreMethod(ignoreMethod)
     46    , ignoreVary(ignoreVary)
     47    , cacheName(cacheName.isolatedCopy())
     48{
     49}
     50
    3951} // namespace WebCore
  • trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp

    r220758 r220810  
    7979}
    8080
     81void CacheStorageConnection::open(const String& origin, const String& cacheName, OpenRemoveCallback&& callback)
     82{
     83    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
     84    m_openAndRemoveCachePendingRequests.add(requestIdentifier, WTFMove(callback));
     85
     86    doOpen(requestIdentifier, origin, cacheName);
     87}
     88
     89void CacheStorageConnection::remove(uint64_t cacheIdentifier, OpenRemoveCallback&& callback)
     90{
     91    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
     92    m_openAndRemoveCachePendingRequests.add(requestIdentifier, WTFMove(callback));
     93
     94    doRemove(requestIdentifier, cacheIdentifier);
     95}
     96
     97void CacheStorageConnection::retrieveCaches(const String& origin, CachesCallback&& callback)
     98{
     99    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
     100    m_retrieveCachesPendingRequests.add(requestIdentifier, WTFMove(callback));
     101
     102    doRetrieveCaches(requestIdentifier, origin);
     103}
     104
     105void CacheStorageConnection::retrieveRecords(uint64_t cacheIdentifier, RecordsCallback&& callback)
     106{
     107    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
     108    m_retrieveRecordsPendingRequests.add(requestIdentifier, WTFMove(callback));
     109
     110    doRetrieveRecords(requestIdentifier, cacheIdentifier);
     111}
     112
     113void CacheStorageConnection::batchDeleteOperation(uint64_t cacheIdentifier, const WebCore::ResourceRequest& request, WebCore::CacheQueryOptions&& options, BatchOperationCallback&& callback)
     114{
     115    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
     116    m_batchDeleteAndPutPendingRequests.add(requestIdentifier, WTFMove(callback));
     117
     118    doBatchDeleteOperation(requestIdentifier, cacheIdentifier, request, WTFMove(options));
     119}
     120
     121void CacheStorageConnection::batchPutOperation(uint64_t cacheIdentifier, Vector<WebCore::CacheStorageConnection::Record>&& records, BatchOperationCallback&& callback)
     122{
     123    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
     124    m_batchDeleteAndPutPendingRequests.add(requestIdentifier, WTFMove(callback));
     125
     126    doBatchPutOperation(requestIdentifier, cacheIdentifier, WTFMove(records));
     127}
     128
     129void CacheStorageConnection::openOrRemoveCompleted(uint64_t requestIdentifier, uint64_t cacheIdentifier, Error error)
     130{
     131    if (auto callback = m_openAndRemoveCachePendingRequests.take(requestIdentifier))
     132        callback(cacheIdentifier, error);
     133}
     134
     135void CacheStorageConnection::updateCaches(uint64_t requestIdentifier, Vector<CacheInfo>&& caches)
     136{
     137    if (auto callback = m_retrieveCachesPendingRequests.take(requestIdentifier))
     138        callback(WTFMove(caches));
     139}
     140
     141void CacheStorageConnection::updateRecords(uint64_t requestIdentifier, Vector<Record>&& records)
     142{
     143    if (auto callback = m_retrieveRecordsPendingRequests.take(requestIdentifier))
     144        callback(WTFMove(records));
     145}
     146
     147void CacheStorageConnection::deleteRecordsCompleted(uint64_t requestIdentifier, Vector<uint64_t>&& records, Error error)
     148{
     149    if (auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier))
     150        callback(WTFMove(records), error);
     151}
     152
     153void CacheStorageConnection::putRecordsCompleted(uint64_t requestIdentifier, Vector<uint64_t>&& records, Error error)
     154{
     155    if (auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier))
     156        callback(WTFMove(records), error);
     157}
     158
    81159} // namespace WebCore
    82 
  • trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h

    r220758 r220810  
    3131#include "ResourceRequest.h"
    3232#include "ResourceResponse.h"
     33#include <wtf/HashMap.h>
    3334#include <wtf/ThreadSafeRefCounted.h>
    3435
     
    6970
    7071    using OpenRemoveCallback = WTF::Function<void(uint64_t, Error)>;
    71     using CacheMapCallback = WTF::Function<void(Vector<CacheInfo>&&)>;
     72    using CachesCallback = WTF::Function<void(Vector<CacheInfo>&&)>;
    7273    using RecordsCallback = WTF::Function<void(Vector<Record>&&)>;
    7374    using BatchOperationCallback = WTF::Function<void(Vector<uint64_t>&&, Error)>;
    7475
    75     virtual void open(const String& /* origin */, const String& /* cacheName */, OpenRemoveCallback&& callback) { callback(0, Error::NotImplemented); }
    76     virtual void remove(uint64_t /* cacheIdentifier */, OpenRemoveCallback&& callback) { callback(0, Error::NotImplemented); }
    77     virtual void retrieveCaches(const String& /* origin */, CacheMapCallback&& callback) { callback({ }); }
     76    void open(const String& /* origin */, const String& /* cacheName */, OpenRemoveCallback&&);
     77    void remove(uint64_t /* cacheIdentifier */, OpenRemoveCallback&&);
     78    void retrieveCaches(const String& /* origin */, CachesCallback&&);
    7879
    79     virtual void retrieveRecords(uint64_t /* cacheIdentifier */, RecordsCallback&& callback) { callback({ }); }
    80     virtual void batchDeleteOperation(uint64_t /* cacheIdentifier */, const ResourceRequest&, CacheQueryOptions&&, BatchOperationCallback&& callback) { callback({ }, Error::NotImplemented); }
    81     virtual void batchPutOperation(uint64_t /* cacheIdentifier */, Vector<Record>&&, BatchOperationCallback&& callback) { callback({ }, Error::NotImplemented); }
     80    void retrieveRecords(uint64_t /* cacheIdentifier */, RecordsCallback&&);
     81    void batchDeleteOperation(uint64_t /* cacheIdentifier */, const ResourceRequest&, CacheQueryOptions&&, BatchOperationCallback&&);
     82    void batchPutOperation(uint64_t /* cacheIdentifier */, Vector<Record>&&, BatchOperationCallback&&);
    8283
    8384protected:
    8485    CacheStorageConnection() =  default;
     86
     87    void openCompleted(uint64_t identifier, uint64_t cacheIdentifier, Error error) { openOrRemoveCompleted(identifier, cacheIdentifier, error); }
     88    void removeCompleted(uint64_t identifier, uint64_t cacheIdentifier, Error error) { openOrRemoveCompleted(identifier, cacheIdentifier, error); }
     89    WEBCORE_EXPORT void updateCaches(uint64_t requestIdentifier, Vector<CacheInfo>&&);
     90
     91    WEBCORE_EXPORT void updateRecords(uint64_t requestIdentifier, Vector<Record>&&);
     92    WEBCORE_EXPORT void deleteRecordsCompleted(uint64_t requestIdentifier, Vector<uint64_t>&&, Error);
     93    WEBCORE_EXPORT void putRecordsCompleted(uint64_t requestIdentifier, Vector<uint64_t>&&, Error);
     94
     95private:
     96    virtual void doOpen(uint64_t requestIdentifier, const String& /* origin */, const String& /* cacheName */) { openCompleted(requestIdentifier, 0, Error::NotImplemented); }
     97    virtual void doRemove(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */) { removeCompleted(requestIdentifier, 0, Error::NotImplemented); }
     98    virtual void doRetrieveCaches(uint64_t requestIdentifier, const String& /* origin */) { updateCaches(requestIdentifier, { }); }
     99
     100    virtual void doRetrieveRecords(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */) { updateRecords(requestIdentifier, { }); }
     101    virtual void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */, const ResourceRequest&, CacheQueryOptions&&) { deleteRecordsCompleted(requestIdentifier, { }, Error::NotImplemented); }
     102    virtual void doBatchPutOperation(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */, Vector<Record>&&) { putRecordsCompleted(requestIdentifier, { }, Error::NotImplemented); }
     103
     104    WEBCORE_EXPORT void openOrRemoveCompleted(uint64_t requestIdentifier, uint64_t cacheIdentifier, Error);
     105
     106    HashMap<uint64_t, OpenRemoveCallback> m_openAndRemoveCachePendingRequests;
     107    HashMap<uint64_t, CachesCallback> m_retrieveCachesPendingRequests;
     108    HashMap<uint64_t, RecordsCallback> m_retrieveRecordsPendingRequests;
     109    HashMap<uint64_t, BatchOperationCallback> m_batchDeleteAndPutPendingRequests;
     110
     111    uint64_t m_lastRequestIdentifier { 0 };
    85112};
    86113
  • trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h

    r220809 r220810  
     1
    12/*
    23 * Copyright (C) 2017 Apple Inc. All rights reserved.
     
    2627#pragma once
    2728
    28 #include <wtf/text/WTFString.h>
     29#include "CacheStorageConnection.h"
    2930
    3031namespace WebCore {
    3132
    32 struct CacheQueryOptions {
    33     bool ignoreSearch { false };
    34     bool ignoreMethod { false };
    35     bool ignoreVary { false };
    36     String cacheName;
     33class WorkerGlobalScope;
     34class WorkerLoaderProxy;
     35
     36class WorkerCacheStorageConnection final : public CacheStorageConnection {
     37public:
     38    static Ref<WorkerCacheStorageConnection> create(WorkerGlobalScope&);
     39    ~WorkerCacheStorageConnection();
     40
     41private:
     42    explicit WorkerCacheStorageConnection(WorkerGlobalScope&);
     43
     44    // WebCore::CacheStorageConnection
     45    void doOpen(uint64_t requestIdentifier, const String& /* origin */, const String& /* cacheName */) final;
     46    void doRemove(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */) final;
     47    void doRetrieveCaches(uint64_t requestIdentifier, const String& /* origin */) final;
     48
     49    void doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
     50    void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&) final;
     51    void doBatchPutOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<Record>&&) final;
     52
     53    WorkerGlobalScope& m_scope;
     54    WorkerLoaderProxy& m_proxy;
     55    String m_taskMode;
     56
     57    RefPtr<CacheStorageConnection> m_mainThreadConnection;
    3758};
    3859
  • trunk/Source/WebCore/Modules/cache/WorkerGlobalScopeCaches.cpp

    r220758 r220810  
    5656{
    5757    if (!m_caches)
    58         m_caches = CacheStorage::create(m_scope, CacheStorageConnection::create());
     58        m_caches = CacheStorage::create(m_scope, m_scope.cacheStorageConnection());
    5959    return m_caches.get();
    6060}
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r220809 r220810  
    17711771                41A3D58E101C152D00316D07 /* DedicatedWorkerThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41A3D58C101C152D00316D07 /* DedicatedWorkerThread.cpp */; };
    17721772                41A3D58F101C152D00316D07 /* DedicatedWorkerThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 41A3D58D101C152D00316D07 /* DedicatedWorkerThread.h */; };
     1773                41A7D3521F438D16008988DE /* WorkerCacheStorageConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41A7D34F1F438D10008988DE /* WorkerCacheStorageConnection.cpp */; };
     1774                41A7D3531F438D16008988DE /* WorkerCacheStorageConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 41A7D3501F438D10008988DE /* WorkerCacheStorageConnection.h */; };
    17731775                41ABE67B1D0580DB006D862D /* CrossOriginPreflightChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ABE67A1D0580D5006D862D /* CrossOriginPreflightChecker.h */; };
    17741776                41ABE67C1D0580E0006D862D /* CrossOriginPreflightChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41ABE6791D0580D5006D862D /* CrossOriginPreflightChecker.cpp */; };
     
    94359437                41A48AA71E84AEEC00D2AC2D /* RTCRtpParameters.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCRtpParameters.idl; sourceTree = "<group>"; };
    94369438                41A48AA81E84AF1D00D2AC2D /* RTCRtpParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpParameters.h; sourceTree = "<group>"; };
     9439                41A7D34F1F438D10008988DE /* WorkerCacheStorageConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerCacheStorageConnection.cpp; sourceTree = "<group>"; };
     9440                41A7D3501F438D10008988DE /* WorkerCacheStorageConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerCacheStorageConnection.h; sourceTree = "<group>"; };
    94379441                41ABE6791D0580D5006D862D /* CrossOriginPreflightChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossOriginPreflightChecker.cpp; sourceTree = "<group>"; };
    94389442                41ABE67A1D0580D5006D862D /* CrossOriginPreflightChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossOriginPreflightChecker.h; sourceTree = "<group>"; };
     
    1765417658                                41FB278C1F34C28200795487 /* DOMWindowCaches.h */,
    1765517659                                41380C2B1F343E2F00155FDA /* DOMWindowCaches.idl */,
     17660                                41A7D34F1F438D10008988DE /* WorkerCacheStorageConnection.cpp */,
     17661                                41A7D3501F438D10008988DE /* WorkerCacheStorageConnection.h */,
    1765617662                                41FB278F1F34C28200795487 /* WorkerGlobalScopeCaches.cpp */,
    1765717663                                41FB278D1F34C28200795487 /* WorkerGlobalScopeCaches.h */,
     
    3021630222                                379919971200DDF400EA041C /* WOFFFileFormat.h in Headers */,
    3021730223                                2E4346460F546A8200B0F1BA /* Worker.h in Headers */,
     30224                                41A7D3531F438D16008988DE /* WorkerCacheStorageConnection.h in Headers */,
    3021830225                                A52A68621DBB0F630083373F /* WorkerConsoleAgent.h in Headers */,
    3021930226                                A55639D11C6F09E300806D8E /* WorkerConsoleClient.h in Headers */,
     
    3185331860                                7C9ACABF1F3CF1AF00F3AA09 /* JSCryptoRsaHashedKeyAlgorithm.cpp in Sources */,
    3185431861                                7C9ACAC11F3CF1AF00F3AA09 /* JSCryptoRsaKeyAlgorithm.cpp in Sources */,
    31855                                 E48284081F44594C00863AC3 /* RenderTreeUpdaterFirstLetter.cpp in Sources */,
    3185631862                                BC46C1FC0C0DDC8F0020CFC3 /* JSCSSFontFaceRule.cpp in Sources */,
    3185731863                                BC46C1FE0C0DDC8F0020CFC3 /* JSCSSImportRule.cpp in Sources */,
     
    3312133127                                5824ABAA1AE849C8009074B7 /* RenderTreePosition.cpp in Sources */,
    3312233128                                E461802B1C8A06D90026C02C /* RenderTreeUpdater.cpp in Sources */,
     33129                                E48284081F44594C00863AC3 /* RenderTreeUpdaterFirstLetter.cpp in Sources */,
    3312333130                                E44614510CD68A3500FADA75 /* RenderVideo.cpp in Sources */,
    3312433131                                BCEA4867097D93020094C9E4 /* RenderView.cpp in Sources */,
     
    3393033937                                379919961200DDF400EA041C /* WOFFFileFormat.cpp in Sources */,
    3393133938                                2E4346450F546A8200B0F1BA /* Worker.cpp in Sources */,
     33939                                41A7D3521F438D16008988DE /* WorkerCacheStorageConnection.cpp in Sources */,
    3393233940                                A52A68611DBB0F630083373F /* WorkerConsoleAgent.cpp in Sources */,
    3393333941                                A55639D21C6F09E700806D8E /* WorkerConsoleClient.cpp in Sources */,
  • trunk/Source/WebCore/loader/FetchOptions.h

    r220244 r220810  
    3636struct FetchOptions {
    3737    enum class Type { EmptyString, Audio, Font, Image, Script, Style, Track, Video };
     38    enum class Destination { EmptyString, Document, Sharedworker, Subresource, Unknown, Worker };
     39    enum class Mode { Navigate, SameOrigin, NoCors, Cors };
     40    enum class Credentials { Omit, SameOrigin, Include };
     41    enum class Cache { Default, NoStore, Reload, NoCache, ForceCache, OnlyIfCached };
     42    enum class Redirect { Follow, Error, Manual };
     43
     44    FetchOptions() = default;
     45    FetchOptions(Type, Destination, Mode, Credentials, Cache, Redirect, ReferrerPolicy, String&&, bool);
     46    FetchOptions isolatedCopy() const { return { type, destination, mode, credentials, cache, redirect, referrerPolicy, integrity.isolatedCopy(), keepAlive }; }
     47
    3848    Type type { Type::EmptyString };
    39 
    40     enum class Destination { EmptyString, Document, Sharedworker, Subresource, Unknown, Worker };
    4149    Destination destination { Destination::EmptyString };
    42 
    43     enum class Mode { Navigate, SameOrigin, NoCors, Cors };
    4450    Mode mode { Mode::NoCors };
    45 
    46     enum class Credentials { Omit, SameOrigin, Include };
    4751    Credentials credentials { Credentials::Omit };
    48 
    49     enum class Cache { Default, NoStore, Reload, NoCache, ForceCache, OnlyIfCached };
    5052    Cache cache { Cache::Default };
    51 
    52     enum class Redirect { Follow, Error, Manual };
    5353    Redirect redirect { Redirect::Follow };
    54 
    5554    ReferrerPolicy referrerPolicy { ReferrerPolicy::EmptyString };
    56 
    5755    String integrity;
    58 
    5956    bool keepAlive { false };
    6057};
    6158
     59inline FetchOptions::FetchOptions(Type type, Destination destination, Mode mode, Credentials credentials, Cache cache, Redirect redirect, ReferrerPolicy referrerPolicy, String&& integrity, bool keepAlive)
     60    : type(type)
     61    , destination(destination)
     62    , mode(mode)
     63    , credentials(credentials)
     64    , cache(cache)
     65    , redirect(redirect)
     66    , referrerPolicy(referrerPolicy)
     67    , integrity(WTFMove(integrity))
     68    , keepAlive(keepAlive)
     69{
     70}
     71
    6272} // namespace WebCore
  • trunk/Source/WebCore/workers/WorkerGlobalScope.cpp

    r220475 r220810  
    387387}
    388388
     389CacheStorageConnection& WorkerGlobalScope::cacheStorageConnection()
     390{
     391    if (!m_cacheStorageConnection)
     392        m_cacheStorageConnection = WorkerCacheStorageConnection::create(*this);
     393    return *m_cacheStorageConnection;
     394}
     395
    389396} // namespace WebCore
  • trunk/Source/WebCore/workers/WorkerGlobalScope.h

    r220475 r220810  
    2828
    2929#include "Base64Utilities.h"
     30#include "CacheStorageConnection.h"
    3031#include "EventTarget.h"
    3132#include "ScriptExecutionContext.h"
     
    3334#include "Supplementable.h"
    3435#include "URL.h"
     36#include "WorkerCacheStorageConnection.h"
    3537#include "WorkerEventQueue.h"
    3638#include "WorkerScriptController.h"
     
    6668    void stopIndexedDatabase();
    6769#endif
     70
     71    CacheStorageConnection& cacheStorageConnection();
    6872
    6973    WorkerScriptController* script() { return m_script.get(); }
     
    184188
    185189    SessionID m_sessionID;
     190    RefPtr<WorkerCacheStorageConnection> m_cacheStorageConnection;
    186191};
    187192
Note: See TracChangeset for help on using the changeset viewer.