Title: [249774] branches/safari-608.2.11.1-branch/Source

Diff

Modified: branches/safari-608.2.11.1-branch/Source/WebCore/ChangeLog (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebCore/ChangeLog	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebCore/ChangeLog	2019-09-11 20:12:03 UTC (rev 249774)
@@ -1,54 +1,3 @@
-2019-09-11  Kocsen Chung  <kocsen_ch...@apple.com>
-
-        Cherry-pick r249359. rdar://problem/55240886
-
-    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:
-    
-    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249359 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
-    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-09-05  Kocsen Chung  <kocsen_ch...@apple.com>
 
         Cherry-pick r249534. rdar://problem/55084674

Modified: branches/safari-608.2.11.1-branch/Source/WebCore/dom/DocumentStorageAccess.cpp (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebCore/dom/DocumentStorageAccess.cpp	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebCore/dom/DocumentStorageAccess.cpp	2019-09-11 20:12:03 UTC (rev 249774)
@@ -74,18 +74,17 @@
 {
     ASSERT(m_document.settings().storageAccessAPIEnabled());
 
-    auto* frame = m_document.frame();
-    if (frame && hasFrameSpecificStorageAccess()) {
+    if (m_document.frame() && hasFrameSpecificStorageAccess()) {
         promise->resolve<IDLBoolean>(true);
         return;
     }
     
-    if (!frame || m_document.securityOrigin().isUnique()) {
+    if (!m_document.frame() || m_document.securityOrigin().isUnique()) {
         promise->resolve<IDLBoolean>(false);
         return;
     }
     
-    if (frame->isMainFrame()) {
+    if (m_document.frame()->isMainFrame()) {
         promise->resolve<IDLBoolean>(true);
         return;
     }
@@ -97,20 +96,27 @@
         return;
     }
     
-    auto* page = frame->page();
-    if (!page) {
+    auto frameID = m_document.frame()->loader().client().frameID();
+    auto pageID = m_document.frame()->loader().client().pageID();
+    if (!frameID || !pageID) {
         promise->reject();
         return;
     }
     
-    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);
-    });
+    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();
 }
 
 void DocumentStorageAccess::requestStorageAccess(Ref<DeferredPromise>&& promise)
@@ -117,18 +123,17 @@
 {
     ASSERT(m_document.settings().storageAccessAPIEnabled());
     
-    auto* frame = m_document.frame();
-    if (frame && hasFrameSpecificStorageAccess()) {
+    if (m_document.frame() && hasFrameSpecificStorageAccess()) {
         promise->resolve();
         return;
     }
     
-    if (!frame || m_document.securityOrigin().isUnique() || !isAllowedToRequestFrameSpecificStorageAccess()) {
+    if (!m_document.frame() || m_document.securityOrigin().isUnique() || !isAllowedToRequestFrameSpecificStorageAccess()) {
         promise->reject();
         return;
     }
     
-    if (frame->isMainFrame()) {
+    if (m_document.frame()->isMainFrame()) {
         promise->resolve();
         return;
     }
@@ -158,8 +163,10 @@
         return;
     }
 
-    auto* page = frame->page();
-    if (!page) {
+    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) {
         promise->reject();
         return;
     }
@@ -167,8 +174,9 @@
     auto subFrameDomain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host());
     auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host());
     
-    page->chrome().client().requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *frame, [this, weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (StorageAccessWasGranted wasGranted, StorageAccessPromptWasShown promptWasShown) mutable {
-        if (!weakThis)
+    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)
             return;
 
         // Consume the user gesture only if the user explicitly denied access.
@@ -175,25 +183,25 @@
         bool shouldPreserveUserGesture = wasGranted == StorageAccessWasGranted::Yes || promptWasShown == StorageAccessPromptWasShown::No;
 
         if (shouldPreserveUserGesture) {
-            MicrotaskQueue::mainThreadQueue().append(std::make_unique<VoidMicrotask>([this, weakThis] () {
-                if (weakThis)
-                    enableTemporaryTimeUserGesture();
+            MicrotaskQueue::mainThreadQueue().append(std::make_unique<VoidMicrotask>([documentReference = makeWeakPtr(*document)] () {
+                if (auto* document = documentReference.get())
+                    document->enableTemporaryTimeUserGesture();
             }));
         }
 
         if (wasGranted == StorageAccessWasGranted::Yes) {
-            setHasFrameSpecificStorageAccess(true);
+            document->setHasFrameSpecificStorageAccess(true);
             promise->resolve();
         } else {
             if (promptWasShown == StorageAccessPromptWasShown::Yes)
-                setWasExplicitlyDeniedFrameSpecificStorageAccess();
+                document->setWasExplicitlyDeniedFrameSpecificStorageAccess();
             promise->reject();
         }
 
         if (shouldPreserveUserGesture) {
-            MicrotaskQueue::mainThreadQueue().append(std::make_unique<VoidMicrotask>([this, weakThis = WTFMove(weakThis)] () {
-                if (weakThis)
-                    consumeTemporaryTimeUserGesture();
+            MicrotaskQueue::mainThreadQueue().append(std::make_unique<VoidMicrotask>([documentReference = WTFMove(documentReference)] () {
+                if (auto* document = documentReference.get())
+                    document->consumeTemporaryTimeUserGesture();
             }));
         }
     });

Modified: branches/safari-608.2.11.1-branch/Source/WebCore/page/ChromeClient.h (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebCore/page/ChromeClient.h	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebCore/page/ChromeClient.h	2019-09-11 20:12:03 UTC (rev 249774)
@@ -488,8 +488,8 @@
     virtual RefPtr<Icon> createIconForFiles(const Vector<String>& /* filenames */) = 0;
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    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); }
+    virtual void hasStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, uint64_t /*frameID*/, PageIdentifier, WTF::CompletionHandler<void(bool)>&& completionHandler) { completionHandler(false); }
+    virtual void requestStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, uint64_t /*frameID*/, PageIdentifier, WTF::CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler) { completionHandler(StorageAccessWasGranted::No, StorageAccessPromptWasShown::No); }
 #endif
 
 #if ENABLE(DEVICE_ORIENTATION)

Modified: branches/safari-608.2.11.1-branch/Source/WebKit/ChangeLog (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebKit/ChangeLog	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebKit/ChangeLog	2019-09-11 20:12:03 UTC (rev 249774)
@@ -1,53 +1,3 @@
-2019-09-11  Kocsen Chung  <kocsen_ch...@apple.com>
-
-        Cherry-pick r249359. rdar://problem/55240886
-
-    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:
-    
-    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249359 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
-    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-09-09  Alan Coon  <alanc...@apple.com>
 
         Cherry-pick r249649. rdar://problem/55198064

Modified: branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2019-09-11 20:12:03 UTC (rev 249774)
@@ -1327,18 +1327,14 @@
 }
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-void WebChromeClient::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, Frame& frame, CompletionHandler<void(bool)>&& completionHandler)
+void WebChromeClient::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, uint64_t frameID, PageIdentifier, CompletionHandler<void(bool)>&& completionHandler)
 {
-    auto* webFrame = WebFrame::fromCoreFrame(frame);
-    ASSERT(webFrame);
-    m_page.hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *webFrame, WTFMove(completionHandler));
+    m_page.hasStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, WTFMove(completionHandler));
 }
 
-void WebChromeClient::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, Frame& frame, CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler)
+void WebChromeClient::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, uint64_t frameID, PageIdentifier, CompletionHandler<void(StorageAccessWasGranted, StorageAccessPromptWasShown)>&& completionHandler)
 {
-    auto* webFrame = WebFrame::fromCoreFrame(frame);
-    ASSERT(webFrame);
-    m_page.requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), *webFrame, WTFMove(completionHandler));
+    m_page.requestStorageAccess(WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, WTFMove(completionHandler));
 }
 #endif
 

Modified: branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2019-09-11 20:12:03 UTC (rev 249774)
@@ -370,8 +370,8 @@
     void didInvalidateDocumentMarkerRects() final;
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    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;
+    void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, uint64_t frameID, WebCore::PageIdentifier, WTF::CompletionHandler<void(bool)>&&) final;
+    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, uint64_t frameID, WebCore::PageIdentifier, WTF::CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&&) final;
 #endif
 
 #if ENABLE(DEVICE_ORIENTATION)

Modified: branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-09-11 20:12:03 UTC (rev 249774)
@@ -6538,14 +6538,14 @@
 }
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-void WebPage::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, WebFrame& frame, CompletionHandler<void(bool)>&& completionHandler)
+void WebPage::hasStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, uint64_t frameID, CompletionHandler<void(bool)>&& completionHandler)
 {
-    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::HasStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frame.frameID(), m_pageID), WTFMove(completionHandler));
+    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::HasStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
 }
 
-void WebPage::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, WebFrame& frame, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&& completionHandler)
+void WebPage::requestStorageAccess(RegistrableDomain&& subFrameDomain, RegistrableDomain&& topFrameDomain, uint64_t frameID, CompletionHandler<void(WebCore::StorageAccessWasGranted, WebCore::StorageAccessPromptWasShown)>&& completionHandler)
 {
-    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frame.frameID(), m_pageID), WTFMove(completionHandler));
+    WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::RequestStorageAccess(sessionID(), WTFMove(subFrameDomain), WTFMove(topFrameDomain), frameID, m_pageID), WTFMove(completionHandler));
 }
 
 void WebPage::wasLoadedWithDataTransferFromPrevalentResource()

Modified: branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebPage/WebPage.h (249773 => 249774)


--- branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebPage/WebPage.h	2019-09-11 20:11:59 UTC (rev 249773)
+++ branches/safari-608.2.11.1-branch/Source/WebKit/WebProcess/WebPage/WebPage.h	2019-09-11 20:12:03 UTC (rev 249774)
@@ -1132,8 +1132,8 @@
     void flushPendingEditorStateUpdate();
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
-    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 hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, uint64_t frameID, CompletionHandler<void(bool)>&&);
+    void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, uint64_t frameID, 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