Changeset 249359 in webkit
- Timestamp:
- Aug 31, 2019 12:52:19 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r249357 r249359 1 2019-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 1 18 2019-08-30 Zalan Bujtas <zalan@apple.com> 2 19 -
trunk/Source/WebCore/dom/DocumentStorageAccess.cpp
r248846 r249359 75 75 ASSERT(m_document.settings().storageAccessAPIEnabled()); 76 76 77 if (m_document.frame() && hasFrameSpecificStorageAccess()) { 77 auto* frame = m_document.frame(); 78 if (frame && hasFrameSpecificStorageAccess()) { 78 79 promise->resolve<IDLBoolean>(true); 79 80 return; 80 81 } 81 82 82 if (! m_document.frame()|| m_document.securityOrigin().isUnique()) {83 if (!frame || m_document.securityOrigin().isUnique()) { 83 84 promise->resolve<IDLBoolean>(false); 84 85 return; 85 86 } 86 87 87 if ( m_document.frame()->isMainFrame()) {88 if (frame->isMainFrame()) { 88 89 promise->resolve<IDLBoolean>(true); 89 90 return; … … 97 98 } 98 99 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 }); 120 114 } 121 115 … … 124 118 ASSERT(m_document.settings().storageAccessAPIEnabled()); 125 119 126 if (m_document.frame() && hasFrameSpecificStorageAccess()) { 120 auto* frame = m_document.frame(); 121 if (frame && hasFrameSpecificStorageAccess()) { 127 122 promise->resolve(); 128 123 return; 129 124 } 130 125 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()) { 137 132 promise->resolve(); 138 133 return; … … 164 159 } 165 160 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) { 170 163 promise->reject(); 171 164 return; … … 175 168 auto topFrameDomain = RegistrableDomain::uncheckedCreateFromHost(topSecurityOrigin.host()); 176 169 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) 180 172 return; 181 173 … … 184 176 185 177 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(); 189 181 })); 190 182 } 191 183 192 184 if (wasGranted == StorageAccessWasGranted::Yes) { 193 document->setHasFrameSpecificStorageAccess(true);185 setHasFrameSpecificStorageAccess(true); 194 186 promise->resolve(); 195 187 } else { 196 188 if (promptWasShown == StorageAccessPromptWasShown::Yes) 197 document->setWasExplicitlyDeniedFrameSpecificStorageAccess();189 setWasExplicitlyDeniedFrameSpecificStorageAccess(); 198 190 promise->reject(); 199 191 } 200 192 201 193 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(); 205 197 })); 206 198 } -
trunk/Source/WebCore/page/ChromeClient.h
r249119 r249359 31 31 #include "DocumentStorageAccess.h" 32 32 #include "FocusDirection.h" 33 #include "FrameIdentifier.h"34 33 #include "FrameLoader.h" 35 34 #include "GraphicsContext.h" … … 488 487 489 488 #if ENABLE(RESOURCE_LOAD_STATISTICS) 490 virtual void hasStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, Frame Identifier, PageIdentifier, WTF::CompletionHandler<void(bool)>&& completionHandler) { completionHandler(false); }491 virtual void requestStorageAccess(RegistrableDomain&& /*subFrameDomain*/, RegistrableDomain&& /*topFrameDomain*/, Frame Identifier, 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); } 492 491 #endif 493 492 -
trunk/Source/WebKit/ChangeLog
r249354 r249359 1 2019-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 1 17 2019-08-30 Chris Dumez <cdumez@apple.com> 2 18 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
r249329 r249359 1317 1317 1318 1318 #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)); 1319 void 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 1326 void 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)); 1327 1331 } 1328 1332 #endif -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
r248762 r249359 369 369 370 370 #if ENABLE(RESOURCE_LOAD_STATISTICS) 371 void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::Frame Identifier, WebCore::PageIdentifier, WTF::CompletionHandler<void(bool)>&&) final;372 void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, WebCore::Frame Identifier, 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; 373 373 #endif 374 374 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r249354 r249359 6531 6531 6532 6532 #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), frame ID, 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), frame ID, m_pageID), WTFMove(completionHandler));6533 void 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 6538 void 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)); 6541 6541 } 6542 6542 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r249354 r249359 1136 1136 1137 1137 #if ENABLE(RESOURCE_LOAD_STATISTICS) 1138 void hasStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, Web Core::FrameIdentifier, CompletionHandler<void(bool)>&&);1139 void requestStorageAccess(WebCore::RegistrableDomain&& subFrameDomain, WebCore::RegistrableDomain&& topFrameDomain, Web Core::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)>&&); 1140 1140 void wasLoadedWithDataTransferFromPrevalentResource(); 1141 1141 #endif
Note: See TracChangeset
for help on using the changeset viewer.