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

Changeset 282222 in webkit


Ignore:
Timestamp:
Sep 9, 2021, 10:03:31 AM (5 years ago)
Author:
sihui_liu@apple.com
Message:

Address post-commit comments on r282130 (Add basic support for Storage API)
​https://bugs.webkit.org/show_bug.cgi?id=230059

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests as no behavior change.

  • Modules/storage/StorageManager.cpp:

(WebCore::StorageManager::StorageManager):
(WebCore::StorageManager::persisted):
(WebCore::StorageManager::persist):
(WebCore::clientOrigin): Deleted.

  • Modules/storage/StorageManager.h:
  • dom/Document.cpp:

(WebCore::Document::storageConnection):

  • dom/Document.h:
  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::storageConnection):

  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::storage):

  • page/NavigatorBase.h:

Source/WebKit:

  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::localOriginStorageManager):

Location:
trunk/Source
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r282220 r282222  
     12021-09-09  Sihui Liu  <sihui_liu@apple.com>
     2
     3        Address post-commit comments on r282130 (Add basic support for Storage API)
     4        https://bugs.webkit.org/show_bug.cgi?id=230059
     5
     6        Reviewed by Youenn Fablet.
     7
     8        No new tests as no behavior change.
     9
     10        * Modules/storage/StorageManager.cpp:
     11        (WebCore::StorageManager::StorageManager):
     12        (WebCore::StorageManager::persisted):
     13        (WebCore::StorageManager::persist):
     14        (WebCore::clientOrigin): Deleted.
     15        * Modules/storage/StorageManager.h:
     16        * dom/Document.cpp:
     17        (WebCore::Document::storageConnection):
     18        * dom/Document.h:
     19        * dom/ScriptExecutionContext.h:
     20        (WebCore::ScriptExecutionContext::storageConnection):
     21        * page/NavigatorBase.cpp:
     22        (WebCore::NavigatorBase::storage):
     23        * page/NavigatorBase.h:
     24
    1252021-09-09  Jer Noble  <jer.noble@apple.com>
    226
  • trunk/Source/WebCore/Modules/storage/StorageManager.cpp

    r282130 r282222  
    4343
    4444StorageManager::StorageManager(NavigatorBase& navigator)
    45     : m_navigator(navigator)
     45    : m_navigator(makeWeakPtr(navigator))
    4646{
    47 }
    48 
    49 static ClientOrigin clientOrigin(ScriptExecutionContext& context)
    50 {
    51     auto* origin = context.securityOrigin();
    52     return { context.topOrigin().data(), origin ? origin->data() : SecurityOriginData { } };
    5347}
    5448
    5549void StorageManager::persisted(DOMPromiseDeferred<IDLBoolean>&& promise)
    5650{
    57     auto context = m_navigator.scriptExecutionContext();
     51    if (!m_navigator)
     52        return promise.reject(Exception { InvalidStateError, "Navigator does not exist"_s });
     53
     54    auto context = m_navigator->scriptExecutionContext();
    5855    if (!context)
    5956        return promise.reject(Exception { InvalidStateError, "The context is invalid"_s });
    6057
    61     if (auto connection = context->storageConnection()) {
    62         return connection->persisted(clientOrigin(*context), [promise = WTFMove(promise)](bool persisted) mutable {
    63             promise.resolve(persisted);
    64         });
    65     }
     58    auto connection = context->storageConnection();
     59    if (!connection)
     60        return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
    6661
    67     return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
     62    auto* origin = context->securityOrigin();
     63    if (!origin)
     64        return promise.reject(Exception { InvalidStateError, "Origin is invalid"_s });
     65
     66    return connection->persisted({ context->topOrigin().data(), origin->data() }, [promise = WTFMove(promise)](bool persisted) mutable {
     67        promise.resolve(persisted);
     68    });
    6869}
    6970
    7071void StorageManager::persist(DOMPromiseDeferred<IDLBoolean>&& promise)
    7172{
    72     auto context = m_navigator.scriptExecutionContext();
     73    if (!m_navigator)
     74        return promise.reject(Exception { InvalidStateError, "Navigator does not exist"_s });
     75
     76    auto context = m_navigator->scriptExecutionContext();
    7377    if (!context)
    7478        return promise.reject(Exception { InvalidStateError, "The context is invalid"_s });
    7579
    76     if (auto connection = context->storageConnection()) {
    77         return connection->persist(clientOrigin(*context), [promise = WTFMove(promise)](bool persisted) mutable {
    78             promise.resolve(persisted);
    79         });
    80     }
     80    auto connection = context->storageConnection();
     81    if (!connection)
     82        return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
    8183
    82     return promise.reject(Exception { InvalidStateError, "The connection is invalid"_s });
     84    auto* origin = context->securityOrigin();
     85    if (!origin)
     86        return promise.reject(Exception { InvalidStateError, "Origin is invalid"_s });
     87
     88    return connection->persist({ context->topOrigin().data(), origin->data() }, [promise = WTFMove(promise)](bool persisted) mutable {
     89        promise.resolve(persisted);
     90    });
    8391}
    8492
  • trunk/Source/WebCore/Modules/storage/StorageManager.h

    r282130 r282222  
    4444    explicit StorageManager(NavigatorBase&);
    4545
    46     NavigatorBase& m_navigator;
     46    WeakPtr<NavigatorBase> m_navigator;
    4747};
    4848
  • trunk/Source/WebCore/dom/Document.cpp

    r282130 r282222  
    35603560}
    35613561
    3562 RefPtr<StorageConnection> Document::storageConnection()
     3562StorageConnection* Document::storageConnection()
    35633563{
    35643564    return page() ? &page()->storageConnection() : nullptr;
  • trunk/Source/WebCore/dom/Document.h

    r282130 r282222  
    707707    IDBClient::IDBConnectionProxy* idbConnectionProxy() final;
    708708    RefPtr<PermissionController> permissionController() final;
    709     RefPtr<StorageConnection> storageConnection() final;
     709    StorageConnection* storageConnection() final;
    710710    SocketProvider* socketProvider() final;
    711711    RefPtr<RTCDataChannelRemoteHandlerConnection> createRTCDataChannelRemoteHandlerConnection() final;
  • trunk/Source/WebCore/dom/ScriptExecutionContext.h

    r282130 r282222  
    119119    virtual IDBClient::IDBConnectionProxy* idbConnectionProxy() = 0;
    120120    virtual RefPtr<PermissionController> permissionController() { return nullptr; }
    121     virtual RefPtr<StorageConnection> storageConnection() { return nullptr; }
     121    virtual StorageConnection* storageConnection() { return nullptr; }
    122122
    123123    virtual SocketProvider* socketProvider() = 0;
  • trunk/Source/WebCore/page/NavigatorBase.cpp

    r282130 r282222  
    141141}
    142142
    143 ExceptionOr<StorageManager&> NavigatorBase::storage()
     143StorageManager& NavigatorBase::storage()
    144144{
    145145    if (!m_storageManager)
  • trunk/Source/WebCore/page/NavigatorBase.h

    r282130 r282222  
    6060    static Vector<String> languages();
    6161
    62     ExceptionOr<StorageManager&> storage();
     62    StorageManager& storage();
    6363
    6464protected:
  • trunk/Source/WebKit/ChangeLog

    r282218 r282222  
     12021-09-09  Sihui Liu  <sihui_liu@apple.com>
     2
     3        Address post-commit comments on r282130 (Add basic support for Storage API)
     4        https://bugs.webkit.org/show_bug.cgi?id=230059
     5
     6        Reviewed by Youenn Fablet.
     7
     8        * NetworkProcess/storage/NetworkStorageManager.cpp:
     9        (WebKit::NetworkStorageManager::localOriginStorageManager):
     10
    1112021-09-09  Chris Dumez  <cdumez@apple.com>
    212
  • trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp

    r282170 r282222  
    9292    ASSERT(!RunLoop::isMain());
    9393
    94     return *m_localOriginStorageManagers.ensure(origin, [path = m_path, origin, salt = m_salt] {
    95         return makeUnique<OriginStorageManager>(originPath(path, origin, salt));
     94    return *m_localOriginStorageManagers.ensure(origin, [&] {
     95        return makeUnique<OriginStorageManager>(originPath(m_path, origin, m_salt));
    9696    }).iterator->value;
    9797}
Note: See TracChangeset for help on using the changeset viewer.