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