haikuwebkit/Source/WebCore/dom/DocumentStorageAccess.cpp

322 lines
12 KiB
C++
Raw Permalink Normal View History

Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
/*
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
* Copyright (C) 2019-2020 Apple Inc. All rights reserved.
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "DocumentStorageAccess.h"
#if ENABLE(RESOURCE_LOAD_STATISTICS)
#include "Chrome.h"
#include "ChromeClient.h"
#include "Document.h"
MicrotaskQueue should be accessed via EventLoop https://bugs.webkit.org/show_bug.cgi?id=204397 Reviewed by Antti Koivisto. This patch refactors the existing code so that a microtask is always queued via EventLoopTaskGroup. It preserves all other (broken) semantics and behavior like all origins sharing a single microtask queue. The singleton MicrotaskQueue for the main thread has been moved from MicrotaskQueue::mainThreadQueue to WindowEventLoop, and an instance of MicrotaskQueue for each worker has been moved from WorkerGlobalScope to WorkerEventLoop. * animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): * animation/WebAnimation.cpp: (WebCore::WebAnimation::updateFinishedState): * bindings/js/JSDOMGlobalObjectTask.cpp: (WebCore::JSGlobalObjectTask::JSGlobalObjectTask): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. * bindings/js/JSDOMWindowBase.h: * bindings/js/JSExecState.cpp: (WebCore::JSExecState::didLeaveScriptContext): * bindings/js/JSRemoteDOMWindowBase.cpp: * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. * bindings/js/JSWorkerGlobalScopeBase.h: * bindings/js/JSWorkletGlobalScopeBase.cpp: * bindings/js/JSWorkletGlobalScopeBase.h: * dom/CustomElementReactionQueue.cpp: (WebCore::BackupElementQueueMicrotask): Deleted. (WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue): (WebCore::CustomElementReactionQueue::ensureBackupQueue): * dom/CustomElementReactionQueue.h: * dom/Document.cpp: (WebCore::Document::finishedParsing): * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): * dom/EventLoop.cpp: (WebCore::EventLoop::queueMicrotask): Added. (WebCore::EventLoop::performMicrotaskCheckpoint): Added. (WebCore::EventLoopTaskGroup::queueMicrotaskCallback): Added. (WebCore::EventLoopTaskGroup::queueMicrotask): Added. (WebCore::EventLoopTaskGroup::performMicrotaskCheckpoint): Added. * dom/EventLoop.h: (WebCore::EventLoopTaskGroup::microtaskQueue): * dom/Microtasks.cpp: (WebCore::MicrotaskQueue::mainThreadQueue): Deleted. (WebCore::MicrotaskQueue::contextQueue): Deleted. * dom/Microtasks.h: * dom/MutationObserver.cpp: (WebCore::MutationObserverMicrotask): Deleted. (WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Made this a member function so that it can call notifyMutationObservers in its lambda. (WebCore::MutationObserver::enqueueMutationRecord): (WebCore::MutationObserver::enqueueSlotChangeEvent): (WebCore::MutationObserver::setHasTransientRegistration): * dom/MutationObserver.h: * dom/MutationObserverRegistration.cpp: (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): * dom/WindowEventLoop.cpp: (WebCore::WindowEventLoop::microtaskQueue): * dom/WindowEventLoop.h: * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): * html/parser/HTMLScriptRunner.cpp: (WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent): (WebCore::HTMLScriptRunner::runScript): * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::recordCanvasAction): * testing/Internals.cpp: (WebCore::Internals::queueMicroTask): * workers/WorkerEventLoop.cpp: (WebCore::WorkerEventLoop::~WorkerEventLoop): (WebCore::WorkerEventLoop::microtaskQueue): (WebCore::WorkerEventLoop::clearMicrotaskQueue): * workers/WorkerEventLoop.h: * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): (WebCore::WorkerGlobalScope::prepareForTermination): * workers/WorkerGlobalScope.h: (WebCore::WorkerGlobalScope::microtaskQueue const): Deleted. Canonical link: https://commits.webkit.org/217704@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252723 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-11-21 01:47:56 +00:00
#include "EventLoop.h"
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
#include "JSDOMPromiseDeferred.h"
Can't login to Microsoft Teams https://bugs.webkit.org/show_bug.cgi?id=218778 <rdar://problem/36331568> Reviewed by John Wilander. This is a temporary quirk to assist a high-traffic website while they complete the large task of migrating away from login flows that require third party cookies. This quirk will be removed when the site is updated. Create a quirk to call the Storage Access API on behalf of Microsoft. Source/WebCore: No new tests, site-specific quirk. * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): Pass additional parameters to be able to dispatch a synthetic click if storage access is granted. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithCrossPageStorageAccess): (WebCore::ResourceLoadObserver::hasCrossPageStorageAccess const): Store domains in the web process to avoid async calls to the network process. (WebCore::isMicrosoftLoginElement): (WebCore::isMicrosoftDomain): * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the quirk. * page/Quirks.h: * platform/network/NetworkStorageSession.cpp: (WebCore::NetworkStorageSession::setDomainsWithCrossPageStorageAccess): (WebCore::NetworkStorageSession::grantCrossPageStorageAccess): (WebCore::NetworkStorageSession::hasStorageAccess const): (WebCore::NetworkStorageSession::grantStorageAccess): (WebCore::NetworkStorageSession::removeAllStorageAccess): (WebCore::NetworkStorageSession::storageAccessQuirks): (WebCore::NetworkStorageSession::canRequestStorageAccessForLoginPurposesWithoutPriorUserInteraction): (WebCore::NetworkStorageSession::loginDomainForFirstParty): (WebCore::NetworkStorageSession::mapToTopDomain): The user might go directly to login.live.com to sign in to Microsoft Teams, but may not have seen the Storage Access prompt. In this case, we should map live.com to microsoft.com and request storage access for microsoftonline.com under microsoft.com. Since login.live.com is used for other Microsoft login flows besides Teams, a user may have to grant storage access to microsoftonline.com even when it is not needed to complete the login. But this guarantees they will always be successfully logged into all Microsoft accounts. * platform/network/NetworkStorageSession.h: In order for the user to stay logged in between sessions, we should update NetworkStorageSession to grant storage access based on values stored in the ITP database for quirk domains. Source/WebKit: * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): Relax the requirement for user interaction for a specific third party needing cookies for authentication purposes. (WebKit::ResourceLoadStatisticsDatabaseStore::clear): (WebKit::ResourceLoadStatisticsDatabaseStore::cookieAccess): Relax the requirement for user interaction for a specific third party needing cookies for authentication purposes. (WebKit::ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess const): (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking): * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::clear): (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral): Relax user interaction for reasons above. (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: (WebKit::RegistrableDomainsToBlockCookiesFor::isolatedCopy const): * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithCrossPageStorageAccess): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithCrossPageStorageAccess): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasCrossPageStorageAccess const): (WebKit::WebResourceLoadObserver::setDomainsWithCrossPageStorageAccess): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithCrossPageStorageAccess): Add quirk'd domains to have page level storage access to be able to use document.cookie. * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Forward domains with the storage access quirk to the web process to avoid an async call to the network process. Canonical link: https://commits.webkit.org/231572@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269807 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-11-14 00:55:05 +00:00
#include "NetworkStorageSession.h"
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
#include "Page.h"
#include "Quirks.h"
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
#include "RegistrableDomain.h"
#include "SecurityOrigin.h"
#include "Settings.h"
#include "UserGestureIndicator.h"
namespace WebCore {
Clean up some includes to improve WebKit2 build speed https://bugs.webkit.org/show_bug.cgi?id=203071 Reviewed by Wenson Hsieh. Source/WebCore: No new tests, just shuffling code around. * bindings/js/WindowProxy.cpp: (WebCore::WindowProxy::WindowProxy): (WebCore::WindowProxy::~WindowProxy): (WebCore::WindowProxy::detachFromFrame): (WebCore::WindowProxy::destroyJSWindowProxy): (WebCore::WindowProxy::createJSWindowProxy): (WebCore::WindowProxy::jsWindowProxiesAsVector const): (WebCore::WindowProxy::clearJSWindowProxiesNotMatchingDOMWindow): (WebCore::WindowProxy::setDOMWindow): (WebCore::WindowProxy::attachDebugger): (WebCore::WindowProxy::jsWindowProxies const): (WebCore::WindowProxy::releaseJSWindowProxies): (WebCore::WindowProxy::setJSWindowProxies): * bindings/js/WindowProxy.h: (WebCore::WindowProxy::existingJSWindowProxy const): (WebCore::WindowProxy::jsWindowProxies const): Deleted. (WebCore::WindowProxy::releaseJSWindowProxies): Deleted. (WebCore::WindowProxy::setJSWindowProxies): Deleted. * platform/graphics/cocoa/IOSurface.h: * platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::~IOSurface): Source/WebKit: This is worth about 6% on WebKit2, and unlocks another 8% improvement down the line (but which is less mechanical). * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkSocketChannel.h: * NetworkProcess/WebStorage/StorageArea.h: * NetworkProcess/WebStorage/StorageManager.cpp: * NetworkProcess/WebStorage/StorageManagerSet.cpp: * Platform/IPC/Connection.h: * Shared/API/APIURL.h: * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: * Shared/WebCoreArgumentCoders.cpp: * Shared/WebCoreArgumentCoders.h: * UIProcess/API/APIAttachment.h: * UIProcess/API/Cocoa/_WKInspector.mm: * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h: * UIProcess/TextCheckerCompletion.cpp: * UIProcess/TextCheckerCompletion.h: * UIProcess/UserContent/WebUserContentControllerProxy.cpp: (WebKit::WebUserContentControllerProxy::addNetworkProcess): (WebKit::WebUserContentControllerProxy::removeNetworkProcess): * UIProcess/UserContent/WebUserContentControllerProxy.h: (WebKit::WebUserContentControllerProxy::addNetworkProcess): Deleted. (WebKit::WebUserContentControllerProxy::removeNetworkProcess): Deleted. * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Network/NetworkProcessConnection.cpp: * WebProcess/Network/NetworkProcessConnection.h: * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: * WebProcess/Plugins/PDF/PDFPlugin.mm: * WebProcess/Plugins/Plugin.cpp: * WebProcess/Plugins/Plugin.h: * WebProcess/WebProcess.cpp: Canonical link: https://commits.webkit.org/216599@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251361 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-21 08:25:55 +00:00
DocumentStorageAccess::DocumentStorageAccess(Document& document)
: m_document(document)
{
}
DocumentStorageAccess::~DocumentStorageAccess() = default;
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
DocumentStorageAccess* DocumentStorageAccess::from(Document& document)
{
auto* supplement = static_cast<DocumentStorageAccess*>(Supplement<Document>::from(&document, supplementName()));
if (!supplement) {
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part https://bugs.webkit.org/show_bug.cgi?id=200620 Source/JavaScriptCore: Reviewed by Geoff Garen. * API/JSCallbackObject.h: (JSC::JSCallbackObjectData::setPrivateProperty): * API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject<Parent>::JSCallbackObject): * API/JSClassRef.cpp: (OpaqueJSClassContextData::OpaqueJSClassContextData): (OpaqueJSClass::contextData): * API/JSMarkingConstraintPrivate.cpp: (JSContextGroupAddMarkingConstraint): * API/JSWrapperMap.mm: (-[JSWrapperMap initWithGlobalContextRef:]): * API/ObjCCallbackFunction.mm: (ArgumentTypeDelegate::typeInteger): (ArgumentTypeDelegate::typeDouble): (ArgumentTypeDelegate::typeBool): (ArgumentTypeDelegate::typeId): (ArgumentTypeDelegate::typeOfClass): (ArgumentTypeDelegate::typeStruct): (ResultTypeDelegate::typeInteger): (ResultTypeDelegate::typeDouble): (ResultTypeDelegate::typeBool): (ResultTypeDelegate::typeVoid): (ResultTypeDelegate::typeId): (ResultTypeDelegate::typeOfClass): (ResultTypeDelegate::typeBlock): (ResultTypeDelegate::typeStruct): (objCCallbackFunctionForInvocation): * API/glib/JSCContext.cpp: (jscContextSetVirtualMachine): * API/glib/JSCWrapperMap.cpp: (JSC::WrapperMap::WrapperMap): * assembler/ProbeStack.cpp: (JSC::Probe::Stack::ensurePageFor): * b3/B3LowerToAir.cpp: * b3/B3Procedure.cpp: (JSC::B3::Procedure::Procedure): (JSC::B3::Procedure::dominators): (JSC::B3::Procedure::naturalLoops): (JSC::B3::Procedure::backwardsCFG): (JSC::B3::Procedure::backwardsDominators): (JSC::B3::Procedure::addDataSection): * b3/air/AirCode.cpp: (JSC::B3::Air::Code::cCallSpecial): * b3/air/AirGenerate.cpp: (JSC::B3::Air::prepareForGeneration): * b3/air/testair.cpp: * b3/testb3.h: (compileProc): * bytecode/AccessCase.cpp: (JSC::AccessCase::generateImpl): * bytecode/AccessCaseSnippetParams.cpp: * bytecode/BytecodeBasicBlock.cpp: (JSC::BytecodeBasicBlock::computeImpl): * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::setFrameShuffleData): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::ensureJITDataSlow): (JSC::CodeBlock::setCalleeSaveRegisters): (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffsetSlow): * bytecode/CodeBlock.h: (JSC::CodeBlock::createRareDataIfNecessary): * bytecode/DFGExitProfile.cpp: (JSC::DFG::ExitProfile::add): * bytecode/DeferredCompilationCallback.cpp: (JSC::DeferredCompilationCallback::ensureDeferredSourceDump): * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback): * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::operator=): * bytecode/LazyOperandValueProfile.cpp: (JSC::CompressedLazyOperandValueProfileHolder::add): * bytecode/PolyProtoAccessChain.h: (JSC::PolyProtoAccessChain::clone): * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate): * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::computeForStubInfo): * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::operator=): * bytecode/RecordedStatuses.cpp: (JSC::RecordedStatuses::addCallLinkStatus): (JSC::RecordedStatuses::addGetByIdStatus): (JSC::RecordedStatuses::addPutByIdStatus): (JSC::RecordedStatuses::addInByIdStatus): * bytecode/StructureStubClearingWatchpoint.cpp: (JSC::WatchpointsOnStructureStubInfo::ensureReferenceAndAddWatchpoint): * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::addAccessCase): * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::livenessAnalysisSlow): * bytecode/UnlinkedCodeBlock.h: (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::ensureRareDataSlow): * bytecompiler/BytecodeGenerator.h: (JSC::BytecodeGenerator::generate): * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::Graph): (JSC::DFG::Graph::livenessFor): (JSC::DFG::Graph::killsFor): (JSC::DFG::Graph::ensureCPSCFG): (JSC::DFG::Graph::ensureCPSDominators): (JSC::DFG::Graph::ensureSSADominators): (JSC::DFG::Graph::ensureCPSNaturalLoops): (JSC::DFG::Graph::ensureSSANaturalLoops): (JSC::DFG::Graph::ensureBackwardsCFG): (JSC::DFG::Graph::ensureBackwardsDominators): (JSC::DFG::Graph::ensureControlEquivalenceAnalysis): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::JITCompiler): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): (JSC::DFG::JITCompiler::addressOfDoubleConstant): * dfg/DFGLivenessAnalysisPhase.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::compileInThreadImpl): * dfg/DFGSSAConversionPhase.cpp: (JSC::DFG::SSAConversionPhase::run): * dfg/DFGSlowPathGenerator.h: (JSC::DFG::slowPathCall): (JSC::DFG::slowPathMove): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::emitAllocateRawObject): (JSC::DFG::SpeculativeJIT::arrayify): (JSC::DFG::SpeculativeJIT::compileGetByValOnString): (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments): (JSC::DFG::SpeculativeJIT::compileArraySlice): (JSC::DFG::SpeculativeJIT::emitStructureCheck): (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): * dfg/DFGStoreBarrierInsertionPhase.cpp: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::createNewThread): * disassembler/Disassembler.cpp: (JSC::disassembleAsynchronously): * ftl/FTLAbstractHeap.cpp: (JSC::FTL::IndexedAbstractHeap::atSlow): * ftl/FTLCompile.cpp: (JSC::FTL::compile): * ftl/FTLFail.cpp: (JSC::FTL::fail): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lazySlowPath): * ftl/FTLState.cpp: (JSC::FTL::State::State): * heap/CompleteSubspace.cpp: (JSC::CompleteSubspace::allocatorForSlow): * heap/Heap.cpp: (JSC::Heap::Heap): (JSC::Heap::protectedObjectTypeCounts): (JSC::Heap::objectTypeCounts): (JSC::Heap::addCoreConstraints): * heap/HeapInlines.h: * heap/HeapSnapshotBuilder.cpp: (JSC::HeapSnapshotBuilder::buildSnapshot): * heap/IsoCellSet.cpp: (JSC::IsoCellSet::addSlow): * heap/IsoSubspace.cpp: (JSC::IsoSubspace::IsoSubspace): * heap/MarkingConstraintSet.cpp: (JSC::MarkingConstraintSet::add): * inspector/JSGlobalObjectConsoleClient.cpp: (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel): (Inspector::JSGlobalObjectConsoleClient::profile): (Inspector::JSGlobalObjectConsoleClient::profileEnd): (Inspector::JSGlobalObjectConsoleClient::warnUnimplemented): * inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController): (Inspector::JSGlobalObjectInspectorController::reportAPIException): (Inspector::JSGlobalObjectInspectorController::ensureInspectorAgent): (Inspector::JSGlobalObjectInspectorController::ensureDebuggerAgent): (Inspector::JSGlobalObjectInspectorController::createLazyAgents): * inspector/agents/InspectorAgent.cpp: (Inspector::InspectorAgent::InspectorAgent): * inspector/agents/InspectorConsoleAgent.cpp: (Inspector::InspectorConsoleAgent::InspectorConsoleAgent): (Inspector::InspectorConsoleAgent::startTiming): (Inspector::InspectorConsoleAgent::logTiming): (Inspector::InspectorConsoleAgent::stopTiming): (Inspector::InspectorConsoleAgent::count): (Inspector::InspectorConsoleAgent::countReset): * inspector/agents/InspectorDebuggerAgent.cpp: (Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent): * inspector/agents/InspectorHeapAgent.cpp: (Inspector::InspectorHeapAgent::InspectorHeapAgent): * inspector/agents/InspectorScriptProfilerAgent.cpp: (Inspector::InspectorScriptProfilerAgent::InspectorScriptProfilerAgent): * inspector/agents/InspectorTargetAgent.cpp: (Inspector::InspectorTargetAgent::InspectorTargetAgent): * inspector/agents/JSGlobalObjectDebuggerAgent.cpp: (Inspector::JSGlobalObjectDebuggerAgent::breakpointActionLog): * inspector/agents/JSGlobalObjectRuntimeAgent.cpp: (Inspector::JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent): * inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp: (Inspector::RemoteInspectorSocketEndpoint::createClient): * inspector/remote/socket/RemoteInspectorSocketEndpoint.h: * inspector/scripts/codegen/objc_generator_templates.py: * inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result: * inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result: * inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result: * inspector/scripts/tests/generic/expected/domain-availability.json-result: * inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result: * inspector/scripts/tests/generic/expected/enum-values.json-result: * inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result: * inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result: * jit/JIT.cpp: (JSC::JIT::compileWithoutLinking): (JSC::JIT::link): * jit/JITThunks.cpp: (JSC::JITThunks::JITThunks): * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jsc.cpp: (runJSC): * parser/Parser.cpp: (JSC::Parser<LexerType>::Parser): * parser/Parser.h: (JSC::Scope::pushLabel): (JSC::Parser<LexerType>::parse): * parser/ParserArena.h: (JSC::ParserArena::identifierArena): * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::executionCounterFor): * runtime/Error.cpp: (JSC::getStackTrace): * runtime/FunctionExecutable.cpp: (JSC::FunctionExecutable::ensureRareDataSlow): * runtime/FunctionRareData.h: (JSC::FunctionRareData::createAllocationProfileClearingWatchpoint): * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint): * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::createRareDataIfNeeded): * runtime/JSRunLoopTimer.cpp: (JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData): (JSC::JSRunLoopTimer::Manager::registerVM): * runtime/PropertyMapHashTable.h: (JSC::PropertyTable::addDeletedOffset): * runtime/PropertyTable.cpp: (JSC::PropertyTable::PropertyTable): * runtime/RegExp.cpp: (JSC::RegExp::finishCreation): * runtime/RegExp.h: * runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::ensureTemplateObjectMapImpl): * runtime/Structure.cpp: (JSC::Structure::ensurePropertyReplacementWatchpointSet): * runtime/StructureRareData.cpp: (JSC::StructureRareData::setObjectToStringValue): * runtime/SymbolTable.cpp: (JSC::SymbolTable::localToEntry): (JSC::SymbolTable::cloneScopePart): (JSC::SymbolTable::prepareForTypeProfiling): (JSC::SymbolTable::setRareDataCodeBlock): * runtime/TypeSet.cpp: (JSC::StructureShape::propertyHash): * runtime/VM.cpp: (JSC::VM::VM): (JSC::VM::ensureHeapProfiler): (JSC::VM::enableTypeProfiler): (JSC::VM::enableControlFlowProfiler): (JSC::VM::queueMicrotask): (JSC::VM::ensureShadowChicken): * wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::emitPatchpoint): (JSC::Wasm::AirIRGenerator::emitCheck): (JSC::Wasm::parseAndCompileAir): * wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::parseAndCompile): * wasm/WasmBBQPlan.cpp: (JSC::Wasm::BBQPlan::complete): * wasm/WasmOMGPlan.cpp: (JSC::Wasm::OMGPlan::work): * wasm/WasmWorklist.cpp: (JSC::Wasm::Worklist::Worklist): * wasm/js/JSToWasm.cpp: (JSC::Wasm::createJSToWasmWrapper): * yarr/YarrInterpreter.cpp: (JSC::Yarr::ByteCompiler::compile): (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): (JSC::Yarr::ByteCompiler::regexBegin): * yarr/YarrJIT.cpp: (JSC::Yarr::YarrGenerator::compile): * yarr/YarrPattern.cpp: (JSC::Yarr::CharacterClassConstructor::charClass): (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): (JSC::Yarr::YarrPatternConstructor::resetForReparsing): (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): (JSC::Yarr::YarrPatternConstructor::copyDisjunction): (JSC::Yarr::anycharCreate): * yarr/YarrPattern.h: (JSC::Yarr::PatternDisjunction::addNewAlternative): * yarr/create_regex_tables: * yarr/generateYarrUnicodePropertyTables.py: Source/WebCore: Reviewed by Geoff Garen. * Modules/applicationmanifest/ApplicationManifestParser.cpp: (WebCore::ApplicationManifestParser::logDeveloperWarning): * Modules/beacon/NavigatorBeacon.cpp: (WebCore::NavigatorBeacon::from): * Modules/cache/DOMWindowCaches.cpp: (WebCore::DOMWindowCaches::from): * Modules/cache/WorkerGlobalScopeCaches.cpp: (WebCore::WorkerGlobalScopeCaches::from): * Modules/credentialmanagement/NavigatorCredentials.cpp: (WebCore::NavigatorCredentials::from): * Modules/encryptedmedia/InitDataRegistry.cpp: (WebCore::InitDataRegistry::extractPsshBoxesFromCenc): * Modules/encryptedmedia/legacy/LegacyCDM.cpp: (WebCore::LegacyCDM::create): * Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp: (WebCore::LegacyCDMPrivateClearKey::createSession): * Modules/fetch/FetchBodyOwner.cpp: (WebCore::FetchBodyOwner::loadBlob): * Modules/fetch/FetchResponse.cpp: (WebCore::FetchResponse::fetch): (WebCore::FetchResponse::BodyLoader::start): * Modules/gamepad/NavigatorGamepad.cpp: (WebCore::NavigatorGamepad::from): * Modules/geolocation/GeolocationController.cpp: (WebCore::provideGeolocationTo): * Modules/geolocation/NavigatorGeolocation.cpp: (WebCore::NavigatorGeolocation::from): * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: (WebCore::DOMWindowIndexedDatabase::from): * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::index): * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::objectStore): (WebCore::IDBTransaction::createObjectStore): (WebCore::IDBTransaction::createIndex): * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp: (WebCore::WorkerGlobalScopeIndexedDatabase::from): * Modules/indexeddb/client/IDBConnectionToServer.cpp: (WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer): * Modules/indexeddb/client/TransactionOperation.cpp: (WebCore::IDBClient::TransactionOperation::TransactionOperation): * Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::getOrCreateUniqueIDBDatabase): (WebCore::IDBServer::IDBServer::createBackingStore): (WebCore::IDBServer::IDBServer::ensureQuotaUser): * Modules/indexeddb/server/IndexValueStore.cpp: (WebCore::IDBServer::IndexValueStore::addRecord): * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp: (WebCore::IDBServer::MemoryBackingStoreTransaction::create): (WebCore::IDBServer::MemoryBackingStoreTransaction::MemoryBackingStoreTransaction): (WebCore::IDBServer::MemoryBackingStoreTransaction::recordValueChanged): * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: (WebCore::IDBServer::MemoryIDBBackingStore::create): (WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::MemoryIDBBackingStore::setDatabaseInfo): * Modules/indexeddb/server/MemoryIndex.cpp: (WebCore::IDBServer::MemoryIndex::putIndexKey): (WebCore::IDBServer::MemoryIndex::maybeOpenCursor): * Modules/indexeddb/server/MemoryObjectStore.cpp: (WebCore::IDBServer::MemoryObjectStore::addRecord): (WebCore::IDBServer::MemoryObjectStore::maybeOpenCursor): * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction): (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement): * Modules/indexeddb/server/SQLiteIDBCursor.cpp: (WebCore::IDBServer::SQLiteIDBCursor::maybeCreate): (WebCore::IDBServer::SQLiteIDBCursor::maybeCreateBackingStoreCursor): (WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement): (WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord): * Modules/indexeddb/server/SQLiteIDBTransaction.cpp: (WebCore::IDBServer::SQLiteIDBTransaction::begin): * Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::didPerformAbortTransaction): * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp: (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction): * Modules/indexeddb/shared/IDBRequestData.cpp: (WebCore::IDBRequestData::IDBRequestData): (WebCore::IDBRequestData::isolatedCopy): * Modules/indexeddb/shared/IDBRequestData.h: (WebCore::IDBRequestData::decode): * Modules/indexeddb/shared/IDBResultData.cpp: (WebCore::IDBResultData::IDBResultData): (WebCore::IDBResultData::isolatedCopy): (WebCore::IDBResultData::openDatabaseSuccess): (WebCore::IDBResultData::openDatabaseUpgradeNeeded): (WebCore::IDBResultData::deleteDatabaseSuccess): (WebCore::IDBResultData::putOrAddSuccess): (WebCore::IDBResultData::getRecordSuccess): (WebCore::IDBResultData::getAllRecordsSuccess): (WebCore::IDBResultData::openCursorSuccess): (WebCore::IDBResultData::iterateCursorSuccess): * Modules/indexeddb/shared/IDBResultData.h: (WebCore::IDBResultData::decode): * Modules/indexeddb/shared/IDBTransactionInfo.cpp: (WebCore::IDBTransactionInfo::versionChange): (WebCore::IDBTransactionInfo::IDBTransactionInfo): (WebCore::IDBTransactionInfo::isolatedCopy): * Modules/indexeddb/shared/IDBTransactionInfo.h: (WebCore::IDBTransactionInfo::decode): * Modules/indexeddb/shared/InProcessIDBServer.cpp: (WebCore::InProcessIDBServer::quotaManager): * Modules/mediacapabilities/NavigatorMediaCapabilities.cpp: (WebCore::NavigatorMediaCapabilities::from): * Modules/mediasession/WebMediaSessionManager.cpp: (WebCore::WebMediaSessionManager::mockPicker): (WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient): * Modules/mediasource/MediaSource.cpp: (WebCore::MediaSource::buffered const): (WebCore::MediaSource::setLiveSeekableRange): * Modules/mediastream/NavigatorMediaDevices.cpp: (WebCore::NavigatorMediaDevices::from): * Modules/mediastream/UserMediaController.cpp: (WebCore::provideUserMediaTo): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::channelEvent): * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::addRemoteTrack): (WebCore::LibWebRTCMediaEndpoint::collectTransceivers): (WebCore::LibWebRTCMediaEndpoint::newTransceiver): (WebCore::LibWebRTCMediaEndpoint::createTransceiverBackends): (WebCore::LibWebRTCMediaEndpoint::transceiverBackendFromSender): (WebCore::LibWebRTCMediaEndpoint::createDataChannel): * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: (WebCore::createLibWebRTCPeerConnectionBackend): (WebCore::LibWebRTCPeerConnectionBackend::videoReceiver): (WebCore::LibWebRTCPeerConnectionBackend::audioReceiver): (WebCore::LibWebRTCPeerConnectionBackend::addTrack): (WebCore::LibWebRTCPeerConnectionBackend::addTransceiver): * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp: (WebCore::LibWebRTCRtpSenderBackend::createDTMFBackend): * Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp: (WebCore::LibWebRTCRtpTransceiverBackend::createReceiverBackend): (WebCore::LibWebRTCRtpTransceiverBackend::createSenderBackend): * Modules/notifications/Notification.cpp: (WebCore::Notification::Notification): * Modules/notifications/NotificationController.cpp: (WebCore::provideNotification): * Modules/quota/DOMWindowQuota.cpp: (WebCore::DOMWindowQuota::from): * Modules/quota/NavigatorStorageQuota.cpp: (WebCore::NavigatorStorageQuota::from): * Modules/quota/WorkerNavigatorStorageQuota.cpp: (WebCore::WorkerNavigatorStorageQuota::from): * Modules/speech/DOMWindowSpeechSynthesis.cpp: (WebCore::DOMWindowSpeechSynthesis::from): * Modules/speech/SpeechSynthesis.cpp: (WebCore::SpeechSynthesis::ensurePlatformSpeechSynthesizer): * Modules/webaudio/AsyncAudioDecoder.cpp: (WebCore::AsyncAudioDecoder::decodeAsync): * Modules/webaudio/AudioBasicInspectorNode.cpp: (WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode): * Modules/webaudio/AudioBasicProcessorNode.cpp: (WebCore::AudioBasicProcessorNode::AudioBasicProcessorNode): * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::AudioBufferSourceNode): * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::AudioContext): (WebCore::AudioContext::decodeAudioData): * Modules/webaudio/AudioDestinationNode.cpp: (WebCore::AudioDestinationNode::AudioDestinationNode): * Modules/webaudio/BiquadFilterNode.cpp: (WebCore::BiquadFilterNode::BiquadFilterNode): * Modules/webaudio/BiquadProcessor.cpp: (WebCore::BiquadProcessor::createKernel): (WebCore::BiquadProcessor::getFrequencyResponse): * Modules/webaudio/ChannelMergerNode.cpp: (WebCore::ChannelMergerNode::ChannelMergerNode): * Modules/webaudio/ChannelSplitterNode.cpp: (WebCore::ChannelSplitterNode::ChannelSplitterNode): * Modules/webaudio/ConvolverNode.cpp: (WebCore::ConvolverNode::ConvolverNode): (WebCore::ConvolverNode::setBuffer): * Modules/webaudio/DelayNode.cpp: (WebCore::DelayNode::DelayNode): * Modules/webaudio/DelayProcessor.cpp: (WebCore::DelayProcessor::createKernel): * Modules/webaudio/DynamicsCompressorNode.cpp: (WebCore::DynamicsCompressorNode::DynamicsCompressorNode): (WebCore::DynamicsCompressorNode::initialize): * Modules/webaudio/GainNode.cpp: (WebCore::GainNode::GainNode): * Modules/webaudio/MediaElementAudioSourceNode.cpp: (WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode): (WebCore::MediaElementAudioSourceNode::setFormat): * Modules/webaudio/MediaStreamAudioSourceNode.cpp: (WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode): (WebCore::MediaStreamAudioSourceNode::setFormat): * Modules/webaudio/OscillatorNode.cpp: (WebCore::OscillatorNode::OscillatorNode): * Modules/webaudio/PannerNode.cpp: (WebCore::PannerNode::PannerNode): * Modules/webaudio/PeriodicWave.cpp: (WebCore::PeriodicWave::createBandLimitedTables): * Modules/webaudio/RealtimeAnalyser.cpp: (WebCore::RealtimeAnalyser::RealtimeAnalyser): (WebCore::RealtimeAnalyser::setFftSize): * Modules/webaudio/ScriptProcessorNode.cpp: (WebCore::ScriptProcessorNode::ScriptProcessorNode): * Modules/webaudio/WaveShaperDSPKernel.cpp: (WebCore::WaveShaperDSPKernel::lazyInitializeOversampling): * Modules/webaudio/WaveShaperNode.cpp: (WebCore::WaveShaperNode::WaveShaperNode): * Modules/webaudio/WaveShaperProcessor.cpp: (WebCore::WaveShaperProcessor::createKernel): * Modules/webauthn/fido/FidoHidMessage.cpp: (fido::FidoHidMessage::FidoHidMessage): * Modules/webauthn/fido/FidoHidPacket.cpp: (fido::FidoHidInitPacket::createFromSerializedData): (fido::FidoHidContinuationPacket::createFromSerializedData): * Modules/webdatabase/Database.cpp: (WebCore::Database::openAndVerifyVersion): (WebCore::Database::close): (WebCore::Database::scheduleTransaction): (WebCore::Database::scheduleTransactionStep): (WebCore::Database::tableNames): * Modules/webdatabase/DatabaseThread.cpp: (WebCore::DatabaseThread::DatabaseThread): * Modules/webdatabase/DatabaseTracker.cpp: (WebCore::DatabaseTracker::addOpenDatabase): (WebCore::DatabaseTracker::recordCreatingDatabase): (WebCore::DatabaseTracker::recordDeletingDatabase): * Modules/webdatabase/SQLTransaction.cpp: (WebCore::SQLTransaction::executeSql): (WebCore::SQLTransaction::openTransactionAndPreflight): * Modules/webdriver/NavigatorWebDriver.cpp: (WebCore::NavigatorWebDriver::from): * Modules/webgpu/NavigatorGPU.cpp: (WebCore::NavigatorGPU::from): * Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h: * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h: * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding): (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding): * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: (WebCore::WHLSL::Metal::TypeNamer::createNameNode): * Modules/webgpu/WHLSL/WHLSLChecker.cpp: (WebCore::WHLSL::Checker::assignConcreteType): (WebCore::WHLSL::Checker::assignType): (WebCore::WHLSL::Checker::forwardType): * Modules/webgpu/WHLSL/WHLSLParser.cpp: (WebCore::WHLSL::Parser::parseSemantic): * Modules/webgpu/WorkerNavigatorGPU.cpp: (WebCore::WorkerNavigatorGPU::from): * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp: (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData): (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount): (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake): (WebCore::ThreadableWebSocketChannelClientWrapper::didClose): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError): (WebCore::ThreadableWebSocketChannelClientWrapper::didUpgradeURL): * Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::connect): (WebCore::WebSocketChannel::enqueueTextFrame): (WebCore::WebSocketChannel::enqueueRawFrame): (WebCore::WebSocketChannel::enqueueBlobFrame): (WebCore::WebSocketChannel::processOutgoingFrameQueue): * Modules/websockets/WebSocketDeflateFramer.cpp: (WebCore::WebSocketDeflateFramer::createExtensionProcessor): (WebCore::WebSocketDeflateFramer::enableDeflate): (WebCore::WebSocketDeflateFramer::deflate): (WebCore::WebSocketDeflateFramer::inflate): * Modules/websockets/WebSocketDeflater.cpp: (WebCore::WebSocketDeflater::WebSocketDeflater): (WebCore::WebSocketInflater::WebSocketInflater): * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize): * Modules/webvr/NavigatorWebVR.cpp: (WebCore::NavigatorWebVR::from): * accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates): * animation/WebAnimation.cpp: (WebCore::WebAnimation::updateFinishedState): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueTaskToEventLoop): * bindings/js/JSEventTargetCustom.cpp: (WebCore::jsEventTargetCast): * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop): * bindings/js/SerializedScriptValue.cpp: (WebCore::transferArrayBuffers): (WebCore::SerializedScriptValue::create): * bindings/js/SerializedScriptValue.h: (WebCore::SerializedScriptValue::decode): * bindings/js/WebCoreJSClientData.cpp: (WebCore::JSVMClientData::initNormalWorld): * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::initScript): * bridge/c/c_class.cpp: (JSC::Bindings::CClass::methodNamed const): (JSC::Bindings::CClass::fieldNamed const): * bridge/objc/objc_class.mm: (JSC::Bindings::ObjcClass::methodNamed const): (JSC::Bindings::ObjcClass::fieldNamed const): * bridge/objc/objc_runtime.mm: (JSC::Bindings::callObjCFallbackObject): * contentextensions/CombinedURLFilters.cpp: (WebCore::ContentExtensions::CombinedURLFilters::CombinedURLFilters): (WebCore::ContentExtensions::CombinedURLFilters::addPattern): * crypto/SubtleCrypto.cpp: (WebCore::normalizeCryptoAlgorithmParameters): (WebCore::crossThreadCopyImportParams): * css/CSSCalculationValue.cpp: (WebCore::determineCategory): * css/CSSDefaultStyleSheets.cpp: (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle): (WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle): * css/CSSFontFace.cpp: (WebCore::CSSFontFace::appendSources): * css/CSSFontFaceSet.cpp: (WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered): * css/CSSGroupingRule.cpp: (WebCore::CSSGroupingRule::cssRules const): * css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::saveCachedImageForSize): * css/CSSKeyframesRule.cpp: (WebCore::CSSKeyframesRule::cssRules): * css/CSSStyleSheet.cpp: (WebCore::CSSStyleSheet::cssRules): * css/DOMCSSPaintWorklet.cpp: (WebCore::DOMCSSPaintWorklet::from): * css/DOMCSSRegisterCustomProperty.cpp: (WebCore::DOMCSSRegisterCustomProperty::from): * css/DocumentRuleSets.cpp: (WebCore::DocumentRuleSets::DocumentRuleSets): (WebCore::DocumentRuleSets::updateUserAgentMediaQueryStyleIfNeeded const): (WebCore::DocumentRuleSets::initializeUserStyle): (WebCore::makeRuleSet): (WebCore::DocumentRuleSets::resetAuthorStyle): (WebCore::ensureInvalidationRuleSets): * css/ElementRuleCollector.cpp: (WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot): * css/FontFace.cpp: (WebCore::populateFontFaceWithArrayBuffer): * css/PropertySetCSSStyleDeclaration.cpp: (WebCore::PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM): * css/RuleFeature.cpp: (WebCore::RuleFeatureSet::collectFeatures): (WebCore::RuleFeatureSet::add): * css/RuleSet.cpp: (WebCore::RuleSet::addToRuleSet): * css/StyleBuilderConverter.h: (WebCore::StyleBuilderConverter::convertTo100PercentMinusLength): * css/StyleBuilderCustom.h: (WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue): (WebCore::StyleBuilderCustom::applyInheritTextShadow): (WebCore::StyleBuilderCustom::applyInheritBoxShadow): (WebCore::StyleBuilderCustom::applyValueContent): * css/StyleProperties.cpp: (WebCore::MutableStyleProperties::ensureCSSStyleDeclaration): (WebCore::MutableStyleProperties::ensureInlineCSSStyleDeclaration): * css/StyleResolver.cpp: (WebCore::StyleResolver::cascadedPropertiesForRollback): * css/makeprop.pl: (generateFillLayerPropertyInheritValueSetter): (generateFillLayerPropertyValueSetter): * css/parser/CSSParserImpl.cpp: (WebCore::CSSParserImpl::CSSParserImpl): (WebCore::CSSParserImpl::parsePageSelector): (WebCore::CSSParserImpl::consumeMediaRule): (WebCore::CSSParserImpl::consumeSupportsRule): (WebCore::CSSParserImpl::consumeKeyframesRule): * css/parser/CSSParserSelector.cpp: (WebCore::CSSParserSelector::parsePagePseudoSelector): (WebCore::CSSParserSelector::parsePseudoElementSelector): (WebCore::CSSParserSelector::parsePseudoClassSelector): (WebCore::CSSParserSelector::CSSParserSelector): (WebCore::CSSParserSelector::adoptSelectorVector): (WebCore::CSSParserSelector::prependTagSelector): * css/parser/CSSPropertyParser.cpp: (WebCore::consumeBasicShapePath): * css/parser/CSSSelectorParser.cpp: (WebCore::CSSSelectorParser::consumePseudo): * dom/CustomElementReactionQueue.cpp: (WebCore::CustomElementReactionQueue::ensureBackupQueue): * dom/DataTransfer.cpp: (WebCore::DataTransfer::items): (WebCore::DataTransfer::createForInputEvent): (WebCore::DataTransfer::createForDragStartEvent): (WebCore::DataTransfer::setDragImage): * dom/DeviceOrientationController.cpp: (WebCore::provideDeviceOrientationTo): * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::buildAccessKeyCache): (WebCore::Document::implementation): (WebCore::Document::formController): (WebCore::Document::updateTextRenderer): (WebCore::Document::userAgentShadowTreeStyleResolver): (WebCore::Document::axObjectCache const): (WebCore::Document::setParsing): (WebCore::Document::accessSVGExtensions): (WebCore::Document::initSecurityContext): (WebCore::Document::textAutoSizing): (WebCore::Document::didAddWheelEventHandler): (WebCore::Document::didAddTouchEventHandler): (WebCore::Document::didLogMessage): (WebCore::Document::registerCSSProperty): (WebCore::Document::deviceOrientationAndMotionAccessController): (WebCore::Document::contentChangeObserver): (WebCore::Document::domTimerHoldingTank): * dom/Document.h: (WebCore::Document::createParserYieldToken): * dom/DocumentEventQueue.cpp: (WebCore::DocumentEventQueue::DocumentEventQueue): * dom/DocumentMarkerController.cpp: (WebCore::DocumentMarkerController::addMarker): * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): * dom/Element.cpp: (WebCore::Element::attributes const): (WebCore::Element::setIsDefinedCustomElement): (WebCore::Element::enqueueToUpgrade): (WebCore::Element::classList): (WebCore::Element::dataset): (WebCore::Element::ensureIntersectionObserverData): (WebCore::Element::ensureResizeObserverData): * dom/EventListenerMap.cpp: (WebCore::EventListenerMap::add): * dom/EventNames.h: * dom/EventPath.cpp: (WebCore::EventPath::buildPath): (WebCore::EventPath::EventPath): * dom/IdTargetObserverRegistry.cpp: (WebCore::IdTargetObserverRegistry::addObserver): * dom/KeyboardEvent.cpp: (WebCore::KeyboardEvent::KeyboardEvent): * dom/MutationObserver.cpp: (WebCore::queueMutationObserverCompoundMicrotask): * dom/MutationObserverInterestGroup.cpp: (WebCore::MutationObserverInterestGroup::createIfNeeded): * dom/MutationObserverRegistration.cpp: (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): * dom/Node.cpp: (WebCore::Node::materializeRareData): (WebCore::Node::ensureEventTargetData): (WebCore::Node::registerMutationObserver): * dom/NodeRareData.h: (WebCore::NodeRareData::ensureNodeLists): (WebCore::NodeRareData::ensureMutationObserverData): * dom/RadioButtonGroups.cpp: (WebCore::RadioButtonGroups::addButton): * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::reportException): (WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection): (WebCore::ScriptExecutionContext::ensureRejectedPromiseTrackerSlow): * dom/SelectorQuery.cpp: * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::ShadowRoot): (WebCore::ShadowRoot::moveShadowRootToNewDocument): (WebCore::ShadowRoot::addSlotElementByName): * dom/SlotAssignment.cpp: (WebCore::SlotAssignment::addSlotElementByName): (WebCore::SlotAssignment::assignToSlot): * dom/TreeScope.cpp: (WebCore::TreeScope::TreeScope): (WebCore::TreeScope::addElementById): (WebCore::TreeScope::addElementByName): (WebCore::TreeScope::addImageMap): (WebCore::TreeScope::addImageElementByUsemap): (WebCore::TreeScope::labelElementForId): * editing/Editor.cpp: (WebCore::createDataTransferForClipboardEvent): (WebCore::Editor::Editor): * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::ensureReplacementFragment): * editing/SelectionRectGatherer.cpp: (WebCore::SelectionRectGatherer::clearAndCreateNotifier): * editing/TextIterator.cpp: (WebCore::TextIterator::handleTextNode): * editing/cocoa/HTMLConverter.mm: (HTMLConverter::HTMLConverter): (HTMLConverterCaches::computedStylePropertyForElement): * editing/markup.cpp: (WebCore::createPageForSanitizingWebContent): * fileapi/AsyncFileStream.cpp: (WebCore::callOnFileThread): (WebCore::AsyncFileStream::AsyncFileStream): * fileapi/FileReader.cpp: (WebCore::FileReader::readInternal): * history/CachedFrame.cpp: (WebCore::CachedFrame::CachedFrame): * history/CachedPage.cpp: (WebCore::CachedPage::CachedPage): * history/PageCache.cpp: (WebCore::PageCache::addIfCacheable): * html/FileInputType.cpp: (WebCore::FileInputType::requestIcon): * html/FormAssociatedElement.cpp: (WebCore::FormAssociatedElement::resetFormAttributeTargetObserver): * html/FormController.cpp: (WebCore::SavedFormState::deserialize): (WebCore::FormController::createSavedFormStateMap): (WebCore::FormController::takeStateForFormElement): * html/HTMLAnchorElement.cpp: (WebCore::HTMLAnchorElement::relList const): * html/HTMLAreaElement.cpp: (WebCore::HTMLAreaElement::mapMouseEvent): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::setImageBuffer const): * html/HTMLCollection.cpp: (WebCore::HTMLCollection::updateNamedElementCache const): * html/HTMLDetailsElement.cpp: (WebCore::HTMLDetailsElement::create): * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::updateVisibleValidationMessage): * html/HTMLFormControlsCollection.cpp: (WebCore::HTMLFormControlsCollection::updateNamedElementCache const): * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::addToPastNamesMap): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::sandbox): * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::ensureImageLoader): (WebCore::HTMLInputElement::resetListAttributeTargetObserver): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::sizes): (WebCore::HTMLLinkElement::relList): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::finishInitialization): (WebCore::HTMLMediaElement::seekWithTolerance): * html/HTMLOutputElement.cpp: (WebCore::HTMLOutputElement::htmlFor): * html/HTMLPlugInImageElement.cpp: (WebCore::HTMLPlugInImageElement::updateAfterStyleResolution): * html/HTMLSummaryElement.cpp: (WebCore::HTMLSummaryElement::create): * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::didAttachRenderers): (WebCore::HTMLVideoElement::parseAttribute): * html/PublicURLManager.cpp: (WebCore::PublicURLManager::create): * html/ValidationMessage.cpp: (WebCore::ValidationMessage::setMessage): (WebCore::ValidationMessage::setMessageDOMAndStartTimer): (WebCore::ValidationMessage::requestToHideMessage): * html/canvas/CanvasRenderingContext2DBase.cpp: (WebCore::DisplayListDrawingContext::DisplayListDrawingContext): (WebCore::CanvasRenderingContext2DBase::drawingContext const): * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::getExtension): * html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::getExtension): * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::initializeNewContext): (WebCore::WebGLRenderingContextBase::compileShader): (WebCore::WebGLRenderingContextBase::printToConsole): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::insertHTMLElementOrFindCustomElementInterface): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::insertAbove): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginDOCTYPE): * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::filterToken): (WebCore::XSSAuditor::decodedHTTPBodySuffixTree): * html/shadow/TextControlInnerElements.cpp: (WebCore::TextControlInnerTextElement::resolveCustomStyle): * html/track/InbandGenericTextTrack.cpp: (WebCore::InbandGenericTextTrack::parser): * html/track/InbandWebVTTTextTrack.cpp: (WebCore::InbandWebVTTTextTrack::parser): * html/track/LoadableTextTrack.cpp: (WebCore::LoadableTextTrack::loadTimerFired): * inspector/CommandLineAPIHost.cpp: (WebCore::CommandLineAPIHost::CommandLineAPIHost): (WebCore::CommandLineAPIHost::clearAllWrappers): * inspector/DOMEditor.cpp: (WebCore::DOMEditor::insertBefore): (WebCore::DOMEditor::removeChild): (WebCore::DOMEditor::setAttribute): (WebCore::DOMEditor::removeAttribute): (WebCore::DOMEditor::setOuterHTML): (WebCore::DOMEditor::insertAdjacentHTML): (WebCore::DOMEditor::replaceWholeText): (WebCore::DOMEditor::replaceChild): (WebCore::DOMEditor::setNodeValue): * inspector/DOMPatchSupport.cpp: (WebCore::DOMPatchSupport::createDigest): * inspector/InspectorController.cpp: (WebCore::InspectorController::InspectorController): (WebCore::InspectorController::createLazyAgents): (WebCore::InspectorController::ensureInspectorAgent): (WebCore::InspectorController::ensureDOMAgent): (WebCore::InspectorController::ensurePageAgent): * inspector/InspectorHistory.cpp: (WebCore::InspectorHistory::markUndoableState): * inspector/InspectorStyleSheet.cpp: (ParsedStyleSheet::setSourceData): (WebCore::InspectorStyleSheet::ensureSourceData): * inspector/NetworkResourcesData.cpp: (WebCore::NetworkResourcesData::resourceCreated): * inspector/WorkerInspectorController.cpp: (WebCore::WorkerInspectorController::WorkerInspectorController): (WebCore::WorkerInspectorController::connectFrontend): (WebCore::WorkerInspectorController::createLazyAgents): * inspector/agents/InspectorApplicationCacheAgent.cpp: (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent): * inspector/agents/InspectorCPUProfilerAgent.cpp: (WebCore::InspectorCPUProfilerAgent::InspectorCPUProfilerAgent): * inspector/agents/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::InspectorCSSAgent): (WebCore::InspectorCSSAgent::setStyleSheetText): (WebCore::InspectorCSSAgent::setStyleText): (WebCore::InspectorCSSAgent::setRuleSelector): (WebCore::InspectorCSSAgent::addRule): * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::InspectorCanvasAgent): (WebCore::InspectorCanvasAgent::recordCanvasAction): * inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::InspectorDOMAgent): (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend): (WebCore::InspectorDOMAgent::pushNodePathToFrontend): (WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject): (WebCore::InspectorDOMAgent::highlightRect): (WebCore::InspectorDOMAgent::highlightQuad): (WebCore::InspectorDOMAgent::innerHighlightQuad): (WebCore::InspectorDOMAgent::highlightFrame): (WebCore::InspectorDOMAgent::setInspectedNode): (WebCore::InspectorDOMAgent::didInvalidateStyleAttr): * inspector/agents/InspectorDOMStorageAgent.cpp: (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent): * inspector/agents/InspectorDatabaseAgent.cpp: (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent): * inspector/agents/InspectorLayerTreeAgent.cpp: (WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent): * inspector/agents/InspectorMemoryAgent.cpp: (WebCore::InspectorMemoryAgent::InspectorMemoryAgent): * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::InspectorNetworkAgent): * inspector/agents/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::InspectorPageAgent): * inspector/agents/InspectorTimelineAgent.cpp: (WebCore::InspectorTimelineAgent::InspectorTimelineAgent): (WebCore::InspectorTimelineAgent::internalStart): (WebCore::InspectorTimelineAgent::startFromConsole): (WebCore::InspectorTimelineAgent::stopFromConsole): * inspector/agents/InspectorWorkerAgent.cpp: (WebCore::InspectorWorkerAgent::InspectorWorkerAgent): * inspector/agents/WebConsoleAgent.cpp: (WebCore::WebConsoleAgent::didReceiveResponse): (WebCore::WebConsoleAgent::didFailLoading): * inspector/agents/WebHeapAgent.cpp: (WebCore::WebHeapAgent::WebHeapAgent): * inspector/agents/page/PageRuntimeAgent.cpp: (WebCore::PageRuntimeAgent::PageRuntimeAgent): * inspector/agents/worker/WorkerDebuggerAgent.cpp: (WebCore::WorkerDebuggerAgent::breakpointActionLog): * layout/LayoutState.cpp: (WebCore::Layout::LayoutState::displayBoxForLayoutBox const): (WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded): (WebCore::Layout::LayoutState::createFormattingContext): * layout/inlineformatting/InlineFormattingContext.cpp: (WebCore::Layout::InlineFormattingContext::collectInlineContent const): * layout/inlineformatting/InlineFormattingContextLineLayout.cpp: (WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const): * layout/inlineformatting/InlineLine.cpp: (WebCore::Layout::Line::Line): (WebCore::Layout::Line::appendNonBreakableSpace): (WebCore::Layout::Line::appendTextContent): (WebCore::Layout::Line::appendNonReplacedInlineBox): (WebCore::Layout::Line::appendHardLineBreak): * layout/inlineformatting/InlineTextItem.cpp: (WebCore::Layout::InlineTextItem::createAndAppendTextItems): (WebCore::Layout::InlineTextItem::split const): * layout/layouttree/LayoutBox.cpp: (WebCore::Layout::Box::Box): (WebCore::Layout::Box::ensureRareData): * layout/layouttree/LayoutTreeBuilder.cpp: (WebCore::Layout::TreeBuilder::createLayoutBox): (WebCore::Layout::TreeBuilder::createTableStructure): (WebCore::Layout::printLayoutTreeForLiveDocuments): * layout/tableformatting/TableGrid.cpp: (WebCore::Layout::TableGrid::appendCell): * loader/ContentFilter.cpp: (WebCore::ContentFilter::create): * loader/CrossOriginAccessControl.cpp: (WebCore::validatePreflightResponse): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::DocumentLoader): (WebCore::DocumentLoader::loadApplicationManifest): (WebCore::DocumentLoader::addAllArchiveResources): (WebCore::DocumentLoader::addArchiveResource): (WebCore::DocumentLoader::loadMainResource): (WebCore::DocumentLoader::didGetLoadDecisionForIcon): * loader/EmptyClients.cpp: (WebCore::pageConfigurationWithEmptyClients): * loader/FrameLoader.cpp: (WebCore::FrameLoader::FrameLoader): (WebCore::FrameLoader::init): (WebCore::FrameLoader::initForSynthesizedDocument): (WebCore::FrameLoader::detachChildren): * loader/LinkLoader.cpp: (WebCore::createLinkPreloadResourceClient): * loader/NavigationScheduler.cpp: (WebCore::NavigationScheduler::scheduleRedirect): (WebCore::NavigationScheduler::scheduleLocationChange): (WebCore::NavigationScheduler::scheduleFormSubmission): (WebCore::NavigationScheduler::scheduleRefresh): (WebCore::NavigationScheduler::scheduleHistoryNavigation): (WebCore::NavigationScheduler::schedulePageBlock): * loader/ProgressTracker.cpp: (WebCore::ProgressTracker::incrementProgress): * loader/TextResourceDecoder.cpp: (WebCore::TextResourceDecoder::checkForHeadCharset): * loader/TextTrackLoader.cpp: (WebCore::TextTrackLoader::processNewCueData): * loader/WorkerThreadableLoader.cpp: (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): * loader/archive/cf/LegacyWebArchive.cpp: (WebCore::LegacyWebArchive::create): * loader/cache/CachedImage.cpp: (WebCore::CachedImage::setBodyDataFrom): (WebCore::CachedImage::createImage): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::redirectReceived): * loader/cache/CachedResource.cpp: (WebCore::CachedResource::addClientToSet): * loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::requestResource): (WebCore::CachedResourceLoader::preload): (WebCore::CachedResourceLoader::clearPreloads): * loader/cache/MemoryCache.cpp: (WebCore::MemoryCache::ensureSessionResourceMap): (WebCore::MemoryCache::addImageToCache): (WebCore::MemoryCache::lruListFor): * loader/ios/PreviewLoader.mm: (-[WebPreviewLoader initWithResourceLoader:resourceResponse:]): (-[WebPreviewLoader connection:didFailWithError:]): (WebCore::PreviewLoader::create): * page/ContextMenuController.cpp: (WebCore::ContextMenuController::maybeCreateContextMenu): * page/DebugPageOverlays.cpp: (WebCore::MouseWheelRegionOverlay::updateRegion): * page/EventHandler.cpp: (WebCore::EventHandler::EventHandler): * page/FrameView.cpp: (WebCore::FrameView::addEmbeddedObjectToUpdate): (WebCore::FrameView::addSlowRepaintObject): (WebCore::FrameView::addViewportConstrainedObject): (WebCore::FrameView::addScrollableArea): * page/FrameViewLayoutContext.cpp: (WebCore::FrameViewLayoutContext::pushLayoutState): (WebCore::FrameViewLayoutContext::pushLayoutStateForPaginationIfNeeded): * page/NavigatorBase.cpp: (WebCore::NavigatorBase::serviceWorker): * page/Page.cpp: (WebCore::Page::Page): (WebCore::Page::initGroup): (WebCore::Page::setResourceUsageOverlayVisible): * page/PageConsoleClient.cpp: (WebCore::PageConsoleClient::addMessage): (WebCore::PageConsoleClient::messageWithTypeAndLevel): (WebCore::PageConsoleClient::screenshot): * page/PageGroup.cpp: (WebCore::PageGroup::captionPreferences): * page/Performance.cpp: (WebCore::Performance::mark): (WebCore::Performance::clearMarks): (WebCore::Performance::measure): (WebCore::Performance::clearMeasures): * page/PrintContext.cpp: (WebCore::PrintContext::outputLinkedDestinations): * page/RenderingUpdateScheduler.cpp: (WebCore::RenderingUpdateScheduler::startTimer): * page/RenderingUpdateScheduler.h: (WebCore::RenderingUpdateScheduler::create): * page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::addOriginAccessWhitelistEntry): * page/SettingsBase.cpp: (WebCore::SettingsBase::SettingsBase): * page/UserContentController.cpp: (WebCore::UserContentController::addUserScript): (WebCore::UserContentController::addUserStyleSheet): * page/WheelEventDeltaFilter.cpp: (WebCore::WheelEventDeltaFilter::create): * page/animation/CSSAnimationController.cpp: (WebCore::CSSAnimationController::CSSAnimationController): * page/animation/CSSPropertyAnimation.cpp: (WebCore::blendFunc): (WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor): (WebCore::FillLayersPropertyWrapper::FillLayersPropertyWrapper): (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): * page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::updateSourceSelf): * page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::create): (WebCore::ContentSecurityPolicyDirectiveList::setCSPDirective): * page/linux/ResourceUsageOverlayLinux.cpp: (WebCore::ResourceUsageOverlay::platformInitialize): * page/mac/PageMac.mm: (WebCore::Page::addSchedulePair): * page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::AsyncScrollingCoordinator): * page/scrolling/ScrollingMomentumCalculator.cpp: (WebCore::ScrollingMomentumCalculator::create): * page/scrolling/ScrollingStateNode.cpp: (WebCore::ScrollingStateNode::appendChild): (WebCore::ScrollingStateNode::insertChild): * page/scrolling/ScrollingStateTree.cpp: (WebCore::ScrollingStateTree::commit): * page/scrolling/ScrollingTreeNode.cpp: (WebCore::ScrollingTreeNode::appendChild): * page/scrolling/mac/ScrollingMomentumCalculatorMac.mm: (WebCore::ScrollingMomentumCalculator::create): * platform/Length.cpp: (WebCore::convertTo100PercentMinusLength): (WebCore::blendMixedTypes): * platform/RemoteCommandListener.cpp: (WebCore::RemoteCommandListener::create): * platform/ScrollAnimator.cpp: (WebCore::ScrollAnimator::create): * platform/ScrollableArea.cpp: (WebCore::ScrollableArea::scrollAnimator const): (WebCore::ScrollableArea::ensureSnapOffsetsInfo): * platform/ThreadGlobalData.cpp: (WebCore::ThreadGlobalData::ThreadGlobalData): * platform/audio/AudioBus.cpp: (WebCore::AudioBus::AudioBus): (WebCore::AudioBus::copyWithGainFrom): * platform/audio/AudioChannel.h: * platform/audio/AudioResampler.cpp: (WebCore::AudioResampler::AudioResampler): (WebCore::AudioResampler::configureChannels): * platform/audio/DynamicsCompressor.cpp: (WebCore::DynamicsCompressor::setNumberOfChannels): * platform/audio/DynamicsCompressorKernel.cpp: (WebCore::DynamicsCompressorKernel::setNumberOfChannels): * platform/audio/FFTFrame.cpp: (WebCore::FFTFrame::createInterpolatedFrame): * platform/audio/HRTFDatabaseLoader.cpp: (WebCore::HRTFDatabaseLoader::load): * platform/audio/HRTFElevation.cpp: (WebCore::HRTFElevation::createForSubject): (WebCore::HRTFElevation::createByInterpolatingSlices): * platform/audio/HRTFKernel.cpp: (WebCore::HRTFKernel::HRTFKernel): (WebCore::HRTFKernel::createImpulseResponse): * platform/audio/MultiChannelResampler.cpp: (WebCore::MultiChannelResampler::MultiChannelResampler): * platform/audio/Panner.cpp: (WebCore::Panner::create): * platform/audio/PlatformMediaSession.cpp: (WebCore::PlatformMediaSession::create): * platform/audio/Reverb.cpp: (WebCore::Reverb::initialize): * platform/audio/ReverbConvolver.cpp: (WebCore::ReverbConvolver::ReverbConvolver): * platform/audio/ReverbConvolverStage.cpp: (WebCore::ReverbConvolverStage::ReverbConvolverStage): * platform/audio/gstreamer/AudioDestinationGStreamer.cpp: (WebCore::AudioDestination::create): * platform/audio/ios/AudioDestinationIOS.cpp: (WebCore::AudioDestination::create): * platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSession::AudioSession): * platform/audio/mac/AudioDestinationMac.cpp: (WebCore::AudioDestination::create): * platform/audio/mac/AudioSampleDataSource.mm: (WebCore::AudioSampleDataSource::setInputFormat): (WebCore::AudioSampleDataSource::setOutputFormat): * platform/audio/mac/AudioSessionMac.cpp: (WebCore::AudioSession::AudioSession): * platform/cf/KeyedDecoderCF.cpp: (WebCore::KeyedDecoder::decoder): * platform/cf/KeyedEncoderCF.cpp: (WebCore::KeyedEncoder::encoder): * platform/cf/MainThreadSharedTimerCF.cpp: (WebCore::setupPowerObserver): * platform/cocoa/NetworkExtensionContentFilter.mm: (WebCore::NetworkExtensionContentFilter::create): * platform/cocoa/ParentalControlsContentFilter.mm: (WebCore::ParentalControlsContentFilter::create): * platform/cocoa/ScrollController.mm: (WebCore::ScrollController::updateScrollSnapPoints): * platform/encryptedmedia/clearkey/CDMClearKey.cpp: (WebCore::CDMFactoryClearKey::createCDM): * platform/gamepad/cocoa/GameControllerGamepadProvider.mm: (WebCore::GameControllerGamepadProvider::controllerDidConnect): * platform/gamepad/mac/HIDGamepadProvider.cpp: (WebCore::HIDGamepadProvider::deviceAdded): * platform/generic/KeyedDecoderGeneric.cpp: (WebCore::KeyedDecoderGeneric::Dictionary::add): (WebCore::KeyedDecoder::decoder): (WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric): * platform/generic/KeyedEncoderGeneric.cpp: (WebCore::KeyedEncoder::encoder): * platform/generic/ScrollAnimatorGeneric.cpp: (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric): (WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation): * platform/glib/KeyedDecoderGlib.cpp: (WebCore::KeyedDecoder::decoder): * platform/glib/KeyedEncoderGlib.cpp: (WebCore::KeyedEncoder::encoder): * platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::startTimer): (WebCore::BitmapImage::decode): * platform/graphics/ComplexTextController.cpp: (WebCore::TextLayout::TextLayout): * platform/graphics/Font.cpp: (WebCore::Font::ensureDerivedFontData const): * platform/graphics/Font.h: (WebCore::Font::boundsForGlyph const): * platform/graphics/FontCache.cpp: (WebCore::FontCache::getCachedFontPlatformData): * platform/graphics/FontCascade.cpp: (WebCore::retrieveOrAddCachedFonts): (WebCore::FontCascade::displayListForTextRun const): * platform/graphics/FontCascadeFonts.cpp: (WebCore::FontCascadeFonts::GlyphPageCacheEntry::setGlyphDataForCharacter): * platform/graphics/GlyphMetricsMap.h: (WebCore::GlyphMetricsMap<T>::locatePageSlowCase): * platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::setTransform): (WebCore::GraphicsLayer::setChildrenTransform): * platform/graphics/GraphicsLayer.h: * platform/graphics/Image.cpp: (WebCore::Image::startAnimationAsynchronously): * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::MediaPlayer): (WebCore::MediaPlayer::loadWithNextMediaEngine): * platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::seekable const): * platform/graphics/PathUtilities.cpp: (WebCore::FloatPointGraph::findOrCreateNode): * platform/graphics/Region.cpp: (WebCore::Region::setShape): * platform/graphics/Region.h: (WebCore::Region::copyShape const): (WebCore::Region::decode): * platform/graphics/TextTrackRepresentation.cpp: (WebCore::TextTrackRepresentation::create): * platform/graphics/angle/GraphicsContext3DANGLE.cpp: (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm: (WebCore::AudioSourceProviderAVFObjC::prepare): * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: (WebCore::CDMFactoryFairPlayStreaming::createCDM): * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: (WebCore::CDMPrivateMediaSourceAVFObjC::createSession): * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::buffered const): * platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp: (WebCore::WebMediaSessionManagerMac::platformPicker): * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: (WebCore::MediaPlayerPrivateAVFoundationCF::registerMediaEngine): (WebCore::MediaPlayerPrivateAVFoundationCF::platformBufferedTimeRanges const): (WebCore::MediaPlayerPrivateAVFoundationCF::createSession): (WebCore::AVFWrapper::notificationCallback): (WebCore::AVFWrapper::legibleOutputCallback): (WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource): (WebCore::AVFWrapper::platformLayer): * platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm: (WebCore::AudioTrackPrivateAVFObjC::AudioTrackPrivateAVFObjC): (WebCore::AudioTrackPrivateAVFObjC::setPlayerItemTrack): (WebCore::AudioTrackPrivateAVFObjC::setAssetTrack): (WebCore::AudioTrackPrivateAVFObjC::setMediaSelectionOption): * platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp: (WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC): (WebCore::AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack): * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: (WebCore::ImageDecoderAVFObjC::readTrackMetadata): * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): (WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateRotationSession): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): (WebCore::MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture): (WebCore::MediaPlayerPrivateAVFoundationObjC::createSession): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekable const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::buffered const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastImage): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::seekable const): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::buffered const): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateCurrentFrameImage): * platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.cpp: (WebCore::VideoTrackPrivateAVFObjC::VideoTrackPrivateAVFObjC): (WebCore::VideoTrackPrivateAVFObjC::setPlayerItemTrack): (WebCore::VideoTrackPrivateAVFObjC::setAssetTrack): (WebCore::VideoTrackPrivateAVFObjC::setMediaSelectonOption): * platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.mm: (WebCore::VideoTrackPrivateMediaSourceAVFObjC::VideoTrackPrivateMediaSourceAVFObjC): (WebCore::VideoTrackPrivateMediaSourceAVFObjC::setAssetTrack): * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::recursiveCommitChanges): (WebCore::GraphicsLayerCA::ensureLayerAnimations): (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): * platform/graphics/ca/TileController.cpp: (WebCore::TileController::TileController): (WebCore::TileController::setContentsScale): (WebCore::TileController::adjustTileCoverageRectForScrolling): (WebCore::TileController::tiledScrollingIndicatorLayer): * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::commonInit): (WebCore::PlatformCALayerCocoa::setShapeRoundedRect): * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm: (-[WebTiledBackingLayer createTileController:]): * platform/graphics/ca/win/PlatformCALayerWin.cpp: (PlatformCALayerWin::PlatformCALayerWin): * platform/graphics/ca/win/WebTiledBackingLayerWin.cpp: (WebTiledBackingLayerWin::createTileController): * platform/graphics/cairo/GraphicsContextImplCairo.cpp: (WebCore::GraphicsContextImplCairo::createFactory): (WebCore::m_private): * platform/graphics/cairo/ImageBufferCairo.cpp: (WebCore::ImageBufferData::swapBuffersIfNeeded): (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/cg/ImageBufferCG.cpp: (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: (WebCore::FontFamilySpecificationCoreText::fontRanges const): * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: (WebCore::GraphicsContext3D::GraphicsContext3D): * platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::ensureGraphicsContext): * platform/graphics/cocoa/TextTrackRepresentationCocoa.mm: (TextTrackRepresentation::create): * platform/graphics/cv/TextureCacheCV.mm: (WebCore::TextureCacheCV::create): * platform/graphics/displaylists/DisplayListReplayer.cpp: (WebCore::DisplayList::Replayer::replay): * platform/graphics/filters/FilterOperation.cpp: (WebCore::ReferenceFilterOperation::loadExternalDocumentIfNeeded): * platform/graphics/freetype/FontCacheFreeType.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::create): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivateGStreamer::registerMediaEngine): (WebCore::MediaPlayerPrivateGStreamer::buffered const): (WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor): (WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture): (WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime): (WebCore::MediaPlayerPrivateGStreamerBase::pushNextHolePunchBuffer): * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: (webKitWebSrcMakeRequest): * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: (WebCore::MediaPlayerPrivateGStreamerMSE::registerMediaEngine): (WebCore::MediaPlayerPrivateGStreamerMSE::buffered const): * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp: (WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer): (WebCore::MediaPlayerPrivateHolePunch::registerMediaEngine): * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: * platform/graphics/iso/ISOProtectionSchemeInfoBox.cpp: (WebCore::ISOProtectionSchemeInfoBox::parse): * platform/graphics/iso/ISOSchemeInformationBox.cpp: (WebCore::ISOSchemeInformationBox::parse): * platform/graphics/mac/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/nicosia/NicosiaSceneIntegration.cpp: (Nicosia::SceneIntegration::createUpdateScope): * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp: (Nicosia::createCommand): * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: (Nicosia::PaintingContextCairo::ForPainting::ForPainting): (Nicosia::PaintingContextCairo::ForRecording::ForRecording): * platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.cpp: (Nicosia::BackingStoreTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.cpp: (Nicosia::CompositionLayerTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp: (Nicosia::ContentLayerTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp: (Nicosia::GC3DLayer::swapBuffersIfNeeded): * platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.cpp: (Nicosia::ImageBackingTextureMapperImpl::createFactory): * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp: (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::compileShader): (WebCore::GraphicsContext3D::mappedSymbolName): * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp: (WebCore::GraphicsContext3D::getExtensions): (WebCore::GraphicsContext3D::GraphicsContext3D): * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp: (WebCore::GraphicsContext3D::GraphicsContext3D): (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp: (WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded): * platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::TextureMapperGL::TextureMapperGL): (WebCore::TextureMapper::platformCreateAccelerated): * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: (WebCore::TextureMapperPlatformLayerBuffer::clone): * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: (WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread): * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): * platform/graphics/texmap/coordinated/TiledBackingStore.cpp: (WebCore::TiledBackingStore::createTiles): * platform/graphics/transforms/TransformState.cpp: (WebCore::TransformState::operator=): (WebCore::TransformState::applyTransform): (WebCore::TransformState::setLastPlanarSecondaryQuad): * platform/graphics/transforms/TransformState.h: (WebCore::TransformState::setSecondaryQuad): * platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/win/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/win/FontCustomPlatformDataCairo.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/win/FullScreenController.cpp: (WebCore::FullScreenController::FullScreenController): (WebCore::FullScreenController::enterFullScreen): * platform/graphics/win/GraphicsContextCairoWin.cpp: (WebCore::GraphicsContext::platformInit): * platform/graphics/win/GraphicsContextDirect2D.cpp: (WebCore::GraphicsContext::GraphicsContext): (WebCore::GraphicsContext::platformInit): * platform/graphics/win/GraphicsContextImplDirect2D.cpp: (WebCore::GraphicsContextImplDirect2D::createFactory): (WebCore::m_private): * platform/graphics/win/GraphicsContextWin.cpp: (WebCore::GraphicsContext::createWindowsBitmap): * platform/graphics/win/ImageBufferDirect2D.cpp: (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: (WebCore::MediaPlayerPrivateMediaFoundation::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaFoundation::buffered const): (WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::CustomVideoPresenter): * platform/graphics/win/WKCAImageQueue.cpp: (WebCore::WKCAImageQueue::WKCAImageQueue): * platform/gtk/PasteboardGtk.cpp: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForGlobalSelection): (WebCore::Pasteboard::createForDragAndDrop): * platform/gtk/PasteboardHelper.cpp: (WebCore::PasteboardHelper::writeClipboardContents): * platform/gtk/RenderThemeGadget.cpp: (WebCore::RenderThemeGadget::create): * platform/gtk/RenderThemeWidget.cpp: (WebCore::RenderThemeWidget::getOrCreate): (WebCore::RenderThemeScrollbar::RenderThemeScrollbar): (WebCore::RenderThemeComboBox::RenderThemeComboBox): * platform/image-decoders/bmp/BMPImageDecoder.cpp: (WebCore::BMPImageDecoder::decodeHelper): * platform/image-decoders/gif/GIFImageDecoder.cpp: (WebCore::GIFImageDecoder::decode): * platform/image-decoders/gif/GIFImageReader.cpp: (GIFFrameContext::decode): (GIFImageReader::addFrameIfNecessary): * platform/image-decoders/ico/ICOImageDecoder.cpp: (WebCore::ICOImageDecoder::decodeAtIndex): * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: (WebCore::JPEGImageDecoder::decode): * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageDecoder::decode): * platform/ios/LegacyTileCache.mm: (WebCore::LegacyTileCache::LegacyTileCache): (WebCore::LegacyTileCache::commitScaleChange): * platform/ios/PasteboardIOS.mm: (WebCore::Pasteboard::createForDragAndDrop): (WebCore::Pasteboard::createForCopyAndPaste): * platform/ios/QuickLook.mm: (WebCore::registerQLPreviewConverterIfNeeded): * platform/ios/RemoteCommandListenerIOS.mm: (WebCore::RemoteCommandListener::create): * platform/ios/ScrollAnimatorIOS.mm: (WebCore::ScrollAnimator::create): * platform/libwpe/PasteboardLibWPE.cpp: (WebCore::Pasteboard::createForCopyAndPaste): * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForDragAndDrop): * platform/mac/RemoteCommandListenerMac.mm: (WebCore::RemoteCommandListener::create): * platform/mac/ScrollAnimatorMac.mm: (WebCore::ScrollAnimator::create): * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: (WebCore::MediaRecorderPrivateAVFImpl::create): * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp: (WebCore::m_capturer): (WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: (WebCore::webkit_media_stream_src_init): * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp: (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): (WebCore::m_capturer): * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: (WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder): * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::BasicPacketSocketFactory::BasicPacketSocketFactory): (WebCore::initializePeerConnectionFactoryAndThreads): (WebCore::LibWebRTCProvider::createPeerConnection): (WebCore::LibWebRTCProvider::certificateGenerator): * platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp: (WebCore::LibWebRTCProviderGStreamer::createDecoderFactory): (WebCore::LibWebRTCProviderGStreamer::createEncoderFactory): * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: (WebCore::MockRealtimeAudioSourceMac::reconfigure): * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm: (WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV): (WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer): * platform/mock/RTCNotifiersMock.cpp: (WebCore::RemoteDataChannelNotifier::fire): * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp: (WebCore::MockMediaPlayerMediaSource::registerMediaEngine): (WebCore::MockMediaPlayerMediaSource::buffered const): * platform/network/BlobResourceHandle.cpp: * platform/network/DataURLDecoder.cpp: (WebCore::DataURLDecoder::createDecodeTask): * platform/network/ResourceHandle.cpp: (WebCore::ResourceHandle::ResourceHandle): * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace): * platform/network/cocoa/WebCoreNSURLSession.mm: (-[WebCoreNSURLSessionDataTask _restart]): * platform/network/curl/CookieJarDB.cpp: (WebCore::CookieJarDB::searchCookies): (WebCore::CookieJarDB::createPrepareStatement): * platform/network/curl/CurlCacheManager.cpp: (WebCore::CurlCacheManager::loadIndex): (WebCore::CurlCacheManager::didReceiveResponse): * platform/network/curl/CurlContext.cpp: (WebCore::CurlContext::CurlContext): (WebCore::CurlHandle::willSetupSslCtx): * platform/network/curl/CurlFormDataStream.cpp: (WebCore::CurlFormDataStream::getPostData): * platform/network/curl/CurlMultipartHandle.cpp: (WebCore::CurlMultipartHandle::createIfNeeded): * platform/network/curl/CurlRequest.cpp: (WebCore::CurlRequest::runOnMainThread): (WebCore::CurlRequest::setupTransfer): * platform/network/curl/CurlRequestScheduler.cpp: (WebCore::CurlRequestScheduler::workerThread): * platform/network/curl/ResourceHandleCurl.cpp: (WebCore::ResourceHandle::delegate): * platform/network/curl/SocketStreamHandleImplCurl.cpp: (WebCore::SocketStreamHandleImpl::callOnWorkerThread): * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]): * platform/network/soup/DNSResolveQueueSoup.cpp: (WebCore::DNSResolveQueueSoup::resolve): * platform/network/soup/NetworkStorageSessionSoup.cpp: (WebCore::NetworkStorageSession::getCredentialFromPersistentStorage): * platform/text/BidiResolver.h: (WebCore::DerivedClass>::appendRunInternal): * platform/text/LocaleICU.cpp: (WebCore::Locale::create): (WebCore::LocaleICU::createLabelVector): (WebCore::createFallbackMonthLabels): (WebCore::createFallbackAMPMLabels): * platform/text/LocaleNone.cpp: (WebCore::Locale::create): * platform/text/TextCodecICU.cpp: (WebCore::TextCodecICU::registerCodecs): * platform/text/TextCodecLatin1.cpp: (WebCore::TextCodecLatin1::registerCodecs): * platform/text/TextCodecReplacement.cpp: (WebCore::TextCodecReplacement::registerCodecs): * platform/text/TextCodecUTF16.cpp: (WebCore::TextCodecUTF16::registerCodecs): * platform/text/TextCodecUTF8.cpp: (WebCore::TextCodecUTF8::registerCodecs): * platform/text/TextCodecUserDefined.cpp: (WebCore::TextCodecUserDefined::registerCodecs): * platform/text/mac/LocaleMac.mm: (WebCore::Locale::create): * platform/text/win/LocaleWin.cpp: (WebCore::Locale::create): * platform/text/win/TextCodecWin.cpp: (WebCore::newTextCodecWin): * platform/vr/openvr/VRPlatformManagerOpenVR.cpp: (WebCore::VRPlatformManagerOpenVR::create): (WebCore::VRPlatformManagerOpenVR::getVRDisplays): * platform/win/PasteboardWin.cpp: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForDragAndDrop): * platform/win/SearchPopupMenuDB.cpp: (WebCore::SearchPopupMenuDB::createPreparedStatement): * platform/win/WCDataObject.cpp: (WebCore::WCDataObject::SetData): * rendering/CSSFilter.cpp: (WebCore::CSSFilter::buildReferenceFilter): * rendering/ComplexLineLayout.cpp: (WebCore::createRun): (WebCore::ComplexLineLayout::createRootInlineBox): (WebCore::ComplexLineLayout::handleTrailingSpaces): (WebCore::ComplexLineLayout::linkToEndLineIfNeeded): * rendering/FloatingObjects.cpp: (WebCore::FloatingObject::create): (WebCore::FloatingObject::copyToNewContainer const): (WebCore::FloatingObject::cloneForNewParent const): (WebCore::FloatingObjects::computePlacedFloatsTree): * rendering/Grid.cpp: (WebCore::GridIterator::nextEmptyGridArea): * rendering/GridBaselineAlignment.cpp: (WebCore::GridBaselineAlignment::updateBaselineAlignmentContext): * rendering/GridTrackSizingAlgorithm.cpp: (WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize const): (WebCore::GridTrackSizingAlgorithm::setup): * rendering/HitTestResult.cpp: (WebCore::HitTestResult::HitTestResult): (WebCore::HitTestResult::operator=): (WebCore::HitTestResult::listBasedTestResult const): (WebCore::HitTestResult::mutableListBasedTestResult): * rendering/InlineIterator.h: (WebCore::addPlaceholderRunForIsolatedInline): * rendering/LayerOverlapMap.cpp: (WebCore::LayerOverlapMap::pushCompositingContainer): * rendering/RenderBlock.cpp: (WebCore::insertIntoTrackedRendererMaps): (WebCore::PositionedDescendantsMap::addDescendant): (WebCore::RenderBlock::beginUpdateScrollInfoAfterLayoutTransaction): (WebCore::ensureBlockRareData): * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutInlineChildren): (WebCore::RenderBlockFlow::layoutLineGridBox): (WebCore::RenderBlockFlow::createFloatingObjects): (WebCore::RenderBlockFlow::ensureLineBoxes): (WebCore::RenderBlockFlow::materializeRareBlockFlowData): * rendering/RenderBox.cpp: (WebCore::controlStatesForRenderer): (WebCore::RenderBox::createInlineBox): * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::ensureContinuationChainNode): * rendering/RenderCounter.cpp: (WebCore::makeCounterNode): * rendering/RenderFragmentContainer.cpp: (WebCore::RenderFragmentContainer::setRenderBoxFragmentInfo): * rendering/RenderFragmentedFlow.cpp: (WebCore::RenderFragmentedFlow::containingFragmentMap): * rendering/RenderGeometryMap.cpp: (WebCore::RenderGeometryMap::push): (WebCore::RenderGeometryMap::pushView): * rendering/RenderGrid.cpp: (WebCore::RenderGrid::computeEmptyTracksForAutoRepeat const): (WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid const): * rendering/RenderImage.cpp: (WebCore::RenderImage::RenderImage): * rendering/RenderInline.cpp: (WebCore::RenderInline::createInlineFlowBox): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateNormalFlowList): (WebCore::RenderLayer::collectLayers): (WebCore::RenderLayer::updateTransform): (WebCore::RenderLayer::updateClipRects): (WebCore::RenderLayer::calculateClipRects const): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateAncestorClippingStack): (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::startTransition): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::RenderLayerCompositor): (WebCore::RenderLayerCompositor::notifyFlushBeforeDisplayRefresh): (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers): * rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::createLayer): * rendering/RenderLineBreak.cpp: (WebCore::RenderLineBreak::createInlineBox): * rendering/RenderMultiColumnFlow.cpp: (WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow): * rendering/RenderObject.cpp: (WebCore::RenderObject::ensureRareData): * rendering/RenderSnapshottedPlugIn.cpp: (WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn): * rendering/RenderTable.cpp: (WebCore::RenderTable::styleDidChange): * rendering/RenderText.cpp: (WebCore::RenderText::createTextBox): (WebCore::RenderText::momentarilyRevealLastTypedCharacter): * rendering/RenderView.cpp: (WebCore::RenderView::repaintViewRectangle const): (WebCore::RenderView::compositor): (WebCore::RenderView::imageQualityController): (WebCore::RenderView::RepaintRegionAccumulator::RepaintRegionAccumulator): * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::placeEllipsis): * rendering/RootInlineBox.h: (WebCore::RootInlineBox::appendFloat): * rendering/SelectionRangeData.cpp: (WebCore::collect): (WebCore::SelectionRangeData::collectBounds const): (WebCore::SelectionRangeData::apply): * rendering/SimpleLineLayout.cpp: (WebCore::SimpleLineLayout::Layout::runResolver const): * rendering/SimpleLineLayoutFunctions.cpp: (WebCore::SimpleLineLayout::paintFlow): (WebCore::SimpleLineLayout::generateLineBoxTree): * rendering/TextAutoSizing.cpp: (WebCore::TextAutoSizing::addTextNode): * rendering/line/LineBreaker.cpp: (WebCore::LineBreaker::skipLeadingWhitespace): * rendering/shapes/RasterShape.cpp: (WebCore::RasterShapeIntervals::computeShapeMarginIntervals const): * rendering/shapes/Shape.cpp: (WebCore::createInsetShape): (WebCore::createCircleShape): (WebCore::createEllipseShape): (WebCore::createPolygonShape): (WebCore::Shape::createShape): (WebCore::Shape::createRasterShape): (WebCore::Shape::createBoxShape): * rendering/shapes/ShapeOutsideInfo.h: * rendering/style/BasicShapes.cpp: (WebCore::BasicShapePath::blend const): * rendering/style/ContentData.h: * rendering/style/FillLayer.cpp: (WebCore::FillLayer::FillLayer): (WebCore::FillLayer::operator=): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::clonePtr): (WebCore::RenderStyle::addCachedPseudoStyle): (WebCore::RenderStyle::addCustomPaintWatchProperty): (WebCore::RenderStyle::setContent): (WebCore::RenderStyle::accessCounterDirectives): (WebCore::RenderStyle::ensureAnimations): (WebCore::RenderStyle::ensureTransitions): * rendering/style/SVGRenderStyleDefs.cpp: (WebCore::StyleShadowSVGData::StyleShadowSVGData): * rendering/style/ShadowData.cpp: (WebCore::ShadowData::ShadowData): * rendering/style/StyleRareInheritedData.cpp: (WebCore::StyleRareInheritedData::StyleRareInheritedData): * rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): * rendering/svg/RenderSVGImage.cpp: (WebCore::RenderSVGImage::RenderSVGImage): * rendering/svg/RenderSVGInline.cpp: (WebCore::RenderSVGInline::createInlineFlowBox): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::createTextBox): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::buildPrimitives const): (WebCore::RenderSVGResourceFilter::applyResource): * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::applyResource): * rendering/svg/RenderSVGResourceMasker.cpp: (WebCore::RenderSVGResourceMasker::applyResource): * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::buildPattern): * rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::updateShapeFromElement): * rendering/svg/SVGResources.cpp: (WebCore::SVGResources::setClipper): (WebCore::SVGResources::setFilter): (WebCore::SVGResources::setMarkerStart): (WebCore::SVGResources::setMarkerMid): (WebCore::SVGResources::setMarkerEnd): (WebCore::SVGResources::setMasker): (WebCore::SVGResources::setFill): (WebCore::SVGResources::setStroke): * rendering/svg/SVGResourcesCache.cpp: (WebCore::SVGResourcesCache::addResourcesFromRenderer): * rendering/svg/SVGTextMetricsBuilder.cpp: (WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer): * rendering/updating/RenderTreeBuilder.cpp: (WebCore::RenderTreeBuilder::RenderTreeBuilder): * rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::RenderTreeUpdater): * style/StyleInvalidator.cpp: (WebCore::Style::Invalidator::Invalidator): * style/StyleRelations.cpp: (WebCore::Style::commitRelationsToRenderStyle): * style/StyleScope.cpp: (WebCore::Style::Scope::resolver): (WebCore::Style::Scope::activeStyleSheetsContains const): * style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolve): * svg/SVGDocumentExtensions.cpp: (WebCore::SVGDocumentExtensions::SVGDocumentExtensions): (WebCore::SVGDocumentExtensions::addPendingResource): (WebCore::SVGDocumentExtensions::addElementReferencingTarget): * svg/SVGElement.cpp: (WebCore::SVGElement::SVGElement): (WebCore::SVGElement::ensureSVGRareData): * svg/SVGGraphicsElement.cpp: (WebCore::SVGGraphicsElement::supplementalTransform): * svg/SVGPathByteStream.h: (WebCore::SVGPathByteStream::copy const): * svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::schedule): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * svg/properties/SVGAnimatedDecoratedProperty.h: (WebCore::SVGAnimatedDecoratedProperty::create): * svg/properties/SVGAnimatedPropertyAnimatorImpl.h: * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h: * svg/properties/SVGDecoratedEnumeration.h: (WebCore::SVGDecoratedEnumeration::create): * svg/properties/SVGPrimitivePropertyAnimator.h: (WebCore::SVGPrimitivePropertyAnimator::create): * svg/properties/SVGValuePropertyAnimatorImpl.h: * svg/properties/SVGValuePropertyListAnimatorImpl.h: * testing/InternalSettings.cpp: (WebCore::InternalSettings::from): * testing/Internals.cpp: (WebCore::InspectorStubFrontend::InspectorStubFrontend): (WebCore::Internals::Internals): (WebCore::Internals::enableMockSpeechSynthesizer): (WebCore::Internals::openDummyInspectorFrontend): (WebCore::Internals::setPrinting): (WebCore::Internals::initializeMockCDM): (WebCore::Internals::queueMicroTask): * testing/LegacyMockCDM.cpp: (WebCore::LegacyMockCDM::createSession): * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::createCDM): * testing/MockContentFilter.cpp: (WebCore::MockContentFilter::create): * testing/MockGamepadProvider.cpp: (WebCore::MockGamepadProvider::setMockGamepadDetails): * workers/WorkerConsoleClient.cpp: (WebCore::WorkerConsoleClient::messageWithTypeAndLevel): * workers/WorkerEventQueue.cpp: (WebCore::WorkerEventQueue::enqueueEvent): * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): (WebCore::WorkerGlobalScope::addMessage): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::WorkerMessagingProxy): (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope): * workers/WorkerRunLoop.cpp: (WebCore::WorkerRunLoop::WorkerRunLoop): (WebCore::WorkerRunLoop::postTaskAndTerminate): (WebCore::WorkerRunLoop::postTaskForMode): * workers/WorkerScriptLoader.cpp: (WebCore::WorkerScriptLoader::loadAsynchronously): (WebCore::WorkerScriptLoader::createResourceRequest): * workers/WorkerThread.cpp: (WebCore::WorkerThread::WorkerThread): * workers/service/ServiceWorkerContainer.cpp: (WebCore::ServiceWorkerContainer::ready): (WebCore::ServiceWorkerContainer::addRegistration): (WebCore::ServiceWorkerContainer::removeRegistration): (WebCore::ServiceWorkerContainer::updateRegistration): (WebCore::ServiceWorkerContainer::getRegistration): (WebCore::ServiceWorkerContainer::getRegistrations): * workers/service/context/SWContextManager.cpp: (WebCore::SWContextManager::terminateWorker): * workers/service/context/ServiceWorkerThreadProxy.cpp: (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): (WebCore::ServiceWorkerThreadProxy::createBlobLoader): * workers/service/server/RegistrationDatabase.cpp: (WebCore::RegistrationDatabase::openSQLiteDatabase): * workers/service/server/SWServer.cpp: (WebCore::SWServer::addRegistrationFromStore): (WebCore::SWServer::SWServer): (WebCore::SWServer::scheduleJob): (WebCore::SWServer::unregisterServiceWorkerClient): * workers/service/server/SWServerJobQueue.cpp: (WebCore::SWServerJobQueue::runRegisterJob): * worklets/PaintWorkletGlobalScope.cpp: (WebCore::PaintWorkletGlobalScope::registerPaint): * worklets/WorkletConsoleClient.cpp: (WebCore::WorkletConsoleClient::messageWithTypeAndLevel): * worklets/WorkletGlobalScope.cpp: (WebCore::WorkletGlobalScope::WorkletGlobalScope): (WebCore::WorkletGlobalScope::addConsoleMessage): * worklets/WorkletScriptController.cpp: (WebCore::WorkletScriptController::initScriptWithSubclass): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::upload): * xml/XPathFunctions.cpp: * xml/XPathPredicate.cpp: (WebCore::XPath::evaluatePredicate): * xml/XSLStyleSheetLibxslt.cpp: (WebCore::XSLStyleSheet::loadChildSheet): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::handleError): * xml/parser/XMLDocumentParserLibxml2.cpp: (WebCore::PendingCallbacks::appendStartElementNSCallback): (WebCore::PendingCallbacks::appendEndElementNSCallback): (WebCore::PendingCallbacks::appendCharactersCallback): (WebCore::PendingCallbacks::appendProcessingInstructionCallback): (WebCore::PendingCallbacks::appendCDATABlockCallback): (WebCore::PendingCallbacks::appendCommentCallback): (WebCore::PendingCallbacks::appendInternalSubsetCallback): (WebCore::PendingCallbacks::appendErrorCallback): (WebCore::XMLDocumentParser::XMLDocumentParser): (WebCore::XMLDocumentParser::doEnd): Source/WebCore/PAL: Reviewed by Geoffrey Garen. * pal/crypto/openssl/CryptoDigestOpenSSL.cpp: (PAL::CryptoDigestContextImpl::create): * pal/system/ClockGeneric.cpp: (PAL::Clock::create): * pal/system/mac/ClockCM.mm: (Clock::create): Source/WebDriver: Reviewed by Geoffrey Garen. * WebDriverService.cpp: (WebDriver::WebDriverService::connectToBrowser): * glib/SessionHostGlib.cpp: (WebDriver::SessionHost::launchBrowser): (WebDriver::SessionHost::sendMessageToBackend): Source/WebKit: Reviewed by Geoffrey Garen. * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk): (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): (WebKit::DownloadManager::convertNetworkLoadToDownload): (WebKit::DownloadManager::resumeDownload): * NetworkProcess/Downloads/DownloadMap.cpp: (WebKit::DownloadMap::add): * NetworkProcess/Downloads/PendingDownload.cpp: (WebKit::PendingDownload::PendingDownload): * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): * NetworkProcess/NetworkContentRuleListManager.cpp: (WebKit::NetworkContentRuleListManager::addContentRuleLists): * NetworkProcess/NetworkDataTaskBlob.cpp: (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): (WebKit::NetworkDataTaskBlob::download): * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveResponse): * NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight): (WebKit::NetworkLoadChecker::contentSecurityPolicy): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::switchToNewTestingSession): (WebKit::NetworkProcess::ensureSession): (WebKit::NetworkProcess::swServerForSession): (WebKit::NetworkProcess::initializeQuotaUsers): (WebKit::NetworkProcess::storageQuotaManager): * NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::addSupplement): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): (WebKit::NetworkResourceLoader::startNetworkLoad): * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::create): * NetworkProcess/PreconnectTask.cpp: * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: (WebKit::LocalStorageDatabase::scheduleDatabaseUpdate): * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: (WebKit::LocalStorageNamespace::getOrCreateStorageArea): * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: (WebKit::SessionStorageNamespace::getOrCreateStorageArea): * NetworkProcess/WebStorage/StorageArea.cpp: (WebKit::StorageArea::clone const): * NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::createSessionStorageNamespace): (WebKit::StorageManager::getOrCreateLocalStorageNamespace): (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): (WebKit::StorageManager::getOrCreateSessionStorageNamespace): * NetworkProcess/WebStorage/StorageManagerSet.cpp: (WebKit::StorageManagerSet::add): * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::Cache): (WebKit::NetworkCache::Cache::makeEntry): (WebKit::NetworkCache::Cache::makeRedirectEntry): (WebKit::NetworkCache::Cache::update): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::decodeStorageRecord): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::registerSubresourceLoad): (WebKit::NetworkCache::SpeculativeLoadManager::retrieve): (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::satisfyPendingRequests): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource): (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::synchronize): (WebKit::NetworkCache::Storage::readRecord): (WebKit::NetworkCache::retrieveFromMemory): (WebKit::NetworkCache::Storage::retrieve): (WebKit::NetworkCache::Storage::store): (WebKit::NetworkCache::Storage::traverse): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): * NetworkProcess/cache/PrefetchCache.cpp: (WebKit::PrefetchCache::store): (WebKit::PrefetchCache::storeRedirect): * NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): (WebKit::NetworkProcess::networkHTTPSUpgradeChecker): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): (WebKit::NetworkSessionCocoa::create): (WebKit::NetworkSessionCocoa::createWebSocketTask): * NetworkProcess/curl/NetworkProcessCurl.cpp: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): * NetworkProcess/curl/NetworkSessionCurl.h: * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: (WebKit::NetworkConnectionToWebProcess::paymentCoordinator): (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): * NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::download): * NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): * NetworkProcess/soup/NetworkSessionSoup.cpp: (WebKit::NetworkSessionSoup::NetworkSessionSoup): (WebKit::NetworkSessionSoup::createWebSocketTask): * NetworkProcess/soup/NetworkSessionSoup.h: * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: (webkitSoupRequestInputStreamReadAsync): * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: (WebKit::NetworkMDNSRegister::registerMDNSName): * NetworkProcess/webrtc/NetworkRTCMonitor.cpp: (WebKit::NetworkRTCMonitor::startUpdating): * NetworkProcess/webrtc/NetworkRTCProvider.cpp: (WebKit::NetworkRTCProvider::NetworkRTCProvider): (WebKit::NetworkRTCProvider::createSocket): (WebKit::NetworkRTCProvider::wrapNewTCPConnection): * Platform/IPC/Connection.cpp: (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): (IPC::Connection::createSyncMessageEncoder): (IPC::Connection::enableIncomingMessagesThrottling): (IPC::Connection::dispatchSyncMessage): * Platform/IPC/Connection.h: (IPC::Connection::send): (IPC::Connection::sendWithAsyncReply): * Platform/IPC/Decoder.cpp: (IPC::Decoder::unwrapForTesting): * Platform/IPC/HandleMessage.h: (IPC::handleMessageAsync): * Platform/IPC/MessageSender.h: * Platform/IPC/cocoa/ConnectionCocoa.mm: (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog): (IPC::Connection::open): (IPC::createMessageDecoder): (IPC::Connection::receiveSourceEventHandler): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): (IPC::Connection::sendOutputMessage): * Platform/IPC/win/ConnectionWin.cpp: (IPC::Connection::readEventHandler): * Platform/mac/LayerHostingContext.mm: (WebKit::LayerHostingContext::createForPort): (WebKit::LayerHostingContext::createForExternalHostingProcess): (WebKit::LayerHostingContext::createForExternalPluginHostingProcess): * PluginProcess/WebProcessConnection.cpp: (WebKit::WebProcessConnection::createPluginInternal): * Shared/API/APIURL.h: (API::URL::create): (API::URL::parseURLIfNecessary const): * Shared/API/Cocoa/RemoteObjectInvocation.mm: (WebKit::RemoteObjectInvocation::decode): * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: (-[_WKRemoteObjectRegistry _initWithWebPage:]): (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]): (-[_WKRemoteObjectRegistry _sendInvocation:interface:]): * Shared/API/glib/WebKitContextMenuItem.cpp: (webkitContextMenuItemCreate): (webkit_context_menu_item_new): (webkit_context_menu_item_new_from_gaction): (webkit_context_menu_item_new_from_stock_action): (webkit_context_menu_item_new_from_stock_action_with_label): (webkit_context_menu_item_new_with_submenu): (webkit_context_menu_item_new_separator): * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): * Shared/Cocoa/SandboxExtensionCocoa.mm: (WebKit::SandboxExtension::Handle::decode): * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: (WebKit::texmapLayer): (WebKit::CoordinatedGraphicsScene::ensureRootLayer): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::ThreadedCompositor): * Shared/Plugins/NPRemoteObjectMap.cpp: (WebKit::NPRemoteObjectMap::registerNPObject): * Shared/Plugins/Netscape/NetscapePluginModule.cpp: (WebKit::NetscapePluginModule::tryLoad): * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): (WebKit::RemoteLayerTreeTransaction::decode): * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: (WebKit::RemoteScrollingCoordinatorTransaction::decode): * Shared/cairo/ShareableBitmapCairo.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * Shared/cg/ShareableBitmapCG.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * Shared/win/ShareableBitmapDirect2D.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * UIProcess/API/APIHTTPCookieStore.cpp: (API::HTTPCookieStore::registerObserver): * UIProcess/API/C/WKContext.cpp: (WKContextSetInjectedBundleClient): (WKContextSetHistoryClient): (WKContextSetDownloadClient): * UIProcess/API/C/WKGeolocationManager.cpp: (WKGeolocationManagerSetProvider): * UIProcess/API/C/WKNotificationManager.cpp: (WKNotificationManagerSetProvider): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageContextMenuClient): (WKPageSetPageDiagnosticLoggingClient): (WKPageSetPageFindClient): (WKPageSetPageFindMatchesClient): (WKPageSetPageFormClient): (WKPageSetPageLoaderClient): (WKPageSetPagePolicyClient): (WKPageSetPageUIClient): (WKPageSetPageStateClient): * UIProcess/API/C/mac/WKPagePrivateMac.mm: (-[WKObservablePageState initWithPage:]): * UIProcess/API/C/wpe/WKView.cpp: (WKViewSetViewClient): * UIProcess/API/Cocoa/WKBrowsingContextController.mm: (-[WKBrowsingContextController _initWithPageRef:]): * UIProcess/API/Cocoa/WKHTTPCookieStore.mm: (-[WKHTTPCookieStore addObserver:]): * UIProcess/API/Cocoa/WKProcessPool.mm: (-[WKProcessPool _setDownloadDelegate:]): (-[WKProcessPool _setAutomationDelegate:]): * UIProcess/API/Cocoa/WKUserContentController.mm: (-[WKUserContentController addScriptMessageHandler:name:]): (-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView setAllowsBackForwardNavigationGestures:]): (-[WKWebView _setInputDelegate:]): * UIProcess/API/Cocoa/_WKAutomationSession.mm: (-[_WKAutomationSession setDelegate:]): * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: (-[_WKRemoteWebInspectorViewController init]): * UIProcess/API/glib/IconDatabase.cpp: (WebKit::readySQLiteStatement): * UIProcess/API/glib/WebKitAutomationSession.cpp: (webkitAutomationSessionConstructed): * UIProcess/API/glib/WebKitContextMenuClient.cpp: (attachContextMenuClientToView): * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: (attachCustomProtocolManagerClientToContext): * UIProcess/API/glib/WebKitDownloadClient.cpp: (attachDownloadClientToContext): * UIProcess/API/glib/WebKitFaviconDatabase.cpp: (webkitFaviconDatabaseOpen): * UIProcess/API/glib/WebKitFindController.cpp: (webkitFindControllerConstructed): * UIProcess/API/glib/WebKitFormClient.cpp: (attachFormClientToView): * UIProcess/API/glib/WebKitGeolocationManager.cpp: (webkitGeolocationManagerCreate): * UIProcess/API/glib/WebKitIconLoadingClient.cpp: (attachIconLoadingClientToView): * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: (attachInjectedBundleClientToContext): * UIProcess/API/glib/WebKitNotificationProvider.cpp: (WebKitNotificationProvider::WebKitNotificationProvider): * UIProcess/API/glib/WebKitUIClient.cpp: (attachUIClientToView): * UIProcess/API/glib/WebKitUserContentManager.cpp: (webkit_user_content_manager_register_script_message_handler): (webkit_user_content_manager_register_script_message_handler_in_world): * UIProcess/API/glib/WebKitWebContext.cpp: (webkitWebContextConstructed): (webkit_web_context_set_automation_allowed): * UIProcess/API/glib/WebKitWebView.cpp: (webkitWebViewConstructed): * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/API/gtk/WebKitEmojiChooser.cpp: (webkitEmojiChooserSetupEmojiSections): * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: (WebKit::RemoteInspectorProtocolHandler::handleRequest): * UIProcess/API/gtk/WebKitWebInspector.cpp: (webkitWebInspectorCreate): * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseConstructed): (webkitWebViewBaseGestureController): (webkitWebViewBaseDragAndDropHandler): (webkitWebViewBaseDidRelaunchWebProcess): * UIProcess/API/mac/WKView.mm: (-[WKView maybeInstallIconLoadingClient]): (-[WKView initWithFrame:processPool:configuration:]): * UIProcess/API/wpe/PageClientImpl.cpp: (WebKit::PageClientImpl::PageClientImpl): (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/API/wpe/WPEView.cpp: (WKWPE::View::View): (WKWPE::View::setClient): * UIProcess/API/wpe/qt/WPEQtView.cpp: (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::runJavaScript): * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: (WPEQtViewBackend::create): * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::WebAutomationSession): * UIProcess/AuxiliaryProcessProxy.h: (WebKit::AuxiliaryProcessProxy::send): * UIProcess/Cocoa/IconLoadingDelegate.mm: (WebKit::IconLoadingDelegate::createIconLoadingClient): * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::createContextMenuClient): (WebKit::UIDelegate::createUIClient): * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitialize): (WebKit::WebProcessPool::startDisplayLink): * UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended): * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::WebViewImpl): (WebKit::WebViewImpl::createDrawingAreaProxy): (WebKit::WebViewImpl::setTextIndicator): (WebKit::WebViewImpl::ensureGestureController): * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::incorporateUpdate): (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing): * UIProcess/DeviceIdHashSaltStorage.cpp: (WebKit::DeviceIdHashSaltStorage::getDataFromDecoder const): (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall): * UIProcess/Downloads/DownloadProxyMap.cpp: (WebKit::DownloadProxyMap::createDownloadProxy): * UIProcess/Gamepad/UIGamepadProvider.cpp: (WebKit::UIGamepadProvider::setInitialConnectedGamepads): (WebKit::UIGamepadProvider::platformGamepadConnected): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::createDownloadProxy): (WebKit::NetworkProcessProxy::takeUploadAssertion): * UIProcess/Notifications/WebNotificationManagerProxy.cpp: (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy): (WebKit::WebNotificationManagerProxy::setProvider): * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: (WebKit::pluginRequiresGtk2): * UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::didConnectToProcess): * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): (WebKit::RemoteLayerTreeDrawingAreaProxy::initializeDebugIndicator): * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::makeNode): * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: (WebKit::RemoteLayerTreeNode::createWithPlainLayer): * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm: (WebKit::RemoteLayerTreeHost::makeNode): * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren): * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: (WebKit::ScrollingTreeOverflowScrollingNodeIOS::ScrollingTreeOverflowScrollingNodeIOS): * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::ScrollingTreeFrameScrollingNodeRemoteMac): * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac): * UIProcess/WebAuthentication/Cocoa/HidService.mm: (WebKit::HidService::deviceAdded): * UIProcess/WebGeolocationManagerProxy.cpp: (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy): (WebKit::WebGeolocationManagerProxy::setProvider): * UIProcess/WebMediaSessionFocusManager.cpp: (WebKit::WebMediaSessionFocusManager::setFocusedMediaElement): * UIProcess/WebPageInspectorController.cpp: (WebKit::WebPageInspectorController::WebPageInspectorController): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::m_resetRecentCrashCountTimer): (WebKit::WebPageProxy::setFormClient): (WebKit::WebPageProxy::setUIClient): (WebKit::WebPageProxy::setIconLoadingClient): (WebKit::WebPageProxy::setFindClient): (WebKit::WebPageProxy::setFindMatchesClient): (WebKit::WebPageProxy::setContextMenuClient): (WebKit::WebPageProxy::setInjectedBundleClient): (WebKit::WebPageProxy::suspendCurrentPageIfPossible): (WebKit::WebPageProxy::didAttachToRunningProcess): (WebKit::WebPageProxy::setDrawingArea): (WebKit::WebPageProxy::close): (WebKit::WebPageProxy::loadData): (WebKit::WebPageProxy::handleWheelEvent): (WebKit::WebPageProxy::processNextQueuedWheelEvent): (WebKit::WebPageProxy::continueNavigationInNewProcess): (WebKit::WebPageProxy::setFullscreenClient): (WebKit::WebPageProxy::userMediaPermissionRequestManager): (WebKit::WebPageProxy::setScrollPerformanceDataCollectionEnabled): (WebKit::WebPageProxy::speechSynthesisData): * UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::addProcessIfPossible): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::WebProcessPool): (WebKit::WebProcessPool::setInjectedBundleClient): (WebKit::WebProcessPool::setHistoryClient): (WebKit::WebProcessPool::setDownloadClient): (WebKit::WebProcessPool::setAutomationClient): (WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient): (WebKit::WebProcessPool::ensureNetworkProcess): (WebKit::WebProcessPool::didCollectPrewarmInformation): (WebKit::WebProcessPool::setWebProcessHasUploads): (WebKit::WebProcessPool::setWebProcessIsPlayingAudibleMedia): * UIProcess/WebProcessProxy.cpp: * UIProcess/cairo/BackingStoreCairo.cpp: (WebKit::BackingStore::createBackend): * UIProcess/glib/RemoteInspectorClient.cpp: (WebKit::RemoteInspectorClient::inspect): * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: (WebKit::AcceleratedBackingStoreWayland::checkRequirements): * UIProcess/gtk/DragAndDropHandler.cpp: (WebKit::DragAndDropHandler::dragDataSelection): * UIProcess/gtk/WaylandCompositor.cpp: (WebKit::WaylandCompositor::initializeEGL): * UIProcess/ios/EditableImageController.mm: (WebKit::EditableImageController::ensureEditableImage): * UIProcess/ios/WKApplicationStateTrackingView.mm: (-[WKApplicationStateTrackingView didMoveToWindow]): * UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): (-[WKContentView initWithFrame:processPool:configuration:webView:]): (-[WKContentView _createDrawingAreaProxy:]): * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView becomeFirstResponderForWebView]): (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::elementDidFocus): (WebKit::WebPageProxy::paymentCoordinatorAuthorizationPresenter): * UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::PageClientImpl): * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController initWithWindow:webView:page:]): * UIProcess/mac/WKTextFinderClient.mm: (-[WKTextFinderClient initWithPage:view:usePlatformFindUI:]): * UIProcess/socket/RemoteInspectorClient.cpp: (WebKit::RemoteInspectorClient::inspect): * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: (WebKit::RemoteInspectorProtocolHandler::platformStartTask): * UIProcess/win/BackingStoreDirect2D.cpp: (WebKit::BackingStore::createBackend): * UIProcess/win/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/win/WebView.cpp: (WebKit::WebView::WebView): * WebProcess/Gamepad/WebGamepadProvider.cpp: (WebKit::WebGamepadProvider::setInitialGamepads): (WebKit::WebGamepadProvider::gamepadConnected): * WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleSetClient): * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageSetContextMenuClient): (WKBundlePageSetEditorClient): (WKBundlePageSetFormClient): (WKBundlePageSetPageLoaderClient): (WKBundlePageSetResourceLoadClient): (WKBundlePageSetUIClient): * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: (WKBundlePageOverlayCreate): * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: (WKBundlePageBannerCreateBannerWithCALayer): * WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: (WebKit::getOrCreateDOMObjectCacheFrameObserver): (WebKit::DOMObjectCache::put): * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp: (WebKit::WebKitExtensionManager::initialize): * WebProcess/InjectedBundle/API/glib/WebKitWebEditor.cpp: (webkitWebEditorCreate): * WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp: (webkitWebExtensionCreate): * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: (webkitFrameGetOrCreate): (webkitWebPageCreate): * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm: (-[WKDOMTextIterator initWithRange:]): * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::InjectedBundle): (WebKit::InjectedBundle::setClient): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::PendingMessage::PendingMessage): (WebKit::WebSocketChannel::send): * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: (WebKit::LibWebRTCProvider::createPeerConnection): (WebKit::LibWebRTCProvider::createSocketFactory): * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): (WebKit::LibWebRTCSocketFactory::createUdpSocket): (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket): (WebKit::LibWebRTCSocketFactory::createAsyncResolver): * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: (WebKit::PluginDestructionProtector::PluginDestructionProtector): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::scheduleTimer): * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: (WebKit::NetscapePluginStream::deliverData): * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: (WebKit::NetscapePluginX11::create): * WebProcess/Plugins/PluginProxy.cpp: (WebKit::PluginProxy::initialize): * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::createWebEvent const): * WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::WebSWContextManagerConnection::installServiceWorker): * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createColorChooser): (WebKit::WebChromeClient::createDataListSuggestionPicker): * WebProcess/WebCoreSupport/WebInspectorClient.cpp: (WebKit::WebInspectorClient::showPaintRect): * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: (WebKit::WebPasteboardOverrides::addOverride): * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): * WebProcess/WebPage/DrawingArea.cpp: (WebKit::DrawingArea::create): * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::ensureBackingStore): (WebKit::PlatformCALayerRemote::setTransform): (WebKit::PlatformCALayerRemote::setSublayerTransform): (WebKit::PlatformCALayerRemote::setFilters): (WebKit::PlatformCALayerRemote::setShapeRoundedRect): * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: (WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): (WebKit::RemoteLayerTreeDrawingArea::flushLayers): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::createSubframe): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_textAutoSizingAdjustmentTimer): (WebKit::WebPage::setInjectedBundleContextMenuClient): (WebKit::WebPage::setInjectedBundleEditorClient): (WebKit::WebPage::setInjectedBundleFormClient): (WebKit::WebPage::setInjectedBundlePageLoaderClient): (WebKit::WebPage::setInjectedBundleResourceLoadClient): (WebKit::WebPage::setInjectedBundleUIClient): (WebKit::WebPage::close): (WebKit::WebPage::beginPrinting): * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: (WebKit::WebPrintOperationGtk::print): * WebProcess/WebPage/ios/FindControllerIOS.mm: (WebKit::FindController::updateFindIndicator): * WebProcess/WebPage/mac/DrawingAreaMac.cpp: (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback): * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::markAllLayersVolatile): (WebKit::WebProcess::ensureAutomationSessionProxy): (WebKit::WebProcess::libWebRTCNetwork): (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): * WebProcess/WebProcess.h: (WebKit::WebProcess::addSupplement): * WebProcess/cocoa/UserMediaCaptureManager.cpp: (WebKit::UserMediaCaptureManager::Source::Source): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::updateCPUMonitorState): Source/WebKitLegacy: Reviewed by Geoffrey Garen. * Storage/StorageSyncManager.cpp: (WebCore::StorageSyncManager::StorageSyncManager): * Storage/StorageThread.cpp: (WebCore::StorageThread::dispatch): (WebCore::StorageThread::terminate): * Storage/StorageTracker.cpp: (WebKit::StorageTracker::StorageTracker): * WebCoreSupport/NetworkStorageSessionMap.cpp: (NetworkStorageSessionMap::defaultStorageSession): (NetworkStorageSessionMap::switchToNewTestingSession): (NetworkStorageSessionMap::ensureSession): Source/WebKitLegacy/cf: Reviewed by Geoffrey Garen. * WebCoreSupport/WebInspectorClientCF.cpp: (WebInspectorClient::createFrontendSettings): Source/WebKitLegacy/ios: Reviewed by Geoffrey Garen. * WebCoreSupport/WebFixedPositionContent.mm: (-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]): Source/WebKitLegacy/mac: Reviewed by Geoffrey Garen. * History/WebHistory.mm: (-[WebHistoryPrivate init]): * History/WebHistoryItem.mm: (-[WebHistoryItem initFromDictionaryRepresentation:]): * Plugins/Hosted/NetscapePluginHostProxy.mm: (WKPCGetScriptableNPObjectReply): (WKPCBooleanReply): (WKPCBooleanAndDataReply): (WKPCInstantiatePluginReply): * Plugins/Hosted/ProxyInstance.mm: (WebKit::ProxyInstance::methodNamed): (WebKit::ProxyInstance::fieldNamed): * Plugins/Hosted/WebHostedNetscapePluginView.mm: (-[WebHostedNetscapePluginView createPlugin]): * Plugins/WebNetscapePluginEventHandler.mm: (WebNetscapePluginEventHandler::create): * Plugins/WebNetscapePluginView.mm: (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]): * Storage/WebDatabaseManagerClient.mm: (DidModifyOriginData::dispatchToMainThread): * WebCoreSupport/WebFrameLoaderClient.mm: (addRedirectURL): (WebFrameLoaderClient::savePlatformDataToCachedFrame): * WebCoreSupport/WebInspectorClient.mm: (WebInspectorClient::openLocalFrontend): * WebView/WebDeviceOrientationProviderMock.mm: * WebView/WebFrame.mm: (-[WebFrame _attachScriptDebugger]): * WebView/WebMediaPlaybackTargetPicker.mm: (WebMediaPlaybackTargetPicker::create): * WebView/WebTextIterator.mm: (-[WebTextIterator initWithRange:]): * WebView/WebView.mm: (-[WebView _injectOutlookQuirksScript]): (-[WebView _commonInitializationWithFrameName:groupName:]): (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): (-[WebView _selectionServiceController]): (-[WebView _setTextIndicator:withLifetime:]): * WebView/WebViewData.mm: (WebViewLayerFlushScheduler::WebViewLayerFlushScheduler): (-[WebViewPrivate init]): Source/WebKitLegacy/win: Reviewed by Geoffrey Garen. * FullscreenVideoController.cpp: (FullscreenVideoController::FullscreenVideoController): * Plugins/PluginStream.cpp: (WebCore::PluginStream::didReceiveData): * Plugins/PluginView.cpp: (WebCore::PluginView::load): * Plugins/PluginViewWin.cpp: (WebCore::PluginView::wndProc): * WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::WebChromeClient): * WebCoreSupport/WebFrameLoaderClient.cpp: (WebFrameLoaderClient::WebFrameLoaderClient): (WebFrameLoaderClient::savePlatformDataToCachedFrame): * WebCoreSupport/WebInspectorClient.cpp: (WebInspectorClient::openLocalFrontend): (WebInspectorClient::highlight): * WebElementPropertyBag.cpp: (WebElementPropertyBag::WebElementPropertyBag): * WebHistoryItem.cpp: (WebHistoryItem::initFromDictionaryRepresentation): * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp: (WKQCA::CAD3DRenderer::createD3DPostProcessingContext): * WebNotificationCenter.cpp: (WebNotificationCenter::WebNotificationCenter): * WebView.cpp: (WebView::handleMouseEvent): (WebView::registerEmbeddedViewMIMEType): (WebView::enterVideoFullscreenForVideoElement): (WebView::addUserScriptToGroup): (WebView::addUserStyleSheetToGroup): (WebView::setAcceleratedCompositing): Source/WTF: Reviewed by Geoff Garen. This patch is second part of bug 200620 patch. I split I split it into three pieces to make roll-out easy. his part, we convert std::make_unique to WTF::makeUnique or WTF::makeUniqueWithoutFastMallocCheck. In the third patch, we will add a static_assert to makeUnique, which ensures the given class T is FastMalloced or IsoHeaped. This patch adds `WTF::makeUnique<T>` and `WTF::makeUniqueWithoutFastMallocCheck<T>` as drop-in replacement for `std::make_unique<T>`. `WTF::makeUnique<T>` has one additional `static_assert` check which ensures `T` FastMalloc / IsoHeap annotated. If it is not, the compile error happens. In this patch, I tried using this everywhere in WebKit as much as possible. And we found that surprisingly many classes are missing FastMalloc annotation and allocated from system-malloc. Using WTF::makeUnique enforces classes / structs to use FastMalloc. WTF::makeUniqueWithoutFastMallocCheck is offered for the corner cases. This is identical to std::make_unique. We use this for classes that are offered by non-WebKit code base, like, zlib. This clear name can make us easily find this allocation is intentionally done by system-malloc. We do not take the following direction, `WTF::makeUnique` automatically allocates FastMalloc even if FastMalloc annotation is not attached. Since default deleter is performing `delete` and this is not what we want for FastMalloced ones, we need to return std::unique_ptr<T, FastFreeDeleter> for T if T does not have FastMalloc-annotation. Automatically doing this sounds a bit dangerous. auto pointer = WTF::makeUnique<T>(); // Super dangerous, but sometimes it is required... auto* rawPointer = pointer.release(); // Passing rawPointer to somewhere, and delete rawPointer; The above one becomes invalid because pointer may start requiring non `delete` destroying function. In the above case, the correct way becomes the following. rawPointer->~T(); fastFree(rawPointer); This looks non-intuitive. And having two ways to destroying objects (`delete` or the above one) can be error-prone. If we have WTF_MAKE_FAST_ALLOCATED for T, we do not need to care about this. "new" and "delete" operators are defined, and C++ way works. The simple invariant, "makeUnique just does `new` internally. And `delete` operator does `delete`. default deleter is just doing `delete`", is kept. While we need to annotate many classes with WTF_MAKE_FAST_ALLOCATED, it is one time cost when we add a class. And, by introducing `WTF::makeUnique<>`, we no longer forget adding this. makeUnique(...) static_assert(T is FastMalloced or IsoHeaped); return make_unique<T>(...) * benchmarks/LockFairnessTest.cpp: * benchmarks/LockSpeedTest.cpp: * wtf/ConcurrentVector.h: * wtf/CrossThreadTaskHandler.cpp: (WTF::CrossThreadTaskHandler::taskRunLoop): * wtf/FilePrintStream.cpp: (WTF::FilePrintStream::open): * wtf/Function.h: (WTF::Function<Out): * wtf/HashTable.h: (WTF::KeyTraits>::HashTable): * wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor): * wtf/StdLibExtras.h: (WTF::makeUnique): (WTF::makeUniqueWithoutFastMallocCheck): * wtf/StreamBuffer.h: (WTF::StreamBuffer::append): * wtf/UniqueRef.h: (WTF::makeUniqueRefWithoutFastMallocCheck): (WTF::makeUniqueRef): * wtf/glib/RunLoopGLib.cpp: (WTF::RunLoop::dispatchAfter): * wtf/text/StringView.cpp: (WTF::StringView::GraphemeClusters::Iterator::Iterator): Tools: Reviewed by Geoffrey Garen. * DumpRenderTree/TestRunner.cpp: (addURLToRedirectCallback): (setWillSendRequestClearHeaderCallback): (TestRunner::setAccummulateLogsForChannel): (TestRunner::runUIScript): (TestRunner::setOpenPanelFiles): * DumpRenderTree/mac/DumpRenderTree.mm: (dumpFramesAsText): * DumpRenderTree/mac/EventSendingController.mm: (eventPressedMouseButtonsSwizzlerForViewAndEvent): * DumpRenderTree/win/DRTDataObject.cpp: (DRTDataObject::SetData): * DumpRenderTree/win/FrameLoadDelegate.cpp: (FrameLoadDelegate::FrameLoadDelegate): * DumpRenderTree/win/UIDelegate.cpp: (DRTUndoManager::DRTUndoManager): (UIDelegate::UIDelegate): (UIDelegate::resetUndoManager): * TestWebKitAPI/JavaScriptTest.cpp: (TestWebKitAPI::runJSTest): * TestWebKitAPI/PlatformUtilities.cpp: (TestWebKitAPI::Util::toSTD): * TestWebKitAPI/Tests/WTF/Expected.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashCountedSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashMap.cpp: (TestWebKitAPI::TEST): (TestWebKitAPI::testMovingUsingEnsure): (TestWebKitAPI::testMovingUsingAdd): * TestWebKitAPI/Tests/WTF/HashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ListHashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Lock.cpp: (TestWebKitAPI::runLockTest): * TestWebKitAPI/Tests/WTF/ParkingLot.cpp: * TestWebKitAPI/Tests/WTF/RefCounter.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ThreadGroup.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Variant.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/WeakPtr.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/CARingBuffer.cpp: (TestWebKitAPI::CARingBufferTest::SetUp): * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: (TestWebKitAPI::createTestValue): * TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/FileMonitor.cpp: (TestWebKitAPI::TEST_F): * TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp: * TestWebKitAPI/Tests/WebKit/CloseFromWithinCreatePage.cpp: (TestWebKitAPI::createNewPage): * TestWebKitAPI/Tests/WebKit/ModalAlertsSPI.cpp: (TestWebKitAPI::createNewPage): * TestWebKitAPI/Tests/WebKit/TextFieldDidBeginAndEndEditing.cpp: * TestWebKitAPI/Tests/WebKit/UserMessage.cpp: (TestWebKitAPI::WebKit2UserMessageRoundTripTest::SetUp): * TestWebKitAPI/Tests/WebKit/WillLoad.cpp: (TestWebKitAPI::WebKit2WillLoadTest::SetUp): * TestWebKitAPI/Tests/WebKit/mac/ForceLightAppearanceInBundle_Bundle.mm: (TestWebKitAPI::ForceLightAppearanceInBundleTest::didReceiveMessage): * TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp: (serverCallback): (testWebViewAuthenticationProxyHTTPS): * TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp: (WebKitDOMDOMWindowTest::create): * TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm: (TestWebKitAPI::Util::toSTD): * TestWebKitAPI/cocoa/TestWKWebView.mm: (applyWorkaroundToAllowWritingAttributedStringsToItemProviders): (-[TestWKWebView initWithFrame:configuration:addToWindow:]): * TestWebKitAPI/mac/TestFontOptions.mm: (-[TestFontOptions initWithFontOptions:]): * WebKitTestRunner/InjectedBundle/EventSendingController.cpp: (WTR::EventSendingController::callAfterScrollingCompletes): * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::didCreatePage): * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setOpenPanelFiles): * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: * WebKitTestRunner/StringFunctions.h: (WTR::toSTD): (WTR::toWTFString): * WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize): (WTR::TestController::generatePageConfiguration): (WTR::TestController::resetStateToConsistentValues): (WTR::createTestURL): (WTR::TestController::runTest): (WTR::TestController::platformCreateWebView): * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::runUISideScript): * WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::platformCreateWebView): (WTR::TestController::setDefaultCalendarType): * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp: (WTR::getGDKKeySymForKeyRef): * WebKitTestRunner/ios/TestControllerIOS.mm: (WTR::TestController::platformResetStateToConsistentValues): (WTR::TestController::setKeyboardInputModeIdentifier): * WebKitTestRunner/mac/EventSenderProxy.mm: (WTR::EventSenderProxy::mouseDown): (WTR::EventSenderProxy::mouseUp): (WTR::EventSenderProxy::mouseMoveTo): * WebKitTestRunner/wpe/EventSenderProxyWPE.cpp: (WTR::wpeKeySymForKeyRef): Canonical link: https://commits.webkit.org/214609@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-19 06:59:40 +00:00
auto newSupplement = makeUnique<DocumentStorageAccess>(document);
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
supplement = newSupplement.get();
provideTo(&document, supplementName(), WTFMove(newSupplement));
}
return supplement;
}
const char* DocumentStorageAccess::supplementName()
{
return "DocumentStorageAccess";
}
void DocumentStorageAccess::hasStorageAccess(Document& document, Ref<DeferredPromise>&& promise)
{
DocumentStorageAccess::from(document)->hasStorageAccess(WTFMove(promise));
}
Remove WTF::Optional synonym for std::optional, using that class template directly instead https://bugs.webkit.org/show_bug.cgi?id=226433 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * inspector/scripts/codegen/generate_objc_protocol_types_implementation.py: (ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead of Optional<>. Also use * instead of value() and nest the definition of the local inside an if statement in the case where it's an optional. * inspector/scripts/tests/expected/*: Regenerated these results. Source/WebCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebCore/PAL: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebDriver: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKit: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * Scripts/webkit/tests: Regenerated expected results, by running the command "python Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?) Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/mac: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/win: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WTF: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * wtf/Optional.h: Remove WTF::Optional. Tools: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Canonical link: https://commits.webkit.org/238290@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278253 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-30 16:11:40 +00:00
std::optional<bool> DocumentStorageAccess::hasStorageAccessQuickCheck()
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
{
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
ASSERT(m_document.settings().storageAccessAPIEnabled());
auto* frame = m_document.frame();
if (frame && hasFrameSpecificStorageAccess())
return true;
if (!frame || m_document.securityOrigin().isUnique())
return false;
if (frame->isMainFrame())
return true;
auto& securityOrigin = m_document.securityOrigin();
auto& topSecurityOrigin = m_document.topDocument().securityOrigin();
if (securityOrigin.equal(&topSecurityOrigin))
return true;
auto* page = frame->page();
if (!page)
return false;
Next step toward using std::optional directly instead of through WTF::Optional typedef https://bugs.webkit.org/show_bug.cgi?id=226280 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Accept the renaming done by do-webcore-rename. * yarr/YarrSyntaxChecker.cpp: Since the style checker complained about this file, tweaked style to make it happy after the renaming done by do-webcore-rename, and also hand-updated Optional to std::optional as long as we were touching it. Source/WebCore: * <many files>: Accept the renaming done by do-webcore-rename. * Modules/webauthn/fido/DeviceRequestConverter.h: Since style checker complained about the names of some arguments, fixed them, and also hand-updated Optional to std::optional as long as we were touching it. * loader/EmptyClients.cpp: Since style checker complained about the mix of WEBCORE_EXPORT and inlined functions, moved them out of line, and also hand-updated Optional to std::optional as long as we were touching it. Also removed is<EmptyFrameLoaderClient>(). * loader/EmptyFrameLoaderClient.h: Ditto. Source/WebCore/PAL: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebDriver: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKit: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy: * Storage/StorageTracker.cpp: (WebKit::StorageTracker::diskUsageForOrigin): Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/mac: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/win: * <many files>: Accept the renaming done by do-webcore-rename. Source/WTF: * <many files>: Accept the renaming done by do-webcore-rename. * wtf/Optional.h: Remove WTF::nullopt_t and WTF::makeOptional. * wtf/URLHelpers.cpp: (WTF::URLHelpers::mapHostName): Convert from nullopt to std::nullopt. Tools: * Scripts/do-webcore-rename: Use script to rename valueOr, WTF::nullopt, WTF::nullopt_t, WTF::Optional, WTF::makeOptional, and makeOptional. Other renamings can't necessarily be done by the script and so will be done in later passes. * <many files>: Accept the renaming done by do-webcore-rename. Canonical link: https://commits.webkit.org/238228@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278185 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-28 01:26:23 +00:00
return std::nullopt;
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
}
void DocumentStorageAccess::hasStorageAccess(Ref<DeferredPromise>&& promise)
{
ASSERT(m_document.settings().storageAccessAPIEnabled());
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
auto quickCheckResult = hasStorageAccessQuickCheck();
if (quickCheckResult) {
promise->resolve<IDLBoolean>(*quickCheckResult);
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
return;
}
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
// The existence of a frame and page has been checked in requestStorageAccessQuickCheck().
auto* frame = m_document.frame();
if (!frame) {
ASSERT_NOT_REACHED();
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
promise->resolve<IDLBoolean>(false);
return;
}
auto* page = frame->page();
if (!page) {
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
ASSERT_NOT_REACHED();
promise->resolve<IDLBoolean>(false);
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
return;
}
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
page->chrome().client().hasStorageAccess(RegistrableDomain::uncheckedCreateFromHost(m_document.securityOrigin().host()), RegistrableDomain::uncheckedCreateFromHost(m_document.topDocument().securityOrigin().host()), *frame, [weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (bool hasAccess) {
if (!weakThis)
return;
promise->resolve<IDLBoolean>(hasAccess);
});
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
}
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
bool DocumentStorageAccess::hasStorageAccessForDocumentQuirk(Document& document)
{
auto quickCheckResult = DocumentStorageAccess::from(document)->hasStorageAccessQuickCheck();
if (quickCheckResult)
return *quickCheckResult;
return false;
}
void DocumentStorageAccess::requestStorageAccess(Document& document, Ref<DeferredPromise>&& promise)
{
DocumentStorageAccess::from(document)->requestStorageAccess(WTFMove(promise));
}
Remove WTF::Optional synonym for std::optional, using that class template directly instead https://bugs.webkit.org/show_bug.cgi?id=226433 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * inspector/scripts/codegen/generate_objc_protocol_types_implementation.py: (ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead of Optional<>. Also use * instead of value() and nest the definition of the local inside an if statement in the case where it's an optional. * inspector/scripts/tests/expected/*: Regenerated these results. Source/WebCore: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebCore/PAL: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebDriver: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKit: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * Scripts/webkit/tests: Regenerated expected results, by running the command "python Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?) Source/WebKitLegacy/ios: * WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/mac: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WebKitLegacy/win: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Source/WTF: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. * wtf/Optional.h: Remove WTF::Optional. Tools: * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>. Canonical link: https://commits.webkit.org/238290@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278253 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-30 16:11:40 +00:00
std::optional<StorageAccessQuickResult> DocumentStorageAccess::requestStorageAccessQuickCheck()
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
{
ASSERT(m_document.settings().storageAccessAPIEnabled());
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
auto* frame = m_document.frame();
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
if (frame && hasFrameSpecificStorageAccess())
return StorageAccessQuickResult::Grant;
Storage Access quirks should prompt up to twice if a user does not allow storage access https://bugs.webkit.org/show_bug.cgi?id=227099 <rdar://problem/79409843> Reviewed by John Wilander. Source/WebCore: Remove hasDeniedCrossPageStorageAccess functions. They are not needed now that we are aligning storage access quirks with non-quirks by using maxNumberOfTimesExplicitlyDeniedStorageAccess. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): * dom/Element.h: * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::hasHadUserInteraction const): (WebCore::ResourceLoadObserver::setHasDeniedCrossPageStorageAccess): Deleted. (WebCore::ResourceLoadObserver::hasDeniedCrossPageStorageAccess const): Deleted. * page/Quirks.cpp: (WebCore::isStorageAccessQuirkDomainAndElement): (WebCore::Quirks::requestStorageAccessAndHandleClick const): (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): (WebCore::hasDeniedCrossPageStorageAccess): Deleted. * page/Quirks.h: Source/WebKit: We should allow storage access prompts twice per document for quirks just like for non-quirk cases. Previously we were only presenting the quirk prompt once per web content process if the user denied. This patch removes this code and utilizes maxNumberOfTimesExplicitlyDeniedStorageAccess instead. * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasDeniedCrossPageStorageAccess const): Deleted. (WebKit::WebResourceLoadObserver::setHasDeniedCrossPageStorageAccess): Deleted. * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: Canonical link: https://commits.webkit.org/238929@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279004 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-17 20:03:07 +00:00
if (!frame || m_document.securityOrigin().isUnique() || !isAllowedToRequestStorageAccess())
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
return StorageAccessQuickResult::Reject;
if (frame->isMainFrame())
return StorageAccessQuickResult::Grant;
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
auto& topDocument = m_document.topDocument();
auto& topSecurityOrigin = topDocument.securityOrigin();
auto& securityOrigin = m_document.securityOrigin();
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
if (securityOrigin.equal(&topSecurityOrigin))
return StorageAccessQuickResult::Grant;
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
// If there is a sandbox, it has to allow the storage access API to be called.
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
if (m_document.sandboxFlags() != SandboxNone && m_document.isSandboxed(SandboxStorageAccessByUserActivation))
return StorageAccessQuickResult::Reject;
if (!UserGestureIndicator::processingUserGesture())
return StorageAccessQuickResult::Reject;
Next step toward using std::optional directly instead of through WTF::Optional typedef https://bugs.webkit.org/show_bug.cgi?id=226280 Reviewed by Chris Dumez. Source/JavaScriptCore: * <many files>: Accept the renaming done by do-webcore-rename. * yarr/YarrSyntaxChecker.cpp: Since the style checker complained about this file, tweaked style to make it happy after the renaming done by do-webcore-rename, and also hand-updated Optional to std::optional as long as we were touching it. Source/WebCore: * <many files>: Accept the renaming done by do-webcore-rename. * Modules/webauthn/fido/DeviceRequestConverter.h: Since style checker complained about the names of some arguments, fixed them, and also hand-updated Optional to std::optional as long as we were touching it. * loader/EmptyClients.cpp: Since style checker complained about the mix of WEBCORE_EXPORT and inlined functions, moved them out of line, and also hand-updated Optional to std::optional as long as we were touching it. Also removed is<EmptyFrameLoaderClient>(). * loader/EmptyFrameLoaderClient.h: Ditto. Source/WebCore/PAL: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebDriver: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKit: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy: * Storage/StorageTracker.cpp: (WebKit::StorageTracker::diskUsageForOrigin): Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/mac: * <many files>: Accept the renaming done by do-webcore-rename. Source/WebKitLegacy/win: * <many files>: Accept the renaming done by do-webcore-rename. Source/WTF: * <many files>: Accept the renaming done by do-webcore-rename. * wtf/Optional.h: Remove WTF::nullopt_t and WTF::makeOptional. * wtf/URLHelpers.cpp: (WTF::URLHelpers::mapHostName): Convert from nullopt to std::nullopt. Tools: * Scripts/do-webcore-rename: Use script to rename valueOr, WTF::nullopt, WTF::nullopt_t, WTF::Optional, WTF::makeOptional, and makeOptional. Other renamings can't necessarily be done by the script and so will be done in later passes. * <many files>: Accept the renaming done by do-webcore-rename. Canonical link: https://commits.webkit.org/238228@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278185 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-28 01:26:23 +00:00
return std::nullopt;
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
}
void DocumentStorageAccess::requestStorageAccess(Ref<DeferredPromise>&& promise)
{
ASSERT(m_document.settings().storageAccessAPIEnabled());
auto quickCheckResult = requestStorageAccessQuickCheck();
if (quickCheckResult) {
*quickCheckResult == StorageAccessQuickResult::Grant ? promise->resolve() : promise->reject();
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
return;
}
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
// The existence of a frame and page has been checked in requestStorageAccessQuickCheck().
auto* frame = m_document.frame();
if (!frame) {
ASSERT_NOT_REACHED();
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
promise->reject();
return;
}
auto* page = frame->page();
if (!page) {
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
ASSERT_NOT_REACHED();
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
promise->reject();
return;
}
Storage Access API: Enable per-page storage access scope and align test cases https://bugs.webkit.org/show_bug.cgi?id=217077 <rdar://problem/69017878> Reviewed by Brent Fulgham. It was decided in https://github.com/privacycg/storage-access/issues/3 that browsers should grant storage access for all same-site resources on the whole page, not just the requesting iframe. Source/WebCore: No new tests. Existing tests aligned, including LayoutTests/http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html which no longer calls internals.settings.setStorageAccessAPIPerPageScopeEnabled(true) to opt in to the setting that is now the default. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): Changed the settings check to do the reverse, i.e. assume per-page access by default and per-frame access as the exception. * dom/DocumentStorageAccess.h: Changed the default setting for m_storageAccessScope to per-page. * page/Settings.yaml: Changed the default to true for storageAccessAPIPerPageScopeEnabled. Source/WebKit: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): Added a call to WebPage::hasPageLevelStorageAccess() and an early return if it returns true. (WebKit::WebPage::clearPageLevelStorageAccess): New function to clear the webpage's m_domainsWithPageLevelStorageAccess map. * WebProcess/WebPage/WebPage.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::clearResourceLoadStatistics): Now clears all webpages' page level storage access maps. LayoutTests: * http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame.html: * http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame.html: * http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access.html: * http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html: All of the above now explicitly call internals.settings.setStorageAccessAPIPerPageScopeEnabled(false) to opt out of the new default setting. * http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html: Changed to assume per-page is the default. Canonical link: https://commits.webkit.org/230082@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267973 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-05 16:42:08 +00:00
if (!page->settings().storageAccessAPIPerPageScopeEnabled())
m_storageAccessScope = StorageAccessScope::PerFrame;
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
page->chrome().client().requestStorageAccess(RegistrableDomain::uncheckedCreateFromHost(m_document.securityOrigin().host()), RegistrableDomain::uncheckedCreateFromHost(m_document.topDocument().securityOrigin().host()), *frame, m_storageAccessScope, [this, weakThis = makeWeakPtr(*this), promise = WTFMove(promise)] (RequestStorageAccessResult result) mutable {
if (!weakThis)
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
return;
// Consume the user gesture only if the user explicitly denied access.
Storage Access API: Allow configurable storage access scope https://bugs.webkit.org/show_bug.cgi?id=212114 <rdar://problem/63423063> Reviewed by Alex Christensen. The scope of storage access as per-frame or per-page was discussed in the standards process here: https://github.com/privacycg/storage-access/issues/3 The decision was to have per-page storage access by default. Recent feedback from Google and conversation with Mozilla suggest that we might want to support the caller choosing the scope. This patch adds support for different scope configurations while keeping the existing default as per-frame. A later patch will switch the default and add test cases for per-page scope. Source/WebCore: A new struct is added WebCore::RequestStorageAccessResult which carries full information about the storage access request result. A new enum is added WebCore::StorageAccessScope to encode per-frame and per-page access. No new tests. No changed functionality. Tests already exist. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): * dom/DocumentStorageAccess.h: (WebCore::RequestStorageAccessResult::encode const): (WebCore::RequestStorageAccessResult::decode): * page/ChromeClient.h: (WebCore::ChromeClient::requestStorageAccess): Source/WebKit: Most of the changes is piping through the new enum WebCore::StorageAccessScope from the call side to encode per-frame and per-page access, and piping through the new struct WebCore::RequestStorageAccessResult on the return side which carries full information about the storage access request result. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::CompletionHandler<void): * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessEphemeral): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInStorageSession): Renamed from WebResourceLoadStatisticsStore::grantStorageAccess() to reduce confusion since we already have another function called WebResourceLoadStatisticsStore::grantStorageAccess(). (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * Scripts/webkit/messages.py: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::requestStorageAccess): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::requestStorageAccess): * WebProcess/WebPage/WebPage.h: Canonical link: https://commits.webkit.org/225092@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262024 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-21 20:22:39 +00:00
bool shouldPreserveUserGesture = result.wasGranted == StorageAccessWasGranted::Yes || result.promptWasShown == StorageAccessPromptWasShown::No;
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
if (shouldPreserveUserGesture) {
m_document.eventLoop().queueMicrotask([this, weakThis] {
if (weakThis)
enableTemporaryTimeUserGesture();
MicrotaskQueue should be accessed via EventLoop https://bugs.webkit.org/show_bug.cgi?id=204397 Reviewed by Antti Koivisto. This patch refactors the existing code so that a microtask is always queued via EventLoopTaskGroup. It preserves all other (broken) semantics and behavior like all origins sharing a single microtask queue. The singleton MicrotaskQueue for the main thread has been moved from MicrotaskQueue::mainThreadQueue to WindowEventLoop, and an instance of MicrotaskQueue for each worker has been moved from WorkerGlobalScope to WorkerEventLoop. * animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): * animation/WebAnimation.cpp: (WebCore::WebAnimation::updateFinishedState): * bindings/js/JSDOMGlobalObjectTask.cpp: (WebCore::JSGlobalObjectTask::JSGlobalObjectTask): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. * bindings/js/JSDOMWindowBase.h: * bindings/js/JSExecState.cpp: (WebCore::JSExecState::didLeaveScriptContext): * bindings/js/JSRemoteDOMWindowBase.cpp: * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. * bindings/js/JSWorkerGlobalScopeBase.h: * bindings/js/JSWorkletGlobalScopeBase.cpp: * bindings/js/JSWorkletGlobalScopeBase.h: * dom/CustomElementReactionQueue.cpp: (WebCore::BackupElementQueueMicrotask): Deleted. (WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue): (WebCore::CustomElementReactionQueue::ensureBackupQueue): * dom/CustomElementReactionQueue.h: * dom/Document.cpp: (WebCore::Document::finishedParsing): * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): * dom/EventLoop.cpp: (WebCore::EventLoop::queueMicrotask): Added. (WebCore::EventLoop::performMicrotaskCheckpoint): Added. (WebCore::EventLoopTaskGroup::queueMicrotaskCallback): Added. (WebCore::EventLoopTaskGroup::queueMicrotask): Added. (WebCore::EventLoopTaskGroup::performMicrotaskCheckpoint): Added. * dom/EventLoop.h: (WebCore::EventLoopTaskGroup::microtaskQueue): * dom/Microtasks.cpp: (WebCore::MicrotaskQueue::mainThreadQueue): Deleted. (WebCore::MicrotaskQueue::contextQueue): Deleted. * dom/Microtasks.h: * dom/MutationObserver.cpp: (WebCore::MutationObserverMicrotask): Deleted. (WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Made this a member function so that it can call notifyMutationObservers in its lambda. (WebCore::MutationObserver::enqueueMutationRecord): (WebCore::MutationObserver::enqueueSlotChangeEvent): (WebCore::MutationObserver::setHasTransientRegistration): * dom/MutationObserver.h: * dom/MutationObserverRegistration.cpp: (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): * dom/WindowEventLoop.cpp: (WebCore::WindowEventLoop::microtaskQueue): * dom/WindowEventLoop.h: * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): * html/parser/HTMLScriptRunner.cpp: (WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent): (WebCore::HTMLScriptRunner::runScript): * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::recordCanvasAction): * testing/Internals.cpp: (WebCore::Internals::queueMicroTask): * workers/WorkerEventLoop.cpp: (WebCore::WorkerEventLoop::~WorkerEventLoop): (WebCore::WorkerEventLoop::microtaskQueue): (WebCore::WorkerEventLoop::clearMicrotaskQueue): * workers/WorkerEventLoop.h: * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): (WebCore::WorkerGlobalScope::prepareForTermination): * workers/WorkerGlobalScope.h: (WebCore::WorkerGlobalScope::microtaskQueue const): Deleted. Canonical link: https://commits.webkit.org/217704@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252723 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-11-21 01:47:56 +00:00
});
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
}
Storage Access API: Allow configurable storage access scope https://bugs.webkit.org/show_bug.cgi?id=212114 <rdar://problem/63423063> Reviewed by Alex Christensen. The scope of storage access as per-frame or per-page was discussed in the standards process here: https://github.com/privacycg/storage-access/issues/3 The decision was to have per-page storage access by default. Recent feedback from Google and conversation with Mozilla suggest that we might want to support the caller choosing the scope. This patch adds support for different scope configurations while keeping the existing default as per-frame. A later patch will switch the default and add test cases for per-page scope. Source/WebCore: A new struct is added WebCore::RequestStorageAccessResult which carries full information about the storage access request result. A new enum is added WebCore::StorageAccessScope to encode per-frame and per-page access. No new tests. No changed functionality. Tests already exist. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): * dom/DocumentStorageAccess.h: (WebCore::RequestStorageAccessResult::encode const): (WebCore::RequestStorageAccessResult::decode): * page/ChromeClient.h: (WebCore::ChromeClient::requestStorageAccess): Source/WebKit: Most of the changes is piping through the new enum WebCore::StorageAccessScope from the call side to encode per-frame and per-page access, and piping through the new struct WebCore::RequestStorageAccessResult on the return side which carries full information about the storage access request result. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::CompletionHandler<void): * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessEphemeral): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInStorageSession): Renamed from WebResourceLoadStatisticsStore::grantStorageAccess() to reduce confusion since we already have another function called WebResourceLoadStatisticsStore::grantStorageAccess(). (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * Scripts/webkit/messages.py: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::requestStorageAccess): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::requestStorageAccess): * WebProcess/WebPage/WebPage.h: Canonical link: https://commits.webkit.org/225092@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262024 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-21 20:22:39 +00:00
if (result.wasGranted == StorageAccessWasGranted::Yes)
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
promise->resolve();
Nullptr crash in Page::sessionID() via WebKit::WebFrameLoaderClient::detachedFromParent2() https://bugs.webkit.org/show_bug.cgi?id=201625 Reviewed by Ryosuke Niwa. This is based on a patch from Ryosuke Niwa. Source/WebCore: Drop setHasFrameSpecificStorageAccess() in WebCore and call it from the WebKit layer instead. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): Deleted. * dom/DocumentStorageAccess.h: * loader/EmptyFrameLoaderClient.h: * loader/FrameLoaderClient.h: Source/WebKit: The crash was caused by WebFrameLoaderClient::sessionID() calling WebPage::sessionID() without checking the nullity of WebPage::m_page which can be null. Added a null check. Because passing a wrong session to RemoveStorageAccessForFrame could result in a leak, this patch also replaces m_hasFrameSpecificStorageAccess boolean with an optioanl struct which stores session ID, frame ID, and page ID even after WebCore::Frame or WebCore::Page had been cleared or before WebFrameLoaderClient::m_frame is set. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::sessionID const): (WebKit::WebFrameLoaderClient::setHasFrameSpecificStorageAccess): (WebKit::WebFrameLoaderClient::detachedFromParent2): (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument): * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: * WebProcess/WebPage/WebFrame.h: (WebKit::WebFrame::frameLoaderClient const): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::requestStorageAccess): Canonical link: https://commits.webkit.org/215315@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249748 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-09-11 00:54:05 +00:00
else {
Storage Access API: Allow configurable storage access scope https://bugs.webkit.org/show_bug.cgi?id=212114 <rdar://problem/63423063> Reviewed by Alex Christensen. The scope of storage access as per-frame or per-page was discussed in the standards process here: https://github.com/privacycg/storage-access/issues/3 The decision was to have per-page storage access by default. Recent feedback from Google and conversation with Mozilla suggest that we might want to support the caller choosing the scope. This patch adds support for different scope configurations while keeping the existing default as per-frame. A later patch will switch the default and add test cases for per-page scope. Source/WebCore: A new struct is added WebCore::RequestStorageAccessResult which carries full information about the storage access request result. A new enum is added WebCore::StorageAccessScope to encode per-frame and per-page access. No new tests. No changed functionality. Tests already exist. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): * dom/DocumentStorageAccess.h: (WebCore::RequestStorageAccessResult::encode const): (WebCore::RequestStorageAccessResult::decode): * page/ChromeClient.h: (WebCore::ChromeClient::requestStorageAccess): Source/WebKit: Most of the changes is piping through the new enum WebCore::StorageAccessScope from the call side to encode per-frame and per-page access, and piping through the new struct WebCore::RequestStorageAccessResult on the return side which carries full information about the storage access request result. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::CompletionHandler<void): * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessEphemeral): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInStorageSession): Renamed from WebResourceLoadStatisticsStore::grantStorageAccess() to reduce confusion since we already have another function called WebResourceLoadStatisticsStore::grantStorageAccess(). (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * Scripts/webkit/messages.py: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::requestStorageAccess): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::requestStorageAccess): * WebProcess/WebPage/WebPage.h: Canonical link: https://commits.webkit.org/225092@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262024 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-21 20:22:39 +00:00
if (result.promptWasShown == StorageAccessPromptWasShown::Yes)
setWasExplicitlyDeniedFrameSpecificStorageAccess();
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
promise->reject();
}
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
if (shouldPreserveUserGesture) {
m_document.eventLoop().queueMicrotask([this, weakThis] {
if (weakThis)
consumeTemporaryTimeUserGesture();
MicrotaskQueue should be accessed via EventLoop https://bugs.webkit.org/show_bug.cgi?id=204397 Reviewed by Antti Koivisto. This patch refactors the existing code so that a microtask is always queued via EventLoopTaskGroup. It preserves all other (broken) semantics and behavior like all origins sharing a single microtask queue. The singleton MicrotaskQueue for the main thread has been moved from MicrotaskQueue::mainThreadQueue to WindowEventLoop, and an instance of MicrotaskQueue for each worker has been moved from WorkerGlobalScope to WorkerEventLoop. * animation/DocumentTimeline.cpp: (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): * animation/WebAnimation.cpp: (WebCore::WebAnimation::updateFinishedState): * bindings/js/JSDOMGlobalObjectTask.cpp: (WebCore::JSGlobalObjectTask::JSGlobalObjectTask): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. * bindings/js/JSDOMWindowBase.h: * bindings/js/JSExecState.cpp: (WebCore::JSExecState::didLeaveScriptContext): * bindings/js/JSRemoteDOMWindowBase.cpp: * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. * bindings/js/JSWorkerGlobalScopeBase.h: * bindings/js/JSWorkletGlobalScopeBase.cpp: * bindings/js/JSWorkletGlobalScopeBase.h: * dom/CustomElementReactionQueue.cpp: (WebCore::BackupElementQueueMicrotask): Deleted. (WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue): (WebCore::CustomElementReactionQueue::ensureBackupQueue): * dom/CustomElementReactionQueue.h: * dom/Document.cpp: (WebCore::Document::finishedParsing): * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccess): * dom/EventLoop.cpp: (WebCore::EventLoop::queueMicrotask): Added. (WebCore::EventLoop::performMicrotaskCheckpoint): Added. (WebCore::EventLoopTaskGroup::queueMicrotaskCallback): Added. (WebCore::EventLoopTaskGroup::queueMicrotask): Added. (WebCore::EventLoopTaskGroup::performMicrotaskCheckpoint): Added. * dom/EventLoop.h: (WebCore::EventLoopTaskGroup::microtaskQueue): * dom/Microtasks.cpp: (WebCore::MicrotaskQueue::mainThreadQueue): Deleted. (WebCore::MicrotaskQueue::contextQueue): Deleted. * dom/Microtasks.h: * dom/MutationObserver.cpp: (WebCore::MutationObserverMicrotask): Deleted. (WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Made this a member function so that it can call notifyMutationObservers in its lambda. (WebCore::MutationObserver::enqueueMutationRecord): (WebCore::MutationObserver::enqueueSlotChangeEvent): (WebCore::MutationObserver::setHasTransientRegistration): * dom/MutationObserver.h: * dom/MutationObserverRegistration.cpp: (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): * dom/WindowEventLoop.cpp: (WebCore::WindowEventLoop::microtaskQueue): * dom/WindowEventLoop.h: * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): * html/parser/HTMLScriptRunner.cpp: (WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent): (WebCore::HTMLScriptRunner::runScript): * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::recordCanvasAction): * testing/Internals.cpp: (WebCore::Internals::queueMicroTask): * workers/WorkerEventLoop.cpp: (WebCore::WorkerEventLoop::~WorkerEventLoop): (WebCore::WorkerEventLoop::microtaskQueue): (WebCore::WorkerEventLoop::clearMicrotaskQueue): * workers/WorkerEventLoop.h: * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): (WebCore::WorkerGlobalScope::prepareForTermination): * workers/WorkerGlobalScope.h: (WebCore::WorkerGlobalScope::microtaskQueue const): Deleted. Canonical link: https://commits.webkit.org/217704@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252723 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-11-21 01:47:56 +00:00
});
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
}
});
}
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
void DocumentStorageAccess::requestStorageAccessForDocumentQuirk(Document& document, CompletionHandler<void(StorageAccessWasGranted)>&& completionHandler)
{
DocumentStorageAccess::from(document)->requestStorageAccessForDocumentQuirk(WTFMove(completionHandler));
}
void DocumentStorageAccess::requestStorageAccessForDocumentQuirk(CompletionHandler<void(StorageAccessWasGranted)>&& completionHandler)
{
auto quickCheckResult = requestStorageAccessQuickCheck();
if (quickCheckResult) {
*quickCheckResult == StorageAccessQuickResult::Grant ? completionHandler(StorageAccessWasGranted::Yes) : completionHandler(StorageAccessWasGranted::No);
return;
}
requestStorageAccessQuirk(RegistrableDomain::uncheckedCreateFromHost(m_document.securityOrigin().host()), WTFMove(completionHandler));
}
void DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk(Document& hostingDocument, RegistrableDomain&& requestingDomain, CompletionHandler<void(StorageAccessWasGranted)>&& completionHandler)
{
DocumentStorageAccess::from(hostingDocument)->requestStorageAccessForNonDocumentQuirk(WTFMove(requestingDomain), WTFMove(completionHandler));
}
void DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk(RegistrableDomain&& requestingDomain, CompletionHandler<void(StorageAccessWasGranted)>&& completionHandler)
{
Storage Access quirks should prompt up to twice if a user does not allow storage access https://bugs.webkit.org/show_bug.cgi?id=227099 <rdar://problem/79409843> Reviewed by John Wilander. Source/WebCore: Remove hasDeniedCrossPageStorageAccess functions. They are not needed now that we are aligning storage access quirks with non-quirks by using maxNumberOfTimesExplicitlyDeniedStorageAccess. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): * dom/Element.h: * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::hasHadUserInteraction const): (WebCore::ResourceLoadObserver::setHasDeniedCrossPageStorageAccess): Deleted. (WebCore::ResourceLoadObserver::hasDeniedCrossPageStorageAccess const): Deleted. * page/Quirks.cpp: (WebCore::isStorageAccessQuirkDomainAndElement): (WebCore::Quirks::requestStorageAccessAndHandleClick const): (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): (WebCore::hasDeniedCrossPageStorageAccess): Deleted. * page/Quirks.h: Source/WebKit: We should allow storage access prompts twice per document for quirks just like for non-quirk cases. Previously we were only presenting the quirk prompt once per web content process if the user denied. This patch removes this code and utilizes maxNumberOfTimesExplicitlyDeniedStorageAccess instead. * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasDeniedCrossPageStorageAccess const): Deleted. (WebKit::WebResourceLoadObserver::setHasDeniedCrossPageStorageAccess): Deleted. * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: Canonical link: https://commits.webkit.org/238929@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279004 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-17 20:03:07 +00:00
if (!m_document.frame() || !m_document.frame()->page() || !isAllowedToRequestStorageAccess()) {
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
completionHandler(StorageAccessWasGranted::No);
return;
}
requestStorageAccessQuirk(WTFMove(requestingDomain), WTFMove(completionHandler));
}
void DocumentStorageAccess::requestStorageAccessQuirk(RegistrableDomain&& requestingDomain, CompletionHandler<void(StorageAccessWasGranted)>&& completionHandler)
{
ASSERT(m_document.settings().storageAccessAPIEnabled());
RELEASE_ASSERT(m_document.frame() && m_document.frame()->page());
auto topFrameDomain = RegistrableDomain(m_document.topDocument().url());
Can't login to Microsoft Teams https://bugs.webkit.org/show_bug.cgi?id=218778 <rdar://problem/36331568> Reviewed by John Wilander. This is a temporary quirk to assist a high-traffic website while they complete the large task of migrating away from login flows that require third party cookies. This quirk will be removed when the site is updated. Create a quirk to call the Storage Access API on behalf of Microsoft. Source/WebCore: No new tests, site-specific quirk. * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): Pass additional parameters to be able to dispatch a synthetic click if storage access is granted. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithCrossPageStorageAccess): (WebCore::ResourceLoadObserver::hasCrossPageStorageAccess const): Store domains in the web process to avoid async calls to the network process. (WebCore::isMicrosoftLoginElement): (WebCore::isMicrosoftDomain): * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the quirk. * page/Quirks.h: * platform/network/NetworkStorageSession.cpp: (WebCore::NetworkStorageSession::setDomainsWithCrossPageStorageAccess): (WebCore::NetworkStorageSession::grantCrossPageStorageAccess): (WebCore::NetworkStorageSession::hasStorageAccess const): (WebCore::NetworkStorageSession::grantStorageAccess): (WebCore::NetworkStorageSession::removeAllStorageAccess): (WebCore::NetworkStorageSession::storageAccessQuirks): (WebCore::NetworkStorageSession::canRequestStorageAccessForLoginPurposesWithoutPriorUserInteraction): (WebCore::NetworkStorageSession::loginDomainForFirstParty): (WebCore::NetworkStorageSession::mapToTopDomain): The user might go directly to login.live.com to sign in to Microsoft Teams, but may not have seen the Storage Access prompt. In this case, we should map live.com to microsoft.com and request storage access for microsoftonline.com under microsoft.com. Since login.live.com is used for other Microsoft login flows besides Teams, a user may have to grant storage access to microsoftonline.com even when it is not needed to complete the login. But this guarantees they will always be successfully logged into all Microsoft accounts. * platform/network/NetworkStorageSession.h: In order for the user to stay logged in between sessions, we should update NetworkStorageSession to grant storage access based on values stored in the ITP database for quirk domains. Source/WebKit: * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): Relax the requirement for user interaction for a specific third party needing cookies for authentication purposes. (WebKit::ResourceLoadStatisticsDatabaseStore::clear): (WebKit::ResourceLoadStatisticsDatabaseStore::cookieAccess): Relax the requirement for user interaction for a specific third party needing cookies for authentication purposes. (WebKit::ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess const): (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking): * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::clear): (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral): Relax user interaction for reasons above. (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: (WebKit::RegistrableDomainsToBlockCookiesFor::isolatedCopy const): * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithCrossPageStorageAccess): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithCrossPageStorageAccess): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasCrossPageStorageAccess const): (WebKit::WebResourceLoadObserver::setDomainsWithCrossPageStorageAccess): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithCrossPageStorageAccess): Add quirk'd domains to have page level storage access to be able to use document.cookie. * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Forward domains with the storage access quirk to the web process to avoid an async call to the network process. Canonical link: https://commits.webkit.org/231572@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269807 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-11-14 00:55:05 +00:00
m_document.frame()->page()->chrome().client().requestStorageAccess(WTFMove(requestingDomain), WTFMove(topFrameDomain), *m_document.frame(), m_storageAccessScope, [this, weakThis = makeWeakPtr(*this), completionHandler = WTFMove(completionHandler)] (RequestStorageAccessResult result) mutable {
Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves https://bugs.webkit.org/show_bug.cgi?id=213418 <rdar://problem/64549429> Reviewed by Alex Christensen. Source/WebCore: No new tests. This patch adds quirks for specific websites. The general functionality that's touched has tests under LayoutTests/http/tests/storageAccess/. * dom/Document.h: (WebCore::Document::isTopDocument const): New convenience function. (WebCore::Document::setUserDidInteractWithPage): Use of the new convenience function. (WebCore::Document::userDidInteractWithPage const): Use of the new convenience function. * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::hasStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::hasStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccessQuickCheck): (WebCore::DocumentStorageAccess::requestStorageAccessForDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessForNonDocumentQuirk): (WebCore::DocumentStorageAccess::requestStorageAccessQuirk): These functions are split up to allow quirks to call directly into the implementation of the Storage Access API without the JavaScript promise that goes with the web API. It also allows for quirks to call the API without an iframe document. * dom/DocumentStorageAccess.h: * dom/Element.cpp: (WebCore::Element::dispatchMouseEvent): The two existing quirks are for click events. * loader/ResourceLoadObserver.h: (WebCore::ResourceLoadObserver::setDomainsWithUserInteraction): (WebCore::ResourceLoadObserver::hasHadUserInteraction const): These two new functions allow the Storage Access API quirks to synchronously check if it's worth calling the API or not. If there has been no user interaction for the requesting domain, there is no need to call the API. * page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const): This is the new quirks function, hiding the specifics of certain elements clicked and for which websites. It also calls the Storage Access API. * page/Quirks.h: Source/WebKit: These changes are for forwarding ITP's knowledge of user interaction for specific quirks domains to the WebKit::WebProcessPool where it in turn can be distributed to all existing and new Web Content processes. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::needsUserInteractionQuirk const): (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * Shared/WebProcessDataStoreParameters.h: (WebKit::WebProcessDataStoreParameters::encode const): (WebKit::WebProcessDataStoreParameters::decode): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::setDomainsWithUserInteraction): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::webProcessDataStoreParameters): (WebKit::WebProcessPool::setDomainsWithUserInteraction): * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: (WebKit::WebResourceLoadObserver::hasHadUserInteraction const): * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::setWebsiteDataStoreParameters): (WebKit::WebProcess::setDomainsWithUserInteraction): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: Canonical link: https://commits.webkit.org/226289@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-23 04:13:24 +00:00
if (!weakThis)
return;
// Consume the user gesture only if the user explicitly denied access.
bool shouldPreserveUserGesture = result.wasGranted == StorageAccessWasGranted::Yes || result.promptWasShown == StorageAccessPromptWasShown::No;
if (shouldPreserveUserGesture) {
m_document.eventLoop().queueMicrotask([this, weakThis] {
if (weakThis)
enableTemporaryTimeUserGesture();
});
}
if (result.wasGranted == StorageAccessWasGranted::Yes)
completionHandler(StorageAccessWasGranted::Yes);
else {
if (result.promptWasShown == StorageAccessPromptWasShown::Yes)
setWasExplicitlyDeniedFrameSpecificStorageAccess();
completionHandler(StorageAccessWasGranted::No);
}
if (shouldPreserveUserGesture) {
m_document.eventLoop().queueMicrotask([this, weakThis] {
if (weakThis)
consumeTemporaryTimeUserGesture();
});
}
});
}
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
void DocumentStorageAccess::enableTemporaryTimeUserGesture()
{
[WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part https://bugs.webkit.org/show_bug.cgi?id=200620 Source/JavaScriptCore: Reviewed by Geoff Garen. * API/JSCallbackObject.h: (JSC::JSCallbackObjectData::setPrivateProperty): * API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject<Parent>::JSCallbackObject): * API/JSClassRef.cpp: (OpaqueJSClassContextData::OpaqueJSClassContextData): (OpaqueJSClass::contextData): * API/JSMarkingConstraintPrivate.cpp: (JSContextGroupAddMarkingConstraint): * API/JSWrapperMap.mm: (-[JSWrapperMap initWithGlobalContextRef:]): * API/ObjCCallbackFunction.mm: (ArgumentTypeDelegate::typeInteger): (ArgumentTypeDelegate::typeDouble): (ArgumentTypeDelegate::typeBool): (ArgumentTypeDelegate::typeId): (ArgumentTypeDelegate::typeOfClass): (ArgumentTypeDelegate::typeStruct): (ResultTypeDelegate::typeInteger): (ResultTypeDelegate::typeDouble): (ResultTypeDelegate::typeBool): (ResultTypeDelegate::typeVoid): (ResultTypeDelegate::typeId): (ResultTypeDelegate::typeOfClass): (ResultTypeDelegate::typeBlock): (ResultTypeDelegate::typeStruct): (objCCallbackFunctionForInvocation): * API/glib/JSCContext.cpp: (jscContextSetVirtualMachine): * API/glib/JSCWrapperMap.cpp: (JSC::WrapperMap::WrapperMap): * assembler/ProbeStack.cpp: (JSC::Probe::Stack::ensurePageFor): * b3/B3LowerToAir.cpp: * b3/B3Procedure.cpp: (JSC::B3::Procedure::Procedure): (JSC::B3::Procedure::dominators): (JSC::B3::Procedure::naturalLoops): (JSC::B3::Procedure::backwardsCFG): (JSC::B3::Procedure::backwardsDominators): (JSC::B3::Procedure::addDataSection): * b3/air/AirCode.cpp: (JSC::B3::Air::Code::cCallSpecial): * b3/air/AirGenerate.cpp: (JSC::B3::Air::prepareForGeneration): * b3/air/testair.cpp: * b3/testb3.h: (compileProc): * bytecode/AccessCase.cpp: (JSC::AccessCase::generateImpl): * bytecode/AccessCaseSnippetParams.cpp: * bytecode/BytecodeBasicBlock.cpp: (JSC::BytecodeBasicBlock::computeImpl): * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::setFrameShuffleData): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::ensureJITDataSlow): (JSC::CodeBlock::setCalleeSaveRegisters): (JSC::CodeBlock::ensureCatchLivenessIsComputedForBytecodeOffsetSlow): * bytecode/CodeBlock.h: (JSC::CodeBlock::createRareDataIfNecessary): * bytecode/DFGExitProfile.cpp: (JSC::DFG::ExitProfile::add): * bytecode/DeferredCompilationCallback.cpp: (JSC::DeferredCompilationCallback::ensureDeferredSourceDump): * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback): * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::operator=): * bytecode/LazyOperandValueProfile.cpp: (JSC::CompressedLazyOperandValueProfileHolder::add): * bytecode/PolyProtoAccessChain.h: (JSC::PolyProtoAccessChain::clone): * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate): * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::computeForStubInfo): * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::operator=): * bytecode/RecordedStatuses.cpp: (JSC::RecordedStatuses::addCallLinkStatus): (JSC::RecordedStatuses::addGetByIdStatus): (JSC::RecordedStatuses::addPutByIdStatus): (JSC::RecordedStatuses::addInByIdStatus): * bytecode/StructureStubClearingWatchpoint.cpp: (JSC::WatchpointsOnStructureStubInfo::ensureReferenceAndAddWatchpoint): * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::addAccessCase): * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::livenessAnalysisSlow): * bytecode/UnlinkedCodeBlock.h: (JSC::UnlinkedCodeBlock::createRareDataIfNecessary): * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::ensureRareDataSlow): * bytecompiler/BytecodeGenerator.h: (JSC::BytecodeGenerator::generate): * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::Graph): (JSC::DFG::Graph::livenessFor): (JSC::DFG::Graph::killsFor): (JSC::DFG::Graph::ensureCPSCFG): (JSC::DFG::Graph::ensureCPSDominators): (JSC::DFG::Graph::ensureSSADominators): (JSC::DFG::Graph::ensureCPSNaturalLoops): (JSC::DFG::Graph::ensureSSANaturalLoops): (JSC::DFG::Graph::ensureBackwardsCFG): (JSC::DFG::Graph::ensureBackwardsDominators): (JSC::DFG::Graph::ensureControlEquivalenceAnalysis): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::JITCompiler): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): (JSC::DFG::JITCompiler::addressOfDoubleConstant): * dfg/DFGLivenessAnalysisPhase.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::compileInThreadImpl): * dfg/DFGSSAConversionPhase.cpp: (JSC::DFG::SSAConversionPhase::run): * dfg/DFGSlowPathGenerator.h: (JSC::DFG::slowPathCall): (JSC::DFG::slowPathMove): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::emitAllocateRawObject): (JSC::DFG::SpeculativeJIT::arrayify): (JSC::DFG::SpeculativeJIT::compileGetByValOnString): (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments): (JSC::DFG::SpeculativeJIT::compileArraySlice): (JSC::DFG::SpeculativeJIT::emitStructureCheck): (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): * dfg/DFGStoreBarrierInsertionPhase.cpp: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::createNewThread): * disassembler/Disassembler.cpp: (JSC::disassembleAsynchronously): * ftl/FTLAbstractHeap.cpp: (JSC::FTL::IndexedAbstractHeap::atSlow): * ftl/FTLCompile.cpp: (JSC::FTL::compile): * ftl/FTLFail.cpp: (JSC::FTL::fail): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lazySlowPath): * ftl/FTLState.cpp: (JSC::FTL::State::State): * heap/CompleteSubspace.cpp: (JSC::CompleteSubspace::allocatorForSlow): * heap/Heap.cpp: (JSC::Heap::Heap): (JSC::Heap::protectedObjectTypeCounts): (JSC::Heap::objectTypeCounts): (JSC::Heap::addCoreConstraints): * heap/HeapInlines.h: * heap/HeapSnapshotBuilder.cpp: (JSC::HeapSnapshotBuilder::buildSnapshot): * heap/IsoCellSet.cpp: (JSC::IsoCellSet::addSlow): * heap/IsoSubspace.cpp: (JSC::IsoSubspace::IsoSubspace): * heap/MarkingConstraintSet.cpp: (JSC::MarkingConstraintSet::add): * inspector/JSGlobalObjectConsoleClient.cpp: (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel): (Inspector::JSGlobalObjectConsoleClient::profile): (Inspector::JSGlobalObjectConsoleClient::profileEnd): (Inspector::JSGlobalObjectConsoleClient::warnUnimplemented): * inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController): (Inspector::JSGlobalObjectInspectorController::reportAPIException): (Inspector::JSGlobalObjectInspectorController::ensureInspectorAgent): (Inspector::JSGlobalObjectInspectorController::ensureDebuggerAgent): (Inspector::JSGlobalObjectInspectorController::createLazyAgents): * inspector/agents/InspectorAgent.cpp: (Inspector::InspectorAgent::InspectorAgent): * inspector/agents/InspectorConsoleAgent.cpp: (Inspector::InspectorConsoleAgent::InspectorConsoleAgent): (Inspector::InspectorConsoleAgent::startTiming): (Inspector::InspectorConsoleAgent::logTiming): (Inspector::InspectorConsoleAgent::stopTiming): (Inspector::InspectorConsoleAgent::count): (Inspector::InspectorConsoleAgent::countReset): * inspector/agents/InspectorDebuggerAgent.cpp: (Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent): * inspector/agents/InspectorHeapAgent.cpp: (Inspector::InspectorHeapAgent::InspectorHeapAgent): * inspector/agents/InspectorScriptProfilerAgent.cpp: (Inspector::InspectorScriptProfilerAgent::InspectorScriptProfilerAgent): * inspector/agents/InspectorTargetAgent.cpp: (Inspector::InspectorTargetAgent::InspectorTargetAgent): * inspector/agents/JSGlobalObjectDebuggerAgent.cpp: (Inspector::JSGlobalObjectDebuggerAgent::breakpointActionLog): * inspector/agents/JSGlobalObjectRuntimeAgent.cpp: (Inspector::JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent): * inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp: (Inspector::RemoteInspectorSocketEndpoint::createClient): * inspector/remote/socket/RemoteInspectorSocketEndpoint.h: * inspector/scripts/codegen/objc_generator_templates.py: * inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result: * inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result: * inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result: * inspector/scripts/tests/generic/expected/domain-availability.json-result: * inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result: * inspector/scripts/tests/generic/expected/enum-values.json-result: * inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result: * inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result: * jit/JIT.cpp: (JSC::JIT::compileWithoutLinking): (JSC::JIT::link): * jit/JITThunks.cpp: (JSC::JITThunks::JITThunks): * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jsc.cpp: (runJSC): * parser/Parser.cpp: (JSC::Parser<LexerType>::Parser): * parser/Parser.h: (JSC::Scope::pushLabel): (JSC::Parser<LexerType>::parse): * parser/ParserArena.h: (JSC::ParserArena::identifierArena): * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::executionCounterFor): * runtime/Error.cpp: (JSC::getStackTrace): * runtime/FunctionExecutable.cpp: (JSC::FunctionExecutable::ensureRareDataSlow): * runtime/FunctionRareData.h: (JSC::FunctionRareData::createAllocationProfileClearingWatchpoint): * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint): * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::createRareDataIfNeeded): * runtime/JSRunLoopTimer.cpp: (JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData): (JSC::JSRunLoopTimer::Manager::registerVM): * runtime/PropertyMapHashTable.h: (JSC::PropertyTable::addDeletedOffset): * runtime/PropertyTable.cpp: (JSC::PropertyTable::PropertyTable): * runtime/RegExp.cpp: (JSC::RegExp::finishCreation): * runtime/RegExp.h: * runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::ensureTemplateObjectMapImpl): * runtime/Structure.cpp: (JSC::Structure::ensurePropertyReplacementWatchpointSet): * runtime/StructureRareData.cpp: (JSC::StructureRareData::setObjectToStringValue): * runtime/SymbolTable.cpp: (JSC::SymbolTable::localToEntry): (JSC::SymbolTable::cloneScopePart): (JSC::SymbolTable::prepareForTypeProfiling): (JSC::SymbolTable::setRareDataCodeBlock): * runtime/TypeSet.cpp: (JSC::StructureShape::propertyHash): * runtime/VM.cpp: (JSC::VM::VM): (JSC::VM::ensureHeapProfiler): (JSC::VM::enableTypeProfiler): (JSC::VM::enableControlFlowProfiler): (JSC::VM::queueMicrotask): (JSC::VM::ensureShadowChicken): * wasm/WasmAirIRGenerator.cpp: (JSC::Wasm::AirIRGenerator::emitPatchpoint): (JSC::Wasm::AirIRGenerator::emitCheck): (JSC::Wasm::parseAndCompileAir): * wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::parseAndCompile): * wasm/WasmBBQPlan.cpp: (JSC::Wasm::BBQPlan::complete): * wasm/WasmOMGPlan.cpp: (JSC::Wasm::OMGPlan::work): * wasm/WasmWorklist.cpp: (JSC::Wasm::Worklist::Worklist): * wasm/js/JSToWasm.cpp: (JSC::Wasm::createJSToWasmWrapper): * yarr/YarrInterpreter.cpp: (JSC::Yarr::ByteCompiler::compile): (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): (JSC::Yarr::ByteCompiler::regexBegin): * yarr/YarrJIT.cpp: (JSC::Yarr::YarrGenerator::compile): * yarr/YarrPattern.cpp: (JSC::Yarr::CharacterClassConstructor::charClass): (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): (JSC::Yarr::YarrPatternConstructor::resetForReparsing): (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): (JSC::Yarr::YarrPatternConstructor::copyDisjunction): (JSC::Yarr::anycharCreate): * yarr/YarrPattern.h: (JSC::Yarr::PatternDisjunction::addNewAlternative): * yarr/create_regex_tables: * yarr/generateYarrUnicodePropertyTables.py: Source/WebCore: Reviewed by Geoff Garen. * Modules/applicationmanifest/ApplicationManifestParser.cpp: (WebCore::ApplicationManifestParser::logDeveloperWarning): * Modules/beacon/NavigatorBeacon.cpp: (WebCore::NavigatorBeacon::from): * Modules/cache/DOMWindowCaches.cpp: (WebCore::DOMWindowCaches::from): * Modules/cache/WorkerGlobalScopeCaches.cpp: (WebCore::WorkerGlobalScopeCaches::from): * Modules/credentialmanagement/NavigatorCredentials.cpp: (WebCore::NavigatorCredentials::from): * Modules/encryptedmedia/InitDataRegistry.cpp: (WebCore::InitDataRegistry::extractPsshBoxesFromCenc): * Modules/encryptedmedia/legacy/LegacyCDM.cpp: (WebCore::LegacyCDM::create): * Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp: (WebCore::LegacyCDMPrivateClearKey::createSession): * Modules/fetch/FetchBodyOwner.cpp: (WebCore::FetchBodyOwner::loadBlob): * Modules/fetch/FetchResponse.cpp: (WebCore::FetchResponse::fetch): (WebCore::FetchResponse::BodyLoader::start): * Modules/gamepad/NavigatorGamepad.cpp: (WebCore::NavigatorGamepad::from): * Modules/geolocation/GeolocationController.cpp: (WebCore::provideGeolocationTo): * Modules/geolocation/NavigatorGeolocation.cpp: (WebCore::NavigatorGeolocation::from): * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: (WebCore::DOMWindowIndexedDatabase::from): * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::index): * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::objectStore): (WebCore::IDBTransaction::createObjectStore): (WebCore::IDBTransaction::createIndex): * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp: (WebCore::WorkerGlobalScopeIndexedDatabase::from): * Modules/indexeddb/client/IDBConnectionToServer.cpp: (WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer): * Modules/indexeddb/client/TransactionOperation.cpp: (WebCore::IDBClient::TransactionOperation::TransactionOperation): * Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::getOrCreateUniqueIDBDatabase): (WebCore::IDBServer::IDBServer::createBackingStore): (WebCore::IDBServer::IDBServer::ensureQuotaUser): * Modules/indexeddb/server/IndexValueStore.cpp: (WebCore::IDBServer::IndexValueStore::addRecord): * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp: (WebCore::IDBServer::MemoryBackingStoreTransaction::create): (WebCore::IDBServer::MemoryBackingStoreTransaction::MemoryBackingStoreTransaction): (WebCore::IDBServer::MemoryBackingStoreTransaction::recordValueChanged): * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: (WebCore::IDBServer::MemoryIDBBackingStore::create): (WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::MemoryIDBBackingStore::setDatabaseInfo): * Modules/indexeddb/server/MemoryIndex.cpp: (WebCore::IDBServer::MemoryIndex::putIndexKey): (WebCore::IDBServer::MemoryIndex::maybeOpenCursor): * Modules/indexeddb/server/MemoryObjectStore.cpp: (WebCore::IDBServer::MemoryObjectStore::addRecord): (WebCore::IDBServer::MemoryObjectStore::maybeOpenCursor): * Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::beginTransaction): (WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatement): * Modules/indexeddb/server/SQLiteIDBCursor.cpp: (WebCore::IDBServer::SQLiteIDBCursor::maybeCreate): (WebCore::IDBServer::SQLiteIDBCursor::maybeCreateBackingStoreCursor): (WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement): (WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord): * Modules/indexeddb/server/SQLiteIDBTransaction.cpp: (WebCore::IDBServer::SQLiteIDBTransaction::begin): * Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore): (WebCore::IDBServer::UniqueIDBDatabase::didPerformAbortTransaction): * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp: (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction): * Modules/indexeddb/shared/IDBRequestData.cpp: (WebCore::IDBRequestData::IDBRequestData): (WebCore::IDBRequestData::isolatedCopy): * Modules/indexeddb/shared/IDBRequestData.h: (WebCore::IDBRequestData::decode): * Modules/indexeddb/shared/IDBResultData.cpp: (WebCore::IDBResultData::IDBResultData): (WebCore::IDBResultData::isolatedCopy): (WebCore::IDBResultData::openDatabaseSuccess): (WebCore::IDBResultData::openDatabaseUpgradeNeeded): (WebCore::IDBResultData::deleteDatabaseSuccess): (WebCore::IDBResultData::putOrAddSuccess): (WebCore::IDBResultData::getRecordSuccess): (WebCore::IDBResultData::getAllRecordsSuccess): (WebCore::IDBResultData::openCursorSuccess): (WebCore::IDBResultData::iterateCursorSuccess): * Modules/indexeddb/shared/IDBResultData.h: (WebCore::IDBResultData::decode): * Modules/indexeddb/shared/IDBTransactionInfo.cpp: (WebCore::IDBTransactionInfo::versionChange): (WebCore::IDBTransactionInfo::IDBTransactionInfo): (WebCore::IDBTransactionInfo::isolatedCopy): * Modules/indexeddb/shared/IDBTransactionInfo.h: (WebCore::IDBTransactionInfo::decode): * Modules/indexeddb/shared/InProcessIDBServer.cpp: (WebCore::InProcessIDBServer::quotaManager): * Modules/mediacapabilities/NavigatorMediaCapabilities.cpp: (WebCore::NavigatorMediaCapabilities::from): * Modules/mediasession/WebMediaSessionManager.cpp: (WebCore::WebMediaSessionManager::mockPicker): (WebCore::WebMediaSessionManager::addPlaybackTargetPickerClient): * Modules/mediasource/MediaSource.cpp: (WebCore::MediaSource::buffered const): (WebCore::MediaSource::setLiveSeekableRange): * Modules/mediastream/NavigatorMediaDevices.cpp: (WebCore::NavigatorMediaDevices::from): * Modules/mediastream/UserMediaController.cpp: (WebCore::provideUserMediaTo): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::channelEvent): * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::addRemoteTrack): (WebCore::LibWebRTCMediaEndpoint::collectTransceivers): (WebCore::LibWebRTCMediaEndpoint::newTransceiver): (WebCore::LibWebRTCMediaEndpoint::createTransceiverBackends): (WebCore::LibWebRTCMediaEndpoint::transceiverBackendFromSender): (WebCore::LibWebRTCMediaEndpoint::createDataChannel): * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: (WebCore::createLibWebRTCPeerConnectionBackend): (WebCore::LibWebRTCPeerConnectionBackend::videoReceiver): (WebCore::LibWebRTCPeerConnectionBackend::audioReceiver): (WebCore::LibWebRTCPeerConnectionBackend::addTrack): (WebCore::LibWebRTCPeerConnectionBackend::addTransceiver): * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp: (WebCore::LibWebRTCRtpSenderBackend::createDTMFBackend): * Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp: (WebCore::LibWebRTCRtpTransceiverBackend::createReceiverBackend): (WebCore::LibWebRTCRtpTransceiverBackend::createSenderBackend): * Modules/notifications/Notification.cpp: (WebCore::Notification::Notification): * Modules/notifications/NotificationController.cpp: (WebCore::provideNotification): * Modules/quota/DOMWindowQuota.cpp: (WebCore::DOMWindowQuota::from): * Modules/quota/NavigatorStorageQuota.cpp: (WebCore::NavigatorStorageQuota::from): * Modules/quota/WorkerNavigatorStorageQuota.cpp: (WebCore::WorkerNavigatorStorageQuota::from): * Modules/speech/DOMWindowSpeechSynthesis.cpp: (WebCore::DOMWindowSpeechSynthesis::from): * Modules/speech/SpeechSynthesis.cpp: (WebCore::SpeechSynthesis::ensurePlatformSpeechSynthesizer): * Modules/webaudio/AsyncAudioDecoder.cpp: (WebCore::AsyncAudioDecoder::decodeAsync): * Modules/webaudio/AudioBasicInspectorNode.cpp: (WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode): * Modules/webaudio/AudioBasicProcessorNode.cpp: (WebCore::AudioBasicProcessorNode::AudioBasicProcessorNode): * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::AudioBufferSourceNode): * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::AudioContext): (WebCore::AudioContext::decodeAudioData): * Modules/webaudio/AudioDestinationNode.cpp: (WebCore::AudioDestinationNode::AudioDestinationNode): * Modules/webaudio/BiquadFilterNode.cpp: (WebCore::BiquadFilterNode::BiquadFilterNode): * Modules/webaudio/BiquadProcessor.cpp: (WebCore::BiquadProcessor::createKernel): (WebCore::BiquadProcessor::getFrequencyResponse): * Modules/webaudio/ChannelMergerNode.cpp: (WebCore::ChannelMergerNode::ChannelMergerNode): * Modules/webaudio/ChannelSplitterNode.cpp: (WebCore::ChannelSplitterNode::ChannelSplitterNode): * Modules/webaudio/ConvolverNode.cpp: (WebCore::ConvolverNode::ConvolverNode): (WebCore::ConvolverNode::setBuffer): * Modules/webaudio/DelayNode.cpp: (WebCore::DelayNode::DelayNode): * Modules/webaudio/DelayProcessor.cpp: (WebCore::DelayProcessor::createKernel): * Modules/webaudio/DynamicsCompressorNode.cpp: (WebCore::DynamicsCompressorNode::DynamicsCompressorNode): (WebCore::DynamicsCompressorNode::initialize): * Modules/webaudio/GainNode.cpp: (WebCore::GainNode::GainNode): * Modules/webaudio/MediaElementAudioSourceNode.cpp: (WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode): (WebCore::MediaElementAudioSourceNode::setFormat): * Modules/webaudio/MediaStreamAudioSourceNode.cpp: (WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode): (WebCore::MediaStreamAudioSourceNode::setFormat): * Modules/webaudio/OscillatorNode.cpp: (WebCore::OscillatorNode::OscillatorNode): * Modules/webaudio/PannerNode.cpp: (WebCore::PannerNode::PannerNode): * Modules/webaudio/PeriodicWave.cpp: (WebCore::PeriodicWave::createBandLimitedTables): * Modules/webaudio/RealtimeAnalyser.cpp: (WebCore::RealtimeAnalyser::RealtimeAnalyser): (WebCore::RealtimeAnalyser::setFftSize): * Modules/webaudio/ScriptProcessorNode.cpp: (WebCore::ScriptProcessorNode::ScriptProcessorNode): * Modules/webaudio/WaveShaperDSPKernel.cpp: (WebCore::WaveShaperDSPKernel::lazyInitializeOversampling): * Modules/webaudio/WaveShaperNode.cpp: (WebCore::WaveShaperNode::WaveShaperNode): * Modules/webaudio/WaveShaperProcessor.cpp: (WebCore::WaveShaperProcessor::createKernel): * Modules/webauthn/fido/FidoHidMessage.cpp: (fido::FidoHidMessage::FidoHidMessage): * Modules/webauthn/fido/FidoHidPacket.cpp: (fido::FidoHidInitPacket::createFromSerializedData): (fido::FidoHidContinuationPacket::createFromSerializedData): * Modules/webdatabase/Database.cpp: (WebCore::Database::openAndVerifyVersion): (WebCore::Database::close): (WebCore::Database::scheduleTransaction): (WebCore::Database::scheduleTransactionStep): (WebCore::Database::tableNames): * Modules/webdatabase/DatabaseThread.cpp: (WebCore::DatabaseThread::DatabaseThread): * Modules/webdatabase/DatabaseTracker.cpp: (WebCore::DatabaseTracker::addOpenDatabase): (WebCore::DatabaseTracker::recordCreatingDatabase): (WebCore::DatabaseTracker::recordDeletingDatabase): * Modules/webdatabase/SQLTransaction.cpp: (WebCore::SQLTransaction::executeSql): (WebCore::SQLTransaction::openTransactionAndPreflight): * Modules/webdriver/NavigatorWebDriver.cpp: (WebCore::NavigatorWebDriver::from): * Modules/webgpu/NavigatorGPU.cpp: (WebCore::NavigatorGPU::from): * Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h: * Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h: * Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: (WebCore::WHLSL::Metal::RenderFunctionDefinitionWriter::createEntryPointScaffolding): (WebCore::WHLSL::Metal::ComputeFunctionDefinitionWriter::createEntryPointScaffolding): * Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: (WebCore::WHLSL::Metal::TypeNamer::createNameNode): * Modules/webgpu/WHLSL/WHLSLChecker.cpp: (WebCore::WHLSL::Checker::assignConcreteType): (WebCore::WHLSL::Checker::assignType): (WebCore::WHLSL::Checker::forwardType): * Modules/webgpu/WHLSL/WHLSLParser.cpp: (WebCore::WHLSL::Parser::parseSemantic): * Modules/webgpu/WorkerNavigatorGPU.cpp: (WebCore::WorkerNavigatorGPU::from): * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp: (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData): (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount): (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake): (WebCore::ThreadableWebSocketChannelClientWrapper::didClose): (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError): (WebCore::ThreadableWebSocketChannelClientWrapper::didUpgradeURL): * Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::connect): (WebCore::WebSocketChannel::enqueueTextFrame): (WebCore::WebSocketChannel::enqueueRawFrame): (WebCore::WebSocketChannel::enqueueBlobFrame): (WebCore::WebSocketChannel::processOutgoingFrameQueue): * Modules/websockets/WebSocketDeflateFramer.cpp: (WebCore::WebSocketDeflateFramer::createExtensionProcessor): (WebCore::WebSocketDeflateFramer::enableDeflate): (WebCore::WebSocketDeflateFramer::deflate): (WebCore::WebSocketDeflateFramer::inflate): * Modules/websockets/WebSocketDeflater.cpp: (WebCore::WebSocketDeflater::WebSocketDeflater): (WebCore::WebSocketInflater::WebSocketInflater): * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize): * Modules/webvr/NavigatorWebVR.cpp: (WebCore::NavigatorWebVR::from): * accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates): * animation/WebAnimation.cpp: (WebCore::WebAnimation::updateFinishedState): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueTaskToEventLoop): * bindings/js/JSEventTargetCustom.cpp: (WebCore::jsEventTargetCast): * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop): * bindings/js/SerializedScriptValue.cpp: (WebCore::transferArrayBuffers): (WebCore::SerializedScriptValue::create): * bindings/js/SerializedScriptValue.h: (WebCore::SerializedScriptValue::decode): * bindings/js/WebCoreJSClientData.cpp: (WebCore::JSVMClientData::initNormalWorld): * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::initScript): * bridge/c/c_class.cpp: (JSC::Bindings::CClass::methodNamed const): (JSC::Bindings::CClass::fieldNamed const): * bridge/objc/objc_class.mm: (JSC::Bindings::ObjcClass::methodNamed const): (JSC::Bindings::ObjcClass::fieldNamed const): * bridge/objc/objc_runtime.mm: (JSC::Bindings::callObjCFallbackObject): * contentextensions/CombinedURLFilters.cpp: (WebCore::ContentExtensions::CombinedURLFilters::CombinedURLFilters): (WebCore::ContentExtensions::CombinedURLFilters::addPattern): * crypto/SubtleCrypto.cpp: (WebCore::normalizeCryptoAlgorithmParameters): (WebCore::crossThreadCopyImportParams): * css/CSSCalculationValue.cpp: (WebCore::determineCategory): * css/CSSDefaultStyleSheets.cpp: (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle): (WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle): * css/CSSFontFace.cpp: (WebCore::CSSFontFace::appendSources): * css/CSSFontFaceSet.cpp: (WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered): * css/CSSGroupingRule.cpp: (WebCore::CSSGroupingRule::cssRules const): * css/CSSImageGeneratorValue.cpp: (WebCore::CSSImageGeneratorValue::saveCachedImageForSize): * css/CSSKeyframesRule.cpp: (WebCore::CSSKeyframesRule::cssRules): * css/CSSStyleSheet.cpp: (WebCore::CSSStyleSheet::cssRules): * css/DOMCSSPaintWorklet.cpp: (WebCore::DOMCSSPaintWorklet::from): * css/DOMCSSRegisterCustomProperty.cpp: (WebCore::DOMCSSRegisterCustomProperty::from): * css/DocumentRuleSets.cpp: (WebCore::DocumentRuleSets::DocumentRuleSets): (WebCore::DocumentRuleSets::updateUserAgentMediaQueryStyleIfNeeded const): (WebCore::DocumentRuleSets::initializeUserStyle): (WebCore::makeRuleSet): (WebCore::DocumentRuleSets::resetAuthorStyle): (WebCore::ensureInvalidationRuleSets): * css/ElementRuleCollector.cpp: (WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot): * css/FontFace.cpp: (WebCore::populateFontFaceWithArrayBuffer): * css/PropertySetCSSStyleDeclaration.cpp: (WebCore::PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM): * css/RuleFeature.cpp: (WebCore::RuleFeatureSet::collectFeatures): (WebCore::RuleFeatureSet::add): * css/RuleSet.cpp: (WebCore::RuleSet::addToRuleSet): * css/StyleBuilderConverter.h: (WebCore::StyleBuilderConverter::convertTo100PercentMinusLength): * css/StyleBuilderCustom.h: (WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue): (WebCore::StyleBuilderCustom::applyInheritTextShadow): (WebCore::StyleBuilderCustom::applyInheritBoxShadow): (WebCore::StyleBuilderCustom::applyValueContent): * css/StyleProperties.cpp: (WebCore::MutableStyleProperties::ensureCSSStyleDeclaration): (WebCore::MutableStyleProperties::ensureInlineCSSStyleDeclaration): * css/StyleResolver.cpp: (WebCore::StyleResolver::cascadedPropertiesForRollback): * css/makeprop.pl: (generateFillLayerPropertyInheritValueSetter): (generateFillLayerPropertyValueSetter): * css/parser/CSSParserImpl.cpp: (WebCore::CSSParserImpl::CSSParserImpl): (WebCore::CSSParserImpl::parsePageSelector): (WebCore::CSSParserImpl::consumeMediaRule): (WebCore::CSSParserImpl::consumeSupportsRule): (WebCore::CSSParserImpl::consumeKeyframesRule): * css/parser/CSSParserSelector.cpp: (WebCore::CSSParserSelector::parsePagePseudoSelector): (WebCore::CSSParserSelector::parsePseudoElementSelector): (WebCore::CSSParserSelector::parsePseudoClassSelector): (WebCore::CSSParserSelector::CSSParserSelector): (WebCore::CSSParserSelector::adoptSelectorVector): (WebCore::CSSParserSelector::prependTagSelector): * css/parser/CSSPropertyParser.cpp: (WebCore::consumeBasicShapePath): * css/parser/CSSSelectorParser.cpp: (WebCore::CSSSelectorParser::consumePseudo): * dom/CustomElementReactionQueue.cpp: (WebCore::CustomElementReactionQueue::ensureBackupQueue): * dom/DataTransfer.cpp: (WebCore::DataTransfer::items): (WebCore::DataTransfer::createForInputEvent): (WebCore::DataTransfer::createForDragStartEvent): (WebCore::DataTransfer::setDragImage): * dom/DeviceOrientationController.cpp: (WebCore::provideDeviceOrientationTo): * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::buildAccessKeyCache): (WebCore::Document::implementation): (WebCore::Document::formController): (WebCore::Document::updateTextRenderer): (WebCore::Document::userAgentShadowTreeStyleResolver): (WebCore::Document::axObjectCache const): (WebCore::Document::setParsing): (WebCore::Document::accessSVGExtensions): (WebCore::Document::initSecurityContext): (WebCore::Document::textAutoSizing): (WebCore::Document::didAddWheelEventHandler): (WebCore::Document::didAddTouchEventHandler): (WebCore::Document::didLogMessage): (WebCore::Document::registerCSSProperty): (WebCore::Document::deviceOrientationAndMotionAccessController): (WebCore::Document::contentChangeObserver): (WebCore::Document::domTimerHoldingTank): * dom/Document.h: (WebCore::Document::createParserYieldToken): * dom/DocumentEventQueue.cpp: (WebCore::DocumentEventQueue::DocumentEventQueue): * dom/DocumentMarkerController.cpp: (WebCore::DocumentMarkerController::addMarker): * dom/DocumentStorageAccess.cpp: (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): * dom/Element.cpp: (WebCore::Element::attributes const): (WebCore::Element::setIsDefinedCustomElement): (WebCore::Element::enqueueToUpgrade): (WebCore::Element::classList): (WebCore::Element::dataset): (WebCore::Element::ensureIntersectionObserverData): (WebCore::Element::ensureResizeObserverData): * dom/EventListenerMap.cpp: (WebCore::EventListenerMap::add): * dom/EventNames.h: * dom/EventPath.cpp: (WebCore::EventPath::buildPath): (WebCore::EventPath::EventPath): * dom/IdTargetObserverRegistry.cpp: (WebCore::IdTargetObserverRegistry::addObserver): * dom/KeyboardEvent.cpp: (WebCore::KeyboardEvent::KeyboardEvent): * dom/MutationObserver.cpp: (WebCore::queueMutationObserverCompoundMicrotask): * dom/MutationObserverInterestGroup.cpp: (WebCore::MutationObserverInterestGroup::createIfNeeded): * dom/MutationObserverRegistration.cpp: (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): * dom/Node.cpp: (WebCore::Node::materializeRareData): (WebCore::Node::ensureEventTargetData): (WebCore::Node::registerMutationObserver): * dom/NodeRareData.h: (WebCore::NodeRareData::ensureNodeLists): (WebCore::NodeRareData::ensureMutationObserverData): * dom/RadioButtonGroups.cpp: (WebCore::RadioButtonGroups::addButton): * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::reportException): (WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection): (WebCore::ScriptExecutionContext::ensureRejectedPromiseTrackerSlow): * dom/SelectorQuery.cpp: * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::ShadowRoot): (WebCore::ShadowRoot::moveShadowRootToNewDocument): (WebCore::ShadowRoot::addSlotElementByName): * dom/SlotAssignment.cpp: (WebCore::SlotAssignment::addSlotElementByName): (WebCore::SlotAssignment::assignToSlot): * dom/TreeScope.cpp: (WebCore::TreeScope::TreeScope): (WebCore::TreeScope::addElementById): (WebCore::TreeScope::addElementByName): (WebCore::TreeScope::addImageMap): (WebCore::TreeScope::addImageElementByUsemap): (WebCore::TreeScope::labelElementForId): * editing/Editor.cpp: (WebCore::createDataTransferForClipboardEvent): (WebCore::Editor::Editor): * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::ensureReplacementFragment): * editing/SelectionRectGatherer.cpp: (WebCore::SelectionRectGatherer::clearAndCreateNotifier): * editing/TextIterator.cpp: (WebCore::TextIterator::handleTextNode): * editing/cocoa/HTMLConverter.mm: (HTMLConverter::HTMLConverter): (HTMLConverterCaches::computedStylePropertyForElement): * editing/markup.cpp: (WebCore::createPageForSanitizingWebContent): * fileapi/AsyncFileStream.cpp: (WebCore::callOnFileThread): (WebCore::AsyncFileStream::AsyncFileStream): * fileapi/FileReader.cpp: (WebCore::FileReader::readInternal): * history/CachedFrame.cpp: (WebCore::CachedFrame::CachedFrame): * history/CachedPage.cpp: (WebCore::CachedPage::CachedPage): * history/PageCache.cpp: (WebCore::PageCache::addIfCacheable): * html/FileInputType.cpp: (WebCore::FileInputType::requestIcon): * html/FormAssociatedElement.cpp: (WebCore::FormAssociatedElement::resetFormAttributeTargetObserver): * html/FormController.cpp: (WebCore::SavedFormState::deserialize): (WebCore::FormController::createSavedFormStateMap): (WebCore::FormController::takeStateForFormElement): * html/HTMLAnchorElement.cpp: (WebCore::HTMLAnchorElement::relList const): * html/HTMLAreaElement.cpp: (WebCore::HTMLAreaElement::mapMouseEvent): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::setImageBuffer const): * html/HTMLCollection.cpp: (WebCore::HTMLCollection::updateNamedElementCache const): * html/HTMLDetailsElement.cpp: (WebCore::HTMLDetailsElement::create): * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::updateVisibleValidationMessage): * html/HTMLFormControlsCollection.cpp: (WebCore::HTMLFormControlsCollection::updateNamedElementCache const): * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::addToPastNamesMap): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::sandbox): * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::ensureImageLoader): (WebCore::HTMLInputElement::resetListAttributeTargetObserver): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::sizes): (WebCore::HTMLLinkElement::relList): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::finishInitialization): (WebCore::HTMLMediaElement::seekWithTolerance): * html/HTMLOutputElement.cpp: (WebCore::HTMLOutputElement::htmlFor): * html/HTMLPlugInImageElement.cpp: (WebCore::HTMLPlugInImageElement::updateAfterStyleResolution): * html/HTMLSummaryElement.cpp: (WebCore::HTMLSummaryElement::create): * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::didAttachRenderers): (WebCore::HTMLVideoElement::parseAttribute): * html/PublicURLManager.cpp: (WebCore::PublicURLManager::create): * html/ValidationMessage.cpp: (WebCore::ValidationMessage::setMessage): (WebCore::ValidationMessage::setMessageDOMAndStartTimer): (WebCore::ValidationMessage::requestToHideMessage): * html/canvas/CanvasRenderingContext2DBase.cpp: (WebCore::DisplayListDrawingContext::DisplayListDrawingContext): (WebCore::CanvasRenderingContext2DBase::drawingContext const): * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::getExtension): * html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::getExtension): * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::initializeNewContext): (WebCore::WebGLRenderingContextBase::compileShader): (WebCore::WebGLRenderingContextBase::printToConsole): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::insertHTMLElementOrFindCustomElementInterface): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::insertAbove): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginDOCTYPE): * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::filterToken): (WebCore::XSSAuditor::decodedHTTPBodySuffixTree): * html/shadow/TextControlInnerElements.cpp: (WebCore::TextControlInnerTextElement::resolveCustomStyle): * html/track/InbandGenericTextTrack.cpp: (WebCore::InbandGenericTextTrack::parser): * html/track/InbandWebVTTTextTrack.cpp: (WebCore::InbandWebVTTTextTrack::parser): * html/track/LoadableTextTrack.cpp: (WebCore::LoadableTextTrack::loadTimerFired): * inspector/CommandLineAPIHost.cpp: (WebCore::CommandLineAPIHost::CommandLineAPIHost): (WebCore::CommandLineAPIHost::clearAllWrappers): * inspector/DOMEditor.cpp: (WebCore::DOMEditor::insertBefore): (WebCore::DOMEditor::removeChild): (WebCore::DOMEditor::setAttribute): (WebCore::DOMEditor::removeAttribute): (WebCore::DOMEditor::setOuterHTML): (WebCore::DOMEditor::insertAdjacentHTML): (WebCore::DOMEditor::replaceWholeText): (WebCore::DOMEditor::replaceChild): (WebCore::DOMEditor::setNodeValue): * inspector/DOMPatchSupport.cpp: (WebCore::DOMPatchSupport::createDigest): * inspector/InspectorController.cpp: (WebCore::InspectorController::InspectorController): (WebCore::InspectorController::createLazyAgents): (WebCore::InspectorController::ensureInspectorAgent): (WebCore::InspectorController::ensureDOMAgent): (WebCore::InspectorController::ensurePageAgent): * inspector/InspectorHistory.cpp: (WebCore::InspectorHistory::markUndoableState): * inspector/InspectorStyleSheet.cpp: (ParsedStyleSheet::setSourceData): (WebCore::InspectorStyleSheet::ensureSourceData): * inspector/NetworkResourcesData.cpp: (WebCore::NetworkResourcesData::resourceCreated): * inspector/WorkerInspectorController.cpp: (WebCore::WorkerInspectorController::WorkerInspectorController): (WebCore::WorkerInspectorController::connectFrontend): (WebCore::WorkerInspectorController::createLazyAgents): * inspector/agents/InspectorApplicationCacheAgent.cpp: (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent): * inspector/agents/InspectorCPUProfilerAgent.cpp: (WebCore::InspectorCPUProfilerAgent::InspectorCPUProfilerAgent): * inspector/agents/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::InspectorCSSAgent): (WebCore::InspectorCSSAgent::setStyleSheetText): (WebCore::InspectorCSSAgent::setStyleText): (WebCore::InspectorCSSAgent::setRuleSelector): (WebCore::InspectorCSSAgent::addRule): * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::InspectorCanvasAgent): (WebCore::InspectorCanvasAgent::recordCanvasAction): * inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::InspectorDOMAgent): (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend): (WebCore::InspectorDOMAgent::pushNodePathToFrontend): (WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject): (WebCore::InspectorDOMAgent::highlightRect): (WebCore::InspectorDOMAgent::highlightQuad): (WebCore::InspectorDOMAgent::innerHighlightQuad): (WebCore::InspectorDOMAgent::highlightFrame): (WebCore::InspectorDOMAgent::setInspectedNode): (WebCore::InspectorDOMAgent::didInvalidateStyleAttr): * inspector/agents/InspectorDOMStorageAgent.cpp: (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent): * inspector/agents/InspectorDatabaseAgent.cpp: (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent): * inspector/agents/InspectorLayerTreeAgent.cpp: (WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent): * inspector/agents/InspectorMemoryAgent.cpp: (WebCore::InspectorMemoryAgent::InspectorMemoryAgent): * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::InspectorNetworkAgent): * inspector/agents/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::InspectorPageAgent): * inspector/agents/InspectorTimelineAgent.cpp: (WebCore::InspectorTimelineAgent::InspectorTimelineAgent): (WebCore::InspectorTimelineAgent::internalStart): (WebCore::InspectorTimelineAgent::startFromConsole): (WebCore::InspectorTimelineAgent::stopFromConsole): * inspector/agents/InspectorWorkerAgent.cpp: (WebCore::InspectorWorkerAgent::InspectorWorkerAgent): * inspector/agents/WebConsoleAgent.cpp: (WebCore::WebConsoleAgent::didReceiveResponse): (WebCore::WebConsoleAgent::didFailLoading): * inspector/agents/WebHeapAgent.cpp: (WebCore::WebHeapAgent::WebHeapAgent): * inspector/agents/page/PageRuntimeAgent.cpp: (WebCore::PageRuntimeAgent::PageRuntimeAgent): * inspector/agents/worker/WorkerDebuggerAgent.cpp: (WebCore::WorkerDebuggerAgent::breakpointActionLog): * layout/LayoutState.cpp: (WebCore::Layout::LayoutState::displayBoxForLayoutBox const): (WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded): (WebCore::Layout::LayoutState::createFormattingContext): * layout/inlineformatting/InlineFormattingContext.cpp: (WebCore::Layout::InlineFormattingContext::collectInlineContent const): * layout/inlineformatting/InlineFormattingContextLineLayout.cpp: (WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const): * layout/inlineformatting/InlineLine.cpp: (WebCore::Layout::Line::Line): (WebCore::Layout::Line::appendNonBreakableSpace): (WebCore::Layout::Line::appendTextContent): (WebCore::Layout::Line::appendNonReplacedInlineBox): (WebCore::Layout::Line::appendHardLineBreak): * layout/inlineformatting/InlineTextItem.cpp: (WebCore::Layout::InlineTextItem::createAndAppendTextItems): (WebCore::Layout::InlineTextItem::split const): * layout/layouttree/LayoutBox.cpp: (WebCore::Layout::Box::Box): (WebCore::Layout::Box::ensureRareData): * layout/layouttree/LayoutTreeBuilder.cpp: (WebCore::Layout::TreeBuilder::createLayoutBox): (WebCore::Layout::TreeBuilder::createTableStructure): (WebCore::Layout::printLayoutTreeForLiveDocuments): * layout/tableformatting/TableGrid.cpp: (WebCore::Layout::TableGrid::appendCell): * loader/ContentFilter.cpp: (WebCore::ContentFilter::create): * loader/CrossOriginAccessControl.cpp: (WebCore::validatePreflightResponse): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::DocumentLoader): (WebCore::DocumentLoader::loadApplicationManifest): (WebCore::DocumentLoader::addAllArchiveResources): (WebCore::DocumentLoader::addArchiveResource): (WebCore::DocumentLoader::loadMainResource): (WebCore::DocumentLoader::didGetLoadDecisionForIcon): * loader/EmptyClients.cpp: (WebCore::pageConfigurationWithEmptyClients): * loader/FrameLoader.cpp: (WebCore::FrameLoader::FrameLoader): (WebCore::FrameLoader::init): (WebCore::FrameLoader::initForSynthesizedDocument): (WebCore::FrameLoader::detachChildren): * loader/LinkLoader.cpp: (WebCore::createLinkPreloadResourceClient): * loader/NavigationScheduler.cpp: (WebCore::NavigationScheduler::scheduleRedirect): (WebCore::NavigationScheduler::scheduleLocationChange): (WebCore::NavigationScheduler::scheduleFormSubmission): (WebCore::NavigationScheduler::scheduleRefresh): (WebCore::NavigationScheduler::scheduleHistoryNavigation): (WebCore::NavigationScheduler::schedulePageBlock): * loader/ProgressTracker.cpp: (WebCore::ProgressTracker::incrementProgress): * loader/TextResourceDecoder.cpp: (WebCore::TextResourceDecoder::checkForHeadCharset): * loader/TextTrackLoader.cpp: (WebCore::TextTrackLoader::processNewCueData): * loader/WorkerThreadableLoader.cpp: (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): * loader/archive/cf/LegacyWebArchive.cpp: (WebCore::LegacyWebArchive::create): * loader/cache/CachedImage.cpp: (WebCore::CachedImage::setBodyDataFrom): (WebCore::CachedImage::createImage): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::redirectReceived): * loader/cache/CachedResource.cpp: (WebCore::CachedResource::addClientToSet): * loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::requestResource): (WebCore::CachedResourceLoader::preload): (WebCore::CachedResourceLoader::clearPreloads): * loader/cache/MemoryCache.cpp: (WebCore::MemoryCache::ensureSessionResourceMap): (WebCore::MemoryCache::addImageToCache): (WebCore::MemoryCache::lruListFor): * loader/ios/PreviewLoader.mm: (-[WebPreviewLoader initWithResourceLoader:resourceResponse:]): (-[WebPreviewLoader connection:didFailWithError:]): (WebCore::PreviewLoader::create): * page/ContextMenuController.cpp: (WebCore::ContextMenuController::maybeCreateContextMenu): * page/DebugPageOverlays.cpp: (WebCore::MouseWheelRegionOverlay::updateRegion): * page/EventHandler.cpp: (WebCore::EventHandler::EventHandler): * page/FrameView.cpp: (WebCore::FrameView::addEmbeddedObjectToUpdate): (WebCore::FrameView::addSlowRepaintObject): (WebCore::FrameView::addViewportConstrainedObject): (WebCore::FrameView::addScrollableArea): * page/FrameViewLayoutContext.cpp: (WebCore::FrameViewLayoutContext::pushLayoutState): (WebCore::FrameViewLayoutContext::pushLayoutStateForPaginationIfNeeded): * page/NavigatorBase.cpp: (WebCore::NavigatorBase::serviceWorker): * page/Page.cpp: (WebCore::Page::Page): (WebCore::Page::initGroup): (WebCore::Page::setResourceUsageOverlayVisible): * page/PageConsoleClient.cpp: (WebCore::PageConsoleClient::addMessage): (WebCore::PageConsoleClient::messageWithTypeAndLevel): (WebCore::PageConsoleClient::screenshot): * page/PageGroup.cpp: (WebCore::PageGroup::captionPreferences): * page/Performance.cpp: (WebCore::Performance::mark): (WebCore::Performance::clearMarks): (WebCore::Performance::measure): (WebCore::Performance::clearMeasures): * page/PrintContext.cpp: (WebCore::PrintContext::outputLinkedDestinations): * page/RenderingUpdateScheduler.cpp: (WebCore::RenderingUpdateScheduler::startTimer): * page/RenderingUpdateScheduler.h: (WebCore::RenderingUpdateScheduler::create): * page/SecurityPolicy.cpp: (WebCore::SecurityPolicy::addOriginAccessWhitelistEntry): * page/SettingsBase.cpp: (WebCore::SettingsBase::SettingsBase): * page/UserContentController.cpp: (WebCore::UserContentController::addUserScript): (WebCore::UserContentController::addUserStyleSheet): * page/WheelEventDeltaFilter.cpp: (WebCore::WheelEventDeltaFilter::create): * page/animation/CSSAnimationController.cpp: (WebCore::CSSAnimationController::CSSAnimationController): * page/animation/CSSPropertyAnimation.cpp: (WebCore::blendFunc): (WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor): (WebCore::FillLayersPropertyWrapper::FillLayersPropertyWrapper): (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): * page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::updateSourceSelf): * page/csp/ContentSecurityPolicyDirectiveList.cpp: (WebCore::ContentSecurityPolicyDirectiveList::create): (WebCore::ContentSecurityPolicyDirectiveList::setCSPDirective): * page/linux/ResourceUsageOverlayLinux.cpp: (WebCore::ResourceUsageOverlay::platformInitialize): * page/mac/PageMac.mm: (WebCore::Page::addSchedulePair): * page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::AsyncScrollingCoordinator): * page/scrolling/ScrollingMomentumCalculator.cpp: (WebCore::ScrollingMomentumCalculator::create): * page/scrolling/ScrollingStateNode.cpp: (WebCore::ScrollingStateNode::appendChild): (WebCore::ScrollingStateNode::insertChild): * page/scrolling/ScrollingStateTree.cpp: (WebCore::ScrollingStateTree::commit): * page/scrolling/ScrollingTreeNode.cpp: (WebCore::ScrollingTreeNode::appendChild): * page/scrolling/mac/ScrollingMomentumCalculatorMac.mm: (WebCore::ScrollingMomentumCalculator::create): * platform/Length.cpp: (WebCore::convertTo100PercentMinusLength): (WebCore::blendMixedTypes): * platform/RemoteCommandListener.cpp: (WebCore::RemoteCommandListener::create): * platform/ScrollAnimator.cpp: (WebCore::ScrollAnimator::create): * platform/ScrollableArea.cpp: (WebCore::ScrollableArea::scrollAnimator const): (WebCore::ScrollableArea::ensureSnapOffsetsInfo): * platform/ThreadGlobalData.cpp: (WebCore::ThreadGlobalData::ThreadGlobalData): * platform/audio/AudioBus.cpp: (WebCore::AudioBus::AudioBus): (WebCore::AudioBus::copyWithGainFrom): * platform/audio/AudioChannel.h: * platform/audio/AudioResampler.cpp: (WebCore::AudioResampler::AudioResampler): (WebCore::AudioResampler::configureChannels): * platform/audio/DynamicsCompressor.cpp: (WebCore::DynamicsCompressor::setNumberOfChannels): * platform/audio/DynamicsCompressorKernel.cpp: (WebCore::DynamicsCompressorKernel::setNumberOfChannels): * platform/audio/FFTFrame.cpp: (WebCore::FFTFrame::createInterpolatedFrame): * platform/audio/HRTFDatabaseLoader.cpp: (WebCore::HRTFDatabaseLoader::load): * platform/audio/HRTFElevation.cpp: (WebCore::HRTFElevation::createForSubject): (WebCore::HRTFElevation::createByInterpolatingSlices): * platform/audio/HRTFKernel.cpp: (WebCore::HRTFKernel::HRTFKernel): (WebCore::HRTFKernel::createImpulseResponse): * platform/audio/MultiChannelResampler.cpp: (WebCore::MultiChannelResampler::MultiChannelResampler): * platform/audio/Panner.cpp: (WebCore::Panner::create): * platform/audio/PlatformMediaSession.cpp: (WebCore::PlatformMediaSession::create): * platform/audio/Reverb.cpp: (WebCore::Reverb::initialize): * platform/audio/ReverbConvolver.cpp: (WebCore::ReverbConvolver::ReverbConvolver): * platform/audio/ReverbConvolverStage.cpp: (WebCore::ReverbConvolverStage::ReverbConvolverStage): * platform/audio/gstreamer/AudioDestinationGStreamer.cpp: (WebCore::AudioDestination::create): * platform/audio/ios/AudioDestinationIOS.cpp: (WebCore::AudioDestination::create): * platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSession::AudioSession): * platform/audio/mac/AudioDestinationMac.cpp: (WebCore::AudioDestination::create): * platform/audio/mac/AudioSampleDataSource.mm: (WebCore::AudioSampleDataSource::setInputFormat): (WebCore::AudioSampleDataSource::setOutputFormat): * platform/audio/mac/AudioSessionMac.cpp: (WebCore::AudioSession::AudioSession): * platform/cf/KeyedDecoderCF.cpp: (WebCore::KeyedDecoder::decoder): * platform/cf/KeyedEncoderCF.cpp: (WebCore::KeyedEncoder::encoder): * platform/cf/MainThreadSharedTimerCF.cpp: (WebCore::setupPowerObserver): * platform/cocoa/NetworkExtensionContentFilter.mm: (WebCore::NetworkExtensionContentFilter::create): * platform/cocoa/ParentalControlsContentFilter.mm: (WebCore::ParentalControlsContentFilter::create): * platform/cocoa/ScrollController.mm: (WebCore::ScrollController::updateScrollSnapPoints): * platform/encryptedmedia/clearkey/CDMClearKey.cpp: (WebCore::CDMFactoryClearKey::createCDM): * platform/gamepad/cocoa/GameControllerGamepadProvider.mm: (WebCore::GameControllerGamepadProvider::controllerDidConnect): * platform/gamepad/mac/HIDGamepadProvider.cpp: (WebCore::HIDGamepadProvider::deviceAdded): * platform/generic/KeyedDecoderGeneric.cpp: (WebCore::KeyedDecoderGeneric::Dictionary::add): (WebCore::KeyedDecoder::decoder): (WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric): * platform/generic/KeyedEncoderGeneric.cpp: (WebCore::KeyedEncoder::encoder): * platform/generic/ScrollAnimatorGeneric.cpp: (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric): (WebCore::ScrollAnimatorGeneric::ensureSmoothScrollingAnimation): * platform/glib/KeyedDecoderGlib.cpp: (WebCore::KeyedDecoder::decoder): * platform/glib/KeyedEncoderGlib.cpp: (WebCore::KeyedEncoder::encoder): * platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::startTimer): (WebCore::BitmapImage::decode): * platform/graphics/ComplexTextController.cpp: (WebCore::TextLayout::TextLayout): * platform/graphics/Font.cpp: (WebCore::Font::ensureDerivedFontData const): * platform/graphics/Font.h: (WebCore::Font::boundsForGlyph const): * platform/graphics/FontCache.cpp: (WebCore::FontCache::getCachedFontPlatformData): * platform/graphics/FontCascade.cpp: (WebCore::retrieveOrAddCachedFonts): (WebCore::FontCascade::displayListForTextRun const): * platform/graphics/FontCascadeFonts.cpp: (WebCore::FontCascadeFonts::GlyphPageCacheEntry::setGlyphDataForCharacter): * platform/graphics/GlyphMetricsMap.h: (WebCore::GlyphMetricsMap<T>::locatePageSlowCase): * platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::setTransform): (WebCore::GraphicsLayer::setChildrenTransform): * platform/graphics/GraphicsLayer.h: * platform/graphics/Image.cpp: (WebCore::Image::startAnimationAsynchronously): * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::MediaPlayer): (WebCore::MediaPlayer::loadWithNextMediaEngine): * platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::seekable const): * platform/graphics/PathUtilities.cpp: (WebCore::FloatPointGraph::findOrCreateNode): * platform/graphics/Region.cpp: (WebCore::Region::setShape): * platform/graphics/Region.h: (WebCore::Region::copyShape const): (WebCore::Region::decode): * platform/graphics/TextTrackRepresentation.cpp: (WebCore::TextTrackRepresentation::create): * platform/graphics/angle/GraphicsContext3DANGLE.cpp: (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm: (WebCore::AudioSourceProviderAVFObjC::prepare): * platform/graphics/avfoundation/CDMFairPlayStreaming.cpp: (WebCore::CDMFactoryFairPlayStreaming::createCDM): * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: (WebCore::CDMPrivateMediaSourceAVFObjC::createSession): * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::buffered const): * platform/graphics/avfoundation/WebMediaSessionManagerMac.cpp: (WebCore::WebMediaSessionManagerMac::platformPicker): * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp: (WebCore::MediaPlayerPrivateAVFoundationCF::registerMediaEngine): (WebCore::MediaPlayerPrivateAVFoundationCF::platformBufferedTimeRanges const): (WebCore::MediaPlayerPrivateAVFoundationCF::createSession): (WebCore::AVFWrapper::notificationCallback): (WebCore::AVFWrapper::legibleOutputCallback): (WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource): (WebCore::AVFWrapper::platformLayer): * platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm: (WebCore::AudioTrackPrivateAVFObjC::AudioTrackPrivateAVFObjC): (WebCore::AudioTrackPrivateAVFObjC::setPlayerItemTrack): (WebCore::AudioTrackPrivateAVFObjC::setAssetTrack): (WebCore::AudioTrackPrivateAVFObjC::setMediaSelectionOption): * platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp: (WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC): (WebCore::AudioTrackPrivateMediaSourceAVFObjC::setAssetTrack): * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm: (WebCore::ImageDecoderAVFObjC::readTrackMetadata): * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): (WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateRotationSession): (WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): (WebCore::MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture): (WebCore::MediaPlayerPrivateAVFoundationObjC::createSession): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekWithTolerance): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekable const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::buffered const): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastImage): (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::seekable const): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::buffered const): (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateCurrentFrameImage): * platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.cpp: (WebCore::VideoTrackPrivateAVFObjC::VideoTrackPrivateAVFObjC): (WebCore::VideoTrackPrivateAVFObjC::setPlayerItemTrack): (WebCore::VideoTrackPrivateAVFObjC::setAssetTrack): (WebCore::VideoTrackPrivateAVFObjC::setMediaSelectonOption): * platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.mm: (WebCore::VideoTrackPrivateMediaSourceAVFObjC::VideoTrackPrivateMediaSourceAVFObjC): (WebCore::VideoTrackPrivateMediaSourceAVFObjC::setAssetTrack): * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::recursiveCommitChanges): (WebCore::GraphicsLayerCA::ensureLayerAnimations): (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes): * platform/graphics/ca/TileController.cpp: (WebCore::TileController::TileController): (WebCore::TileController::setContentsScale): (WebCore::TileController::adjustTileCoverageRectForScrolling): (WebCore::TileController::tiledScrollingIndicatorLayer): * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::commonInit): (WebCore::PlatformCALayerCocoa::setShapeRoundedRect): * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm: (-[WebTiledBackingLayer createTileController:]): * platform/graphics/ca/win/PlatformCALayerWin.cpp: (PlatformCALayerWin::PlatformCALayerWin): * platform/graphics/ca/win/WebTiledBackingLayerWin.cpp: (WebTiledBackingLayerWin::createTileController): * platform/graphics/cairo/GraphicsContextImplCairo.cpp: (WebCore::GraphicsContextImplCairo::createFactory): (WebCore::m_private): * platform/graphics/cairo/ImageBufferCairo.cpp: (WebCore::ImageBufferData::swapBuffersIfNeeded): (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/cg/ImageBufferCG.cpp: (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/cocoa/FontCacheCoreText.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: (WebCore::FontFamilySpecificationCoreText::fontRanges const): * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: (WebCore::GraphicsContext3D::GraphicsContext3D): * platform/graphics/cocoa/IOSurface.mm: (WebCore::IOSurface::ensureGraphicsContext): * platform/graphics/cocoa/TextTrackRepresentationCocoa.mm: (TextTrackRepresentation::create): * platform/graphics/cv/TextureCacheCV.mm: (WebCore::TextureCacheCV::create): * platform/graphics/displaylists/DisplayListReplayer.cpp: (WebCore::DisplayList::Replayer::replay): * platform/graphics/filters/FilterOperation.cpp: (WebCore::ReferenceFilterOperation::loadExternalDocumentIfNeeded): * platform/graphics/freetype/FontCacheFreeType.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::create): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivateGStreamer::registerMediaEngine): (WebCore::MediaPlayerPrivateGStreamer::buffered const): (WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor): (WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture): (WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime): (WebCore::MediaPlayerPrivateGStreamerBase::pushNextHolePunchBuffer): * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: (webKitWebSrcMakeRequest): * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp: (WebCore::MediaPlayerPrivateGStreamerMSE::registerMediaEngine): (WebCore::MediaPlayerPrivateGStreamerMSE::buffered const): * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp: (WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer): (WebCore::MediaPlayerPrivateHolePunch::registerMediaEngine): * platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: * platform/graphics/iso/ISOProtectionSchemeInfoBox.cpp: (WebCore::ISOProtectionSchemeInfoBox::parse): * platform/graphics/iso/ISOSchemeInformationBox.cpp: (WebCore::ISOSchemeInformationBox::parse): * platform/graphics/mac/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/nicosia/NicosiaSceneIntegration.cpp: (Nicosia::SceneIntegration::createUpdateScope): * platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp: (Nicosia::createCommand): * platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp: (Nicosia::PaintingContextCairo::ForPainting::ForPainting): (Nicosia::PaintingContextCairo::ForRecording::ForRecording): * platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.cpp: (Nicosia::BackingStoreTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.cpp: (Nicosia::CompositionLayerTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp: (Nicosia::ContentLayerTextureMapperImpl::createFactory): * platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp: (Nicosia::GC3DLayer::swapBuffersIfNeeded): * platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.cpp: (Nicosia::ImageBackingTextureMapperImpl::createFactory): * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp: (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::compileShader): (WebCore::GraphicsContext3D::mappedSymbolName): * platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp: (WebCore::GraphicsContext3D::getExtensions): (WebCore::GraphicsContext3D::GraphicsContext3D): * platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp: (WebCore::GraphicsContext3D::GraphicsContext3D): (WebCore::GraphicsContext3D::getExtensions): * platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp: (WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded): * platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::TextureMapperGL::TextureMapperGL): (WebCore::TextureMapper::platformCreateAccelerated): * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: (WebCore::TextureMapperPlatformLayerBuffer::clone): * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: (WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread): * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): * platform/graphics/texmap/coordinated/TiledBackingStore.cpp: (WebCore::TiledBackingStore::createTiles): * platform/graphics/transforms/TransformState.cpp: (WebCore::TransformState::operator=): (WebCore::TransformState::applyTransform): (WebCore::TransformState::setLastPlanarSecondaryQuad): * platform/graphics/transforms/TransformState.h: (WebCore::TransformState::setSecondaryQuad): * platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/win/FontCustomPlatformData.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/win/FontCustomPlatformDataCairo.cpp: (WebCore::createFontCustomPlatformData): * platform/graphics/win/FullScreenController.cpp: (WebCore::FullScreenController::FullScreenController): (WebCore::FullScreenController::enterFullScreen): * platform/graphics/win/GraphicsContextCairoWin.cpp: (WebCore::GraphicsContext::platformInit): * platform/graphics/win/GraphicsContextDirect2D.cpp: (WebCore::GraphicsContext::GraphicsContext): (WebCore::GraphicsContext::platformInit): * platform/graphics/win/GraphicsContextImplDirect2D.cpp: (WebCore::GraphicsContextImplDirect2D::createFactory): (WebCore::m_private): * platform/graphics/win/GraphicsContextWin.cpp: (WebCore::GraphicsContext::createWindowsBitmap): * platform/graphics/win/ImageBufferDirect2D.cpp: (WebCore::ImageBuffer::ImageBuffer): * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: (WebCore::MediaPlayerPrivateMediaFoundation::registerMediaEngine): (WebCore::MediaPlayerPrivateMediaFoundation::buffered const): (WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::CustomVideoPresenter): * platform/graphics/win/WKCAImageQueue.cpp: (WebCore::WKCAImageQueue::WKCAImageQueue): * platform/gtk/PasteboardGtk.cpp: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForGlobalSelection): (WebCore::Pasteboard::createForDragAndDrop): * platform/gtk/PasteboardHelper.cpp: (WebCore::PasteboardHelper::writeClipboardContents): * platform/gtk/RenderThemeGadget.cpp: (WebCore::RenderThemeGadget::create): * platform/gtk/RenderThemeWidget.cpp: (WebCore::RenderThemeWidget::getOrCreate): (WebCore::RenderThemeScrollbar::RenderThemeScrollbar): (WebCore::RenderThemeComboBox::RenderThemeComboBox): * platform/image-decoders/bmp/BMPImageDecoder.cpp: (WebCore::BMPImageDecoder::decodeHelper): * platform/image-decoders/gif/GIFImageDecoder.cpp: (WebCore::GIFImageDecoder::decode): * platform/image-decoders/gif/GIFImageReader.cpp: (GIFFrameContext::decode): (GIFImageReader::addFrameIfNecessary): * platform/image-decoders/ico/ICOImageDecoder.cpp: (WebCore::ICOImageDecoder::decodeAtIndex): * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: (WebCore::JPEGImageDecoder::decode): * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageDecoder::decode): * platform/ios/LegacyTileCache.mm: (WebCore::LegacyTileCache::LegacyTileCache): (WebCore::LegacyTileCache::commitScaleChange): * platform/ios/PasteboardIOS.mm: (WebCore::Pasteboard::createForDragAndDrop): (WebCore::Pasteboard::createForCopyAndPaste): * platform/ios/QuickLook.mm: (WebCore::registerQLPreviewConverterIfNeeded): * platform/ios/RemoteCommandListenerIOS.mm: (WebCore::RemoteCommandListener::create): * platform/ios/ScrollAnimatorIOS.mm: (WebCore::ScrollAnimator::create): * platform/libwpe/PasteboardLibWPE.cpp: (WebCore::Pasteboard::createForCopyAndPaste): * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForDragAndDrop): * platform/mac/RemoteCommandListenerMac.mm: (WebCore::RemoteCommandListener::create): * platform/mac/ScrollAnimatorMac.mm: (WebCore::ScrollAnimator::create): * platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: (WebCore::MediaRecorderPrivateAVFImpl::create): * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp: (WebCore::m_capturer): (WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: (WebCore::webkit_media_stream_src_init): * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp: (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): (WebCore::m_capturer): * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: (WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder): * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: (WebCore::BasicPacketSocketFactory::BasicPacketSocketFactory): (WebCore::initializePeerConnectionFactoryAndThreads): (WebCore::LibWebRTCProvider::createPeerConnection): (WebCore::LibWebRTCProvider::certificateGenerator): * platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp: (WebCore::LibWebRTCProviderGStreamer::createDecoderFactory): (WebCore::LibWebRTCProviderGStreamer::createEncoderFactory): * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable): * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm: (WebCore::MockRealtimeAudioSourceMac::reconfigure): * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm: (WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV): (WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer): * platform/mock/RTCNotifiersMock.cpp: (WebCore::RemoteDataChannelNotifier::fire): * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp: (WebCore::MockMediaPlayerMediaSource::registerMediaEngine): (WebCore::MockMediaPlayerMediaSource::buffered const): * platform/network/BlobResourceHandle.cpp: * platform/network/DataURLDecoder.cpp: (WebCore::DataURLDecoder::createDecodeTask): * platform/network/ResourceHandle.cpp: (WebCore::ResourceHandle::ResourceHandle): * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFail): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willCacheResponse): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveChallenge): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didSendBodyData): (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::canRespondToProtectionSpace): * platform/network/cocoa/WebCoreNSURLSession.mm: (-[WebCoreNSURLSessionDataTask _restart]): * platform/network/curl/CookieJarDB.cpp: (WebCore::CookieJarDB::searchCookies): (WebCore::CookieJarDB::createPrepareStatement): * platform/network/curl/CurlCacheManager.cpp: (WebCore::CurlCacheManager::loadIndex): (WebCore::CurlCacheManager::didReceiveResponse): * platform/network/curl/CurlContext.cpp: (WebCore::CurlContext::CurlContext): (WebCore::CurlHandle::willSetupSslCtx): * platform/network/curl/CurlFormDataStream.cpp: (WebCore::CurlFormDataStream::getPostData): * platform/network/curl/CurlMultipartHandle.cpp: (WebCore::CurlMultipartHandle::createIfNeeded): * platform/network/curl/CurlRequest.cpp: (WebCore::CurlRequest::runOnMainThread): (WebCore::CurlRequest::setupTransfer): * platform/network/curl/CurlRequestScheduler.cpp: (WebCore::CurlRequestScheduler::workerThread): * platform/network/curl/ResourceHandleCurl.cpp: (WebCore::ResourceHandle::delegate): * platform/network/curl/SocketStreamHandleImplCurl.cpp: (WebCore::SocketStreamHandleImpl::callOnWorkerThread): * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:]): * platform/network/soup/DNSResolveQueueSoup.cpp: (WebCore::DNSResolveQueueSoup::resolve): * platform/network/soup/NetworkStorageSessionSoup.cpp: (WebCore::NetworkStorageSession::getCredentialFromPersistentStorage): * platform/text/BidiResolver.h: (WebCore::DerivedClass>::appendRunInternal): * platform/text/LocaleICU.cpp: (WebCore::Locale::create): (WebCore::LocaleICU::createLabelVector): (WebCore::createFallbackMonthLabels): (WebCore::createFallbackAMPMLabels): * platform/text/LocaleNone.cpp: (WebCore::Locale::create): * platform/text/TextCodecICU.cpp: (WebCore::TextCodecICU::registerCodecs): * platform/text/TextCodecLatin1.cpp: (WebCore::TextCodecLatin1::registerCodecs): * platform/text/TextCodecReplacement.cpp: (WebCore::TextCodecReplacement::registerCodecs): * platform/text/TextCodecUTF16.cpp: (WebCore::TextCodecUTF16::registerCodecs): * platform/text/TextCodecUTF8.cpp: (WebCore::TextCodecUTF8::registerCodecs): * platform/text/TextCodecUserDefined.cpp: (WebCore::TextCodecUserDefined::registerCodecs): * platform/text/mac/LocaleMac.mm: (WebCore::Locale::create): * platform/text/win/LocaleWin.cpp: (WebCore::Locale::create): * platform/text/win/TextCodecWin.cpp: (WebCore::newTextCodecWin): * platform/vr/openvr/VRPlatformManagerOpenVR.cpp: (WebCore::VRPlatformManagerOpenVR::create): (WebCore::VRPlatformManagerOpenVR::getVRDisplays): * platform/win/PasteboardWin.cpp: (WebCore::Pasteboard::createForCopyAndPaste): (WebCore::Pasteboard::createForDragAndDrop): * platform/win/SearchPopupMenuDB.cpp: (WebCore::SearchPopupMenuDB::createPreparedStatement): * platform/win/WCDataObject.cpp: (WebCore::WCDataObject::SetData): * rendering/CSSFilter.cpp: (WebCore::CSSFilter::buildReferenceFilter): * rendering/ComplexLineLayout.cpp: (WebCore::createRun): (WebCore::ComplexLineLayout::createRootInlineBox): (WebCore::ComplexLineLayout::handleTrailingSpaces): (WebCore::ComplexLineLayout::linkToEndLineIfNeeded): * rendering/FloatingObjects.cpp: (WebCore::FloatingObject::create): (WebCore::FloatingObject::copyToNewContainer const): (WebCore::FloatingObject::cloneForNewParent const): (WebCore::FloatingObjects::computePlacedFloatsTree): * rendering/Grid.cpp: (WebCore::GridIterator::nextEmptyGridArea): * rendering/GridBaselineAlignment.cpp: (WebCore::GridBaselineAlignment::updateBaselineAlignmentContext): * rendering/GridTrackSizingAlgorithm.cpp: (WebCore::GridTrackSizingAlgorithm::computeFlexFactorUnitSize const): (WebCore::GridTrackSizingAlgorithm::setup): * rendering/HitTestResult.cpp: (WebCore::HitTestResult::HitTestResult): (WebCore::HitTestResult::operator=): (WebCore::HitTestResult::listBasedTestResult const): (WebCore::HitTestResult::mutableListBasedTestResult): * rendering/InlineIterator.h: (WebCore::addPlaceholderRunForIsolatedInline): * rendering/LayerOverlapMap.cpp: (WebCore::LayerOverlapMap::pushCompositingContainer): * rendering/RenderBlock.cpp: (WebCore::insertIntoTrackedRendererMaps): (WebCore::PositionedDescendantsMap::addDescendant): (WebCore::RenderBlock::beginUpdateScrollInfoAfterLayoutTransaction): (WebCore::ensureBlockRareData): * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutInlineChildren): (WebCore::RenderBlockFlow::layoutLineGridBox): (WebCore::RenderBlockFlow::createFloatingObjects): (WebCore::RenderBlockFlow::ensureLineBoxes): (WebCore::RenderBlockFlow::materializeRareBlockFlowData): * rendering/RenderBox.cpp: (WebCore::controlStatesForRenderer): (WebCore::RenderBox::createInlineBox): * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::ensureContinuationChainNode): * rendering/RenderCounter.cpp: (WebCore::makeCounterNode): * rendering/RenderFragmentContainer.cpp: (WebCore::RenderFragmentContainer::setRenderBoxFragmentInfo): * rendering/RenderFragmentedFlow.cpp: (WebCore::RenderFragmentedFlow::containingFragmentMap): * rendering/RenderGeometryMap.cpp: (WebCore::RenderGeometryMap::push): (WebCore::RenderGeometryMap::pushView): * rendering/RenderGrid.cpp: (WebCore::RenderGrid::computeEmptyTracksForAutoRepeat const): (WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid const): * rendering/RenderImage.cpp: (WebCore::RenderImage::RenderImage): * rendering/RenderInline.cpp: (WebCore::RenderInline::createInlineFlowBox): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateNormalFlowList): (WebCore::RenderLayer::collectLayers): (WebCore::RenderLayer::updateTransform): (WebCore::RenderLayer::updateClipRects): (WebCore::RenderLayer::calculateClipRects const): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateAncestorClippingStack): (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::startTransition): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::RenderLayerCompositor): (WebCore::RenderLayerCompositor::notifyFlushBeforeDisplayRefresh): (WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers): * rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::createLayer): * rendering/RenderLineBreak.cpp: (WebCore::RenderLineBreak::createInlineBox): * rendering/RenderMultiColumnFlow.cpp: (WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow): * rendering/RenderObject.cpp: (WebCore::RenderObject::ensureRareData): * rendering/RenderSnapshottedPlugIn.cpp: (WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn): * rendering/RenderTable.cpp: (WebCore::RenderTable::styleDidChange): * rendering/RenderText.cpp: (WebCore::RenderText::createTextBox): (WebCore::RenderText::momentarilyRevealLastTypedCharacter): * rendering/RenderView.cpp: (WebCore::RenderView::repaintViewRectangle const): (WebCore::RenderView::compositor): (WebCore::RenderView::imageQualityController): (WebCore::RenderView::RepaintRegionAccumulator::RepaintRegionAccumulator): * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::placeEllipsis): * rendering/RootInlineBox.h: (WebCore::RootInlineBox::appendFloat): * rendering/SelectionRangeData.cpp: (WebCore::collect): (WebCore::SelectionRangeData::collectBounds const): (WebCore::SelectionRangeData::apply): * rendering/SimpleLineLayout.cpp: (WebCore::SimpleLineLayout::Layout::runResolver const): * rendering/SimpleLineLayoutFunctions.cpp: (WebCore::SimpleLineLayout::paintFlow): (WebCore::SimpleLineLayout::generateLineBoxTree): * rendering/TextAutoSizing.cpp: (WebCore::TextAutoSizing::addTextNode): * rendering/line/LineBreaker.cpp: (WebCore::LineBreaker::skipLeadingWhitespace): * rendering/shapes/RasterShape.cpp: (WebCore::RasterShapeIntervals::computeShapeMarginIntervals const): * rendering/shapes/Shape.cpp: (WebCore::createInsetShape): (WebCore::createCircleShape): (WebCore::createEllipseShape): (WebCore::createPolygonShape): (WebCore::Shape::createShape): (WebCore::Shape::createRasterShape): (WebCore::Shape::createBoxShape): * rendering/shapes/ShapeOutsideInfo.h: * rendering/style/BasicShapes.cpp: (WebCore::BasicShapePath::blend const): * rendering/style/ContentData.h: * rendering/style/FillLayer.cpp: (WebCore::FillLayer::FillLayer): (WebCore::FillLayer::operator=): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::clonePtr): (WebCore::RenderStyle::addCachedPseudoStyle): (WebCore::RenderStyle::addCustomPaintWatchProperty): (WebCore::RenderStyle::setContent): (WebCore::RenderStyle::accessCounterDirectives): (WebCore::RenderStyle::ensureAnimations): (WebCore::RenderStyle::ensureTransitions): * rendering/style/SVGRenderStyleDefs.cpp: (WebCore::StyleShadowSVGData::StyleShadowSVGData): * rendering/style/ShadowData.cpp: (WebCore::ShadowData::ShadowData): * rendering/style/StyleRareInheritedData.cpp: (WebCore::StyleRareInheritedData::StyleRareInheritedData): * rendering/style/StyleRareNonInheritedData.cpp: (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): * rendering/svg/RenderSVGImage.cpp: (WebCore::RenderSVGImage::RenderSVGImage): * rendering/svg/RenderSVGInline.cpp: (WebCore::RenderSVGInline::createInlineFlowBox): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::createTextBox): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::buildPrimitives const): (WebCore::RenderSVGResourceFilter::applyResource): * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::applyResource): * rendering/svg/RenderSVGResourceMasker.cpp: (WebCore::RenderSVGResourceMasker::applyResource): * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::buildPattern): * rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::updateShapeFromElement): * rendering/svg/SVGResources.cpp: (WebCore::SVGResources::setClipper): (WebCore::SVGResources::setFilter): (WebCore::SVGResources::setMarkerStart): (WebCore::SVGResources::setMarkerMid): (WebCore::SVGResources::setMarkerEnd): (WebCore::SVGResources::setMasker): (WebCore::SVGResources::setFill): (WebCore::SVGResources::setStroke): * rendering/svg/SVGResourcesCache.cpp: (WebCore::SVGResourcesCache::addResourcesFromRenderer): * rendering/svg/SVGTextMetricsBuilder.cpp: (WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer): * rendering/updating/RenderTreeBuilder.cpp: (WebCore::RenderTreeBuilder::RenderTreeBuilder): * rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::RenderTreeUpdater): * style/StyleInvalidator.cpp: (WebCore::Style::Invalidator::Invalidator): * style/StyleRelations.cpp: (WebCore::Style::commitRelationsToRenderStyle): * style/StyleScope.cpp: (WebCore::Style::Scope::resolver): (WebCore::Style::Scope::activeStyleSheetsContains const): * style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolve): * svg/SVGDocumentExtensions.cpp: (WebCore::SVGDocumentExtensions::SVGDocumentExtensions): (WebCore::SVGDocumentExtensions::addPendingResource): (WebCore::SVGDocumentExtensions::addElementReferencingTarget): * svg/SVGElement.cpp: (WebCore::SVGElement::SVGElement): (WebCore::SVGElement::ensureSVGRareData): * svg/SVGGraphicsElement.cpp: (WebCore::SVGGraphicsElement::supplementalTransform): * svg/SVGPathByteStream.h: (WebCore::SVGPathByteStream::copy const): * svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::schedule): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * svg/properties/SVGAnimatedDecoratedProperty.h: (WebCore::SVGAnimatedDecoratedProperty::create): * svg/properties/SVGAnimatedPropertyAnimatorImpl.h: * svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h: * svg/properties/SVGDecoratedEnumeration.h: (WebCore::SVGDecoratedEnumeration::create): * svg/properties/SVGPrimitivePropertyAnimator.h: (WebCore::SVGPrimitivePropertyAnimator::create): * svg/properties/SVGValuePropertyAnimatorImpl.h: * svg/properties/SVGValuePropertyListAnimatorImpl.h: * testing/InternalSettings.cpp: (WebCore::InternalSettings::from): * testing/Internals.cpp: (WebCore::InspectorStubFrontend::InspectorStubFrontend): (WebCore::Internals::Internals): (WebCore::Internals::enableMockSpeechSynthesizer): (WebCore::Internals::openDummyInspectorFrontend): (WebCore::Internals::setPrinting): (WebCore::Internals::initializeMockCDM): (WebCore::Internals::queueMicroTask): * testing/LegacyMockCDM.cpp: (WebCore::LegacyMockCDM::createSession): * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::createCDM): * testing/MockContentFilter.cpp: (WebCore::MockContentFilter::create): * testing/MockGamepadProvider.cpp: (WebCore::MockGamepadProvider::setMockGamepadDetails): * workers/WorkerConsoleClient.cpp: (WebCore::WorkerConsoleClient::messageWithTypeAndLevel): * workers/WorkerEventQueue.cpp: (WebCore::WorkerEventQueue::enqueueEvent): * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): (WebCore::WorkerGlobalScope::addMessage): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::WorkerMessagingProxy): (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope): * workers/WorkerRunLoop.cpp: (WebCore::WorkerRunLoop::WorkerRunLoop): (WebCore::WorkerRunLoop::postTaskAndTerminate): (WebCore::WorkerRunLoop::postTaskForMode): * workers/WorkerScriptLoader.cpp: (WebCore::WorkerScriptLoader::loadAsynchronously): (WebCore::WorkerScriptLoader::createResourceRequest): * workers/WorkerThread.cpp: (WebCore::WorkerThread::WorkerThread): * workers/service/ServiceWorkerContainer.cpp: (WebCore::ServiceWorkerContainer::ready): (WebCore::ServiceWorkerContainer::addRegistration): (WebCore::ServiceWorkerContainer::removeRegistration): (WebCore::ServiceWorkerContainer::updateRegistration): (WebCore::ServiceWorkerContainer::getRegistration): (WebCore::ServiceWorkerContainer::getRegistrations): * workers/service/context/SWContextManager.cpp: (WebCore::SWContextManager::terminateWorker): * workers/service/context/ServiceWorkerThreadProxy.cpp: (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): (WebCore::ServiceWorkerThreadProxy::createBlobLoader): * workers/service/server/RegistrationDatabase.cpp: (WebCore::RegistrationDatabase::openSQLiteDatabase): * workers/service/server/SWServer.cpp: (WebCore::SWServer::addRegistrationFromStore): (WebCore::SWServer::SWServer): (WebCore::SWServer::scheduleJob): (WebCore::SWServer::unregisterServiceWorkerClient): * workers/service/server/SWServerJobQueue.cpp: (WebCore::SWServerJobQueue::runRegisterJob): * worklets/PaintWorkletGlobalScope.cpp: (WebCore::PaintWorkletGlobalScope::registerPaint): * worklets/WorkletConsoleClient.cpp: (WebCore::WorkletConsoleClient::messageWithTypeAndLevel): * worklets/WorkletGlobalScope.cpp: (WebCore::WorkletGlobalScope::WorkletGlobalScope): (WebCore::WorkletGlobalScope::addConsoleMessage): * worklets/WorkletScriptController.cpp: (WebCore::WorkletScriptController::initScriptWithSubclass): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::upload): * xml/XPathFunctions.cpp: * xml/XPathPredicate.cpp: (WebCore::XPath::evaluatePredicate): * xml/XSLStyleSheetLibxslt.cpp: (WebCore::XSLStyleSheet::loadChildSheet): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::handleError): * xml/parser/XMLDocumentParserLibxml2.cpp: (WebCore::PendingCallbacks::appendStartElementNSCallback): (WebCore::PendingCallbacks::appendEndElementNSCallback): (WebCore::PendingCallbacks::appendCharactersCallback): (WebCore::PendingCallbacks::appendProcessingInstructionCallback): (WebCore::PendingCallbacks::appendCDATABlockCallback): (WebCore::PendingCallbacks::appendCommentCallback): (WebCore::PendingCallbacks::appendInternalSubsetCallback): (WebCore::PendingCallbacks::appendErrorCallback): (WebCore::XMLDocumentParser::XMLDocumentParser): (WebCore::XMLDocumentParser::doEnd): Source/WebCore/PAL: Reviewed by Geoffrey Garen. * pal/crypto/openssl/CryptoDigestOpenSSL.cpp: (PAL::CryptoDigestContextImpl::create): * pal/system/ClockGeneric.cpp: (PAL::Clock::create): * pal/system/mac/ClockCM.mm: (Clock::create): Source/WebDriver: Reviewed by Geoffrey Garen. * WebDriverService.cpp: (WebDriver::WebDriverService::connectToBrowser): * glib/SessionHostGlib.cpp: (WebDriver::SessionHost::launchBrowser): (WebDriver::SessionHost::sendMessageToBackend): Source/WebKit: Reviewed by Geoffrey Garen. * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk): (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics): * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): (WebKit::DownloadManager::convertNetworkLoadToDownload): (WebKit::DownloadManager::resumeDownload): * NetworkProcess/Downloads/DownloadMap.cpp: (WebKit::DownloadMap::add): * NetworkProcess/Downloads/PendingDownload.cpp: (WebKit::PendingDownload::PendingDownload): * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): * NetworkProcess/NetworkContentRuleListManager.cpp: (WebKit::NetworkContentRuleListManager::addContentRuleLists): * NetworkProcess/NetworkDataTaskBlob.cpp: (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): (WebKit::NetworkDataTaskBlob::download): * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveResponse): * NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight): (WebKit::NetworkLoadChecker::contentSecurityPolicy): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::switchToNewTestingSession): (WebKit::NetworkProcess::ensureSession): (WebKit::NetworkProcess::swServerForSession): (WebKit::NetworkProcess::initializeQuotaUsers): (WebKit::NetworkProcess::storageQuotaManager): * NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::addSupplement): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): (WebKit::NetworkResourceLoader::startNetworkLoad): * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::create): * NetworkProcess/PreconnectTask.cpp: * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: (WebKit::LocalStorageDatabase::scheduleDatabaseUpdate): * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: (WebKit::LocalStorageNamespace::getOrCreateStorageArea): * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: (WebKit::SessionStorageNamespace::getOrCreateStorageArea): * NetworkProcess/WebStorage/StorageArea.cpp: (WebKit::StorageArea::clone const): * NetworkProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::createSessionStorageNamespace): (WebKit::StorageManager::getOrCreateLocalStorageNamespace): (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): (WebKit::StorageManager::getOrCreateSessionStorageNamespace): * NetworkProcess/WebStorage/StorageManagerSet.cpp: (WebKit::StorageManagerSet::add): * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::Cache): (WebKit::NetworkCache::Cache::makeEntry): (WebKit::NetworkCache::Cache::makeRedirectEntry): (WebKit::NetworkCache::Cache::update): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::decodeStorageRecord): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::registerSubresourceLoad): (WebKit::NetworkCache::SpeculativeLoadManager::retrieve): (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::satisfyPendingRequests): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource): (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::synchronize): (WebKit::NetworkCache::Storage::readRecord): (WebKit::NetworkCache::retrieveFromMemory): (WebKit::NetworkCache::Storage::retrieve): (WebKit::NetworkCache::Storage::store): (WebKit::NetworkCache::Storage::traverse): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): * NetworkProcess/cache/PrefetchCache.cpp: (WebKit::PrefetchCache::store): (WebKit::PrefetchCache::storeRedirect): * NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): (WebKit::NetworkProcess::networkHTTPSUpgradeChecker): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): (WebKit::NetworkSessionCocoa::create): (WebKit::NetworkSessionCocoa::createWebSocketTask): * NetworkProcess/curl/NetworkProcessCurl.cpp: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): * NetworkProcess/curl/NetworkSessionCurl.h: * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: (WebKit::NetworkConnectionToWebProcess::paymentCoordinator): (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): * NetworkProcess/soup/NetworkDataTaskSoup.cpp: (WebKit::NetworkDataTaskSoup::download): * NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): * NetworkProcess/soup/NetworkSessionSoup.cpp: (WebKit::NetworkSessionSoup::NetworkSessionSoup): (WebKit::NetworkSessionSoup::createWebSocketTask): * NetworkProcess/soup/NetworkSessionSoup.h: * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: (webkitSoupRequestInputStreamReadAsync): * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: (WebKit::NetworkMDNSRegister::registerMDNSName): * NetworkProcess/webrtc/NetworkRTCMonitor.cpp: (WebKit::NetworkRTCMonitor::startUpdating): * NetworkProcess/webrtc/NetworkRTCProvider.cpp: (WebKit::NetworkRTCProvider::NetworkRTCProvider): (WebKit::NetworkRTCProvider::createSocket): (WebKit::NetworkRTCProvider::wrapNewTCPConnection): * Platform/IPC/Connection.cpp: (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): (IPC::Connection::createSyncMessageEncoder): (IPC::Connection::enableIncomingMessagesThrottling): (IPC::Connection::dispatchSyncMessage): * Platform/IPC/Connection.h: (IPC::Connection::send): (IPC::Connection::sendWithAsyncReply): * Platform/IPC/Decoder.cpp: (IPC::Decoder::unwrapForTesting): * Platform/IPC/HandleMessage.h: (IPC::handleMessageAsync): * Platform/IPC/MessageSender.h: * Platform/IPC/cocoa/ConnectionCocoa.mm: (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog): (IPC::Connection::open): (IPC::createMessageDecoder): (IPC::Connection::receiveSourceEventHandler): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): (IPC::Connection::sendOutputMessage): * Platform/IPC/win/ConnectionWin.cpp: (IPC::Connection::readEventHandler): * Platform/mac/LayerHostingContext.mm: (WebKit::LayerHostingContext::createForPort): (WebKit::LayerHostingContext::createForExternalHostingProcess): (WebKit::LayerHostingContext::createForExternalPluginHostingProcess): * PluginProcess/WebProcessConnection.cpp: (WebKit::WebProcessConnection::createPluginInternal): * Shared/API/APIURL.h: (API::URL::create): (API::URL::parseURLIfNecessary const): * Shared/API/Cocoa/RemoteObjectInvocation.mm: (WebKit::RemoteObjectInvocation::decode): * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: (-[_WKRemoteObjectRegistry _initWithWebPage:]): (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]): (-[_WKRemoteObjectRegistry _sendInvocation:interface:]): * Shared/API/glib/WebKitContextMenuItem.cpp: (webkitContextMenuItemCreate): (webkit_context_menu_item_new): (webkit_context_menu_item_new_from_gaction): (webkit_context_menu_item_new_from_stock_action): (webkit_context_menu_item_new_from_stock_action_with_label): (webkit_context_menu_item_new_with_submenu): (webkit_context_menu_item_new_separator): * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): * Shared/Cocoa/SandboxExtensionCocoa.mm: (WebKit::SandboxExtension::Handle::decode): * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: (WebKit::texmapLayer): (WebKit::CoordinatedGraphicsScene::ensureRootLayer): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::ThreadedCompositor): * Shared/Plugins/NPRemoteObjectMap.cpp: (WebKit::NPRemoteObjectMap::registerNPObject): * Shared/Plugins/Netscape/NetscapePluginModule.cpp: (WebKit::NetscapePluginModule::tryLoad): * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): (WebKit::RemoteLayerTreeTransaction::decode): * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: (WebKit::RemoteScrollingCoordinatorTransaction::decode): * Shared/cairo/ShareableBitmapCairo.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * Shared/cg/ShareableBitmapCG.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * Shared/win/ShareableBitmapDirect2D.cpp: (WebKit::ShareableBitmap::createGraphicsContext): * UIProcess/API/APIHTTPCookieStore.cpp: (API::HTTPCookieStore::registerObserver): * UIProcess/API/C/WKContext.cpp: (WKContextSetInjectedBundleClient): (WKContextSetHistoryClient): (WKContextSetDownloadClient): * UIProcess/API/C/WKGeolocationManager.cpp: (WKGeolocationManagerSetProvider): * UIProcess/API/C/WKNotificationManager.cpp: (WKNotificationManagerSetProvider): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageContextMenuClient): (WKPageSetPageDiagnosticLoggingClient): (WKPageSetPageFindClient): (WKPageSetPageFindMatchesClient): (WKPageSetPageFormClient): (WKPageSetPageLoaderClient): (WKPageSetPagePolicyClient): (WKPageSetPageUIClient): (WKPageSetPageStateClient): * UIProcess/API/C/mac/WKPagePrivateMac.mm: (-[WKObservablePageState initWithPage:]): * UIProcess/API/C/wpe/WKView.cpp: (WKViewSetViewClient): * UIProcess/API/Cocoa/WKBrowsingContextController.mm: (-[WKBrowsingContextController _initWithPageRef:]): * UIProcess/API/Cocoa/WKHTTPCookieStore.mm: (-[WKHTTPCookieStore addObserver:]): * UIProcess/API/Cocoa/WKProcessPool.mm: (-[WKProcessPool _setDownloadDelegate:]): (-[WKProcessPool _setAutomationDelegate:]): * UIProcess/API/Cocoa/WKUserContentController.mm: (-[WKUserContentController addScriptMessageHandler:name:]): (-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView setAllowsBackForwardNavigationGestures:]): (-[WKWebView _setInputDelegate:]): * UIProcess/API/Cocoa/_WKAutomationSession.mm: (-[_WKAutomationSession setDelegate:]): * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: (-[_WKRemoteWebInspectorViewController init]): * UIProcess/API/glib/IconDatabase.cpp: (WebKit::readySQLiteStatement): * UIProcess/API/glib/WebKitAutomationSession.cpp: (webkitAutomationSessionConstructed): * UIProcess/API/glib/WebKitContextMenuClient.cpp: (attachContextMenuClientToView): * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: (attachCustomProtocolManagerClientToContext): * UIProcess/API/glib/WebKitDownloadClient.cpp: (attachDownloadClientToContext): * UIProcess/API/glib/WebKitFaviconDatabase.cpp: (webkitFaviconDatabaseOpen): * UIProcess/API/glib/WebKitFindController.cpp: (webkitFindControllerConstructed): * UIProcess/API/glib/WebKitFormClient.cpp: (attachFormClientToView): * UIProcess/API/glib/WebKitGeolocationManager.cpp: (webkitGeolocationManagerCreate): * UIProcess/API/glib/WebKitIconLoadingClient.cpp: (attachIconLoadingClientToView): * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: (attachInjectedBundleClientToContext): * UIProcess/API/glib/WebKitNotificationProvider.cpp: (WebKitNotificationProvider::WebKitNotificationProvider): * UIProcess/API/glib/WebKitUIClient.cpp: (attachUIClientToView): * UIProcess/API/glib/WebKitUserContentManager.cpp: (webkit_user_content_manager_register_script_message_handler): (webkit_user_content_manager_register_script_message_handler_in_world): * UIProcess/API/glib/WebKitWebContext.cpp: (webkitWebContextConstructed): (webkit_web_context_set_automation_allowed): * UIProcess/API/glib/WebKitWebView.cpp: (webkitWebViewConstructed): * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/API/gtk/WebKitEmojiChooser.cpp: (webkitEmojiChooserSetupEmojiSections): * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: (WebKit::RemoteInspectorProtocolHandler::handleRequest): * UIProcess/API/gtk/WebKitWebInspector.cpp: (webkitWebInspectorCreate): * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseConstructed): (webkitWebViewBaseGestureController): (webkitWebViewBaseDragAndDropHandler): (webkitWebViewBaseDidRelaunchWebProcess): * UIProcess/API/mac/WKView.mm: (-[WKView maybeInstallIconLoadingClient]): (-[WKView initWithFrame:processPool:configuration:]): * UIProcess/API/wpe/PageClientImpl.cpp: (WebKit::PageClientImpl::PageClientImpl): (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/API/wpe/WPEView.cpp: (WKWPE::View::View): (WKWPE::View::setClient): * UIProcess/API/wpe/qt/WPEQtView.cpp: (WPEQtView::notifyLoadChangedCallback): (WPEQtView::notifyLoadFailedCallback): (WPEQtView::runJavaScript): * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: (WPEQtViewBackend::create): * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::WebAutomationSession): * UIProcess/AuxiliaryProcessProxy.h: (WebKit::AuxiliaryProcessProxy::send): * UIProcess/Cocoa/IconLoadingDelegate.mm: (WebKit::IconLoadingDelegate::createIconLoadingClient): * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::createContextMenuClient): (WebKit::UIDelegate::createUIClient): * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitialize): (WebKit::WebProcessPool::startDisplayLink): * UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended): * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::WebViewImpl): (WebKit::WebViewImpl::createDrawingAreaProxy): (WebKit::WebViewImpl::setTextIndicator): (WebKit::WebViewImpl::ensureGestureController): * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::incorporateUpdate): (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing): * UIProcess/DeviceIdHashSaltStorage.cpp: (WebKit::DeviceIdHashSaltStorage::getDataFromDecoder const): (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall): * UIProcess/Downloads/DownloadProxyMap.cpp: (WebKit::DownloadProxyMap::createDownloadProxy): * UIProcess/Gamepad/UIGamepadProvider.cpp: (WebKit::UIGamepadProvider::setInitialConnectedGamepads): (WebKit::UIGamepadProvider::platformGamepadConnected): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::createDownloadProxy): (WebKit::NetworkProcessProxy::takeUploadAssertion): * UIProcess/Notifications/WebNotificationManagerProxy.cpp: (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy): (WebKit::WebNotificationManagerProxy::setProvider): * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: (WebKit::pluginRequiresGtk2): * UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::didConnectToProcess): * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): (WebKit::RemoteLayerTreeDrawingAreaProxy::initializeDebugIndicator): * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::makeNode): * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: (WebKit::RemoteLayerTreeNode::createWithPlainLayer): * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm: (WebKit::RemoteLayerTreeHost::makeNode): * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren): * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: (WebKit::ScrollingTreeOverflowScrollingNodeIOS::ScrollingTreeOverflowScrollingNodeIOS): * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::ScrollingTreeFrameScrollingNodeRemoteMac): * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac): * UIProcess/WebAuthentication/Cocoa/HidService.mm: (WebKit::HidService::deviceAdded): * UIProcess/WebGeolocationManagerProxy.cpp: (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy): (WebKit::WebGeolocationManagerProxy::setProvider): * UIProcess/WebMediaSessionFocusManager.cpp: (WebKit::WebMediaSessionFocusManager::setFocusedMediaElement): * UIProcess/WebPageInspectorController.cpp: (WebKit::WebPageInspectorController::WebPageInspectorController): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::m_resetRecentCrashCountTimer): (WebKit::WebPageProxy::setFormClient): (WebKit::WebPageProxy::setUIClient): (WebKit::WebPageProxy::setIconLoadingClient): (WebKit::WebPageProxy::setFindClient): (WebKit::WebPageProxy::setFindMatchesClient): (WebKit::WebPageProxy::setContextMenuClient): (WebKit::WebPageProxy::setInjectedBundleClient): (WebKit::WebPageProxy::suspendCurrentPageIfPossible): (WebKit::WebPageProxy::didAttachToRunningProcess): (WebKit::WebPageProxy::setDrawingArea): (WebKit::WebPageProxy::close): (WebKit::WebPageProxy::loadData): (WebKit::WebPageProxy::handleWheelEvent): (WebKit::WebPageProxy::processNextQueuedWheelEvent): (WebKit::WebPageProxy::continueNavigationInNewProcess): (WebKit::WebPageProxy::setFullscreenClient): (WebKit::WebPageProxy::userMediaPermissionRequestManager): (WebKit::WebPageProxy::setScrollPerformanceDataCollectionEnabled): (WebKit::WebPageProxy::speechSynthesisData): * UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::addProcessIfPossible): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::WebProcessPool): (WebKit::WebProcessPool::setInjectedBundleClient): (WebKit::WebProcessPool::setHistoryClient): (WebKit::WebProcessPool::setDownloadClient): (WebKit::WebProcessPool::setAutomationClient): (WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient): (WebKit::WebProcessPool::ensureNetworkProcess): (WebKit::WebProcessPool::didCollectPrewarmInformation): (WebKit::WebProcessPool::setWebProcessHasUploads): (WebKit::WebProcessPool::setWebProcessIsPlayingAudibleMedia): * UIProcess/WebProcessProxy.cpp: * UIProcess/cairo/BackingStoreCairo.cpp: (WebKit::BackingStore::createBackend): * UIProcess/glib/RemoteInspectorClient.cpp: (WebKit::RemoteInspectorClient::inspect): * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: (WebKit::AcceleratedBackingStoreWayland::checkRequirements): * UIProcess/gtk/DragAndDropHandler.cpp: (WebKit::DragAndDropHandler::dragDataSelection): * UIProcess/gtk/WaylandCompositor.cpp: (WebKit::WaylandCompositor::initializeEGL): * UIProcess/ios/EditableImageController.mm: (WebKit::EditableImageController::ensureEditableImage): * UIProcess/ios/WKApplicationStateTrackingView.mm: (-[WKApplicationStateTrackingView didMoveToWindow]): * UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): (-[WKContentView initWithFrame:processPool:configuration:webView:]): (-[WKContentView _createDrawingAreaProxy:]): * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView becomeFirstResponderForWebView]): (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::elementDidFocus): (WebKit::WebPageProxy::paymentCoordinatorAuthorizationPresenter): * UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::PageClientImpl): * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController initWithWindow:webView:page:]): * UIProcess/mac/WKTextFinderClient.mm: (-[WKTextFinderClient initWithPage:view:usePlatformFindUI:]): * UIProcess/socket/RemoteInspectorClient.cpp: (WebKit::RemoteInspectorClient::inspect): * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: (WebKit::RemoteInspectorProtocolHandler::platformStartTask): * UIProcess/win/BackingStoreDirect2D.cpp: (WebKit::BackingStore::createBackend): * UIProcess/win/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * UIProcess/win/WebView.cpp: (WebKit::WebView::WebView): * WebProcess/Gamepad/WebGamepadProvider.cpp: (WebKit::WebGamepadProvider::setInitialGamepads): (WebKit::WebGamepadProvider::gamepadConnected): * WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleSetClient): * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageSetContextMenuClient): (WKBundlePageSetEditorClient): (WKBundlePageSetFormClient): (WKBundlePageSetPageLoaderClient): (WKBundlePageSetResourceLoadClient): (WKBundlePageSetUIClient): * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: (WKBundlePageOverlayCreate): * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: (WKBundlePageBannerCreateBannerWithCALayer): * WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: (WebKit::getOrCreateDOMObjectCacheFrameObserver): (WebKit::DOMObjectCache::put): * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp: (WebKit::WebKitExtensionManager::initialize): * WebProcess/InjectedBundle/API/glib/WebKitWebEditor.cpp: (webkitWebEditorCreate): * WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp: (webkitWebExtensionCreate): * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: (webkitFrameGetOrCreate): (webkitWebPageCreate): * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm: (-[WKDOMTextIterator initWithRange:]): * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::InjectedBundle): (WebKit::InjectedBundle::setClient): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::PendingMessage::PendingMessage): (WebKit::WebSocketChannel::send): * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: (WebKit::LibWebRTCProvider::createPeerConnection): (WebKit::LibWebRTCProvider::createSocketFactory): * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): (WebKit::LibWebRTCSocketFactory::createUdpSocket): (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket): (WebKit::LibWebRTCSocketFactory::createAsyncResolver): * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: (WebKit::PluginDestructionProtector::PluginDestructionProtector): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::scheduleTimer): * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: (WebKit::NetscapePluginStream::deliverData): * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: (WebKit::NetscapePluginX11::create): * WebProcess/Plugins/PluginProxy.cpp: (WebKit::PluginProxy::initialize): * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::createWebEvent const): * WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::WebSWContextManagerConnection::installServiceWorker): * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createColorChooser): (WebKit::WebChromeClient::createDataListSuggestionPicker): * WebProcess/WebCoreSupport/WebInspectorClient.cpp: (WebKit::WebInspectorClient::showPaintRect): * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: (WebKit::WebPasteboardOverrides::addOverride): * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): * WebProcess/WebPage/DrawingArea.cpp: (WebKit::DrawingArea::create): * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::ensureBackingStore): (WebKit::PlatformCALayerRemote::setTransform): (WebKit::PlatformCALayerRemote::setSublayerTransform): (WebKit::PlatformCALayerRemote::setFilters): (WebKit::PlatformCALayerRemote::setShapeRoundedRect): * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: (WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking): * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): (WebKit::RemoteLayerTreeDrawingArea::flushLayers): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::createSubframe): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_textAutoSizingAdjustmentTimer): (WebKit::WebPage::setInjectedBundleContextMenuClient): (WebKit::WebPage::setInjectedBundleEditorClient): (WebKit::WebPage::setInjectedBundleFormClient): (WebKit::WebPage::setInjectedBundlePageLoaderClient): (WebKit::WebPage::setInjectedBundleResourceLoadClient): (WebKit::WebPage::setInjectedBundleUIClient): (WebKit::WebPage::close): (WebKit::WebPage::beginPrinting): * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: (WebKit::WebPrintOperationGtk::print): * WebProcess/WebPage/ios/FindControllerIOS.mm: (WebKit::FindController::updateFindIndicator): * WebProcess/WebPage/mac/DrawingAreaMac.cpp: (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback): * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::markAllLayersVolatile): (WebKit::WebProcess::ensureAutomationSessionProxy): (WebKit::WebProcess::libWebRTCNetwork): (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): * WebProcess/WebProcess.h: (WebKit::WebProcess::addSupplement): * WebProcess/cocoa/UserMediaCaptureManager.cpp: (WebKit::UserMediaCaptureManager::Source::Source): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTaskStateDidChange): (WebKit::WebProcess::updateCPUMonitorState): Source/WebKitLegacy: Reviewed by Geoffrey Garen. * Storage/StorageSyncManager.cpp: (WebCore::StorageSyncManager::StorageSyncManager): * Storage/StorageThread.cpp: (WebCore::StorageThread::dispatch): (WebCore::StorageThread::terminate): * Storage/StorageTracker.cpp: (WebKit::StorageTracker::StorageTracker): * WebCoreSupport/NetworkStorageSessionMap.cpp: (NetworkStorageSessionMap::defaultStorageSession): (NetworkStorageSessionMap::switchToNewTestingSession): (NetworkStorageSessionMap::ensureSession): Source/WebKitLegacy/cf: Reviewed by Geoffrey Garen. * WebCoreSupport/WebInspectorClientCF.cpp: (WebInspectorClient::createFrontendSettings): Source/WebKitLegacy/ios: Reviewed by Geoffrey Garen. * WebCoreSupport/WebFixedPositionContent.mm: (-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]): Source/WebKitLegacy/mac: Reviewed by Geoffrey Garen. * History/WebHistory.mm: (-[WebHistoryPrivate init]): * History/WebHistoryItem.mm: (-[WebHistoryItem initFromDictionaryRepresentation:]): * Plugins/Hosted/NetscapePluginHostProxy.mm: (WKPCGetScriptableNPObjectReply): (WKPCBooleanReply): (WKPCBooleanAndDataReply): (WKPCInstantiatePluginReply): * Plugins/Hosted/ProxyInstance.mm: (WebKit::ProxyInstance::methodNamed): (WebKit::ProxyInstance::fieldNamed): * Plugins/Hosted/WebHostedNetscapePluginView.mm: (-[WebHostedNetscapePluginView createPlugin]): * Plugins/WebNetscapePluginEventHandler.mm: (WebNetscapePluginEventHandler::create): * Plugins/WebNetscapePluginView.mm: (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]): * Storage/WebDatabaseManagerClient.mm: (DidModifyOriginData::dispatchToMainThread): * WebCoreSupport/WebFrameLoaderClient.mm: (addRedirectURL): (WebFrameLoaderClient::savePlatformDataToCachedFrame): * WebCoreSupport/WebInspectorClient.mm: (WebInspectorClient::openLocalFrontend): * WebView/WebDeviceOrientationProviderMock.mm: * WebView/WebFrame.mm: (-[WebFrame _attachScriptDebugger]): * WebView/WebMediaPlaybackTargetPicker.mm: (WebMediaPlaybackTargetPicker::create): * WebView/WebTextIterator.mm: (-[WebTextIterator initWithRange:]): * WebView/WebView.mm: (-[WebView _injectOutlookQuirksScript]): (-[WebView _commonInitializationWithFrameName:groupName:]): (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): (-[WebView _selectionServiceController]): (-[WebView _setTextIndicator:withLifetime:]): * WebView/WebViewData.mm: (WebViewLayerFlushScheduler::WebViewLayerFlushScheduler): (-[WebViewPrivate init]): Source/WebKitLegacy/win: Reviewed by Geoffrey Garen. * FullscreenVideoController.cpp: (FullscreenVideoController::FullscreenVideoController): * Plugins/PluginStream.cpp: (WebCore::PluginStream::didReceiveData): * Plugins/PluginView.cpp: (WebCore::PluginView::load): * Plugins/PluginViewWin.cpp: (WebCore::PluginView::wndProc): * WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::WebChromeClient): * WebCoreSupport/WebFrameLoaderClient.cpp: (WebFrameLoaderClient::WebFrameLoaderClient): (WebFrameLoaderClient::savePlatformDataToCachedFrame): * WebCoreSupport/WebInspectorClient.cpp: (WebInspectorClient::openLocalFrontend): (WebInspectorClient::highlight): * WebElementPropertyBag.cpp: (WebElementPropertyBag::WebElementPropertyBag): * WebHistoryItem.cpp: (WebHistoryItem::initFromDictionaryRepresentation): * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp: (WKQCA::CAD3DRenderer::createD3DPostProcessingContext): * WebNotificationCenter.cpp: (WebNotificationCenter::WebNotificationCenter): * WebView.cpp: (WebView::handleMouseEvent): (WebView::registerEmbeddedViewMIMEType): (WebView::enterVideoFullscreenForVideoElement): (WebView::addUserScriptToGroup): (WebView::addUserStyleSheetToGroup): (WebView::setAcceleratedCompositing): Source/WTF: Reviewed by Geoff Garen. This patch is second part of bug 200620 patch. I split I split it into three pieces to make roll-out easy. his part, we convert std::make_unique to WTF::makeUnique or WTF::makeUniqueWithoutFastMallocCheck. In the third patch, we will add a static_assert to makeUnique, which ensures the given class T is FastMalloced or IsoHeaped. This patch adds `WTF::makeUnique<T>` and `WTF::makeUniqueWithoutFastMallocCheck<T>` as drop-in replacement for `std::make_unique<T>`. `WTF::makeUnique<T>` has one additional `static_assert` check which ensures `T` FastMalloc / IsoHeap annotated. If it is not, the compile error happens. In this patch, I tried using this everywhere in WebKit as much as possible. And we found that surprisingly many classes are missing FastMalloc annotation and allocated from system-malloc. Using WTF::makeUnique enforces classes / structs to use FastMalloc. WTF::makeUniqueWithoutFastMallocCheck is offered for the corner cases. This is identical to std::make_unique. We use this for classes that are offered by non-WebKit code base, like, zlib. This clear name can make us easily find this allocation is intentionally done by system-malloc. We do not take the following direction, `WTF::makeUnique` automatically allocates FastMalloc even if FastMalloc annotation is not attached. Since default deleter is performing `delete` and this is not what we want for FastMalloced ones, we need to return std::unique_ptr<T, FastFreeDeleter> for T if T does not have FastMalloc-annotation. Automatically doing this sounds a bit dangerous. auto pointer = WTF::makeUnique<T>(); // Super dangerous, but sometimes it is required... auto* rawPointer = pointer.release(); // Passing rawPointer to somewhere, and delete rawPointer; The above one becomes invalid because pointer may start requiring non `delete` destroying function. In the above case, the correct way becomes the following. rawPointer->~T(); fastFree(rawPointer); This looks non-intuitive. And having two ways to destroying objects (`delete` or the above one) can be error-prone. If we have WTF_MAKE_FAST_ALLOCATED for T, we do not need to care about this. "new" and "delete" operators are defined, and C++ way works. The simple invariant, "makeUnique just does `new` internally. And `delete` operator does `delete`. default deleter is just doing `delete`", is kept. While we need to annotate many classes with WTF_MAKE_FAST_ALLOCATED, it is one time cost when we add a class. And, by introducing `WTF::makeUnique<>`, we no longer forget adding this. makeUnique(...) static_assert(T is FastMalloced or IsoHeaped); return make_unique<T>(...) * benchmarks/LockFairnessTest.cpp: * benchmarks/LockSpeedTest.cpp: * wtf/ConcurrentVector.h: * wtf/CrossThreadTaskHandler.cpp: (WTF::CrossThreadTaskHandler::taskRunLoop): * wtf/FilePrintStream.cpp: (WTF::FilePrintStream::open): * wtf/Function.h: (WTF::Function<Out): * wtf/HashTable.h: (WTF::KeyTraits>::HashTable): * wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor): * wtf/StdLibExtras.h: (WTF::makeUnique): (WTF::makeUniqueWithoutFastMallocCheck): * wtf/StreamBuffer.h: (WTF::StreamBuffer::append): * wtf/UniqueRef.h: (WTF::makeUniqueRefWithoutFastMallocCheck): (WTF::makeUniqueRef): * wtf/glib/RunLoopGLib.cpp: (WTF::RunLoop::dispatchAfter): * wtf/text/StringView.cpp: (WTF::StringView::GraphemeClusters::Iterator::Iterator): Tools: Reviewed by Geoffrey Garen. * DumpRenderTree/TestRunner.cpp: (addURLToRedirectCallback): (setWillSendRequestClearHeaderCallback): (TestRunner::setAccummulateLogsForChannel): (TestRunner::runUIScript): (TestRunner::setOpenPanelFiles): * DumpRenderTree/mac/DumpRenderTree.mm: (dumpFramesAsText): * DumpRenderTree/mac/EventSendingController.mm: (eventPressedMouseButtonsSwizzlerForViewAndEvent): * DumpRenderTree/win/DRTDataObject.cpp: (DRTDataObject::SetData): * DumpRenderTree/win/FrameLoadDelegate.cpp: (FrameLoadDelegate::FrameLoadDelegate): * DumpRenderTree/win/UIDelegate.cpp: (DRTUndoManager::DRTUndoManager): (UIDelegate::UIDelegate): (UIDelegate::resetUndoManager): * TestWebKitAPI/JavaScriptTest.cpp: (TestWebKitAPI::runJSTest): * TestWebKitAPI/PlatformUtilities.cpp: (TestWebKitAPI::Util::toSTD): * TestWebKitAPI/Tests/WTF/Expected.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashCountedSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashMap.cpp: (TestWebKitAPI::TEST): (TestWebKitAPI::testMovingUsingEnsure): (TestWebKitAPI::testMovingUsingAdd): * TestWebKitAPI/Tests/WTF/HashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ListHashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Lock.cpp: (TestWebKitAPI::runLockTest): * TestWebKitAPI/Tests/WTF/ParkingLot.cpp: * TestWebKitAPI/Tests/WTF/RefCounter.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ThreadGroup.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Variant.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/WeakPtr.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/CARingBuffer.cpp: (TestWebKitAPI::CARingBufferTest::SetUp): * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: (TestWebKitAPI::createTestValue): * TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/FileMonitor.cpp: (TestWebKitAPI::TEST_F): * TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp: * TestWebKitAPI/Tests/WebKit/CloseFromWithinCreatePage.cpp: (TestWebKitAPI::createNewPage): * TestWebKitAPI/Tests/WebKit/ModalAlertsSPI.cpp: (TestWebKitAPI::createNewPage): * TestWebKitAPI/Tests/WebKit/TextFieldDidBeginAndEndEditing.cpp: * TestWebKitAPI/Tests/WebKit/UserMessage.cpp: (TestWebKitAPI::WebKit2UserMessageRoundTripTest::SetUp): * TestWebKitAPI/Tests/WebKit/WillLoad.cpp: (TestWebKitAPI::WebKit2WillLoadTest::SetUp): * TestWebKitAPI/Tests/WebKit/mac/ForceLightAppearanceInBundle_Bundle.mm: (TestWebKitAPI::ForceLightAppearanceInBundleTest::didReceiveMessage): * TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp: (serverCallback): (testWebViewAuthenticationProxyHTTPS): * TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp: (WebKitDOMDOMWindowTest::create): * TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm: (TestWebKitAPI::Util::toSTD): * TestWebKitAPI/cocoa/TestWKWebView.mm: (applyWorkaroundToAllowWritingAttributedStringsToItemProviders): (-[TestWKWebView initWithFrame:configuration:addToWindow:]): * TestWebKitAPI/mac/TestFontOptions.mm: (-[TestFontOptions initWithFontOptions:]): * WebKitTestRunner/InjectedBundle/EventSendingController.cpp: (WTR::EventSendingController::callAfterScrollingCompletes): * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::didCreatePage): * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setOpenPanelFiles): * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: * WebKitTestRunner/StringFunctions.h: (WTR::toSTD): (WTR::toWTFString): * WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize): (WTR::TestController::generatePageConfiguration): (WTR::TestController::resetStateToConsistentValues): (WTR::createTestURL): (WTR::TestController::runTest): (WTR::TestController::platformCreateWebView): * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::runUISideScript): * WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::platformCreateWebView): (WTR::TestController::setDefaultCalendarType): * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp: (WTR::getGDKKeySymForKeyRef): * WebKitTestRunner/ios/TestControllerIOS.mm: (WTR::TestController::platformResetStateToConsistentValues): (WTR::TestController::setKeyboardInputModeIdentifier): * WebKitTestRunner/mac/EventSenderProxy.mm: (WTR::EventSenderProxy::mouseDown): (WTR::EventSenderProxy::mouseUp): (WTR::EventSenderProxy::mouseMoveTo): * WebKitTestRunner/wpe/EventSenderProxyWPE.cpp: (WTR::wpeKeySymForKeyRef): Canonical link: https://commits.webkit.org/214609@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-19 06:59:40 +00:00
m_temporaryUserGesture = makeUnique<UserGestureIndicator>(ProcessingUserGesture, &m_document);
Storage Access API: Make two changes requested by developers and complete refactoring and cleanup https://bugs.webkit.org/show_bug.cgi?id=197648 <rdar://problem/50527493> Reviewed by Chris Dumez. Source/WebCore: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. Reviewed by Chris Dumez. Tests: http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html http/tests/storageAccess/deny-without-prompt-preserves-gesture.html http/tests/storageAccess/grant-with-prompt-preserves-gesture.html http/tests/storageAccess/has-storage-access-true-if-feature-off.html * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::hasStorageAccess): Deleted. (WebCore::Document::requestStorageAccess): Deleted. (WebCore::Document::enableTemporaryTimeUserGesture): Deleted. (WebCore::Document::consumeTemporaryTimeUserGesture): Deleted. (WebCore::Document::hasFrameSpecificStorageAccess const): Deleted. (WebCore::Document::setHasFrameSpecificStorageAccess): Deleted. * dom/Document.h: (WebCore::Document::setUserGrantsStorageAccessOverride): Deleted. All of this has been moved to the supplement WebCore::DocumentStorageAccess. * dom/Document.idl: The Storage Access API has been moved to DocumentStorageAccess.idl. * dom/DocumentStorageAccess.cpp: Added. (WebCore::DocumentStorageAccess::from): (WebCore::DocumentStorageAccess::supplementName): (WebCore::DocumentStorageAccess::hasStorageAccess): (WebCore::DocumentStorageAccess::requestStorageAccess): (WebCore::DocumentStorageAccess::enableTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::consumeTemporaryTimeUserGesture): (WebCore::DocumentStorageAccess::hasFrameSpecificStorageAccess const): (WebCore::DocumentStorageAccess::setHasFrameSpecificStorageAccess): * dom/DocumentStorageAccess.h: Added. * dom/DocumentStorageAccess.idl: Added. * page/ChromeClient.h: * testing/Internals.cpp: (WebCore::Internals::setUserGrantsStorageAccess): Deleted. This was dead code. * testing/Internals.h: * testing/Internals.idl: Source/WebKit: Developers have requested two minor changes to the Storage Access API: - Only consume the user gesture when the user explicitly denies access. - Make document.hasStorageAccess() return true instead of false when the feature is off. In addition to this, we have refactoring and cleanup to do. Namely: - Make use of WebCore::RegistrableDomain all the way. - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess. - Introduce boolean enums for state handling. - Break out the Storage Access API functionality into a supplement of WebCore::Document. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted. This function is now no longer exposed and its functionality could be folded into the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more clearly named. * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcess::hasStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccess): Deleted. (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted. (WebKit::NetworkProcess::grantStorageAccess): Deleted. (WebKit::NetworkProcess::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * Scripts/webkit/messages.py: Instructions for derived IPC code on how to include the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted. (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted. (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted. (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted. (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::hasStorageAccess): Deleted. (WebKit::WebsiteDataStore::requestStorageAccess): Deleted. (WebKit::WebsiteDataStore::grantStorageAccess): Deleted. These functions were left behind in the move of ITP to the network process. This communication goes through WebKit::NetworkConnectionToWebProcess since a while back. * UIProcess/WebsiteData/WebsiteDataStore.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::hasStorageAccess): (WebKit::WebChromeClient::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::hasStorageAccess): (WebKit::WebPage::requestStorageAccess): These changes are due to the new enums WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain objects instead of Strings now. * WebProcess/WebPage/WebPage.h: LayoutTests: The changed test cases have had calls to WebCore::Internals::setUserGrantsStorageAccess() removed since it was dead code. One of the new tests, deny-with-prompt-does-not-preserve-gesture.html, is marked [ Skip ] for now since we lack the ability to click "Don't allow" in the prompt. I wanted to include the test anyway so that we have it. I have done a manual test to make sure the code does the right thing for this case. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-expected.txt: Added. * http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/deny-without-prompt-preserves-gesture-expected.txt: Added. * http/tests/storageAccess/deny-without-prompt-preserves-gesture.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/grant-with-prompt-preserves-gesture-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window-expected.txt. * http/tests/storageAccess/grant-with-prompt-preserves-gesture.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-pop-window.html. * http/tests/storageAccess/has-storage-access-true-if-feature-off-expected.txt: Added. * http/tests/storageAccess/has-storage-access-true-if-feature-off.html: Added. * http/tests/storageAccess/resources/request-storage-access-and-immediately-postmessage-iframe.html: * http/tests/storageAccess/resources/request-storage-access-iframe-and-pop-window.html: * http/tests/storageAccess/resources/request-storage-access-iframe.html: * http/tests/storageAccess/resources/request-storage-access-without-user-gesture-iframe.html: * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html: * platform/mac-wk2/TestExpectations: Added expectations for the new tests. Canonical link: https://commits.webkit.org/211805@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-07 19:55:29 +00:00
}
void DocumentStorageAccess::consumeTemporaryTimeUserGesture()
{
m_temporaryUserGesture = nullptr;
}
bool DocumentStorageAccess::hasFrameSpecificStorageAccess() const
{
auto* frame = m_document.frame();
return frame && frame->loader().client().hasFrameSpecificStorageAccess();
}
} // namespace WebCore
#endif // ENABLE(RESOURCE_LOAD_STATISTICS)