Title: [249359] trunk/Source
Revision
249359
Author
cdu...@apple.com
Date
2019-08-31 00:52:19 -0700 (Sat, 31 Aug 2019)

Log 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:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (249358 => 249359)


--- trunk/Source/WebCore/ChangeLog	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebCore/ChangeLog	2019-08-31 07:52:19 UTC (rev 249359)
@@ -1,3 +1,20 @@
+2019-08-31  Chris Dumez  <cdu...@apple.com>
+
+        DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID
+        https://bugs.webkit.org/show_bug.cgi?id=201364
+
+        Reviewed by John Wilander.
+
+        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):
+
 2019-08-30  Zalan Bujtas  <za...@apple.com>
 
         [LFC] Transition from Geometry(formattingContext()) to formattingContext().quirks()

Modified: trunk/Source/WebCore/dom/DocumentStorageAccess.cpp (249358 => 249359)


--- trunk/Source/WebCore/dom/DocumentStorageAccess.cpp	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebCore/dom/DocumentStorageAccess.cpp	2019-08-31 07:52:19 UTC (rev 249359)
@@ -74,17 +74,18 @@
 {
     ASSERT(m_document.settings().storageAccessAPIEnabled());
 
-    if (m_document.frame() && hasFrameSpecificStorageAccess()) {
+    auto* frame = m_document.frame();
+    if (frame && hasFrameSpecificStorageAccess()) {
         promise->resolve<IDLBoolean>(true);
         return;
     }
     
-    if (!m_document.frame() || m_document.securityOrigin().isUnique()) {
+    if (!frame || m_document.securityOrigin().isUnique()) {
         promise->resolve<IDLBoolean>(false);
         return;
     }
     
-    if (m_document.frame()->isMainFrame()) {
+    if (frame->isMainFrame()) {
         promise->resolve<IDLBoolean>(true);
         return;
     }
@@ -96,27 +97,20 @@
         return;
     }
     
-    auto frameID = m_document.frame()->loader().client().frameID();
-    auto pageID = m_document.frame()->loader().client().pageID();
-    if (!frameID || !pageID) {
+    auto* page = frame->page();
+    if (!page) {
         promise->reject();
         return;
     }
     
-    if (Page* page = m_document.page()) {
-        auto subFrameDomain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host());
-        auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
-        page->chrome().client().hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID.value(), pageID.value(), [weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {
-            DocumentStorageAccess* document = weakThis.get();
-            if (!document)
-                return;
-            
-            promise->resolve<IDLBoolean>(hasAccess);
-        });
-        return;
-    }
-    
-    promise->reject();
+    auto subFrameDomain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host());
+    auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
+    page->chrome().client().hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *frame, [weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {
+        if (!weakThis)
+            return;
+
+        promise->resolve<IDLBoolean>(hasAccess);
+    });
 }
 
 void DocumentStorageAccess::requestStorageAccess(Ref<DeferredPromise>&& promise)
@@ -123,17 +117,18 @@
 {
     ASSERT(m_document.settings().storageAccessAPIEnabled());
     
-    if (m_document.frame() && hasFrameSpecificStorageAccess()) {
+    auto* frame = m_document.frame();
+    if (frame && hasFrameSpecificStorageAccess()) {
         promise->resolve();
         return;
     }
     
-    if (!m_document.frame() || m_document.securityOrigin().isUnique() || !isAllowedToRequestFrameSpecificStorageAccess()) {
+    if (!frame || m_document.securityOrigin().isUnique() || !isAllowedToRequestFrameSpecificStorageAccess()) {
         promise->reject();
         return;
     }
     
-    if (m_document.frame()->isMainFrame()) {
+    if (frame->isMainFrame()) {
         promise->resolve();
         return;
     }
@@ -163,10 +158,8 @@
         return;
     }
 
-    Page* page = m_document.page();
-    auto frameID = m_document.frame()->loader().client().frameID();
-    auto pageID = m_document.frame()->loader().client().pageID();
-    if (!page || !frameID || !pageID) {
+    auto* page = frame->page();
+    if (!page) {
         promise->reject();
         return;
     }
@@ -174,9 +167,8 @@
     auto subFrameDomain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host());
     auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
     
-    page->chrome().client().requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID.value(), pageID.value(), [documentReference = makeWeakPtr(*this), promise = WTFMove(promise)] (StorageAccessWasGranted wasGranted, StorageAccessPromptWasShown promptWasShown) mutable {
-        DocumentStorageAccess* document = documentReference.get();
-        if (!document)
+    page->chrome().client().requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *frame, [this, weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (StorageAccessWasGranted wasGranted, StorageAccessPromptWasShown promptWasShown) mutable {
+        if (!weakThis)
             return;
 
         // Consume the user gesture only if the user explicitly denied access.
@@ -183,25 +175,25 @@
         bool shouldPreserveUserGesture = wasGranted == StorageAccessWasGranted::Yes || promptWasShown == StorageAccessPromptWasShown::No;
 
         if (shouldPreserveUserGesture) {
-            MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([documentReference = makeWeakPtr(*document)] () {
-                if (auto* document = documentReference.get())
-                    document->enableTemporaryTimeUserGesture();
+            MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([this, weakThis] () {
+                if (weakThis)
+                    enableTemporaryTimeUserGesture();
             }));
         }
 
         if (wasGranted == StorageAccessWasGranted::Yes) {
-            document->setHasFrameSpecificStorageAccess(true);
+            setHasFrameSpecificStorageAccess(true);
             promise->resolve();
         } else {
             if (promptWasShown == StorageAccessPromptWasShown::Yes)
-                document->setWasExplicitlyDeniedFrameSpecificStorageAccess();
+                setWasExplicitlyDeniedFrameSpecificStorageAccess();
             promise->reject();
         }
 
         if (shouldPreserveUserGesture) {
-            MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([documentReference = WTFMove(documentReference)] () {
-                if (auto* document = documentReference.get())
-                    document->consumeTemporaryTimeUserGesture();
+            MicrotaskQueue::mainThreadQueue().append(makeUnique<VoidMicrotask>([this, weakThis = WTFMove(weakThis)] () {
+                if (weakThis)
+                    consumeTemporaryTimeUserGesture();
             }));
         }
     });

Modified: trunk/Source/WebCore/page/ChromeClient.h (249358 => 249359)


--- trunk/Source/WebCore/page/ChromeClient.h	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebCore/page/ChromeClient.h	2019-08-31 07:52:19 UTC (rev 249359)
@@ -30,7 +30,6 @@
 #include "DisplayRefreshMonitor.h"
 #include "DocumentStorageAccess.h"
 #include "FocusDirection.h"
-#include "FrameIdentifier.h"
 #include "FrameLoader.h"
 #include "GraphicsContext.h"
 #include "GraphicsLayer.h"
@@ -487,8 +486,8 @@
     virtual RefPtr<Icon> createIconForFiles(const Vector<String>& /* filenames */) = 0;
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    virtual void hasStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, FrameIdentifier, PageIdentifier, WTF::CompletionHandler<void(bool)>&& completionHandler) { completionHandler(false); }
-    virtual void requestStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, FrameIdentifier, PageIdentifier, WTF::CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler) { completionHandler(StorageAccessWasGranted::No, StorageAccessPromptWasShown::No); }
+    virtual void hasStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, Frame&, WTF::CompletionHandler<void(bool)>&& completionHandler) { completionHandler(false); }
+    virtual void requestStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, Frame&, WTF::CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler) { completionHandler(StorageAccessWasGranted::No, StorageAccessPromptWasShown::No); }
 #endif
 
 #if ENABLE(DEVICE_ORIENTATION)

Modified: trunk/Source/WebKit/ChangeLog (249358 => 249359)


--- trunk/Source/WebKit/ChangeLog	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebKit/ChangeLog	2019-08-31 07:52:19 UTC (rev 249359)
@@ -1,3 +1,19 @@
+2019-08-31  Chris Dumez  <cdu...@apple.com>
+
+        DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID
+        https://bugs.webkit.org/show_bug.cgi?id=201364
+
+        Reviewed by John Wilander.
+
+        * 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:
+
 2019-08-30  Chris Dumez  <cdu...@apple.com>
 
         WebPage::fromCorePage() to take and return a C++ reference

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (249358 => 249359)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2019-08-31 07:52:19 UTC (rev 249359)
@@ -1316,14 +1316,18 @@
 }
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-void WebChromeClient::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, PageIdentifier, CompletionHandler<void(bool)>&& completionHandler)
+void WebChromeClient::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, Frame& frame, CompletionHandler<void(bool)>&& completionHandler)
 {
-    m_page.hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, WTFMove(completionHandler));
+    auto* webFrame = WebFrame::fromCoreFrame(frame);
+    ASSERT(webFrame);
+    m_page.hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *webFrame, WTFMove(completionHandler));
 }
 
-void WebChromeClient::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, PageIdentifier, CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler)
+void WebChromeClient::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, Frame& frame, CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler)
 {
-    m_page.requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, WTFMove(completionHandler));
+    auto* webFrame = WebFrame::fromCoreFrame(frame);
+    ASSERT(webFrame);
+    m_page.requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *webFrame, WTFMove(completionHandler));
 }
 #endif
 

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (249358 => 249359)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2019-08-31 07:52:19 UTC (rev 249359)
@@ -368,8 +368,8 @@
     void didInvalidateDocumentMarkerRects() final;
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, WebCore::PageIdentifier, WTF::CompletionHandler<void(bool)>&&) final;
-    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, WebCore::PageIdentifier, WTF::CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&) final;
+    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::Frame&, WTF::CompletionHandler<void(bool)>&&) final;
+    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::Frame&, WTF::CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&) final;
 #endif
 
 #if ENABLE(DEVICE_ORIENTATION)

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (249358 => 249359)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-08-31 07:52:19 UTC (rev 249359)
@@ -6530,14 +6530,14 @@
 }
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-void WebPage::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, CompletionHandler<void(bool)>&& completionHandler)
+void WebPage::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, WebFrame& frame, CompletionHandler<void(bool)>&& completionHandler)
 {
-    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::HasStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
+    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::HasStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frame.frameID(), m_pageID), WTFMove(completionHandler));
 }
 
-void WebPage::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, FrameIdentifier frameID, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&& completionHandler)
+void WebPage::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, WebFrame& frame, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&& completionHandler)
 {
-    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
+    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frame.frameID(), m_pageID), WTFMove(completionHandler));
 }
 
 void WebPage::wasLoadedWithDataTransferFromPrevalentResource()

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (249358 => 249359)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2019-08-31 04:11:21 UTC (rev 249358)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2019-08-31 07:52:19 UTC (rev 249359)
@@ -1135,8 +1135,8 @@
     void flushPendingEditorStateUpdate();
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, CompletionHandler<void(bool)>&&);
-    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::FrameIdentifier, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&);
+    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebFrame&, CompletionHandler<void(bool)>&&);
+    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebFrame&, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&);
     void wasLoadedWithDataTransferFromPrevalentResource();
 #endif
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to