Changeset 249359 in webkit


Ignore:
Timestamp:
Aug 31, 2019 12:52:19 AM (5 years ago)
Author:
Chris Dumez
Message:

DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID
https://bugs.webkit.org/show_bug.cgi?id=201364

Reviewed by John Wilander.

Source/WebCore:

DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID. pageID is
redundant since it is being ignored by the callee. For the frame, simply pass the frame object in.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::hasStorageAccess):
(WebCore::DocumentStorageAccess::requestStorageAccess):

  • page/ChromeClient.h:

(WebCore::ChromeClient::hasStorageAccess):
(WebCore::ChromeClient::requestStorageAccess):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::hasStorageAccess):
(WebKit::WebChromeClient::requestStorageAccess):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasStorageAccess):
(WebKit::WebPage::requestStorageAccess):

  • WebProcess/WebPage/WebPage.h:
Location:
trunk/Source
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r249357 r249359  
     12019-08-31  Chris Dumez  <cdumez@apple.com>
     2
     3        DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID
     4        https://bugs.webkit.org/show_bug.cgi?id=201364
     5
     6        Reviewed by John Wilander.
     7
     8        DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID. pageID is
     9        redundant since it is being ignored by the callee. For the frame, simply pass the frame object in.
     10
     11        * dom/DocumentStorageAccess.cpp:
     12        (WebCore::DocumentStorageAccess::hasStorageAccess):
     13        (WebCore::DocumentStorageAccess::requestStorageAccess):
     14        * page/ChromeClient.h:
     15        (WebCore::ChromeClient::hasStorageAccess):
     16        (WebCore::ChromeClient::requestStorageAccess):
     17
    1182019-08-30  Zalan Bujtas  <zalan@apple.com>
    219
  • trunk/Source/WebCore/dom/DocumentStorageAccess.cpp

    r248846 r249359  
    7575    ASSERT(m_document.settings().storageAccessAPIEnabled());
    7676
    77     if (m_document.frame() && hasFrameSpecificStorageAccess()) {
     77    auto* frame = m_document.frame();
     78    if (frame && hasFrameSpecificStorageAccess()) {
    7879        promise->resolve<IDLBoolean>(true);
    7980        return;
    8081    }
    8182   
    82     if (!m_document.frame() || m_document.securityOrigin().isUnique()) {
     83    if (!frame || m_document.securityOrigin().isUnique()) {
    8384        promise->resolve<IDLBoolean>(false);
    8485        return;
    8586    }
    8687   
    87     if (m_document.frame()->isMainFrame()) {
     88    if (frame->isMainFrame()) {
    8889        promise->resolve<IDLBoolean>(true);
    8990        return;
     
    9798    }
    9899   
    99     auto frameID = m_document.frame()->loader().client().frameID();
    100     auto pageID = m_document.frame()->loader().client().pageID();
    101     if (!frameID || !pageID) {
    102         promise->reject();
    103         return;
    104     }
    105    
    106     if (Page* page = m_document.page()) {
    107         auto subFrameDomain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host());
    108         auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
    109         page->chrome().client().hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID.value(), pageID.value(), [weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {
    110             DocumentStorageAccess* document = weakThis.get();
    111             if (!document)
    112                 return;
    113            
    114             promise->resolve<IDLBoolean>(hasAccess);
    115         });
    116         return;
    117     }
    118    
    119     promise->reject();
     100    auto* page = frame->page();
     101    if (!page) {
     102        promise->reject();
     103        return;
     104    }
     105   
     106    auto subFrameDomain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host());
     107    auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
     108    page->chrome().client().hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *frame, [weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {
     109        if (!weakThis)
     110            return;
     111
     112        promise->resolve<IDLBoolean>(hasAccess);
     113    });
    120114}
    121115
     
    124118    ASSERT(m_document.settings().storageAccessAPIEnabled());
    125119   
    126     if (m_document.frame() && hasFrameSpecificStorageAccess()) {
     120    auto* frame = m_document.frame();
     121    if (frame && hasFrameSpecificStorageAccess()) {
    127122        promise->resolve();
    128123        return;
    129124    }
    130125   
    131     if (!m_document.frame() || m_document.securityOrigin().isUnique() || !isAllowedToRequestFrameSpecificStorageAccess()) {
    132         promise->reject();
    133         return;
    134     }
    135    
    136     if (m_document.frame()->isMainFrame()) {
     126    if (!frame || m_document.securityOrigin().isUnique() || !isAllowedToRequestFrameSpecificStorageAccess()) {
     127        promise->reject();
     128        return;
     129    }
     130   
     131    if (frame->isMainFrame()) {
    137132        promise->resolve();
    138133        return;
     
    164159    }
    165160
    166     Page* page = m_document.page();
    167     auto frameID = m_document.frame()->loader().client().frameID();
    168     auto pageID = m_document.frame()->loader().client().pageID();
    169     if (!page || !frameID || !pageID) {
     161    auto* page = frame->page();
     162    if (!page) {
    170163        promise->reject();
    171164        return;
     
    175168    auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
    176169   
    177     page->chrome().client().requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID.value(), pageID.value(), [documentReference = makeWeakPtr(*this), promise = WTFMove(promise)] (StorageAccessWasGranted wasGranted, StorageAccessPromptWasShown promptWasShown) mutable {
    178         DocumentStorageAccess* document = documentReference.get();
    179         if (!document)
     170    page->chrome().client().requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *frame, [this, weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (StorageAccessWasGranted wasGranted, StorageAccessPromptWasShown promptWasShown) mutable {
     171        if (!weakThis)
    180172            return;
    181173
     
    184176
    185177        if (shouldPreserveUserGesture) {
    186             MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([documentReference = makeWeakPtr(*document)] () {
    187                 if (auto* document = documentReference.get())
    188                     document->enableTemporaryTimeUserGesture();
     178            MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([this, weakThis] () {
     179                if (weakThis)
     180                    enableTemporaryTimeUserGesture();
    189181            }));
    190182        }
    191183
    192184        if (wasGranted == StorageAccessWasGranted::Yes) {
    193             document->setHasFrameSpecificStorageAccess(true);
     185            setHasFrameSpecificStorageAccess(true);
    194186            promise->resolve();
    195187        } else {
    196188            if (promptWasShown == StorageAccessPromptWasShown::Yes)
    197                 document->setWasExplicitlyDeniedFrameSpecificStorageAccess();
     189                setWasExplicitlyDeniedFrameSpecificStorageAccess();
    198190            promise->reject();
    199191        }
    200192
    201193        if (shouldPreserveUserGesture) {
    202             MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([documentReference = WTFMove(documentReference)] () {
    203                 if (auto* document = documentReference.get())
    204                     document->consumeTemporaryTimeUserGesture();
     194            MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([this, weakThis = WTFMove(weakThis)] () {
     195                if (weakThis)
     196                    consumeTemporaryTimeUserGesture();
    205197            }));
    206198        }
  • trunk/Source/WebCore/page/ChromeClient.h

    r249119 r249359  
    3131#include "DocumentStorageAccess.h"
    3232#include "FocusDirection.h"
    33 #include "FrameIdentifier.h"
    3433#include "FrameLoader.h"
    3534#include "GraphicsContext.h"
     
    488487
    489488#if ENABLE(RESOURCE_LOAD_STATISTICS)
    490     virtual void hasStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, FrameIdentifier, PageIdentifier, WTF::CompletionHandler<void(bool)>&& completionHandler) { completionHandler(false); }
    491     virtual void requestStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, FrameIdentifier, PageIdentifier, WTF::CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler) { completionHandler(StorageAccessWasGranted::No, StorageAccessPromptWasShown::No); }
     489    virtual void hasStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, Frame&, WTF::CompletionHandler<void(bool)>&& completionHandler) { completionHandler(false); }
     490    virtual void requestStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, Frame&, WTF::CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler) { completionHandler(StorageAccessWasGranted::No, StorageAccessPromptWasShown::No); }
    492491#endif
    493492
  • trunk/Source/WebKit/ChangeLog

    r249354 r249359  
     12019-08-31  Chris Dumez  <cdumez@apple.com>
     2
     3        DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID
     4        https://bugs.webkit.org/show_bug.cgi?id=201364
     5
     6        Reviewed by John Wilander.
     7
     8        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     9        (WebKit::WebChromeClient::hasStorageAccess):
     10        (WebKit::WebChromeClient::requestStorageAccess):
     11        * WebProcess/WebCoreSupport/WebChromeClient.h:
     12        * WebProcess/WebPage/WebPage.cpp:
     13        (WebKit::WebPage::hasStorageAccess):
     14        (WebKit::WebPage::requestStorageAccess):
     15        * WebProcess/WebPage/WebPage.h:
     16
    1172019-08-30  Chris Dumez  <cdumez@apple.com>
    218
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r249329 r249359  
    13171317
    13181318#if ENABLE(RESOURCE_LOAD_STATISTICS)
    1319 void WebChromeClient::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, PageIdentifier, CompletionHandler<void(bool)>&& completionHandler)
    1320 {
    1321     m_page.hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, WTFMove(completionHandler));
    1322 }
    1323 
    1324 void WebChromeClient::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, PageIdentifier, CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler)
    1325 {
    1326     m_page.requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, WTFMove(completionHandler));
     1319void WebChromeClient::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, Frame& frame, CompletionHandler<void(bool)>&& completionHandler)
     1320{
     1321    auto* webFrame = WebFrame::fromCoreFrame(frame);
     1322    ASSERT(webFrame);
     1323    m_page.hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *webFrame, WTFMove(completionHandler));
     1324}
     1325
     1326void WebChromeClient::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, Frame& frame, CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler)
     1327{
     1328    auto* webFrame = WebFrame::fromCoreFrame(frame);
     1329    ASSERT(webFrame);
     1330    m_page.requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *webFrame, WTFMove(completionHandler));
    13271331}
    13281332#endif
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h

    r248762 r249359  
    369369
    370370#if ENABLE(RESOURCE_LOAD_STATISTICS)
    371     void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, WebCore::PageIdentifier, WTF::CompletionHandler<void(bool)>&&) final;
    372     void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, WebCore::PageIdentifier, WTF::CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&) final;
     371    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::Frame&, WTF::CompletionHandler<void(bool)>&&) final;
     372    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::Frame&, WTF::CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&) final;
    373373#endif
    374374
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r249354 r249359  
    65316531
    65326532#if ENABLE(RESOURCE_LOAD_STATISTICS)
    6533 void WebPage::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, CompletionHandler<void(bool)>&& completionHandler)
    6534 {
    6535     WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::HasStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
    6536 }
    6537 
    6538 void WebPage::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&& completionHandler)
    6539 {
    6540     WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
     6533void WebPage::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, WebFrame& frame, CompletionHandler<void(bool)>&& completionHandler)
     6534{
     6535    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::HasStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frame.frameID(), m_pageID), WTFMove(completionHandler));
     6536}
     6537
     6538void WebPage::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, WebFrame& frame, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&& completionHandler)
     6539{
     6540    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frame.frameID(), m_pageID), WTFMove(completionHandler));
    65416541}
    65426542
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r249354 r249359  
    11361136
    11371137#if ENABLE(RESOURCE_LOAD_STATISTICS)
    1138     void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, CompletionHandler<void(bool)>&&);
    1139     void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&);
     1138    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebFrame&, CompletionHandler<void(bool)>&&);
     1139    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebFrame&, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&);
    11401140    void wasLoadedWithDataTransferFromPrevalentResource();
    11411141#endif
Note: See TracChangeset for help on using the changeset viewer.