haikuwebkit/Source/WebCore/html/parser/HTMLResourcePreloader.cpp

93 lines
3.8 KiB
C++
Raw Permalink Normal View History

Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
/*
* Copyright (C) 2013 Google Inc. All Rights Reserved.
*
* 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. ``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
* 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
Origin header is not included in CORS requests for preloaded cross-origin resources https://bugs.webkit.org/show_bug.cgi?id=155761 <rdar://problem/25351850> Reviewed by Alex Christensen. Source/WebCore: Making HTML preloader fully aware of crossorigin attribute value. Introducing CachedResourceRequest::setAsPotentiallyCrossOrigin as a helper routine to activate CORS mode. Making HTMLLinkElement and HTMLResourcePreloader use that routine. Making TokenPreloadScanner store the crossorigin attribute value in preload requests. Making TokenPreloadScanner store the crossorigin attribute value for link elements. Test: http/tests/security/cross-origin-css-9.html * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::process): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): * html/parser/HTMLResourcePreloader.cpp: (WebCore::crossOriginModeAllowsCookies): (WebCore::PreloadRequest::resourceRequest): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::setCrossOriginMode): (WebCore::PreloadRequest::PreloadRequest): Deleted. (WebCore::PreloadRequest::resourceType): Deleted. * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): * loader/cache/CachedResourceRequest.h: LayoutTests: * http/tests/security/cross-origin-css-9-expected.txt: Added. * http/tests/security/cross-origin-css-9.html: Added. * http/tests/security/resources/get-css-if-origin-header.php: Added. Canonical link: https://commits.webkit.org/176712@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@201930 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-10 18:17:11 +00:00
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
*/
#include "config.h"
#include "HTMLResourcePreloader.h"
#include "CachedResourceLoader.h"
Add helper function to create a potential CORS request https://bugs.webkit.org/show_bug.cgi?id=189251 Reviewed by Andy Estes. Add a new function, createPotentialAccessControlRequest, that we will use to implement the algorithm Create a potential- CORS request from the HTML standard: <https://html.spec.whatwg.org/multipage/urls-and-fetching.html#create-a-potential-cors-request> (31 August 2018). This function replaces CachedResourceRequest::setAsPotentiallyCrossOrigin() and is the first step towards separating the concepts of CORS settings states and module script credentials mode as well as implementing the aforementioned algorithm. Rename CachedResourceRequest::setAsPotentiallyCrossOrigin() to deprecatedSetAsPotentiallyCrossOrigin() and switch existing callers to use createPotentialAccessControlRequest(). For now, createPotentialAccessControlRequest() is implemented in terms of deprecatedSetAsPotentiallyCrossOrigin(). No functionality changed. So, no new tests. * bindings/js/CachedScriptFetcher.cpp: (WebCore::CachedScriptFetcher::requestScriptWithCache const): Write in terms of WebCore::createPotentialAccessControlRequest(). * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::process): Ditto. * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): Ditto. * loader/CrossOriginAccessControl.cpp: (WebCore::createPotentialAccessControlRequest): For now, implemented in terms of CachedResourceRequest::deprecatedSetAsPotentiallyCrossOrigin(). * loader/CrossOriginAccessControl.h: * loader/ImageLoader.cpp: (WebCore::ImageLoader::updateFromElement): Write in terms of WebCore::createPotentialAccessControlRequest(). * loader/LinkLoader.cpp: (WebCore::LinkLoader::preloadIfNeeded): Ditto. * loader/MediaResourceLoader.cpp: (WebCore::MediaResourceLoader::requestResource): Ditto. Also renamed local variable cacheRequest to cachedRequest. * loader/TextTrackLoader.cpp: (WebCore::TextTrackLoader::load): Write in terms of WebCore::createPotentialAccessControlRequest(). Also change local variable document from a pointer to a reference since this function asserts that the script execution context is a non-null Document. * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::deprecatedSetAsPotentiallyCrossOrigin): Renamed; formerly named setAsPotentiallyCrossOrigin. (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): Deleted. * loader/cache/CachedResourceRequest.h: (WebCore::CachedResourceRequest::setPriority): Added. Canonical link: https://commits.webkit.org/204256@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235617 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-09-04 17:11:03 +00:00
#include "CrossOriginAccessControl.h"
#include "DefaultResourceLoadPriority.h"
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
#include "Document.h"
module's default cross-origin value should be "anonymous" https://bugs.webkit.org/show_bug.cgi?id=210326 Reviewed by Sam Weinig. Source/WebCore: Tests: http/tests/security/cookie-module-import-propagate.html http/tests/security/cookie-module-import.html http/tests/security/cookie-module-propagate.html http/tests/security/cookie-module.html The original spec was using "omit" crossorigin for modules when crossorigin is not set / empty. However, the spec is changed to sending requests with "same-origin" credentials ("anonymous" crossorigin mode) by default. We should follow it. * dom/ScriptElement.cpp: (WebCore::ScriptElement::requestModuleScript): * dom/ScriptElementCachedScriptFetcher.cpp: (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): * dom/ScriptElementCachedScriptFetcher.h: * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * loader/cache/CachedScript.cpp: (WebCore::CachedScript::script): While this is not directly related to this patch, added new tests found that we are returning null StringView if the resource is zero byte. This totally works, but JSC::Parser has assertion that this is non-null StringView. For zero byte CachedScript resource, we should return non-null empty StringView instead. LayoutTests: * http/tests/security/cookie-module-expected.txt: Added. * http/tests/security/cookie-module-import-expected.txt: Added. * http/tests/security/cookie-module-import-propagate-expected.txt: Added. * http/tests/security/cookie-module-import-propagate.html: Added. * http/tests/security/cookie-module-import.html: Added. * http/tests/security/cookie-module-propagate-expected.txt: Added. * http/tests/security/cookie-module-propagate.html: Added. * http/tests/security/cookie-module.html: Added. * http/tests/security/resources/cookie-protected-script.php: Added. * http/tests/security/resources/module-nest-import.php: Added. Canonical link: https://commits.webkit.org/223339@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260038 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-13 20:59:07 +00:00
#include "ScriptElementCachedScriptFetcher.h"
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
PreloadScanner preloads external CSS with non-matching media attribute https://bugs.webkit.org/show_bug.cgi?id=106198 Patch by Yoav Weiss <yoav@yoav.ws> on 2013-08-03 Reviewed by Dean Jackson. Source/WebCore: Test: http/tests/loading/preload-css-test.html * html/parser/HTMLPreloadScanner.cpp: Remove m_linkMediaAttributeIsScreen Remove MediaQueryEvaluator calls Add m_mediaAttribute that gets the value of the "media" attribute Pass m_mediaAttribute to PreloadRequest (WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner): (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): (WebCore::TokenPreloadScanner::StartTagScanner::resourceType): (WebCore::TokenPreloadScanner::StartTagScanner::shouldPreload): * html/parser/HTMLResourcePreloader.cpp: Add MediaQueryEvaluator calls to see if "media" matches Perform preload only to resource with a matching media (if media exists) (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::mediaAttributeMatches): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Add a constructor with a mediaAttribute value Add m_mediaAttribute & its getter. (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::media): (WebCore::PreloadRequest::PreloadRequest): LayoutTests: * http/tests/loading/preload-css-test-expected.txt: Added. * http/tests/loading/preload-css-test.html: Added. * http/tests/loading/resources/big_mq.css: Added. * http/tests/loading/resources/small_mq.css: Added. * http/tests/local/link-stylesheet-load-order-preload-expected.txt: Canonical link: https://commits.webkit.org/137420@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-08-03 13:43:24 +00:00
#include "MediaQueryEvaluator.h"
#include "RenderView.h"
PreloadScanner preloads external CSS with non-matching media attribute https://bugs.webkit.org/show_bug.cgi?id=106198 Patch by Yoav Weiss <yoav@yoav.ws> on 2013-08-03 Reviewed by Dean Jackson. Source/WebCore: Test: http/tests/loading/preload-css-test.html * html/parser/HTMLPreloadScanner.cpp: Remove m_linkMediaAttributeIsScreen Remove MediaQueryEvaluator calls Add m_mediaAttribute that gets the value of the "media" attribute Pass m_mediaAttribute to PreloadRequest (WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner): (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): (WebCore::TokenPreloadScanner::StartTagScanner::resourceType): (WebCore::TokenPreloadScanner::StartTagScanner::shouldPreload): * html/parser/HTMLResourcePreloader.cpp: Add MediaQueryEvaluator calls to see if "media" matches Perform preload only to resource with a matching media (if media exists) (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::mediaAttributeMatches): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Add a constructor with a mediaAttribute value Add m_mediaAttribute & its getter. (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::media): (WebCore::PreloadRequest::PreloadRequest): LayoutTests: * http/tests/loading/preload-css-test-expected.txt: Added. * http/tests/loading/preload-css-test.html: Added. * http/tests/loading/resources/big_mq.css: Added. * http/tests/loading/resources/small_mq.css: Added. * http/tests/local/link-stylesheet-load-order-preload-expected.txt: Canonical link: https://commits.webkit.org/137420@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-08-03 13:43:24 +00:00
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
namespace WebCore {
URL PreloadRequest::completeURL(Document& document)
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
{
return document.completeURL(m_resourceURL, m_baseURL.isEmpty() ? document.baseURL() : m_baseURL);
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
}
CachedResourceRequest PreloadRequest::resourceRequest(Document& document)
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
{
ASSERT(isMainThread());
CSP: Teach the preload scanner about the 'nonce' attribute https://bugs.webkit.org/show_bug.cgi?id=161192 <rdar://problem/28010354> Reviewed by Darin Adler. Source/WebCore: This patch was inspired by a similar Blink change: <https://chromium.googlesource.com/chromium/src/+/dde5487f380cf774e4c0e96ba7f88ea68e723907> Preload external scripts and stylesheets whose HTML script and link elements have a nonce attribute that is listed in the Content Security Policy (CSP) of the page. Currently the preload scanner ignores the nonce attribute on HTML script and link elements. So, WebKit does not preload their associated subresources unless the value of the src attribute or href attribute is whitelisted in the CSP of the page for script and link elements, respectively. Instead the preload scanner should recognize the nonce attribute on script and link elements and query the CSP of the page with it. If the nonce attribute is whitelisted then the request should be preloaded. Tests: http/tests/loading/do-not-preload-css-blocked-by-csp.html http/tests/loading/do-not-preload-script-src-blocked-by-csp.html http/tests/loading/preload-css-with-csp-nonce.html http/tests/loading/preload-script-src-with-csp-nonce.html * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): Set the nonce on the PreloadRequest to the nonce that we found during the scan. (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): For script and link tag names, save the value of the nonce attribute (if it has one). * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): Skip CSP policy check if the nonce is listed in the CSP of the page. * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::setNonce): Added. LayoutTests: Add tests to ensure that we preload <script>s and <link>s whose nonce is allowed by the Content Security Policy of the page. * http/tests/loading/do-not-preload-css-blocked-by-csp-expected.txt: Added. * http/tests/loading/do-not-preload-css-blocked-by-csp.html: Added. * http/tests/loading/do-not-preload-script-src-blocked-by-csp-expected.txt: Added. * http/tests/loading/do-not-preload-script-src-blocked-by-csp.html: Added. * http/tests/loading/preload-css-with-csp-nonce-expected.txt: Added. * http/tests/loading/preload-css-with-csp-nonce.html: Added. * http/tests/loading/preload-script-src-with-csp-nonce-expected.txt: Added. * http/tests/loading/preload-script-src-with-csp-nonce.html: Added. Canonical link: https://commits.webkit.org/183405@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209759 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-12-13 18:21:37 +00:00
bool skipContentSecurityPolicyCheck = false;
if (m_resourceType == CachedResource::Type::Script)
skipContentSecurityPolicyCheck = document.contentSecurityPolicy()->allowScriptWithNonce(m_nonceAttribute);
else if (m_resourceType == CachedResource::Type::CSSStyleSheet)
skipContentSecurityPolicyCheck = document.contentSecurityPolicy()->allowStyleWithNonce(m_nonceAttribute);
ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
if (skipContentSecurityPolicyCheck)
options.contentSecurityPolicyImposition = ContentSecurityPolicyImposition::SkipPolicyCheck;
[ES6] Integrate ES6 Modules into WebCore https://bugs.webkit.org/show_bug.cgi?id=148897 Reviewed by Ryosuke Niwa. Source/WebCore: This patch introduces ES6 Modules into WebCore. We integrate JSC's JSModuleLoader into WebCore. JSC constructs the module loader pipeline by the chains of the promises. To handle this, the following components are added. 1. CachedModuleScript CachedModuleScript wraps the promise based JSModuleLoader pipeline and offers similar APIs to CachedScript. ScriptElement and PendingScript interact with CachedModuleScript when the script tag is the module tag instead of CachedScript. ScriptElement and PendingScript will receive the notification from CachedModuleScript by implementing CachedModuleScriptClient. 2. ScriptModuleLoader This is the module loader instantiated per document. It manages fetching and offers the callbacks for the JSC's JSModuleLoader implementation. ScriptModuleLoader will fetch the resource by creating CachedModuleScriptLoader per resource. ScriptModuleLoader will receive the notification by implementing CachedModuleScriptLoaderClient. When the resource is fetched, the module loader will drive the promise resolve/reject chain. 3. CachedModuleScriptLoader This fetches the resource by using CachedScript. Using CachedScript means that it automatically reports the resource to the inspector. CachedModuleScriptLoader notify to ScriptModuleLoader when the resource is fetched. One tricky point is that the fetch requests issued from one module-graph should share the same nonce, crossorigin attributes etc. Here, we wrote the module graph like `A -> B (A depends on B)`. <script tag> -> A -> B -> C -> D When fetching A, B, C, and D modules, we need to set the same nonce, crossorigin etc. configuration derived from the original script tag. So per module-graph information should be shared throughout the module loader pipeline. To do so, JSC's module loader implementation can take the value called `initiator`. Since the loader will propagate & share this `initiator` throughout the pipeline, we can transfer and share some metadata. Currently, we pass the JSWrapper of the script tag as the initiator. Each fetch request is created by using this initiator script element. More integration into the inspector should be done in the subsequent patch. * CMakeLists.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/CachedModuleScript.cpp: Added. CachedModuleScript offers similar interface to CachedScript to make ScriptElement things easier. It encapsulates the detail of the JSC JSModuleLoader that this module loader is driven by the chain of the promises. CachedModuleScript's callbacks are called from the promise's handlers configured in ScriptController::loadModuleScript. (WebCore::CachedModuleScript::create): (WebCore::CachedModuleScript::CachedModuleScript): (WebCore::CachedModuleScript::load): (WebCore::CachedModuleScript::notifyLoadCompleted): (WebCore::CachedModuleScript::notifyLoadFailed): (WebCore::CachedModuleScript::notifyLoadWasCanceled): (WebCore::CachedModuleScript::notifyClientFinished): (WebCore::CachedModuleScript::addClient): (WebCore::CachedModuleScript::removeClient): * bindings/js/CachedModuleScript.h: Added. (WebCore::CachedModuleScript::moduleKey): (WebCore::CachedModuleScript::error): (WebCore::CachedModuleScript::wasCanceled): (WebCore::CachedModuleScript::isLoaded): (WebCore::CachedModuleScript::nonce): (WebCore::CachedModuleScript::crossOriginMode): Save nonce and crossorigin attributes when we start ScriptElement::prepareScript. * bindings/js/CachedModuleScriptClient.h: Copied from Source/WebCore/dom/LoadableScript.h. (WebCore::CachedModuleScriptClient::~CachedModuleScriptClient): * bindings/js/CachedModuleScriptLoader.cpp: Added. CachedModuleScriptLoader is responsible to fetching the resource for the module script. It uses propagated `initiator` to create the request. This initiator is the JS wrapper of the script element issuing this fetching request. The name `initiator` is derived from the request.setInitiator(). Once the resource is fetched, the fetcher will notify to the client. Currently, ScriptModuleLoader implements this client interface. (WebCore::CachedModuleScriptLoader::create): (WebCore::CachedModuleScriptLoader::CachedModuleScriptLoader): (WebCore::CachedModuleScriptLoader::~CachedModuleScriptLoader): (WebCore::CachedModuleScriptLoader::load): Create the request. We call ScriptElement::requestCachedScript to initiate a new fetching request. At that time, nonce and crossorigin (and charset) attributes of this element are applied to the new request. (WebCore::CachedModuleScriptLoader::notifyFinished): * bindings/js/CachedModuleScriptLoader.h: Copied from Source/WebCore/bindings/js/ScriptModuleLoader.h. * bindings/js/CachedModuleScriptLoaderClient.h: Copied from Source/WebCore/dom/LoadableScript.h. (WebCore::CachedModuleScriptLoaderClient::~CachedModuleScriptLoaderClient): * bindings/js/CachedScriptSourceProvider.h: (WebCore::CachedScriptSourceProvider::create): (WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider): (WebCore::makeSource): * bindings/js/JSBindingsAllInOne.cpp: * bindings/js/JSDOMBinding.cpp: (WebCore::retrieveErrorMessage): (WebCore::reportException): * bindings/js/JSDOMBinding.h: * bindings/js/JSMainThreadExecState.h: (WebCore::JSMainThreadExecState::loadModule): (WebCore::JSMainThreadExecState::linkAndEvaluateModule): * bindings/js/ScriptController.cpp: (WebCore::ScriptController::evaluateInWorld): (WebCore::ScriptController::loadModuleScriptInWorld): (WebCore::ScriptController::loadModuleScript): This just performs loading and not executing the module graph. Once the module graph is loaded, it is notified to the given CachedModuleScript. (WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld): (WebCore::ScriptController::linkAndEvaluateModuleScript): This executes the linking and evaluation of the already instantiated module graph. After loading the module graph, we call this function for the module to evaluate it. This is called from ScriptElement::executeModuleScript. (WebCore::ScriptController::evaluateModule): Every time we evaluate the module, the ScriptModuleLoader::evaluate hook is called. So the loader calls this function to actually evaluate the module. (WebCore::jsValueToModuleKey): (WebCore::ScriptController::setupModuleScriptHandlers): The JSC's module loader is driven by the chain of the promise. So here, we convert this to CachedModuleScript / CachedModuleScriptClient style and encapsulate the details. This encapsulation makes CachedModuleScript similar to CachedScript and it makes things simple in the rest of WebCore. If the propagated error is already reported to the inspector, we receive moduleLoaderAlreadyReportedErrorSymbol as the error value. So at that case, we don't report it twice. If the rejection is caused due to the canceled fetching, moduleLoaderFetchingIsCanceledSymbol appears as the error value. In that case, we will call CachedModuleScript::notifyLoadWasCanceled. (WebCore::ScriptController::executeScript): * bindings/js/ScriptController.h: (WebCore::ScriptController::moduleLoaderAlreadyReportedErrorSymbol): (WebCore::ScriptController::moduleLoaderFetchingIsCanceledSymbol): * bindings/js/ScriptModuleLoader.cpp: We use DeferredWrapper to resolve promises used for the module pipeline. Thus, once the active DOM objects are suspended, the module loader propagation stops. (WebCore::ScriptModuleLoader::~ScriptModuleLoader): Clear the clients of the fetchers issued from this loader. (WebCore::isRootModule): (WebCore::ScriptModuleLoader::resolve): Resolve the module specifier (that is written in `import from "XXX"`) to the unique module key. We use URL string as module key. The edge case is that the module is inlined one. In that case, we don't have any URL for that. Instead of URL, we use symbol at that time. (WebCore::ScriptModuleLoader::fetch): Start fetching for the requested module. It returns the promise that is resolved when the fetching is done. The loader creates the fetcher, and the fetcher start loading the resource. Once the fetcher loads the resource, it notify to the loader through CachedModuleScriptLoaderClient interface. Since we pass the original script element as the `initiator` here, the fetcher can use this initiator to create the request. While the result of CachedResource has 3 variations (loaded, canceled, error occurred), Promise only tells us whether it is resolved or rejected. When CachedModuleScript gets the result from the promise chain, it needs to know which the result is. To transfer the canceled information, we reject the promise with the special symbol `moduleLoaderAlreadyReportedErrorSymbol`. This offers the way to distinguish the canceled error from the other errors. (WebCore::ScriptModuleLoader::evaluate): This is the hook function that is called when JSC's JSModuleLoader attempts to execute each module. (WebCore::ScriptModuleLoader::notifyFinished): This function is called when the fetcher completes. We will resolve the promise with the result of the fetching. The module loader pipeline is constructed as a chain of promises. Rejecting a promise when some error occurs is important because the execution flow of the promise chain is driven by "rejected" or "fulfilled" events. If the promise is not rejected while error occurs, reject handler won't be executed and all the subsequent promise chain will wait the result forever. As a result, even if the error is already reported to the inspector elsewhere, it should be propagated in the pipeline. For example, the error of loading CachedResource is already reported to the inspector by the loader. But we still need to reject the promise to propagate this error to the script element. At that time, we don't want to report the same error twice. When we propagate the error that is already reported to the inspector, we throw moduleLoaderAlreadyReportedErrorSymbol symbol instead. By comparing the thrown error with this symbol, we can distinguish errors raised when checking syntax of a module script from errors reported already. In the reject handler of the promise, we only report a error that is not this symbol. And mime type checking is done here since the module script always require this check. * bindings/js/ScriptModuleLoader.h: (WebCore::ScriptModuleLoader::document): Deleted. * bindings/js/ScriptSourceCode.h: (WebCore::ScriptSourceCode::ScriptSourceCode): * dom/CurrentScriptIncrementer.h: (WebCore::CurrentScriptIncrementer::CurrentScriptIncrementer): * dom/LoadableClassicScript.cpp: (WebCore::LoadableClassicScript::error): (WebCore::LoadableClassicScript::execute): (WebCore::LoadableClassicScript::wasErrored): Deleted. * dom/LoadableClassicScript.h: * dom/LoadableModuleScript.cpp: Copied from Source/WebCore/dom/LoadableScript.h. This is the derived class from LoadableScript. It is used for the script module graphs. (WebCore::LoadableModuleScript::create): (WebCore::LoadableModuleScript::LoadableModuleScript): (WebCore::LoadableModuleScript::~LoadableModuleScript): (WebCore::LoadableModuleScript::isLoaded): (WebCore::LoadableModuleScript::error): (WebCore::LoadableModuleScript::wasCanceled): (WebCore::LoadableModuleScript::notifyFinished): (WebCore::LoadableModuleScript::execute): * dom/LoadableModuleScript.h: Copied from Source/WebCore/dom/LoadableScript.h. (isType): * dom/LoadableScript.h: (WebCore::LoadableScript::isModuleScript): (WebCore::LoadableScript::isModuleGraph): Deleted. * dom/PendingScript.cpp: (WebCore::PendingScript::error): (WebCore::PendingScript::wasErrored): Deleted. * dom/PendingScript.h: * dom/ScriptElement.cpp: (WebCore::ScriptElement::ScriptElement): (WebCore::ScriptElement::determineScriptType): (WebCore::ScriptElement::prepareScript): prepareScript is aligned to whatwg spec: the last sequence to setup flags has one-on-one correspondence to the spec now. And prepareScript recognizes the type="module" case and call the requestModuleScript to setup the CachedModuleScript. (WebCore::ScriptElement::requestClassicScript): (WebCore::ScriptElement::requestModuleScript): We use the nonce and crossorigin attributes at the time of preparing the script tag. To do so, we store the above values in CachedModuleScript. Since inlined module scripts does not have "src" attribute, it is also affected by Content Security Policy's inline script rules. (WebCore::ScriptElement::requestScriptWithCacheForModuleScript): The module loader will construct the fetching request by calling this function. This should be here since we would like to set this Element to the initiator of the request. And nonce and crossorigin attributes of this script tag will be used. (WebCore::ScriptElement::requestScriptWithCache): (WebCore::ScriptElement::executeScript): (WebCore::ScriptElement::executeModuleScript): The entry point to execute the module graph. Since the module graph is beyond the multiple CachedScript code, we have the different entry point from ScriptElement::executeScript. (WebCore::ScriptElement::executeScriptAndDispatchEvent): (WebCore::ScriptElement::executeScriptForScriptRunner): * dom/ScriptElement.h: (WebCore::ScriptElement::scriptType): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): According to the spec, the module tag ignores the "charset" attribute as the same to the worker's importScript. But WebKit supports the "charset" for importScript intentionally. So to be consistent, even for the module tags, we handle the "charset" attribute. We explicitly note about it in the preloader. (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * html/parser/HTMLScriptRunner.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::notifyFinished): LayoutTests: * TestExpectations: * http/tests/misc/module-absolute-url-expected.txt: Added. * http/tests/misc/module-absolute-url.html: Added. * http/tests/misc/module-script-async-expected.txt: Added. * http/tests/misc/module-script-async.html: Added. * http/tests/misc/resources/module-absolute-url.js: Added. * http/tests/misc/resources/module-absolute-url2.js: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-allowed-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-allowed.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-and-scripthash-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-and-scripthash.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-basic-blocked-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-basic-blocked.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-blocked-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-blocked.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-ignore-unsafeinline-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-ignore-unsafeinline.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-enforced-policy-and-not-in-report-only-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-enforced-policy-and-not-in-report-only.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-one-enforced-policy-neither-in-another-enforced-policy-nor-report-policy-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-one-enforced-policy-neither-in-another-enforced-policy-nor-report-policy.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-invalidnonce-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-invalidnonce.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-multiple-policies-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-multiple-policies.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-same-origin-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-same-origin.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect.html: Added. * http/tests/security/contentSecurityPolicy/1.1/resources/module-scriptnonce-in-enforced-policy-and-not-in-report-only.php: Added. * http/tests/security/contentSecurityPolicy/1.1/resources/module-scriptnonce-in-one-enforced-policy-neither-in-another-enforced-policy-nor-report-policy.php: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked-expected.txt: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked-in-external-script-expected.txt: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked-in-external-script.html: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked.html: Added. * http/tests/security/contentSecurityPolicy/resources/echo-module-script-src.pl: Added. * http/tests/security/contentSecurityPolicy/resources/multiple-iframe-module-test.js: Added. (testPreescapedPolicy): (testExperimentalPolicy): (test): (iframe.onload): (testImpl): (finishTesting): * http/tests/security/module-correct-mime-types-expected.txt: Added. * http/tests/security/module-correct-mime-types.html: Added. * http/tests/security/module-crossorigin-error-event-information-expected.txt: Added. * http/tests/security/module-crossorigin-error-event-information.html: Added. * http/tests/security/module-crossorigin-loads-correctly-credentials-expected.txt: Added. * http/tests/security/module-crossorigin-loads-correctly-credentials.html: Added. * http/tests/security/module-crossorigin-loads-omit-expected.txt: Added. * http/tests/security/module-crossorigin-loads-omit.html: Added. * http/tests/security/module-crossorigin-loads-same-origin-expected.txt: Added. * http/tests/security/module-crossorigin-loads-same-origin.html: Added. * http/tests/security/module-crossorigin-onerror-information-expected.txt: Added. * http/tests/security/module-crossorigin-onerror-information.html: Added. * http/tests/security/module-incorrect-mime-types-expected.txt: Added. * http/tests/security/module-incorrect-mime-types.html: Added. * http/tests/security/module-no-mime-type-expected.txt: Added. * http/tests/security/module-no-mime-type.html: Added. * http/tests/security/resources/cors-script.php: * http/tests/security/resources/module-local-script.js: Added. * js/dom/modules/module-and-dom-content-loaded-expected.txt: Added. * js/dom/modules/module-and-dom-content-loaded.html: Added. * js/dom/modules/module-and-window-load-expected.txt: Added. * js/dom/modules/module-and-window-load.html: Added. * js/dom/modules/module-async-and-window-load-expected.txt: Added. * js/dom/modules/module-async-and-window-load.html: Added. * js/dom/modules/module-document-write-expected.txt: Added. * js/dom/modules/module-document-write-src-expected.txt: Added. * js/dom/modules/module-document-write-src.html: Added. * js/dom/modules/module-document-write.html: Added. * js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-expected.txt: Added. * js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html: Added. * js/dom/modules/module-execution-error-should-be-propagated-to-onerror-expected.txt: Added. * js/dom/modules/module-execution-error-should-be-propagated-to-onerror.html: Added. * js/dom/modules/module-execution-order-inline-expected.txt: Added. * js/dom/modules/module-execution-order-inline.html: Added. * js/dom/modules/module-execution-order-mixed-expected.txt: Added. * js/dom/modules/module-execution-order-mixed-with-classic-scripts-expected.txt: Added. * js/dom/modules/module-execution-order-mixed-with-classic-scripts.html: Added. * js/dom/modules/module-execution-order-mixed.html: Added. * js/dom/modules/module-incorrect-relative-specifier-expected.txt: Added. * js/dom/modules/module-incorrect-relative-specifier.html: Added. * js/dom/modules/module-incorrect-tag-expected.txt: Added. * js/dom/modules/module-incorrect-tag.html: Added. * js/dom/modules/module-inline-current-script-expected.txt: Added. * js/dom/modules/module-inline-current-script.html: Added. * js/dom/modules/module-inline-dynamic-expected.txt: Added. * js/dom/modules/module-inline-dynamic.html: Added. * js/dom/modules/module-inline-simple-expected.txt: Added. * js/dom/modules/module-inline-simple.html: Added. * js/dom/modules/module-load-event-expected.txt: Added. * js/dom/modules/module-load-event-with-src-expected.txt: Added. * js/dom/modules/module-load-event-with-src.html: Added. * js/dom/modules/module-load-event.html: Added. * js/dom/modules/module-load-same-module-from-different-entry-point-dynamic-expected.txt: Added. * js/dom/modules/module-load-same-module-from-different-entry-point-dynamic.html: Added. * js/dom/modules/module-load-same-module-from-different-entry-point-expected.txt: Added. * js/dom/modules/module-load-same-module-from-different-entry-point.html: Added. * js/dom/modules/module-not-found-error-event-expected.txt: Added. * js/dom/modules/module-not-found-error-event-with-src-and-import-expected.txt: Added. * js/dom/modules/module-not-found-error-event-with-src-and-import.html: Added. * js/dom/modules/module-not-found-error-event-with-src-expected.txt: Added. * js/dom/modules/module-not-found-error-event-with-src.html: Added. * js/dom/modules/module-not-found-error-event.html: Added. * js/dom/modules/module-src-current-script-expected.txt: Added. * js/dom/modules/module-src-current-script.html: Added. * js/dom/modules/module-src-dynamic-expected.txt: Added. * js/dom/modules/module-src-dynamic.html: Added. * js/dom/modules/module-src-simple-expected.txt: Added. * js/dom/modules/module-src-simple.html: Added. * js/dom/modules/module-type-case-insensitive-expected.txt: Added. * js/dom/modules/module-type-case-insensitive.html: Added. * js/dom/modules/module-will-fire-beforeload-expected.txt: Added. * js/dom/modules/module-will-fire-beforeload.html: Added. * js/dom/modules/script-tests/module-document-write-src.js: Added. * js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js: Added. * js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-2.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-cappuccino.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-cocoa.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-matcha.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-2.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cappuccino.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cocoa.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-matcha.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed.js: Added. * js/dom/modules/script-tests/module-inline-dynamic.js: Added. (export.default.Cocoa.prototype.taste): (export.default.Cocoa): * js/dom/modules/script-tests/module-inline-simple.js: Added. (export.default.Cocoa.prototype.taste): (export.default.Cocoa): * js/dom/modules/script-tests/module-load-event-with-src.js: Added. * js/dom/modules/script-tests/module-load-same-module-from-different-entry-point.js: Added. * js/dom/modules/script-tests/module-not-found-error-event-with-src-and-import.js: Added. * js/dom/modules/script-tests/module-src-current-script.js: Added. * js/dom/modules/script-tests/module-src-dynamic-cocoa.js: Added. (Cocoa.prototype.taste): (Cocoa): * js/dom/modules/script-tests/module-src-dynamic.js: Added. * js/dom/modules/script-tests/module-src-simple-cocoa.js: Added. (Cocoa.prototype.taste): (Cocoa): * js/dom/modules/script-tests/module-src-simple.js: Added. * js/dom/modules/script-tests/module-will-fire-beforeload.js: Added. Canonical link: https://commits.webkit.org/182502@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208788 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-11-16 11:39:43 +00:00
String crossOriginMode = m_crossOriginMode;
if (m_moduleScript == ModuleScript::Yes) {
if (crossOriginMode.isNull())
module's default cross-origin value should be "anonymous" https://bugs.webkit.org/show_bug.cgi?id=210326 Reviewed by Sam Weinig. Source/WebCore: Tests: http/tests/security/cookie-module-import-propagate.html http/tests/security/cookie-module-import.html http/tests/security/cookie-module-propagate.html http/tests/security/cookie-module.html The original spec was using "omit" crossorigin for modules when crossorigin is not set / empty. However, the spec is changed to sending requests with "same-origin" credentials ("anonymous" crossorigin mode) by default. We should follow it. * dom/ScriptElement.cpp: (WebCore::ScriptElement::requestModuleScript): * dom/ScriptElementCachedScriptFetcher.cpp: (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): * dom/ScriptElementCachedScriptFetcher.h: * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * loader/cache/CachedScript.cpp: (WebCore::CachedScript::script): While this is not directly related to this patch, added new tests found that we are returning null StringView if the resource is zero byte. This totally works, but JSC::Parser has assertion that this is non-null StringView. For zero byte CachedScript resource, we should return non-null empty StringView instead. LayoutTests: * http/tests/security/cookie-module-expected.txt: Added. * http/tests/security/cookie-module-import-expected.txt: Added. * http/tests/security/cookie-module-import-propagate-expected.txt: Added. * http/tests/security/cookie-module-import-propagate.html: Added. * http/tests/security/cookie-module-import.html: Added. * http/tests/security/cookie-module-propagate-expected.txt: Added. * http/tests/security/cookie-module-propagate.html: Added. * http/tests/security/cookie-module.html: Added. * http/tests/security/resources/cookie-protected-script.php: Added. * http/tests/security/resources/module-nest-import.php: Added. Canonical link: https://commits.webkit.org/223339@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260038 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-13 20:59:07 +00:00
crossOriginMode = ScriptElementCachedScriptFetcher::defaultCrossOriginModeForModule;
[ES6] Integrate ES6 Modules into WebCore https://bugs.webkit.org/show_bug.cgi?id=148897 Reviewed by Ryosuke Niwa. Source/WebCore: This patch introduces ES6 Modules into WebCore. We integrate JSC's JSModuleLoader into WebCore. JSC constructs the module loader pipeline by the chains of the promises. To handle this, the following components are added. 1. CachedModuleScript CachedModuleScript wraps the promise based JSModuleLoader pipeline and offers similar APIs to CachedScript. ScriptElement and PendingScript interact with CachedModuleScript when the script tag is the module tag instead of CachedScript. ScriptElement and PendingScript will receive the notification from CachedModuleScript by implementing CachedModuleScriptClient. 2. ScriptModuleLoader This is the module loader instantiated per document. It manages fetching and offers the callbacks for the JSC's JSModuleLoader implementation. ScriptModuleLoader will fetch the resource by creating CachedModuleScriptLoader per resource. ScriptModuleLoader will receive the notification by implementing CachedModuleScriptLoaderClient. When the resource is fetched, the module loader will drive the promise resolve/reject chain. 3. CachedModuleScriptLoader This fetches the resource by using CachedScript. Using CachedScript means that it automatically reports the resource to the inspector. CachedModuleScriptLoader notify to ScriptModuleLoader when the resource is fetched. One tricky point is that the fetch requests issued from one module-graph should share the same nonce, crossorigin attributes etc. Here, we wrote the module graph like `A -> B (A depends on B)`. <script tag> -> A -> B -> C -> D When fetching A, B, C, and D modules, we need to set the same nonce, crossorigin etc. configuration derived from the original script tag. So per module-graph information should be shared throughout the module loader pipeline. To do so, JSC's module loader implementation can take the value called `initiator`. Since the loader will propagate & share this `initiator` throughout the pipeline, we can transfer and share some metadata. Currently, we pass the JSWrapper of the script tag as the initiator. Each fetch request is created by using this initiator script element. More integration into the inspector should be done in the subsequent patch. * CMakeLists.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/CachedModuleScript.cpp: Added. CachedModuleScript offers similar interface to CachedScript to make ScriptElement things easier. It encapsulates the detail of the JSC JSModuleLoader that this module loader is driven by the chain of the promises. CachedModuleScript's callbacks are called from the promise's handlers configured in ScriptController::loadModuleScript. (WebCore::CachedModuleScript::create): (WebCore::CachedModuleScript::CachedModuleScript): (WebCore::CachedModuleScript::load): (WebCore::CachedModuleScript::notifyLoadCompleted): (WebCore::CachedModuleScript::notifyLoadFailed): (WebCore::CachedModuleScript::notifyLoadWasCanceled): (WebCore::CachedModuleScript::notifyClientFinished): (WebCore::CachedModuleScript::addClient): (WebCore::CachedModuleScript::removeClient): * bindings/js/CachedModuleScript.h: Added. (WebCore::CachedModuleScript::moduleKey): (WebCore::CachedModuleScript::error): (WebCore::CachedModuleScript::wasCanceled): (WebCore::CachedModuleScript::isLoaded): (WebCore::CachedModuleScript::nonce): (WebCore::CachedModuleScript::crossOriginMode): Save nonce and crossorigin attributes when we start ScriptElement::prepareScript. * bindings/js/CachedModuleScriptClient.h: Copied from Source/WebCore/dom/LoadableScript.h. (WebCore::CachedModuleScriptClient::~CachedModuleScriptClient): * bindings/js/CachedModuleScriptLoader.cpp: Added. CachedModuleScriptLoader is responsible to fetching the resource for the module script. It uses propagated `initiator` to create the request. This initiator is the JS wrapper of the script element issuing this fetching request. The name `initiator` is derived from the request.setInitiator(). Once the resource is fetched, the fetcher will notify to the client. Currently, ScriptModuleLoader implements this client interface. (WebCore::CachedModuleScriptLoader::create): (WebCore::CachedModuleScriptLoader::CachedModuleScriptLoader): (WebCore::CachedModuleScriptLoader::~CachedModuleScriptLoader): (WebCore::CachedModuleScriptLoader::load): Create the request. We call ScriptElement::requestCachedScript to initiate a new fetching request. At that time, nonce and crossorigin (and charset) attributes of this element are applied to the new request. (WebCore::CachedModuleScriptLoader::notifyFinished): * bindings/js/CachedModuleScriptLoader.h: Copied from Source/WebCore/bindings/js/ScriptModuleLoader.h. * bindings/js/CachedModuleScriptLoaderClient.h: Copied from Source/WebCore/dom/LoadableScript.h. (WebCore::CachedModuleScriptLoaderClient::~CachedModuleScriptLoaderClient): * bindings/js/CachedScriptSourceProvider.h: (WebCore::CachedScriptSourceProvider::create): (WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider): (WebCore::makeSource): * bindings/js/JSBindingsAllInOne.cpp: * bindings/js/JSDOMBinding.cpp: (WebCore::retrieveErrorMessage): (WebCore::reportException): * bindings/js/JSDOMBinding.h: * bindings/js/JSMainThreadExecState.h: (WebCore::JSMainThreadExecState::loadModule): (WebCore::JSMainThreadExecState::linkAndEvaluateModule): * bindings/js/ScriptController.cpp: (WebCore::ScriptController::evaluateInWorld): (WebCore::ScriptController::loadModuleScriptInWorld): (WebCore::ScriptController::loadModuleScript): This just performs loading and not executing the module graph. Once the module graph is loaded, it is notified to the given CachedModuleScript. (WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld): (WebCore::ScriptController::linkAndEvaluateModuleScript): This executes the linking and evaluation of the already instantiated module graph. After loading the module graph, we call this function for the module to evaluate it. This is called from ScriptElement::executeModuleScript. (WebCore::ScriptController::evaluateModule): Every time we evaluate the module, the ScriptModuleLoader::evaluate hook is called. So the loader calls this function to actually evaluate the module. (WebCore::jsValueToModuleKey): (WebCore::ScriptController::setupModuleScriptHandlers): The JSC's module loader is driven by the chain of the promise. So here, we convert this to CachedModuleScript / CachedModuleScriptClient style and encapsulate the details. This encapsulation makes CachedModuleScript similar to CachedScript and it makes things simple in the rest of WebCore. If the propagated error is already reported to the inspector, we receive moduleLoaderAlreadyReportedErrorSymbol as the error value. So at that case, we don't report it twice. If the rejection is caused due to the canceled fetching, moduleLoaderFetchingIsCanceledSymbol appears as the error value. In that case, we will call CachedModuleScript::notifyLoadWasCanceled. (WebCore::ScriptController::executeScript): * bindings/js/ScriptController.h: (WebCore::ScriptController::moduleLoaderAlreadyReportedErrorSymbol): (WebCore::ScriptController::moduleLoaderFetchingIsCanceledSymbol): * bindings/js/ScriptModuleLoader.cpp: We use DeferredWrapper to resolve promises used for the module pipeline. Thus, once the active DOM objects are suspended, the module loader propagation stops. (WebCore::ScriptModuleLoader::~ScriptModuleLoader): Clear the clients of the fetchers issued from this loader. (WebCore::isRootModule): (WebCore::ScriptModuleLoader::resolve): Resolve the module specifier (that is written in `import from "XXX"`) to the unique module key. We use URL string as module key. The edge case is that the module is inlined one. In that case, we don't have any URL for that. Instead of URL, we use symbol at that time. (WebCore::ScriptModuleLoader::fetch): Start fetching for the requested module. It returns the promise that is resolved when the fetching is done. The loader creates the fetcher, and the fetcher start loading the resource. Once the fetcher loads the resource, it notify to the loader through CachedModuleScriptLoaderClient interface. Since we pass the original script element as the `initiator` here, the fetcher can use this initiator to create the request. While the result of CachedResource has 3 variations (loaded, canceled, error occurred), Promise only tells us whether it is resolved or rejected. When CachedModuleScript gets the result from the promise chain, it needs to know which the result is. To transfer the canceled information, we reject the promise with the special symbol `moduleLoaderAlreadyReportedErrorSymbol`. This offers the way to distinguish the canceled error from the other errors. (WebCore::ScriptModuleLoader::evaluate): This is the hook function that is called when JSC's JSModuleLoader attempts to execute each module. (WebCore::ScriptModuleLoader::notifyFinished): This function is called when the fetcher completes. We will resolve the promise with the result of the fetching. The module loader pipeline is constructed as a chain of promises. Rejecting a promise when some error occurs is important because the execution flow of the promise chain is driven by "rejected" or "fulfilled" events. If the promise is not rejected while error occurs, reject handler won't be executed and all the subsequent promise chain will wait the result forever. As a result, even if the error is already reported to the inspector elsewhere, it should be propagated in the pipeline. For example, the error of loading CachedResource is already reported to the inspector by the loader. But we still need to reject the promise to propagate this error to the script element. At that time, we don't want to report the same error twice. When we propagate the error that is already reported to the inspector, we throw moduleLoaderAlreadyReportedErrorSymbol symbol instead. By comparing the thrown error with this symbol, we can distinguish errors raised when checking syntax of a module script from errors reported already. In the reject handler of the promise, we only report a error that is not this symbol. And mime type checking is done here since the module script always require this check. * bindings/js/ScriptModuleLoader.h: (WebCore::ScriptModuleLoader::document): Deleted. * bindings/js/ScriptSourceCode.h: (WebCore::ScriptSourceCode::ScriptSourceCode): * dom/CurrentScriptIncrementer.h: (WebCore::CurrentScriptIncrementer::CurrentScriptIncrementer): * dom/LoadableClassicScript.cpp: (WebCore::LoadableClassicScript::error): (WebCore::LoadableClassicScript::execute): (WebCore::LoadableClassicScript::wasErrored): Deleted. * dom/LoadableClassicScript.h: * dom/LoadableModuleScript.cpp: Copied from Source/WebCore/dom/LoadableScript.h. This is the derived class from LoadableScript. It is used for the script module graphs. (WebCore::LoadableModuleScript::create): (WebCore::LoadableModuleScript::LoadableModuleScript): (WebCore::LoadableModuleScript::~LoadableModuleScript): (WebCore::LoadableModuleScript::isLoaded): (WebCore::LoadableModuleScript::error): (WebCore::LoadableModuleScript::wasCanceled): (WebCore::LoadableModuleScript::notifyFinished): (WebCore::LoadableModuleScript::execute): * dom/LoadableModuleScript.h: Copied from Source/WebCore/dom/LoadableScript.h. (isType): * dom/LoadableScript.h: (WebCore::LoadableScript::isModuleScript): (WebCore::LoadableScript::isModuleGraph): Deleted. * dom/PendingScript.cpp: (WebCore::PendingScript::error): (WebCore::PendingScript::wasErrored): Deleted. * dom/PendingScript.h: * dom/ScriptElement.cpp: (WebCore::ScriptElement::ScriptElement): (WebCore::ScriptElement::determineScriptType): (WebCore::ScriptElement::prepareScript): prepareScript is aligned to whatwg spec: the last sequence to setup flags has one-on-one correspondence to the spec now. And prepareScript recognizes the type="module" case and call the requestModuleScript to setup the CachedModuleScript. (WebCore::ScriptElement::requestClassicScript): (WebCore::ScriptElement::requestModuleScript): We use the nonce and crossorigin attributes at the time of preparing the script tag. To do so, we store the above values in CachedModuleScript. Since inlined module scripts does not have "src" attribute, it is also affected by Content Security Policy's inline script rules. (WebCore::ScriptElement::requestScriptWithCacheForModuleScript): The module loader will construct the fetching request by calling this function. This should be here since we would like to set this Element to the initiator of the request. And nonce and crossorigin attributes of this script tag will be used. (WebCore::ScriptElement::requestScriptWithCache): (WebCore::ScriptElement::executeScript): (WebCore::ScriptElement::executeModuleScript): The entry point to execute the module graph. Since the module graph is beyond the multiple CachedScript code, we have the different entry point from ScriptElement::executeScript. (WebCore::ScriptElement::executeScriptAndDispatchEvent): (WebCore::ScriptElement::executeScriptForScriptRunner): * dom/ScriptElement.h: (WebCore::ScriptElement::scriptType): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): According to the spec, the module tag ignores the "charset" attribute as the same to the worker's importScript. But WebKit supports the "charset" for importScript intentionally. So to be consistent, even for the module tags, we handle the "charset" attribute. We explicitly note about it in the preloader. (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * html/parser/HTMLScriptRunner.h: * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::notifyFinished): LayoutTests: * TestExpectations: * http/tests/misc/module-absolute-url-expected.txt: Added. * http/tests/misc/module-absolute-url.html: Added. * http/tests/misc/module-script-async-expected.txt: Added. * http/tests/misc/module-script-async.html: Added. * http/tests/misc/resources/module-absolute-url.js: Added. * http/tests/misc/resources/module-absolute-url2.js: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-allowed-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-allowed.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-and-scripthash-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-and-scripthash.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-basic-blocked-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-basic-blocked.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-blocked-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-blocked.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-ignore-unsafeinline-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-ignore-unsafeinline.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-enforced-policy-and-not-in-report-only-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-enforced-policy-and-not-in-report-only.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-one-enforced-policy-neither-in-another-enforced-policy-nor-report-policy-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-in-one-enforced-policy-neither-in-another-enforced-policy-nor-report-policy.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-invalidnonce-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-invalidnonce.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-multiple-policies-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-multiple-policies.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-same-origin-expected.txt: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-same-origin.html: Added. * http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect.html: Added. * http/tests/security/contentSecurityPolicy/1.1/resources/module-scriptnonce-in-enforced-policy-and-not-in-report-only.php: Added. * http/tests/security/contentSecurityPolicy/1.1/resources/module-scriptnonce-in-one-enforced-policy-neither-in-another-enforced-policy-nor-report-policy.php: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked-expected.txt: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked-in-external-script-expected.txt: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked-in-external-script.html: Added. * http/tests/security/contentSecurityPolicy/module-eval-blocked.html: Added. * http/tests/security/contentSecurityPolicy/resources/echo-module-script-src.pl: Added. * http/tests/security/contentSecurityPolicy/resources/multiple-iframe-module-test.js: Added. (testPreescapedPolicy): (testExperimentalPolicy): (test): (iframe.onload): (testImpl): (finishTesting): * http/tests/security/module-correct-mime-types-expected.txt: Added. * http/tests/security/module-correct-mime-types.html: Added. * http/tests/security/module-crossorigin-error-event-information-expected.txt: Added. * http/tests/security/module-crossorigin-error-event-information.html: Added. * http/tests/security/module-crossorigin-loads-correctly-credentials-expected.txt: Added. * http/tests/security/module-crossorigin-loads-correctly-credentials.html: Added. * http/tests/security/module-crossorigin-loads-omit-expected.txt: Added. * http/tests/security/module-crossorigin-loads-omit.html: Added. * http/tests/security/module-crossorigin-loads-same-origin-expected.txt: Added. * http/tests/security/module-crossorigin-loads-same-origin.html: Added. * http/tests/security/module-crossorigin-onerror-information-expected.txt: Added. * http/tests/security/module-crossorigin-onerror-information.html: Added. * http/tests/security/module-incorrect-mime-types-expected.txt: Added. * http/tests/security/module-incorrect-mime-types.html: Added. * http/tests/security/module-no-mime-type-expected.txt: Added. * http/tests/security/module-no-mime-type.html: Added. * http/tests/security/resources/cors-script.php: * http/tests/security/resources/module-local-script.js: Added. * js/dom/modules/module-and-dom-content-loaded-expected.txt: Added. * js/dom/modules/module-and-dom-content-loaded.html: Added. * js/dom/modules/module-and-window-load-expected.txt: Added. * js/dom/modules/module-and-window-load.html: Added. * js/dom/modules/module-async-and-window-load-expected.txt: Added. * js/dom/modules/module-async-and-window-load.html: Added. * js/dom/modules/module-document-write-expected.txt: Added. * js/dom/modules/module-document-write-src-expected.txt: Added. * js/dom/modules/module-document-write-src.html: Added. * js/dom/modules/module-document-write.html: Added. * js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-expected.txt: Added. * js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html: Added. * js/dom/modules/module-execution-error-should-be-propagated-to-onerror-expected.txt: Added. * js/dom/modules/module-execution-error-should-be-propagated-to-onerror.html: Added. * js/dom/modules/module-execution-order-inline-expected.txt: Added. * js/dom/modules/module-execution-order-inline.html: Added. * js/dom/modules/module-execution-order-mixed-expected.txt: Added. * js/dom/modules/module-execution-order-mixed-with-classic-scripts-expected.txt: Added. * js/dom/modules/module-execution-order-mixed-with-classic-scripts.html: Added. * js/dom/modules/module-execution-order-mixed.html: Added. * js/dom/modules/module-incorrect-relative-specifier-expected.txt: Added. * js/dom/modules/module-incorrect-relative-specifier.html: Added. * js/dom/modules/module-incorrect-tag-expected.txt: Added. * js/dom/modules/module-incorrect-tag.html: Added. * js/dom/modules/module-inline-current-script-expected.txt: Added. * js/dom/modules/module-inline-current-script.html: Added. * js/dom/modules/module-inline-dynamic-expected.txt: Added. * js/dom/modules/module-inline-dynamic.html: Added. * js/dom/modules/module-inline-simple-expected.txt: Added. * js/dom/modules/module-inline-simple.html: Added. * js/dom/modules/module-load-event-expected.txt: Added. * js/dom/modules/module-load-event-with-src-expected.txt: Added. * js/dom/modules/module-load-event-with-src.html: Added. * js/dom/modules/module-load-event.html: Added. * js/dom/modules/module-load-same-module-from-different-entry-point-dynamic-expected.txt: Added. * js/dom/modules/module-load-same-module-from-different-entry-point-dynamic.html: Added. * js/dom/modules/module-load-same-module-from-different-entry-point-expected.txt: Added. * js/dom/modules/module-load-same-module-from-different-entry-point.html: Added. * js/dom/modules/module-not-found-error-event-expected.txt: Added. * js/dom/modules/module-not-found-error-event-with-src-and-import-expected.txt: Added. * js/dom/modules/module-not-found-error-event-with-src-and-import.html: Added. * js/dom/modules/module-not-found-error-event-with-src-expected.txt: Added. * js/dom/modules/module-not-found-error-event-with-src.html: Added. * js/dom/modules/module-not-found-error-event.html: Added. * js/dom/modules/module-src-current-script-expected.txt: Added. * js/dom/modules/module-src-current-script.html: Added. * js/dom/modules/module-src-dynamic-expected.txt: Added. * js/dom/modules/module-src-dynamic.html: Added. * js/dom/modules/module-src-simple-expected.txt: Added. * js/dom/modules/module-src-simple.html: Added. * js/dom/modules/module-type-case-insensitive-expected.txt: Added. * js/dom/modules/module-type-case-insensitive.html: Added. * js/dom/modules/module-will-fire-beforeload-expected.txt: Added. * js/dom/modules/module-will-fire-beforeload.html: Added. * js/dom/modules/script-tests/module-document-write-src.js: Added. * js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js: Added. * js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-2.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-cappuccino.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-cocoa.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-matcha.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-2.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cappuccino.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cocoa.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-matcha.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts.js: Added. * js/dom/modules/script-tests/module-execution-order-mixed.js: Added. * js/dom/modules/script-tests/module-inline-dynamic.js: Added. (export.default.Cocoa.prototype.taste): (export.default.Cocoa): * js/dom/modules/script-tests/module-inline-simple.js: Added. (export.default.Cocoa.prototype.taste): (export.default.Cocoa): * js/dom/modules/script-tests/module-load-event-with-src.js: Added. * js/dom/modules/script-tests/module-load-same-module-from-different-entry-point.js: Added. * js/dom/modules/script-tests/module-not-found-error-event-with-src-and-import.js: Added. * js/dom/modules/script-tests/module-src-current-script.js: Added. * js/dom/modules/script-tests/module-src-dynamic-cocoa.js: Added. (Cocoa.prototype.taste): (Cocoa): * js/dom/modules/script-tests/module-src-dynamic.js: Added. * js/dom/modules/script-tests/module-src-simple-cocoa.js: Added. (Cocoa.prototype.taste): (Cocoa): * js/dom/modules/script-tests/module-src-simple.js: Added. * js/dom/modules/script-tests/module-will-fire-beforeload.js: Added. Canonical link: https://commits.webkit.org/182502@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208788 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-11-16 11:39:43 +00:00
}
Add referrerpolicy attribute support for <link> https://bugs.webkit.org/show_bug.cgi?id=213342 Patch by Rob Buis <rbuis@igalia.com> on 2020-06-22 Reviewed by Darin Adler. LayoutTests/imported/w3c: Fix wrong resource file name usage. * web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html: * web-platform-tests/referrer-policy/generic/multiple-headers-combined.html: * web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html: * web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html: * web-platform-tests/referrer-policy/generic/multiple-headers.html: Source/WebCore: Add support for referrerpolicy attribute handling on link prefetch/preload/stylesheet. Tests: http/tests/security/referrer-policy-attribute-style-no-referrer.html http/wpt/preload/refferer-policy.html * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::process): (WebCore::HTMLLinkElement::setReferrerPolicyForBindings): (WebCore::HTMLLinkElement::referrerPolicyForBindings const): (WebCore::HTMLLinkElement::referrerPolicy const): * html/HTMLLinkElement.h: * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * loader/LinkLoader.cpp: (WebCore::LinkLoader::loadLinksFromHeader): (WebCore::LinkLoader::preloadIfNeeded): (WebCore::LinkLoader::prefetchIfNeeded): * loader/LinkLoader.h: LayoutTests: Add a tests for <link rel="stylesheet">, <link rel="preload"> and the referrerpolicy attribute. Unskip the referrer-policy/generic/link-rel-prefetch.html test. * TestExpectations: * http/tests/security/referrer-policy-attribute-style-no-referrer-expected.html: Added. * http/tests/security/referrer-policy-attribute-style-no-referrer.html: Added. * http/tests/security/resources/green-background.css: Added. (body): * http/tests/security/resources/green-if-no-referrer-css.php: Added. * http/tests/security/resources/pass-if-no-referrer.php: Added. * http/wpt/preload/refferer-policy-expected.txt: Added. * http/wpt/preload/refferer-policy.html: Added. * http/wpt/preload/resources/referrer-img.py: Added. (main): Canonical link: https://commits.webkit.org/226262@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263356 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-22 17:20:50 +00:00
if (m_resourceType == CachedResource::Type::Script || m_resourceType == CachedResource::Type::ImageResource)
Add referrerpolicy attribute support for <script> elements https://bugs.webkit.org/show_bug.cgi?id=185550 Patch by Rob Buis <rbuis@igalia.com> on 2019-07-17 Reviewed by Youenn Fablet. Source/WebCore: This patch adds 'referrerpolicy' attribute support for script elements. If set, the value is restricted to the ReferrerPolicy enum, and if valid it is used for the script fetch. If not set or invalid, the current behavior is kept. Tests: http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http.html http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https.html http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin.html http/tests/referrer-policy-script/no-referrer/cross-origin-http-http.html http/tests/referrer-policy-script/no-referrer/cross-origin-http.https.html http/tests/referrer-policy-script/no-referrer/same-origin.html http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http.html http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https.html http/tests/referrer-policy-script/origin-when-cross-origin/same-origin.html http/tests/referrer-policy-script/origin/cross-origin-http-http.html http/tests/referrer-policy-script/origin/cross-origin-http.https.html http/tests/referrer-policy-script/origin/same-origin.html http/tests/referrer-policy-script/same-origin/cross-origin-http-http.html http/tests/referrer-policy-script/same-origin/cross-origin-http.https.html http/tests/referrer-policy-script/same-origin/same-origin.html http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http.html http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https.html http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin.html http/tests/referrer-policy-script/strict-origin/cross-origin-http-http.html http/tests/referrer-policy-script/strict-origin/cross-origin-http.https.html http/tests/referrer-policy-script/strict-origin/same-origin.html http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http.html http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https.html http/tests/referrer-policy-script/unsafe-url/same-origin.html * bindings/js/CachedScriptFetcher.cpp: (WebCore::CachedScriptFetcher::requestScriptWithCache const): * bindings/js/CachedScriptFetcher.h: (WebCore::CachedScriptFetcher::CachedScriptFetcher): * dom/InlineClassicScript.h: * dom/LoadableClassicScript.cpp: (WebCore::LoadableClassicScript::create): * dom/LoadableClassicScript.h: * dom/LoadableModuleScript.cpp: (WebCore::LoadableModuleScript::create): (WebCore::LoadableModuleScript::LoadableModuleScript): * dom/LoadableModuleScript.h: * dom/LoadableScript.h: (WebCore::LoadableScript::LoadableScript): * dom/ScriptElement.cpp: (WebCore::ScriptElement::requestClassicScript): (WebCore::ScriptElement::requestModuleScript): * dom/ScriptElement.h: * dom/ScriptElementCachedScriptFetcher.h: (WebCore::ScriptElementCachedScriptFetcher::ScriptElementCachedScriptFetcher): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::referrerPolicyForBindings const): * html/HTMLScriptElement.cpp: (WebCore::HTMLScriptElement::setReferrerPolicyForBindings): (WebCore::HTMLScriptElement::referrerPolicyForBindings const): (WebCore::HTMLScriptElement::referrerPolicy const): * html/HTMLScriptElement.h: * html/HTMLScriptElement.idl: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * platform/ReferrerPolicy.cpp: (WebCore::referrerPolicyToString): * platform/ReferrerPolicy.h: * svg/SVGScriptElement.h: LayoutTests: Add tests for scripts with various referrerpolicy attribute values. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin.html: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/no-referrer/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/no-referrer/same-origin.html: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/origin-when-cross-origin/same-origin.html: Added. * http/tests/referrer-policy-script/origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/origin/same-origin.html: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/same-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/same-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/same-origin/same-origin.html: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin.html: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/strict-origin/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/strict-origin/same-origin.html: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http-expected.txt: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http.html: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https-expected.txt: Added. * http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https.html: Added. * http/tests/referrer-policy-script/unsafe-url/same-origin-expected.txt: Added. * http/tests/referrer-policy-script/unsafe-url/same-origin.html: Added. * http/tests/referrer-policy/resources/script.php: Added. * platform/win/TestExpectations: Canonical link: https://commits.webkit.org/213731@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247509 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-07-17 09:03:37 +00:00
options.referrerPolicy = m_referrerPolicy;
auto request = createPotentialAccessControlRequest(completeURL(document), WTFMove(options), document, crossOriginMode);
Add helper function to create a potential CORS request https://bugs.webkit.org/show_bug.cgi?id=189251 Reviewed by Andy Estes. Add a new function, createPotentialAccessControlRequest, that we will use to implement the algorithm Create a potential- CORS request from the HTML standard: <https://html.spec.whatwg.org/multipage/urls-and-fetching.html#create-a-potential-cors-request> (31 August 2018). This function replaces CachedResourceRequest::setAsPotentiallyCrossOrigin() and is the first step towards separating the concepts of CORS settings states and module script credentials mode as well as implementing the aforementioned algorithm. Rename CachedResourceRequest::setAsPotentiallyCrossOrigin() to deprecatedSetAsPotentiallyCrossOrigin() and switch existing callers to use createPotentialAccessControlRequest(). For now, createPotentialAccessControlRequest() is implemented in terms of deprecatedSetAsPotentiallyCrossOrigin(). No functionality changed. So, no new tests. * bindings/js/CachedScriptFetcher.cpp: (WebCore::CachedScriptFetcher::requestScriptWithCache const): Write in terms of WebCore::createPotentialAccessControlRequest(). * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::process): Ditto. * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): Ditto. * loader/CrossOriginAccessControl.cpp: (WebCore::createPotentialAccessControlRequest): For now, implemented in terms of CachedResourceRequest::deprecatedSetAsPotentiallyCrossOrigin(). * loader/CrossOriginAccessControl.h: * loader/ImageLoader.cpp: (WebCore::ImageLoader::updateFromElement): Write in terms of WebCore::createPotentialAccessControlRequest(). * loader/LinkLoader.cpp: (WebCore::LinkLoader::preloadIfNeeded): Ditto. * loader/MediaResourceLoader.cpp: (WebCore::MediaResourceLoader::requestResource): Ditto. Also renamed local variable cacheRequest to cachedRequest. * loader/TextTrackLoader.cpp: (WebCore::TextTrackLoader::load): Write in terms of WebCore::createPotentialAccessControlRequest(). Also change local variable document from a pointer to a reference since this function asserts that the script execution context is a non-null Document. * loader/cache/CachedResourceRequest.cpp: (WebCore::CachedResourceRequest::deprecatedSetAsPotentiallyCrossOrigin): Renamed; formerly named setAsPotentiallyCrossOrigin. (WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): Deleted. * loader/cache/CachedResourceRequest.h: (WebCore::CachedResourceRequest::setPriority): Added. Canonical link: https://commits.webkit.org/204256@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235617 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-09-04 17:11:03 +00:00
request.setInitiator(m_initiator);
Load async scripts with low priority https://bugs.webkit.org/show_bug.cgi?id=208298 Reviewed by Anders Carlsson. They are assumed to be non-critical and don't delay DOMContentLoaded. This matches other browsers. See https://addyosmani.com/blog/script-priorities/ for Chrome behavior. * bindings/js/CachedScriptFetcher.cpp: (WebCore::CachedScriptFetcher::requestModuleScript const): (WebCore::CachedScriptFetcher::requestScriptWithCache const) Pass around the priority. * bindings/js/CachedScriptFetcher.h: * dom/LoadableClassicScript.cpp: (WebCore::LoadableClassicScript::create): (WebCore::LoadableClassicScript::load): Deprioritize async script load. * dom/LoadableClassicScript.h: * dom/ScriptElement.cpp: (WebCore::ScriptElement::requestClassicScript): Pass around the information that this is an async script. * dom/ScriptElementCachedScriptFetcher.cpp: (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): Parse async attribute in preload scanner. * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): Deprioritize async script preload. * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::setScriptIsAsync): Canonical link: https://commits.webkit.org/221243@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257566 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-27 16:02:09 +00:00
if (m_scriptIsAsync && m_resourceType == CachedResource::Type::Script && m_moduleScript == ModuleScript::No)
request.setPriority(DefaultResourceLoadPriority::asyncScript);
Load async scripts with low priority https://bugs.webkit.org/show_bug.cgi?id=208298 Reviewed by Anders Carlsson. They are assumed to be non-critical and don't delay DOMContentLoaded. This matches other browsers. See https://addyosmani.com/blog/script-priorities/ for Chrome behavior. * bindings/js/CachedScriptFetcher.cpp: (WebCore::CachedScriptFetcher::requestModuleScript const): (WebCore::CachedScriptFetcher::requestScriptWithCache const) Pass around the priority. * bindings/js/CachedScriptFetcher.h: * dom/LoadableClassicScript.cpp: (WebCore::LoadableClassicScript::create): (WebCore::LoadableClassicScript::load): Deprioritize async script load. * dom/LoadableClassicScript.h: * dom/ScriptElement.cpp: (WebCore::ScriptElement::requestClassicScript): Pass around the information that this is an async script. * dom/ScriptElementCachedScriptFetcher.cpp: (WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): Parse async attribute in preload scanner. * html/parser/HTMLResourcePreloader.cpp: (WebCore::PreloadRequest::resourceRequest): Deprioritize async script preload. * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::setScriptIsAsync): Canonical link: https://commits.webkit.org/221243@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257566 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-27 16:02:09 +00:00
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
return request;
}
Modernize HTML parser code https://bugs.webkit.org/show_bug.cgi?id=127236 Reviewed by Andreas Kling. * html/parser/AtomicHTMLToken.h: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::detach): (WebCore::HTMLDocumentParser::stopParsing): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution): * html/parser/HTMLDocumentParser.h: * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::ElementRecord::ElementRecord): (WebCore::HTMLElementStack::insertAbove): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLElementStack.h: (WebCore::HTMLElementStack::ElementRecord::releaseNext): (WebCore::HTMLElementStack::ElementRecord::setNext): * html/parser/HTMLMetaCharsetParser.cpp: (WebCore::HTMLMetaCharsetParser::HTMLMetaCharsetParser): * html/parser/HTMLMetaCharsetParser.h: * html/parser/HTMLParserScheduler.h: * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::scan): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): * html/parser/HTMLPreloadScanner.h: * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::takeAndPreload): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * html/parser/HTMLScriptRunner.h: * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginDOCTYPE): (WebCore::HTMLToken::releaseDoctypeData): * html/parser/HTMLTokenizer.h: * html/parser/HTMLTreeBuilder.h: * html/parser/HTMLViewSourceParser.cpp: (WebCore::HTMLViewSourceParser::HTMLViewSourceParser): * html/parser/HTMLViewSourceParser.h: * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::init): (WebCore::XSSAuditor::filterToken): * html/parser/XSSAuditor.h: * html/parser/XSSAuditorDelegate.h: (WebCore::XSSInfo::XSSInfo): * loader/TextResourceDecoder.cpp: (WebCore::TextResourceDecoder::checkForHeadCharset): (WebCore::TextResourceDecoder::checkForMetaCharset): * loader/TextResourceDecoder.h: Canonical link: https://commits.webkit.org/145234@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@162275 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-01-18 22:48:46 +00:00
void HTMLResourcePreloader::preload(PreloadRequestStream requests)
Enable the preload scanner on the background parser thread https://bugs.webkit.org/show_bug.cgi?id=108027 Reviewed by Tony Gentilcore. The patch causes us to pass all the fast/preloader tests with the threaded parser enabled. This patch wires up the BackgroundHTMLParser to the TokenPreloadScanner. Currently, we bail out of preload scanning if we encounter a document.write becaues we don't know how to rewind the preload scanner, but that's something we can tune in the future. The BackgroundHTMLParser delivers the preloads to the HTMLDocumentParser together with the token stream. If the HTMLDocumentParser isn't able to use the token stream immediately, it kicks off the preloads. * html/parser/BackgroundHTMLParser.cpp: (WebCore::checkThatPreloadsAreSafeToSendToAnotherThread): (WebCore::BackgroundHTMLParser::BackgroundHTMLParser): (WebCore::BackgroundHTMLParser::resumeFrom): (WebCore::BackgroundHTMLParser::pumpTokenizer): (WebCore::BackgroundHTMLParser::sendTokensToMainThread): * html/parser/BackgroundHTMLParser.h: (Configuration): - We need to add a struct for the create function because the number of arguments exceeds the limits of Functional.h. (BackgroundHTMLParser): (WebCore::BackgroundHTMLParser::create): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::scanCommon): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): - We need to use a new string here so that the string is safe to send to another thread. * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser): (WebCore::HTMLDocumentParser::startBackgroundParser): - Following the example of the XSSAuditor, we create the TokenPreloadScanner on the main thread and then send it to the background thread for operation. * html/parser/HTMLDocumentParser.h: (WebCore): (ParsedChunk): * html/parser/HTMLParserOptions.h: (HTMLParserOptions): - We need to add a default constructor so that the HTMLDocumentParser can create an empty BackgroundHTMLParser::Configuration struct. * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): (WebCore::TokenPreloadScanner::scanCommon): (WebCore::HTMLPreloadScanner::scan): * html/parser/HTMLPreloadScanner.h: (TokenPreloadScanner): (WebCore::TokenPreloadScanner::isSafeToSendToAnotherThread): * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::takeAndPreload): (WebCore): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): (WebCore): (HTMLResourcePreloader): Canonical link: https://commits.webkit.org/128264@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@143051 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-15 22:14:31 +00:00
{
Modernize HTML parser code https://bugs.webkit.org/show_bug.cgi?id=127236 Reviewed by Andreas Kling. * html/parser/AtomicHTMLToken.h: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::detach): (WebCore::HTMLDocumentParser::stopParsing): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution): * html/parser/HTMLDocumentParser.h: * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::ElementRecord::ElementRecord): (WebCore::HTMLElementStack::insertAbove): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLElementStack.h: (WebCore::HTMLElementStack::ElementRecord::releaseNext): (WebCore::HTMLElementStack::ElementRecord::setNext): * html/parser/HTMLMetaCharsetParser.cpp: (WebCore::HTMLMetaCharsetParser::HTMLMetaCharsetParser): * html/parser/HTMLMetaCharsetParser.h: * html/parser/HTMLParserScheduler.h: * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::scan): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): * html/parser/HTMLPreloadScanner.h: * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::takeAndPreload): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * html/parser/HTMLScriptRunner.h: * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginDOCTYPE): (WebCore::HTMLToken::releaseDoctypeData): * html/parser/HTMLTokenizer.h: * html/parser/HTMLTreeBuilder.h: * html/parser/HTMLViewSourceParser.cpp: (WebCore::HTMLViewSourceParser::HTMLViewSourceParser): * html/parser/HTMLViewSourceParser.h: * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::init): (WebCore::XSSAuditor::filterToken): * html/parser/XSSAuditor.h: * html/parser/XSSAuditorDelegate.h: (WebCore::XSSInfo::XSSInfo): * loader/TextResourceDecoder.cpp: (WebCore::TextResourceDecoder::checkForHeadCharset): (WebCore::TextResourceDecoder::checkForMetaCharset): * loader/TextResourceDecoder.h: Canonical link: https://commits.webkit.org/145234@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@162275 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-01-18 22:48:46 +00:00
for (auto& request : requests)
Replace WTF::move with WTFMove https://bugs.webkit.org/show_bug.cgi?id=152601 Reviewed by Brady Eidson. Source/JavaScriptCore: * API/ObjCCallbackFunction.mm: (JSC::ObjCCallbackFunctionImpl::ObjCCallbackFunctionImpl): (JSC::ObjCCallbackFunction::ObjCCallbackFunction): (JSC::ObjCCallbackFunction::create): (objCCallbackFunctionForInvocation): * assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::releaseAssemblerData): * assembler/LinkBuffer.cpp: (JSC::LinkBuffer::linkCode): * b3/B3BlockInsertionSet.cpp: (JSC::B3::BlockInsertionSet::insert): (JSC::B3::BlockInsertionSet::splitForward): * b3/B3LowerToAir.cpp: (JSC::B3::Air::LowerToAir::run): (JSC::B3::Air::LowerToAir::lower): * b3/B3OpaqueByproducts.cpp: (JSC::B3::OpaqueByproducts::add): * b3/B3Procedure.cpp: (JSC::B3::Procedure::addBlock): (JSC::B3::Procedure::addDataSection): * b3/B3Procedure.h: (JSC::B3::Procedure::releaseByproducts): * b3/B3ProcedureInlines.h: (JSC::B3::Procedure::add): * b3/B3Value.h: * b3/air/AirCode.cpp: (JSC::B3::Air::Code::addBlock): (JSC::B3::Air::Code::addStackSlot): (JSC::B3::Air::Code::addSpecial): * b3/air/AirInst.h: (JSC::B3::Air::Inst::Inst): * b3/air/AirIteratedRegisterCoalescing.cpp: * b3/air/AirSimplifyCFG.cpp: (JSC::B3::Air::simplifyCFG): * bindings/ScriptValue.cpp: (Deprecated::jsToInspectorValue): * builtins/BuiltinExecutables.cpp: (JSC::createExecutableInternal): * bytecode/BytecodeBasicBlock.cpp: (JSC::computeBytecodeBasicBlocks): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): (JSC::CodeBlock::setCalleeSaveRegisters): * bytecode/CodeBlock.h: (JSC::CodeBlock::setJITCodeMap): (JSC::CodeBlock::livenessAnalysis): * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback): * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::GetByIdVariant): * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerateWithCases): (JSC::PolymorphicAccess::regenerateWithCase): (JSC::PolymorphicAccess::regenerate): * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::computeForStubInfo): * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::setter): * bytecode/StructureStubClearingWatchpoint.cpp: (JSC::StructureStubClearingWatchpoint::push): * bytecode/StructureStubClearingWatchpoint.h: (JSC::StructureStubClearingWatchpoint::StructureStubClearingWatchpoint): * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::addAccessCase): * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::setInstructions): * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable): * bytecode/UnlinkedFunctionExecutable.h: * bytecompiler/SetForScope.h: (JSC::SetForScope::SetForScope): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::livenessFor): (JSC::DFG::Graph::killsFor): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compile): (JSC::DFG::JITCompiler::compileFunction): * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::JITFinalizer): * dfg/DFGLivenessAnalysisPhase.cpp: (JSC::DFG::LivenessAnalysisPhase::process): * dfg/DFGObjectAllocationSinkingPhase.cpp: * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::addSlowPathGenerator): (JSC::DFG::SpeculativeJIT::compileIn): (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::cachedPutById): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::cachedPutById): * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::finishCreation): * disassembler/Disassembler.cpp: (JSC::disassembleAsynchronously): * ftl/FTLB3Compile.cpp: (JSC::FTL::compile): * ftl/FTLCompile.cpp: (JSC::FTL::mmAllocateDataSection): * ftl/FTLJITCode.cpp: (JSC::FTL::JITCode::initializeB3Byproducts): * ftl/FTLJITFinalizer.h: (JSC::FTL::OutOfLineCodeInfo::OutOfLineCodeInfo): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToLLVM.cpp: (JSC::FTL::DFG::LowerDFGToLLVM::compileTailCall): (JSC::FTL::DFG::LowerDFGToLLVM::lazySlowPath): * heap/Heap.cpp: (JSC::Heap::releaseDelayedReleasedObjects): (JSC::Heap::markRoots): (JSC::Heap::setIncrementalSweeper): * heap/HeapInlines.h: (JSC::Heap::releaseSoon): (JSC::Heap::registerWeakGCMap): * heap/WeakInlines.h: * inspector/ConsoleMessage.cpp: (Inspector::ConsoleMessage::addToFrontend): * inspector/ContentSearchUtilities.cpp: (Inspector::ContentSearchUtilities::searchInTextByLines): * inspector/InjectedScript.cpp: (Inspector::InjectedScript::getFunctionDetails): (Inspector::InjectedScript::getProperties): (Inspector::InjectedScript::getDisplayableProperties): (Inspector::InjectedScript::getInternalProperties): (Inspector::InjectedScript::getCollectionEntries): (Inspector::InjectedScript::wrapCallFrames): * inspector/InspectorAgentRegistry.cpp: (Inspector::AgentRegistry::append): (Inspector::AgentRegistry::appendExtraAgent): * inspector/InspectorBackendDispatcher.cpp: (Inspector::BackendDispatcher::CallbackBase::CallbackBase): (Inspector::BackendDispatcher::CallbackBase::sendSuccess): (Inspector::BackendDispatcher::BackendDispatcher): (Inspector::BackendDispatcher::create): (Inspector::BackendDispatcher::sendPendingErrors): * inspector/InspectorProtocolTypes.h: (Inspector::Protocol::Array::addItem): * inspector/InspectorValues.cpp: * inspector/InspectorValues.h: (Inspector::InspectorObjectBase::setValue): (Inspector::InspectorObjectBase::setObject): (Inspector::InspectorObjectBase::setArray): (Inspector::InspectorArrayBase::pushValue): (Inspector::InspectorArrayBase::pushObject): (Inspector::InspectorArrayBase::pushArray): * inspector/JSGlobalObjectConsoleClient.cpp: (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel): (Inspector::JSGlobalObjectConsoleClient::timeEnd): * inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController): (Inspector::JSGlobalObjectInspectorController::appendExtraAgent): * inspector/JSInjectedScriptHost.cpp: (Inspector::JSInjectedScriptHost::JSInjectedScriptHost): * inspector/JSInjectedScriptHost.h: (Inspector::JSInjectedScriptHost::create): * inspector/agents/InspectorAgent.cpp: (Inspector::InspectorAgent::activateExtraDomain): * inspector/agents/InspectorConsoleAgent.cpp: (Inspector::InspectorConsoleAgent::addMessageToConsole): (Inspector::InspectorConsoleAgent::addConsoleMessage): * inspector/agents/InspectorDebuggerAgent.cpp: (Inspector::InspectorDebuggerAgent::setBreakpointByUrl): (Inspector::InspectorDebuggerAgent::resolveBreakpoint): (Inspector::InspectorDebuggerAgent::schedulePauseOnNextStatement): (Inspector::InspectorDebuggerAgent::breakpointActionProbe): (Inspector::InspectorDebuggerAgent::breakProgram): * inspector/agents/InspectorHeapAgent.cpp: (Inspector::InspectorHeapAgent::didGarbageCollect): * inspector/agents/InspectorRuntimeAgent.cpp: (Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets): (Inspector::InspectorRuntimeAgent::getBasicBlocks): * inspector/agents/InspectorScriptProfilerAgent.cpp: (Inspector::InspectorScriptProfilerAgent::addEvent): (Inspector::buildInspectorObject): (Inspector::buildProfileInspectorObject): (Inspector::InspectorScriptProfilerAgent::trackingComplete): * inspector/augmentable/AlternateDispatchableAgent.h: * inspector/scripts/codegen/cpp_generator_templates.py: * inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py: (CppBackendDispatcherImplementationGenerator._generate_small_dispatcher_switch_implementation_for_domain): (CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command): * inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py: (CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event): * inspector/scripts/codegen/generate_cpp_protocol_types_header.py: (_generate_unchecked_setter_for_member): * inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py: (ObjCConfigurationImplementationGenerator._generate_success_block_for_command): * inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py: (ObjCFrontendDispatcherImplementationGenerator._generate_event_out_parameters): * inspector/scripts/codegen/objc_generator_templates.py: * inspector/scripts/tests/expected/commands-with-async-attribute.json-result: * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result: * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result: * inspector/scripts/tests/expected/enum-values.json-result: * inspector/scripts/tests/expected/events-with-optional-parameters.json-result: * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result: * inspector/scripts/tests/expected/same-type-id-different-domain.json-result: * inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result: * inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result: * inspector/scripts/tests/expected/type-declaration-array-type.json-result: * inspector/scripts/tests/expected/type-declaration-enum-type.json-result: * inspector/scripts/tests/expected/type-declaration-object-type.json-result: * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result: * jit/CallFrameShuffler.cpp: (JSC::CallFrameShuffler::performSafeWrites): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): * jit/Repatch.cpp: (JSC::tryCacheGetByID): (JSC::tryCachePutByID): (JSC::tryRepatchIn): (JSC::linkPolymorphicCall): * parser/Nodes.cpp: (JSC::ProgramNode::setClosedVariables): * parser/Parser.cpp: (JSC::Parser<LexerType>::parseInner): (JSC::Parser<LexerType>::parseFunctionInfo): * parser/Parser.h: (JSC::Parser::closedVariables): * parser/SourceProviderCache.cpp: (JSC::SourceProviderCache::add): * profiler/ProfileNode.h: (JSC::CalculateProfileSubtreeDataFunctor::returnValue): * replay/EncodedValue.cpp: (JSC::EncodedValue::get<EncodedValue>): * replay/scripts/CodeGeneratorReplayInputs.py: (Generator.generate_member_move_expression): * replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp: (Test::HandleWheelEvent::HandleWheelEvent): (JSC::InputTraits<Test::HandleWheelEvent>::decode): * replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.cpp: (Test::MapInput::MapInput): (JSC::InputTraits<Test::MapInput>::decode): * runtime/ConsoleClient.cpp: (JSC::ConsoleClient::internalMessageWithTypeAndLevel): (JSC::ConsoleClient::logWithLevel): (JSC::ConsoleClient::clear): (JSC::ConsoleClient::dir): (JSC::ConsoleClient::dirXML): (JSC::ConsoleClient::table): (JSC::ConsoleClient::trace): (JSC::ConsoleClient::assertCondition): (JSC::ConsoleClient::group): (JSC::ConsoleClient::groupCollapsed): (JSC::ConsoleClient::groupEnd): * runtime/JSNativeStdFunction.cpp: (JSC::JSNativeStdFunction::create): * runtime/JSString.h: (JSC::jsNontrivialString): * runtime/JSStringJoiner.cpp: (JSC::JSStringJoiner::join): * runtime/JSStringJoiner.h: (JSC::JSStringJoiner::append): * runtime/NativeStdFunctionCell.cpp: (JSC::NativeStdFunctionCell::create): (JSC::NativeStdFunctionCell::NativeStdFunctionCell): * runtime/ScopedArgumentsTable.cpp: (JSC::ScopedArgumentsTable::setLength): * runtime/StructureIDTable.cpp: (JSC::StructureIDTable::resize): * runtime/TypeSet.cpp: (JSC::StructureShape::inspectorRepresentation): * runtime/WeakGCMap.h: (JSC::WeakGCMap::set): * tools/CodeProfile.h: (JSC::CodeProfile::addChild): * yarr/YarrInterpreter.cpp: (JSC::Yarr::ByteCompiler::compile): (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): * yarr/YarrInterpreter.h: (JSC::Yarr::BytecodePattern::BytecodePattern): * yarr/YarrPattern.cpp: (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): (JSC::Yarr::YarrPatternConstructor::reset): (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter): (JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd): (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): (JSC::Yarr::YarrPatternConstructor::copyDisjunction): Source/WebCore: * Modules/battery/NavigatorBattery.cpp: (WebCore::NavigatorBattery::from): * Modules/encryptedmedia/CDMSessionClearKey.cpp: (WebCore::CDMSessionClearKey::update): * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::create): (WebCore::MediaKeys::MediaKeys): * Modules/gamepad/NavigatorGamepad.cpp: (WebCore::NavigatorGamepad::from): * Modules/gamepad/deprecated/NavigatorGamepad.cpp: (WebCore::NavigatorGamepad::from): * Modules/geolocation/GeoNotifier.cpp: (WebCore::GeoNotifier::GeoNotifier): (WebCore::GeoNotifier::setFatalError): * Modules/geolocation/GeoNotifier.h: (WebCore::GeoNotifier::create): * Modules/geolocation/Geolocation.cpp: (WebCore::Geolocation::Watchers::add): (WebCore::Geolocation::getCurrentPosition): (WebCore::Geolocation::watchPosition): * Modules/geolocation/GeolocationController.cpp: (WebCore::GeolocationController::viewStateDidChange): * Modules/geolocation/Geoposition.h: (WebCore::Geoposition::create): (WebCore::Geoposition::Geoposition): * Modules/geolocation/NavigatorGeolocation.cpp: (WebCore::NavigatorGeolocation::from): * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: (WebCore::DOMWindowIndexedDatabase::from): * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp: (WebCore::WorkerGlobalScopeIndexedDatabase::from): * Modules/indexeddb/client/IDBAnyImpl.cpp: (WebCore::IDBClient::IDBAny::IDBAny): * Modules/indexeddb/client/IDBAnyImpl.h: (WebCore::IDBClient::IDBAny::create): * Modules/indexeddb/client/IDBDatabaseImpl.cpp: (WebCore::IDBClient::IDBDatabase::willCommitTransaction): (WebCore::IDBClient::IDBDatabase::willAbortTransaction): (WebCore::IDBClient::IDBDatabase::fireVersionChangeEvent): * Modules/indexeddb/client/IDBIndexImpl.cpp: (WebCore::IDBClient::IDBIndex::openCursor): (WebCore::IDBClient::IDBIndex::openKeyCursor): * Modules/indexeddb/client/IDBObjectStoreImpl.cpp: (WebCore::IDBClient::IDBObjectStore::openCursor): (WebCore::IDBClient::IDBObjectStore::get): (WebCore::IDBClient::IDBObjectStore::deleteFunction): (WebCore::IDBClient::IDBObjectStore::createIndex): (WebCore::IDBClient::IDBObjectStore::index): * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp: (WebCore::IDBClient::IDBOpenDBRequest::onSuccess): (WebCore::IDBClient::IDBOpenDBRequest::onUpgradeNeeded): * Modules/indexeddb/client/IDBRequestImpl.cpp: (WebCore::IDBClient::IDBRequest::enqueueEvent): (WebCore::IDBClient::IDBRequest::setResult): (WebCore::IDBClient::IDBRequest::setResultToStructuredClone): * Modules/indexeddb/client/IDBTransactionImpl.cpp: (WebCore::IDBClient::IDBTransaction::abort): (WebCore::IDBClient::IDBTransaction::scheduleOperation): (WebCore::IDBClient::IDBTransaction::commit): (WebCore::IDBClient::IDBTransaction::enqueueEvent): (WebCore::IDBClient::IDBTransaction::createObjectStore): (WebCore::IDBClient::IDBTransaction::createIndex): (WebCore::IDBClient::IDBTransaction::doRequestOpenCursor): (WebCore::IDBClient::IDBTransaction::iterateCursor): (WebCore::IDBClient::IDBTransaction::requestGetRecord): (WebCore::IDBClient::IDBTransaction::requestIndexRecord): (WebCore::IDBClient::IDBTransaction::requestClearObjectStore): (WebCore::IDBClient::IDBTransaction::requestPutOrAdd): (WebCore::IDBClient::IDBTransaction::deleteObjectStore): (WebCore::IDBClient::IDBTransaction::deleteIndex): * Modules/indexeddb/legacy/IDBDatabaseBackend.cpp: (WebCore::IDBDatabaseBackend::processPendingOpenCalls): * Modules/indexeddb/legacy/IDBDatabaseBackend.h: (WebCore::IDBDatabaseBackend::setPendingSecondHalfOpen): * Modules/indexeddb/legacy/LegacyAny.h: (WebCore::LegacyAny::create): * Modules/indexeddb/legacy/LegacyDatabase.cpp: (WebCore::LegacyDatabase::enqueueEvent): * Modules/indexeddb/legacy/LegacyRequest.cpp: (WebCore::LegacyRequest::enqueueEvent): * Modules/indexeddb/legacy/LegacyTransaction.cpp: (WebCore::LegacyTransaction::enqueueEvent): * Modules/indexeddb/server/IDBServer.cpp: (WebCore::IDBServer::IDBServer::postDatabaseTask): (WebCore::IDBServer::IDBServer::postDatabaseTaskReply): * Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp: (WebCore::IDBServer::MemoryBackingStoreTransaction::indexDeleted): (WebCore::IDBServer::MemoryBackingStoreTransaction::objectStoreDeleted): (WebCore::IDBServer::MemoryBackingStoreTransaction::objectStoreCleared): (WebCore::IDBServer::MemoryBackingStoreTransaction::indexCleared): (WebCore::IDBServer::MemoryBackingStoreTransaction::abort): * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: (WebCore::IDBServer::MemoryIDBBackingStore::beginTransaction): (WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore): (WebCore::IDBServer::MemoryIDBBackingStore::deleteObjectStore): (WebCore::IDBServer::MemoryIDBBackingStore::restoreObjectStoreForVersionChangeAbort): (WebCore::IDBServer::MemoryIDBBackingStore::registerObjectStore): * Modules/indexeddb/server/MemoryIndex.cpp: (WebCore::IDBServer::MemoryIndex::objectStoreCleared): (WebCore::IDBServer::MemoryIndex::replaceIndexValueStore): * Modules/indexeddb/server/MemoryObjectStore.cpp: (WebCore::IDBServer::MemoryObjectStore::createIndex): (WebCore::IDBServer::MemoryObjectStore::maybeRestoreDeletedIndex): (WebCore::IDBServer::MemoryObjectStore::deleteIndex): (WebCore::IDBServer::MemoryObjectStore::clear): (WebCore::IDBServer::MemoryObjectStore::replaceKeyValueStore): (WebCore::IDBServer::MemoryObjectStore::registerIndex): * Modules/indexeddb/server/ServerOpenDBRequest.cpp: (WebCore::IDBServer::ServerOpenDBRequest::notifiedConnectionsOfVersionChange): * Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::openDatabaseConnection): (WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation): (WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction): (WebCore::IDBServer::UniqueIDBDatabase::maybeNotifyConnectionsOfVersionChange): (WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient): (WebCore::IDBServer::UniqueIDBDatabase::enqueueTransaction): (WebCore::IDBServer::UniqueIDBDatabase::takeNextRunnableTransaction): * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp: (WebCore::IDBServer::UniqueIDBDatabaseConnection::establishTransaction): * Modules/indexeddb/shared/IndexKey.cpp: (WebCore::IndexKey::isolatedCopy): * Modules/mediasession/WebMediaSessionManager.cpp: (WebCore::WebMediaSessionManager::setPlaybackTarget): * Modules/mediasource/MediaSource.cpp: (WebCore::MediaSource::setPrivateAndOpen): * Modules/mediasource/SourceBuffer.cpp: (WebCore::SourceBuffer::create): (WebCore::SourceBuffer::SourceBuffer): * Modules/mediastream/MediaDevices.cpp: (WebCore::MediaDevices::getUserMedia): (WebCore::MediaDevices::enumerateDevices): * Modules/mediastream/MediaDevicesRequest.cpp: (WebCore::MediaDevicesRequest::create): (WebCore::MediaDevicesRequest::MediaDevicesRequest): * Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::create): (WebCore::MediaStream::MediaStream): (WebCore::MediaStream::addTrack): (WebCore::MediaStream::didRemoveTrack): (WebCore::MediaStream::internalAddTrack): (WebCore::MediaStream::internalRemoveTrack): * Modules/mediastream/NavigatorMediaDevices.cpp: (WebCore::NavigatorMediaDevices::from): * Modules/mediastream/RTCConfiguration.cpp: (WebCore::RTCConfiguration::initialize): * Modules/mediastream/RTCDTMFSender.cpp: (WebCore::RTCDTMFSender::create): (WebCore::RTCDTMFSender::RTCDTMFSender): (WebCore::RTCDTMFSender::scheduleDispatchEvent): * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::create): (WebCore::RTCDataChannel::RTCDataChannel): (WebCore::RTCDataChannel::scheduleDispatchEvent): * Modules/mediastream/RTCIceCandidateEvent.cpp: (WebCore::RTCIceCandidateEvent::create): (WebCore::RTCIceCandidateEvent::RTCIceCandidateEvent): * Modules/mediastream/RTCPeerConnection.cpp: (WebCore::RTCPeerConnection::create): (WebCore::RTCPeerConnection::RTCPeerConnection): (WebCore::RTCPeerConnection::addTrack): (WebCore::RTCPeerConnection::queuedCreateOffer): (WebCore::RTCPeerConnection::queuedCreateAnswer): (WebCore::RTCPeerConnection::queuedSetLocalDescription): (WebCore::RTCPeerConnection::queuedSetRemoteDescription): (WebCore::RTCPeerConnection::queuedAddIceCandidate): (WebCore::RTCPeerConnection::setConfiguration): (WebCore::RTCPeerConnection::privateGetStats): * Modules/mediastream/RTCRtpReceiver.cpp: (WebCore::RTCRtpReceiver::RTCRtpReceiver): * Modules/mediastream/RTCRtpReceiver.h: (WebCore::RTCRtpReceiver::create): * Modules/mediastream/RTCRtpSender.cpp: (WebCore::RTCRtpSender::RTCRtpSender): * Modules/mediastream/RTCRtpSender.h: (WebCore::RTCRtpSender::create): * Modules/mediastream/RTCTrackEvent.cpp: (WebCore::RTCTrackEvent::create): * Modules/mediastream/UserMediaRequest.cpp: (WebCore::UserMediaRequest::start): (WebCore::UserMediaRequest::UserMediaRequest): * Modules/navigatorcontentutils/NavigatorContentUtils.cpp: (WebCore::provideNavigatorContentUtilsTo): * Modules/navigatorcontentutils/NavigatorContentUtils.h: * Modules/notifications/DOMWindowNotifications.cpp: (WebCore::DOMWindowNotifications::from): * Modules/notifications/NotificationCenter.cpp: (WebCore::NotificationCenter::timerFired): * Modules/notifications/WorkerGlobalScopeNotifications.cpp: (WebCore::WorkerGlobalScopeNotifications::from): * Modules/plugins/QuickTimePluginReplacement.mm: (WebCore::QuickTimePluginReplacement::createElementRenderer): * Modules/plugins/YouTubePluginReplacement.cpp: (WebCore::YouTubePluginReplacement::createElementRenderer): (WebCore::YouTubePluginReplacement::installReplacement): * 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::setPlatformSynthesizer): * Modules/webaudio/AsyncAudioDecoder.cpp: (WebCore::AsyncAudioDecoder::decodeAsync): * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::addReaction): (WebCore::AudioContext::suspend): (WebCore::AudioContext::resume): (WebCore::AudioContext::close): * Modules/webaudio/AudioNode.cpp: (WebCore::AudioNode::addInput): (WebCore::AudioNode::addOutput): * Modules/webaudio/AudioScheduledSourceNode.cpp: (WebCore::AudioScheduledSourceNode::addEventListener): * Modules/webaudio/ConvolverNode.cpp: (WebCore::ConvolverNode::setBuffer): * Modules/webaudio/MediaStreamAudioDestinationNode.cpp: (WebCore::MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode): * Modules/webaudio/ScriptProcessorNode.cpp: (WebCore::ScriptProcessorNode::addEventListener): * Modules/webdatabase/Database.cpp: (WebCore::Database::openAndVerifyVersion): (WebCore::Database::scheduleTransaction): (WebCore::Database::scheduleTransactionStep): (WebCore::Database::markAsDeletedAndClose): (WebCore::Database::runTransaction): (WebCore::Database::tableNames): * Modules/webdatabase/DatabaseThread.cpp: (WebCore::DatabaseThread::scheduleTask): (WebCore::DatabaseThread::scheduleImmediateTask): * Modules/webdatabase/SQLTransaction.cpp: (WebCore::SQLTransaction::create): (WebCore::SQLTransaction::SQLTransaction): (WebCore::SQLTransaction::executeSQL): * Modules/webdatabase/SQLTransactionBackend.cpp: (WebCore::SQLTransactionBackend::enqueueStatementBackend): (WebCore::SQLTransactionBackend::executeSQL): * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp: (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData): (WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks): * Modules/websockets/WebSocket.cpp: (WebCore::WebSocket::didReceiveBinaryData): (WebCore::WebSocket::dispatchOrQueueEvent): * Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::processFrame): * Modules/websockets/WebSocketExtensionDispatcher.cpp: (WebCore::WebSocketExtensionDispatcher::addProcessor): * Modules/websockets/WebSocketHandshake.cpp: (WebCore::WebSocketHandshake::addExtensionProcessor): * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData): * accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::notificationPostTimerFired): (WebCore::AXObjectCache::passwordNotificationPostTimerFired): * accessibility/AccessibilityNodeObject.cpp: (WebCore::AccessibilityNodeObject::ariaLabeledByText): * accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::selectText): * accessibility/AccessibilityObject.h: (WebCore::AccessibilityText::AccessibilityText): * bindings/gobject/DOMObjectCache.cpp: * bindings/js/IDBBindingUtilities.cpp: (WebCore::maybeCreateIDBKeyFromScriptValueAndKeyPath): (WebCore::generateIndexKeyForValue): * bindings/js/JSCryptoAlgorithmDictionary.cpp: (WebCore::createAesCbcParams): (WebCore::createAesKeyGenParams): (WebCore::createHmacParams): (WebCore::createHmacKeyParams): (WebCore::createRsaKeyGenParams): (WebCore::createRsaOaepParams): (WebCore::createRsaSsaParams): * bindings/js/JSCryptoKeySerializationJWK.cpp: (WebCore::createHMACParameters): (WebCore::createRSAKeyParametersWithHash): (WebCore::JSCryptoKeySerializationJWK::reconcileAlgorithm): * bindings/js/JSDOMPromise.h: (WebCore::DOMPromise::DOMPromise): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::queueTaskToEventLoop): * bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::setTimeout): (WebCore::JSDOMWindow::setInterval): * bindings/js/JSDOMWrapper.h: (WebCore::JSDOMWrapper::JSDOMWrapper): * bindings/js/JSMessageEventCustom.cpp: (WebCore::handleInitMessageEvent): * bindings/js/JSSubtleCryptoCustom.cpp: (WebCore::JSSubtleCrypto::encrypt): (WebCore::JSSubtleCrypto::decrypt): (WebCore::JSSubtleCrypto::sign): (WebCore::JSSubtleCrypto::verify): (WebCore::JSSubtleCrypto::digest): (WebCore::JSSubtleCrypto::generateKey): (WebCore::importKey): (WebCore::JSSubtleCrypto::importKey): (WebCore::JSSubtleCrypto::exportKey): (WebCore::JSSubtleCrypto::wrapKey): (WebCore::JSSubtleCrypto::unwrapKey): * bindings/js/JSWorkerGlobalScopeCustom.cpp: (WebCore::JSWorkerGlobalScope::setTimeout): (WebCore::JSWorkerGlobalScope::setInterval): * bindings/js/SerializedScriptValue.cpp: (WebCore::CloneDeserializer::readRSAKey): (WebCore::CloneDeserializer::readTerminal): (WebCore::SerializedScriptValue::SerializedScriptValue): (WebCore::SerializedScriptValue::create): * bindings/scripts/CodeGeneratorJS.pm: (GenerateHeader): (GenerateImplementation): * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: (WebCore::JSTestActiveDOMObject::JSTestActiveDOMObject): * bindings/scripts/test/JS/JSTestActiveDOMObject.h: (WebCore::JSTestActiveDOMObject::create): * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: (WebCore::JSTestClassWithJSBuiltinConstructor::JSTestClassWithJSBuiltinConstructor): * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h: (WebCore::JSTestClassWithJSBuiltinConstructor::create): * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: (WebCore::JSTestCustomConstructorWithNoInterfaceObject::JSTestCustomConstructorWithNoInterfaceObject): * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h: (WebCore::JSTestCustomConstructorWithNoInterfaceObject::create): * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: (WebCore::JSTestCustomNamedGetter::JSTestCustomNamedGetter): * bindings/scripts/test/JS/JSTestCustomNamedGetter.h: (WebCore::JSTestCustomNamedGetter::create): * bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::JSTestEventConstructor::JSTestEventConstructor): * bindings/scripts/test/JS/JSTestEventConstructor.h: (WebCore::JSTestEventConstructor::create): * bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::JSTestEventTarget::JSTestEventTarget): * bindings/scripts/test/JS/JSTestEventTarget.h: (WebCore::JSTestEventTarget::create): * bindings/scripts/test/JS/JSTestException.cpp: (WebCore::JSTestException::JSTestException): * bindings/scripts/test/JS/JSTestException.h: (WebCore::JSTestException::create): * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: (WebCore::JSTestGenerateIsReachable::JSTestGenerateIsReachable): * bindings/scripts/test/JS/JSTestGenerateIsReachable.h: (WebCore::JSTestGenerateIsReachable::create): * bindings/scripts/test/JS/JSTestInterface.cpp: (WebCore::JSTestInterface::JSTestInterface): * bindings/scripts/test/JS/JSTestInterface.h: * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: (WebCore::JSTestMediaQueryListListener::JSTestMediaQueryListListener): * bindings/scripts/test/JS/JSTestMediaQueryListListener.h: (WebCore::JSTestMediaQueryListListener::create): * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: (WebCore::JSTestNamedConstructor::JSTestNamedConstructor): * bindings/scripts/test/JS/JSTestNamedConstructor.h: (WebCore::JSTestNamedConstructor::create): * bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::JSTestNode::JSTestNode): * bindings/scripts/test/JS/JSTestNode.h: * bindings/scripts/test/JS/JSTestNondeterministic.cpp: (WebCore::JSTestNondeterministic::JSTestNondeterministic): * bindings/scripts/test/JS/JSTestNondeterministic.h: (WebCore::JSTestNondeterministic::create): * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::JSTestObj::JSTestObj): * bindings/scripts/test/JS/JSTestObj.h: (WebCore::JSTestObj::create): * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::JSTestOverloadedConstructors::JSTestOverloadedConstructors): * bindings/scripts/test/JS/JSTestOverloadedConstructors.h: (WebCore::JSTestOverloadedConstructors::create): * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: (WebCore::JSTestOverrideBuiltins::JSTestOverrideBuiltins): * bindings/scripts/test/JS/JSTestOverrideBuiltins.h: (WebCore::JSTestOverrideBuiltins::create): * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::JSTestSerializedScriptValueInterface::JSTestSerializedScriptValueInterface): * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: (WebCore::JSTestSerializedScriptValueInterface::create): * bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::JSTestTypedefs::JSTestTypedefs): * bindings/scripts/test/JS/JSTestTypedefs.h: (WebCore::JSTestTypedefs::create): * bindings/scripts/test/JS/JSattribute.cpp: (WebCore::JSattribute::JSattribute): * bindings/scripts/test/JS/JSattribute.h: (WebCore::JSattribute::create): * bindings/scripts/test/JS/JSreadonly.cpp: (WebCore::JSreadonly::JSreadonly): * bindings/scripts/test/JS/JSreadonly.h: (WebCore::JSreadonly::create): * bridge/c/CRuntimeObject.cpp: (JSC::Bindings::CRuntimeObject::CRuntimeObject): * bridge/c/CRuntimeObject.h: (JSC::Bindings::CRuntimeObject::create): * bridge/c/c_class.cpp: (JSC::Bindings::CClass::methodNamed): (JSC::Bindings::CClass::fieldNamed): * bridge/c/c_instance.cpp: (JSC::Bindings::CInstance::CInstance): * bridge/c/c_instance.h: (JSC::Bindings::CInstance::create): * bridge/jsc/BridgeJSC.cpp: (JSC::Bindings::Array::Array): (JSC::Bindings::Instance::Instance): * bridge/objc/ObjCRuntimeObject.h: (JSC::Bindings::ObjCRuntimeObject::create): * bridge/objc/objc_class.mm: (JSC::Bindings::ObjcClass::methodNamed): (JSC::Bindings::ObjcClass::fieldNamed): * bridge/objc/objc_instance.mm: (ObjcInstance::ObjcInstance): (ObjcInstance::create): * bridge/objc/objc_runtime.mm: (JSC::Bindings::ObjcArray::ObjcArray): * bridge/runtime_object.cpp: (JSC::Bindings::RuntimeObject::RuntimeObject): * bridge/runtime_object.h: * contentextensions/CombinedFiltersAlphabet.cpp: (WebCore::ContentExtensions::TermCreatorTranslator::translate): * contentextensions/CombinedURLFilters.cpp: (WebCore::ContentExtensions::ActiveSubtree::ActiveSubtree): (WebCore::ContentExtensions::generateSuffixWithReverseSuffixTree): (WebCore::ContentExtensions::generateNFAForSubtree): (WebCore::ContentExtensions::CombinedURLFilters::processNFAs): * contentextensions/ContentExtension.cpp: (WebCore::ContentExtensions::ContentExtension::create): (WebCore::ContentExtensions::ContentExtension::ContentExtension): * contentextensions/ContentExtensionCompiler.cpp: (WebCore::ContentExtensions::compileRuleList): * contentextensions/ContentExtensionParser.cpp: (WebCore::ContentExtensions::loadEncodedRules): * contentextensions/ContentExtensionsBackend.cpp: (WebCore::ContentExtensions::ContentExtensionsBackend::addContentExtension): * contentextensions/DFACombiner.cpp: (WebCore::ContentExtensions::DFACombiner::combineDFAs): * contentextensions/DFACombiner.h: (WebCore::ContentExtensions::DFACombiner::addDFA): * contentextensions/ImmutableNFANodeBuilder.h: (WebCore::ContentExtensions::ImmutableNFANodeBuilder::ImmutableNFANodeBuilder): (WebCore::ContentExtensions::ImmutableNFANodeBuilder::operator=): * contentextensions/MutableRange.h: (WebCore::ContentExtensions::MutableRange::MutableRange): (WebCore::ContentExtensions::MutableRange::operator=): * contentextensions/MutableRangeList.h: (WebCore::ContentExtensions::MutableRangeList::extend): (WebCore::ContentExtensions::MutableRangeList::insertBetween): * contentextensions/Term.h: (WebCore::ContentExtensions::Term::Term): (WebCore::ContentExtensions::Term::operator=): (WebCore::ContentExtensions::Term::generateSubgraphForAtom): * crypto/CryptoAlgorithm.cpp: (WebCore::CryptoAlgorithm::encryptForWrapKey): (WebCore::CryptoAlgorithm::decryptForUnwrapKey): * crypto/CryptoKeyPair.cpp: (WebCore::CryptoKeyPair::CryptoKeyPair): * crypto/CryptoKeyPair.h: (WebCore::CryptoKeyPair::create): * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp: (WebCore::CryptoAlgorithmAES_CBC::encrypt): (WebCore::CryptoAlgorithmAES_CBC::decrypt): * crypto/algorithms/CryptoAlgorithmAES_KW.cpp: (WebCore::CryptoAlgorithmAES_KW::encryptForWrapKey): (WebCore::CryptoAlgorithmAES_KW::decryptForUnwrapKey): * crypto/algorithms/CryptoAlgorithmHMAC.cpp: (WebCore::CryptoAlgorithmHMAC::sign): (WebCore::CryptoAlgorithmHMAC::verify): * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp: (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt): (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt): (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey): * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp: (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::sign): (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::verify): (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey): * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp: (WebCore::CryptoAlgorithmRSA_OAEP::encrypt): (WebCore::CryptoAlgorithmRSA_OAEP::decrypt): (WebCore::CryptoAlgorithmRSA_OAEP::generateKey): * crypto/mac/CryptoAlgorithmAES_CBCMac.cpp: (WebCore::CryptoAlgorithmAES_CBC::platformEncrypt): (WebCore::CryptoAlgorithmAES_CBC::platformDecrypt): * crypto/mac/CryptoKeyRSAMac.cpp: (WebCore::CryptoKeyRSA::generatePair): * css/BasicShapeFunctions.cpp: (WebCore::valueForBasicShape): (WebCore::basicShapeForValue): * css/CSSBasicShapes.cpp: (WebCore::CSSBasicShapePath::CSSBasicShapePath): * css/CSSBasicShapes.h: * css/CSSBorderImage.cpp: (WebCore::createBorderImageValue): * css/CSSCalculationValue.cpp: * css/CSSCalculationValue.h: (WebCore::CSSCalcValue::CSSCalcValue): * css/CSSComputedStyleDeclaration.cpp: (WebCore::valueForNinePieceImageSlice): (WebCore::valueForNinePieceImageQuad): (WebCore::computedTransform): (WebCore::ComputedStyleExtractor::valueForShadow): (WebCore::ComputedStyleExtractor::valueForFilter): (WebCore::valueForGridTrackList): (WebCore::valueForGridPosition): (WebCore::scrollSnapPoints): (WebCore::scrollSnapCoordinates): (WebCore::getWillChangePropertyValue): (WebCore::fontVariantLigaturesPropertyValue): (WebCore::fontVariantNumericPropertyValue): (WebCore::fontVariantEastAsianPropertyValue): (WebCore::fillRepeatToCSSValue): (WebCore::fillSizeToCSSValue): (WebCore::fontVariantFromStyle): (WebCore::ComputedStyleExtractor::propertyValue): * css/CSSCrossfadeValue.cpp: (WebCore::CSSCrossfadeValue::blend): * css/CSSCursorImageValue.cpp: (WebCore::CSSCursorImageValue::CSSCursorImageValue): * css/CSSCursorImageValue.h: (WebCore::CSSCursorImageValue::create): * css/CSSFilterImageValue.cpp: (WebCore::CSSFilterImageValue::image): * css/CSSFilterImageValue.h: (WebCore::CSSFilterImageValue::create): * css/CSSFontFace.cpp: (WebCore::CSSFontFace::addSource): * css/CSSFontFace.h: (WebCore::CSSFontFace::create): (WebCore::CSSFontFace::insertFeature): * css/CSSFontFaceSource.cpp: (WebCore::CSSFontFaceSource::font): * css/CSSFontFeatureValue.cpp: (WebCore::CSSFontFeatureValue::CSSFontFeatureValue): * css/CSSFontFeatureValue.h: (WebCore::CSSFontFeatureValue::create): * css/CSSFontSelector.cpp: (WebCore::createFontFace): (WebCore::constructFamilyFontFaces): * css/CSSGrammar.y.in: * css/CSSImageValue.cpp: (WebCore::CSSImageValue::cloneForCSSOM): * css/CSSKeyframeRule.cpp: (WebCore::StyleKeyframe::StyleKeyframe): * css/CSSKeyframeRule.h: (WebCore::StyleKeyframe::create): * css/CSSParser.cpp: (WebCore::CSSParser::parseFontFaceValue): (WebCore::CSSParser::parseMediaQuery): (WebCore::CSSParser::parseSizesAttribute): (WebCore::CSSParser::SourceSize::SourceSize): (WebCore::CSSParser::sourceSize): (WebCore::CSSParser::addFillValue): (WebCore::CSSParser::addAnimationValue): (WebCore::CSSParser::parse4ValuesFillPosition): (WebCore::CSSParser::parse3ValuesFillPosition): (WebCore::CSSParser::parseFillPosition): (WebCore::CSSParser::parseFillSize): (WebCore::CSSParser::parseDashboardRegions): (WebCore::CSSParser::parseClipShape): (WebCore::CSSParser::parseBasicShapePath): (WebCore::CSSParser::parseSystemFont): (WebCore::CSSParser::parseBorderImageRepeat): (WebCore::BorderImageSliceParseContext::commitBorderImageSlice): (WebCore::BorderImageQuadParseContext::commitBorderImageQuad): (WebCore::CSSParser::parseBuiltinFilterArguments): (WebCore::CSSParser::parseFontFeatureTag): (WebCore::CSSParser::parseFontVariantLigatures): (WebCore::CSSParser::parseFontVariantNumeric): (WebCore::CSSParser::parseFontVariantEastAsian): (WebCore::CSSParser::createKeyframesRule): (WebCore::CSSParser::rewriteSpecifiers): (WebCore::CSSParser::createPageRule): (WebCore::CSSParser::createSelectorVector): (WebCore::CSSParser::recycleSelectorVector): * css/CSSParserValues.cpp: (WebCore::CSSParserSelector::~CSSParserSelector): (WebCore::CSSParserSelector::adoptSelectorVector): (WebCore::CSSParserSelector::setLangArgumentList): (WebCore::CSSParserSelector::insertTagHistory): (WebCore::CSSParserSelector::appendTagHistory): (WebCore::CSSParserSelector::prependTagSelector): * css/CSSParserValues.h: (WebCore::CSSParserSelector::releaseSelector): (WebCore::CSSParserSelector::setTagHistory): * css/CSSPrimitiveValue.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): * css/CSSProperty.cpp: (WebCore::CSSProperty::wrapValueInCommaSeparatedList): * css/CSSSegmentedFontFace.cpp: (WebCore::CSSSegmentedFontFace::appendFontFace): (WebCore::appendFontWithInvalidUnicodeRangeIfLoading): * css/CSSSelector.cpp: (WebCore::CSSSelector::setLangArgumentList): (WebCore::CSSSelector::setSelectorList): * css/CSSStyleSheet.cpp: (WebCore::CSSStyleSheet::create): (WebCore::CSSStyleSheet::CSSStyleSheet): * css/CSSValueList.h: (WebCore::CSSValueList::append): (WebCore::CSSValueList::prepend): * css/DocumentRuleSets.cpp: (WebCore::DocumentRuleSets::initUserStyle): * css/FontLoader.cpp: (WebCore::FontLoader::scheduleEvent): * css/MediaList.cpp: (WebCore::MediaQuerySet::parse): (WebCore::MediaQuerySet::add): (WebCore::MediaQuerySet::addMediaQuery): * css/MediaQuery.cpp: (WebCore::MediaQuery::MediaQuery): * css/Pair.h: (WebCore::Pair::create): (WebCore::Pair::Pair): * css/RuleSet.cpp: (WebCore::RuleSet::addRegionRule): * css/RuleSet.h: (WebCore::RuleSet::RuleSetSelectorPair::RuleSetSelectorPair): * css/SVGCSSComputedStyleDeclaration.cpp: (WebCore::paintOrder): * css/SourceSizeList.cpp: (WebCore::match): (WebCore::parseSizesAttribute): * css/StyleBuilderCustom.h: (WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue): (WebCore::StyleBuilderCustom::applyValueContent): (WebCore::StyleBuilderCustom::applyValueWillChange): * css/StyleResolver.cpp: (WebCore::StyleResolver::State::setStyle): (WebCore::StyleResolver::addToMatchedPropertiesCache): * css/StyleResolver.h: (WebCore::StyleResolver::State::setParentStyle): (WebCore::StyleResolver::State::setAuthorRollback): (WebCore::StyleResolver::State::setUserRollback): * css/StyleRule.cpp: (WebCore::StyleRule::StyleRule): (WebCore::StyleRule::create): (WebCore::StyleRulePage::StyleRulePage): (WebCore::StyleRuleFontFace::StyleRuleFontFace): (WebCore::StyleRuleGroup::wrapperInsertRule): (WebCore::StyleRuleViewport::StyleRuleViewport): * css/StyleRule.h: (WebCore::StyleRule::create): (WebCore::StyleRule::wrapperAdoptSelectorList): (WebCore::StyleRuleFontFace::create): (WebCore::StyleRulePage::create): (WebCore::StyleRulePage::wrapperAdoptSelectorList): (WebCore::StyleRuleViewport::create): * cssjit/SelectorCompiler.cpp: (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatchesSelectorList): * dom/ActiveDOMCallbackMicrotask.cpp: (WebCore::ActiveDOMCallbackMicrotask::ActiveDOMCallbackMicrotask): * dom/Attr.cpp: (WebCore::Attr::cloneNodeInternal): * dom/ChildListMutationScope.cpp: (WebCore::ChildListMutationAccumulator::ChildListMutationAccumulator): * dom/ContainerNode.cpp: (WebCore::ContainerNode::insertBefore): (WebCore::ContainerNode::append): (WebCore::ContainerNode::prepend): * dom/DataTransfer.cpp: (WebCore::DataTransfer::DataTransfer): * dom/Document.cpp: (WebCore::Document::createNodeIterator): (WebCore::Document::createTreeWalker): (WebCore::Document::logExceptionToConsole): (WebCore::Document::cloneNodeInternal): (WebCore::Document::enqueueWindowEvent): (WebCore::Document::enqueueDocumentEvent): (WebCore::Document::enqueueOverflowEvent): (WebCore::Document::setTransformSource): (WebCore::Document::addMessage): (WebCore::Document::postTask): (WebCore::Document::pendingTasksTimerFired): (WebCore::Document::sendWillRevealEdgeEventsIfNeeded): * dom/DocumentEventQueue.cpp: (WebCore::DocumentEventQueue::enqueueOrDispatchScrollEvent): * dom/DocumentFragment.cpp: (WebCore::DocumentFragment::cloneNodeInternal): * dom/Element.cpp: (WebCore::Element::createElementRenderer): (WebCore::Element::addShadowRoot): (WebCore::Element::dispatchFocusInEvent): (WebCore::Element::dispatchFocusOutEvent): (WebCore::Element::dispatchFocusEvent): (WebCore::Element::dispatchBlurEvent): (WebCore::Element::resolveComputedStyle): (WebCore::Element::setBeforePseudoElement): (WebCore::Element::setAfterPseudoElement): * dom/ElementRareData.h: (WebCore::ElementRareData::setShadowRoot): (WebCore::ElementRareData::setAttributeMap): (WebCore::ElementRareData::setComputedStyle): (WebCore::ElementRareData::setClassList): (WebCore::ElementRareData::setDataset): (WebCore::ElementRareData::setBeforePseudoElement): (WebCore::ElementRareData::setAfterPseudoElement): * dom/Event.cpp: (WebCore::Event::setTarget): * dom/EventTarget.cpp: (WebCore::EventTarget::addEventListener): * dom/ExtensionStyleSheets.cpp: (WebCore::ExtensionStyleSheets::addUserStyleSheet): (WebCore::ExtensionStyleSheets::addAuthorStyleSheetForTesting): * dom/FocusEvent.cpp: (WebCore::FocusEvent::FocusEvent): * dom/FocusEvent.h: * dom/MessageEvent.cpp: (WebCore::MessageEvent::MessageEvent): (WebCore::MessageEvent::initMessageEvent): * dom/MessageEvent.h: * dom/MessagePort.cpp: (WebCore::MessagePort::postMessage): (WebCore::MessagePort::disentangle): (WebCore::MessagePort::entangle): (WebCore::MessagePort::dispatchMessages): (WebCore::MessagePort::disentanglePorts): (WebCore::MessagePort::entanglePorts): (WebCore::MessagePort::addEventListener): * dom/Microtasks.cpp: (WebCore::MicrotaskQueue::append): (WebCore::MicrotaskQueue::performMicrotaskCheckpoint): * dom/MutationObserver.cpp: (WebCore::queueMutationObserverCompoundMicrotask): * dom/NativeNodeFilter.h: * dom/Node.cpp: (WebCore::Node::before): (WebCore::Node::after): (WebCore::Node::replaceWith): (WebCore::Document::invalidateNodeListAndCollectionCaches): (WebCore::tryAddEventListener): (WebCore::Node::addEventListener): * dom/NodeIterator.cpp: (WebCore::NodeIterator::NodeIterator): * dom/NodeIterator.h: (WebCore::NodeIterator::create): * dom/ProcessingInstruction.cpp: (WebCore::ProcessingInstruction::setCSSStyleSheet): * dom/PseudoElement.cpp: (WebCore::PseudoElement::didRecalcStyle): * dom/ScopedEventQueue.cpp: (WebCore::ScopedEventQueue::enqueueEvent): (WebCore::ScopedEventQueue::dispatchAllEvents): * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::reportException): * dom/ScriptExecutionContext.h: (WebCore::ScriptExecutionContext::Task::Task): * dom/SecurityContext.cpp: (WebCore::SecurityContext::setSecurityOriginPolicy): (WebCore::SecurityContext::setContentSecurityPolicy): * dom/SecurityOriginPolicy.cpp: (WebCore::SecurityOriginPolicy::create): (WebCore::SecurityOriginPolicy::SecurityOriginPolicy): * dom/SelectorQuery.cpp: (WebCore::SelectorQuery::SelectorQuery): (WebCore::SelectorQueryCache::add): * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::ShadowRoot): * dom/ShadowRoot.h: * dom/SlotAssignment.cpp: (WebCore::SlotAssignment::SlotAssignment): * dom/StyledElement.cpp: (WebCore::StyledElement::rebuildPresentationAttributeStyle): * dom/Text.cpp: (WebCore::Text::splitText): (WebCore::Text::replaceWholeText): * dom/Traversal.cpp: (WebCore::NodeIteratorBase::NodeIteratorBase): * dom/TreeWalker.cpp: (WebCore::TreeWalker::TreeWalker): (WebCore::TreeWalker::traverseSiblings): * dom/TreeWalker.h: (WebCore::TreeWalker::create): * dom/TypedElementDescendantIterator.h: (WebCore::DoubleTypedElementDescendantIteratorAdapter<ElementType>::DoubleTypedElementDescendantIteratorAdapter): (WebCore::DoubleTypedElementDescendantIterator<ElementType>::DoubleTypedElementDescendantIterator): * dom/default/PlatformMessagePortChannel.cpp: (WebCore::PlatformMessagePortChannel::EventData::EventData): (WebCore::MessagePortChannel::createChannel): (WebCore::MessagePortChannel::postMessageToRemote): * dom/default/PlatformMessagePortChannel.h: (WebCore::PlatformMessagePortChannel::EventData::channels): (WebCore::PlatformMessagePortChannel::MessagePortQueue::appendAndCheckEmpty): * editing/AppendNodeCommand.cpp: (WebCore::AppendNodeCommand::AppendNodeCommand): * editing/AppendNodeCommand.h: (WebCore::AppendNodeCommand::create): * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::replaceTextInNode): (WebCore::CompositeEditCommand::moveParagraphs): * editing/DeleteFromTextNodeCommand.h: (WebCore::DeleteFromTextNodeCommand::create): * editing/EditingStyle.cpp: (WebCore::applyTextDecorationChangeToValueList): (WebCore::EditingStyle::overrideTypingStyleAt): (WebCore::EditingStyle::conflictsWithInlineStyleOfElement): (WebCore::mergeTextDecorationValues): (WebCore::StyleChange::StyleChange): * editing/Editor.cpp: (WebCore::Editor::insertDictationPhrases): (WebCore::Editor::setTextAsChildOfElement): (WebCore::Editor::applyStyleToSelection): * editing/EditorCommand.cpp: (WebCore::applyCommandToFrame): (WebCore::executeInsertNode): (WebCore::executeInsertHorizontalRule): (WebCore::executeInsertImage): (WebCore::executeStrikethrough): (WebCore::executeUnderline): * editing/InsertIntoTextNodeCommand.h: (WebCore::InsertIntoTextNodeCommand::create): * editing/InsertNodeBeforeCommand.h: (WebCore::InsertNodeBeforeCommand::create): * editing/MergeIdenticalElementsCommand.cpp: (WebCore::MergeIdenticalElementsCommand::doApply): (WebCore::MergeIdenticalElementsCommand::doUnapply): * editing/MoveSelectionCommand.cpp: (WebCore::MoveSelectionCommand::doApply): * editing/RemoveNodeCommand.cpp: (WebCore::RemoveNodeCommand::RemoveNodeCommand): * editing/RemoveNodeCommand.h: (WebCore::RemoveNodeCommand::create): * editing/ReplaceDeleteFromTextNodeCommand.cpp: (WebCore::ReplaceDeleteFromTextNodeCommand::ReplaceDeleteFromTextNodeCommand): * editing/ReplaceDeleteFromTextNodeCommand.h: * editing/ReplaceInsertIntoTextNodeCommand.cpp: (WebCore::ReplaceInsertIntoTextNodeCommand::ReplaceInsertIntoTextNodeCommand): * editing/ReplaceInsertIntoTextNodeCommand.h: * editing/ReplaceNodeWithSpanCommand.cpp: (WebCore::swapInNodePreservingAttributesAndChildren): * editing/ReplaceSelectionCommand.h: (WebCore::ReplaceSelectionCommand::create): * editing/SplitElementCommand.cpp: (WebCore::SplitElementCommand::executeApply): (WebCore::SplitElementCommand::doUnapply): * editing/TextCheckingHelper.cpp: (WebCore::findGrammaticalErrors): (WebCore::checkTextOfParagraph): * editing/TextIterator.cpp: (WebCore::TextIteratorCopyableText::set): (WebCore::TextIterator::handleReplacedElement): (WebCore::TextIterator::emitText): (WebCore::SimplifiedBackwardsTextIterator::handleTextNode): (WebCore::TextIterator::rangeFromLocationAndLength): * editing/WrapContentsInDummySpanCommand.cpp: (WebCore::WrapContentsInDummySpanCommand::executeApply): (WebCore::WrapContentsInDummySpanCommand::doUnapply): * editing/ios/DictationCommandIOS.cpp: (WebCore::DictationCommandIOS::DictationCommandIOS): * editing/ios/DictationCommandIOS.h: (WebCore::DictationCommandIOS::create): * editing/ios/EditorIOS.mm: (WebCore::Editor::WebContentReader::readURL): (WebCore::Editor::createFragmentForImageResourceAndAddResource): * editing/mac/EditorMac.mm: (WebCore::Editor::WebContentReader::readFilenames): (WebCore::Editor::WebContentReader::readURL): (WebCore::Editor::createFragmentForImageResourceAndAddResource): * editing/markup.cpp: (WebCore::fillContainerFromString): (WebCore::createFragmentFromText): (WebCore::replaceChildrenWithFragment): (WebCore::replaceChildrenWithText): * fileapi/AsyncFileStream.cpp: (WebCore::callOnFileThread): * fileapi/Blob.cpp: (WebCore::Blob::Blob): * fileapi/Blob.h: (WebCore::Blob::create): * fileapi/FileList.h: (WebCore::FileList::create): (WebCore::FileList::FileList): (WebCore::FileList::append): * fileapi/ThreadableBlobRegistry.cpp: (WebCore::BlobRegistryContext::BlobRegistryContext): (WebCore::ThreadableBlobRegistry::registerBlobURL): * fileapi/WebKitBlobBuilder.cpp: (WebCore::BlobBuilder::append): (WebCore::BlobBuilder::finalize): * history/BackForwardController.cpp: (WebCore::BackForwardController::BackForwardController): (WebCore::BackForwardController::addItem): * history/BackForwardList.cpp: (WebCore::BackForwardList::addItem): * history/CachedFrame.cpp: (WebCore::CachedFrame::setCachedFramePlatformData): * history/HistoryItem.cpp: (WebCore::HistoryItem::setStateObject): (WebCore::HistoryItem::addChildItem): (WebCore::HistoryItem::setChildItem): (WebCore::HistoryItem::setFormData): (WebCore::HistoryItem::setRedirectURLs): * history/PageCache.cpp: (WebCore::PageCache::take): * html/BaseButtonInputType.cpp: (WebCore::BaseButtonInputType::createInputRenderer): * html/BaseChooserOnlyDateAndTimeInputType.cpp: (WebCore::BaseChooserOnlyDateAndTimeInputType::createShadowSubtree): * html/ColorInputType.cpp: (WebCore::ColorInputType::createShadowSubtree): * html/FTPDirectoryDocument.cpp: (WebCore::FTPDirectoryDocumentParser::appendEntry): (WebCore::FTPDirectoryDocumentParser::createTDForFilename): (WebCore::FTPDirectoryDocumentParser::createBasicDocument): (WebCore::FTPDirectoryDocumentParser::append): * html/FileInputType.cpp: (WebCore::FileInputType::createInputRenderer): (WebCore::FileInputType::createFileList): * html/FormController.cpp: (WebCore::FormController::formStatesFromStateVector): * html/HTMLAppletElement.cpp: (WebCore::HTMLAppletElement::createElementRenderer): * html/HTMLAttachmentElement.cpp: (WebCore::HTMLAttachmentElement::createElementRenderer): * html/HTMLBRElement.cpp: (WebCore::HTMLBRElement::createElementRenderer): * html/HTMLBodyElement.cpp: (WebCore::HTMLBodyElement::collectStyleForPresentationAttribute): * html/HTMLButtonElement.cpp: (WebCore::HTMLButtonElement::createElementRenderer): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::createElementRenderer): (WebCore::HTMLCanvasElement::setImageBuffer): * html/HTMLCollection.cpp: (WebCore::HTMLCollection::updateNamedElementCache): * html/HTMLCollection.h: (WebCore::HTMLCollection::setNamedItemCache): * html/HTMLDetailsElement.cpp: (WebCore::HTMLDetailsElement::createElementRenderer): (WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot): * html/HTMLElement.cpp: (WebCore::HTMLElement::populateEventHandlerNameMap): (WebCore::HTMLElement::setInnerText): (WebCore::HTMLElement::createElementRenderer): * html/HTMLFieldSetElement.cpp: (WebCore::HTMLFieldSetElement::createElementRenderer): * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::dispatchBlurEvent): * html/HTMLFormControlsCollection.cpp: (WebCore::HTMLFormControlsCollection::updateNamedElementCache): * html/HTMLFrameElement.cpp: (WebCore::HTMLFrameElement::createElementRenderer): * html/HTMLFrameSetElement.cpp: (WebCore::HTMLFrameSetElement::createElementRenderer): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::createElementRenderer): * html/HTMLImageElement.cpp: (WebCore::HTMLImageElement::createElementRenderer): * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::updateType): (WebCore::HTMLInputElement::createElementRenderer): * html/HTMLKeygenElement.cpp: (WebCore::HTMLKeygenElement::HTMLKeygenElement): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::createElementRenderer): (WebCore::HTMLMediaElement::addEventListener): (WebCore::HTMLMediaElement::setWirelessPlaybackTarget): (WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader): * html/HTMLMeterElement.cpp: (WebCore::HTMLMeterElement::createElementRenderer): (WebCore::HTMLMeterElement::didAddUserAgentShadowRoot): * html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::createForJSConstructor): * html/HTMLPlugInElement.cpp: (WebCore::HTMLPlugInElement::createElementRenderer): * html/HTMLPlugInImageElement.cpp: (WebCore::HTMLPlugInImageElement::createElementRenderer): * html/HTMLProgressElement.cpp: (WebCore::HTMLProgressElement::createElementRenderer): (WebCore::HTMLProgressElement::didAddUserAgentShadowRoot): * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::createElementRenderer): (WebCore::HTMLSelectElement::dispatchFocusEvent): (WebCore::HTMLSelectElement::dispatchBlurEvent): * html/HTMLSummaryElement.cpp: (WebCore::HTMLSummaryElement::createElementRenderer): * html/HTMLTableElement.cpp: (WebCore::HTMLTableElement::insertRow): * html/HTMLTableRowElement.cpp: (WebCore::HTMLTableRowElement::insertCell): * html/HTMLTextAreaElement.cpp: (WebCore::HTMLTextAreaElement::createElementRenderer): * html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::dispatchFocusEvent): (WebCore::HTMLTextFormControlElement::dispatchBlurEvent): * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::createElementRenderer): * html/HTMLWBRElement.cpp: (WebCore::HTMLWBRElement::createElementRenderer): * html/ImageDocument.cpp: (WebCore::ImageDocument::createDocumentStructure): * html/ImageInputType.cpp: (WebCore::ImageInputType::createInputRenderer): * html/InputType.cpp: (WebCore::InputType::createInputRenderer): * html/MediaDocument.cpp: (WebCore::MediaDocumentParser::createDocumentStructure): * html/MediaElementSession.cpp: (WebCore::MediaElementSession::setPlaybackTarget): * html/PluginDocument.cpp: (WebCore::PluginDocumentParser::createDocumentStructure): * html/RangeInputType.cpp: (WebCore::RangeInputType::createShadowSubtree): (WebCore::RangeInputType::createInputRenderer): * html/RubyElement.cpp: (WebCore::RubyElement::createElementRenderer): * html/RubyTextElement.cpp: (WebCore::RubyTextElement::createElementRenderer): * html/SearchInputType.cpp: (WebCore::SearchInputType::createInputRenderer): (WebCore::SearchInputType::createShadowSubtree): * html/TextFieldInputType.cpp: (WebCore::TextFieldInputType::createInputRenderer): * html/ValidationMessage.cpp: (WebCore::ValidationMessage::buildBubbleTree): * html/canvas/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::createLinearGradient): (WebCore::CanvasRenderingContext2D::createRadialGradient): * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer): * html/parser/AtomicHTMLToken.h: (WebCore::AtomicHTMLToken::AtomicHTMLToken): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::executeQueuedTasks): (WebCore::HTMLConstructionSite::insertTextNode): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::append): * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::ElementRecord::ElementRecord): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLElementStack.h: (WebCore::HTMLElementStack::ElementRecord::releaseNext): (WebCore::HTMLElementStack::ElementRecord::setNext): * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): (WebCore::HTMLPreloadScanner::scan): * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLStackItem.h: (WebCore::HTMLStackItem::HTMLStackItem): (WebCore::HTMLStackItem::create): * html/parser/HTMLToken.h: (WebCore::HTMLToken::releaseDoctypeData): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::takeScriptToProcess): (WebCore::HTMLTreeBuilder::processFakeStartTag): (WebCore::HTMLTreeBuilder::insertPhoneNumberLink): * html/parser/TextDocumentParser.cpp: (WebCore::TextDocumentParser::append): (WebCore::TextDocumentParser::insertFakePreElement): * html/parser/XSSAuditorDelegate.cpp: (WebCore::XSSAuditorDelegate::generateViolationReport): * html/shadow/DetailsMarkerControl.cpp: (WebCore::DetailsMarkerControl::createElementRenderer): * html/shadow/MediaControlElements.cpp: (WebCore::MediaControlTimelineContainerElement::createElementRenderer): (WebCore::MediaControlVolumeSliderContainerElement::createElementRenderer): (WebCore::MediaControlClosedCaptionsTrackListElement::rebuildTrackListMenu): (WebCore::MediaControlTextTrackContainerElement::createElementRenderer): (WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage): * html/shadow/MediaControls.cpp: (WebCore::MediaControls::createTextTrackDisplay): * html/shadow/MediaControlsApple.cpp: (WebCore::MediaControlsApple::createControls): (WebCore::MediaControlsApple::showClosedCaptionTrackList): * html/shadow/MeterShadowElement.cpp: (WebCore::MeterInnerElement::createElementRenderer): * html/shadow/ProgressShadowElement.cpp: (WebCore::ProgressInnerElement::createElementRenderer): * html/shadow/SliderThumbElement.cpp: (WebCore::RenderSliderThumb::RenderSliderThumb): (WebCore::SliderThumbElement::createElementRenderer): (WebCore::SliderContainerElement::createElementRenderer): * html/shadow/TextControlInnerElements.cpp: (WebCore::TextControlInnerContainer::createElementRenderer): (WebCore::TextControlInnerTextElement::createElementRenderer): * html/shadow/mac/ImageControlsButtonElementMac.cpp: (WebCore::RenderImageControlsButton::RenderImageControlsButton): (WebCore::ImageControlsButtonElementMac::createElementRenderer): * html/shadow/mac/ImageControlsRootElementMac.cpp: (WebCore::RenderImageControls::RenderImageControls): (WebCore::ImageControlsRootElement::maybeCreate): (WebCore::ImageControlsRootElementMac::createElementRenderer): * html/track/VTTCue.cpp: (WebCore::VTTCueBox::createElementRenderer): * html/track/WebVTTElement.cpp: (WebCore::WebVTTElement::cloneElementWithoutAttributesAndChildren): * html/track/WebVTTParser.cpp: (WebCore::WebVTTTreeBuilder::constructTreeFromToken): * inspector/CommandLineAPIHost.cpp: (WebCore::CommandLineAPIHost::inspectImpl): (WebCore::CommandLineAPIHost::addInspectedObject): * inspector/DOMEditor.cpp: (WebCore::DOMEditor::InsertBeforeAction::InsertBeforeAction): (WebCore::DOMEditor::ReplaceChildNodeAction::ReplaceChildNodeAction): (WebCore::DOMEditor::insertBefore): (WebCore::DOMEditor::setOuterHTML): (WebCore::DOMEditor::replaceChild): * inspector/DOMPatchSupport.cpp: (WebCore::DOMPatchSupport::createDigest): (WebCore::DOMPatchSupport::removeChildAndMoveToNew): * inspector/InspectorApplicationCacheAgent.cpp: (WebCore::InspectorApplicationCacheAgent::getFramesWithManifests): * inspector/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::getMatchedStylesForNode): (WebCore::InspectorCSSAgent::addRule): (WebCore::InspectorCSSAgent::getSupportedCSSProperties): (WebCore::InspectorCSSAgent::getSupportedSystemFontFamilyNames): (WebCore::InspectorCSSAgent::getNamedFlowCollection): (WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList): (WebCore::InspectorCSSAgent::buildArrayForRegions): (WebCore::InspectorCSSAgent::buildObjectForNamedFlow): * inspector/InspectorConsoleInstrumentation.h: (WebCore::InspectorInstrumentation::addMessageToConsole): (WebCore::InspectorInstrumentation::consoleCount): (WebCore::InspectorInstrumentation::stopConsoleTiming): (WebCore::InspectorInstrumentation::consoleTimeStamp): * inspector/InspectorController.cpp: (WebCore::InspectorController::InspectorController): * inspector/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::pushNodePathToFrontend): (WebCore::InspectorDOMAgent::highlightRect): (WebCore::InspectorDOMAgent::highlightQuad): (WebCore::InspectorDOMAgent::innerHighlightQuad): (WebCore::InspectorDOMAgent::highlightSelector): (WebCore::InspectorDOMAgent::buildObjectForNode): (WebCore::InspectorDOMAgent::buildArrayForPseudoElements): (WebCore::InspectorDOMAgent::buildObjectForEventListener): (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties): (WebCore::InspectorDOMAgent::didCommitLoad): (WebCore::InspectorDOMAgent::didInsertDOMNode): (WebCore::InspectorDOMAgent::styleAttributeInvalidated): * inspector/InspectorDOMDebuggerAgent.cpp: (WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr): (WebCore::InspectorDOMDebuggerAgent::willInsertDOMNode): (WebCore::InspectorDOMDebuggerAgent::willRemoveDOMNode): (WebCore::InspectorDOMDebuggerAgent::willModifyDOMAttr): (WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded): (WebCore::InspectorDOMDebuggerAgent::willSendXMLHttpRequest): * inspector/InspectorDOMStorageAgent.cpp: (WebCore::InspectorDOMStorageAgent::getDOMStorageItems): * inspector/InspectorDatabaseAgent.cpp: (WebCore::InspectorDatabaseAgent::didOpenDatabase): (WebCore::InspectorDatabaseAgent::executeSQL): * inspector/InspectorDatabaseResource.cpp: (WebCore::InspectorDatabaseResource::create): (WebCore::InspectorDatabaseResource::bind): * inspector/InspectorDatabaseResource.h: (WebCore::InspectorDatabaseResource::setDatabase): * inspector/InspectorFrontendClientLocal.cpp: (WebCore::InspectorFrontendClientLocal::InspectorFrontendClientLocal): * inspector/InspectorHistory.cpp: (WebCore::InspectorHistory::perform): * inspector/InspectorIndexedDBAgent.cpp: (WebCore::InspectorIndexedDBAgent::requestDatabaseNames): (WebCore::InspectorIndexedDBAgent::requestDatabase): (WebCore::InspectorIndexedDBAgent::requestData): (WebCore::ClearObjectStoreListener::create): (WebCore::ClearObjectStoreListener::ClearObjectStoreListener): (WebCore::ClearObjectStore::create): (WebCore::ClearObjectStore::ClearObjectStore): (WebCore::InspectorIndexedDBAgent::clearObjectStore): * inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::addMessageToConsoleImpl): (WebCore::InspectorInstrumentation::didOpenDatabaseImpl): (WebCore::InspectorInstrumentation::sessionCreatedImpl): (WebCore::InspectorInstrumentation::sessionLoadedImpl): (WebCore::InspectorInstrumentation::sessionModifiedImpl): (WebCore::InspectorInstrumentation::segmentCreatedImpl): (WebCore::InspectorInstrumentation::segmentCompletedImpl): (WebCore::InspectorInstrumentation::segmentLoadedImpl): * inspector/InspectorInstrumentation.h: (WebCore::InspectorInstrumentation::didOpenDatabase): (WebCore::InspectorInstrumentation::sessionCreated): (WebCore::InspectorInstrumentation::sessionLoaded): (WebCore::InspectorInstrumentation::sessionModified): (WebCore::InspectorInstrumentation::segmentCreated): (WebCore::InspectorInstrumentation::segmentCompleted): (WebCore::InspectorInstrumentation::segmentLoaded): * inspector/InspectorLayerTreeAgent.cpp: (WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer): * inspector/InspectorNetworkAgent.cpp: (WebCore::buildObjectForResourceResponse): (WebCore::buildObjectForCachedResource): (WebCore::InspectorNetworkAgent::buildInitiatorObject): (WebCore::InspectorNetworkAgent::willSendWebSocketHandshakeRequest): (WebCore::InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse): (WebCore::InspectorNetworkAgent::didReceiveWebSocketFrame): (WebCore::InspectorNetworkAgent::didSendWebSocketFrame): * inspector/InspectorOverlay.cpp: (WebCore::InspectorOverlay::highlightNodeList): (WebCore::InspectorOverlay::highlightQuad): (WebCore::buildObjectForHighlight): (WebCore::buildObjectForFlowRegions): (WebCore::InspectorOverlay::drawPaintRects): (WebCore::buildArrayForRendererFragments): (WebCore::buildObjectForShapeOutside): (WebCore::buildObjectForElementData): (WebCore::InspectorOverlay::buildHighlightObjectForNode): (WebCore::InspectorOverlay::buildObjectForHighlightedNodes): (WebCore::InspectorOverlay::reset): (WebCore::InspectorOverlay::evaluateInOverlay): * inspector/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::buildObjectForFrameTree): * inspector/InspectorReplayAgent.cpp: (WebCore::buildInspectorObjectForSession): (WebCore::SerializeInputToJSONFunctor::operator()): (WebCore::SerializeInputToJSONFunctor::returnValue): (WebCore::buildInspectorObjectForSegment): (WebCore::InspectorReplayAgent::switchSession): (WebCore::InspectorReplayAgent::insertSessionSegment): (WebCore::InspectorReplayAgent::removeSessionSegment): (WebCore::InspectorReplayAgent::getSessionData): (WebCore::InspectorReplayAgent::getSegmentData): * inspector/InspectorStyleSheet.cpp: (WebCore::asCSSRuleList): (WebCore::InspectorStyle::create): (WebCore::InspectorStyle::buildObjectForStyle): (WebCore::InspectorStyle::buildArrayForComputedStyle): (WebCore::InspectorStyle::styleWithProperties): (WebCore::InspectorStyleSheet::create): (WebCore::InspectorStyleSheet::InspectorStyleSheet): (WebCore::InspectorStyleSheet::buildObjectForStyleSheet): (WebCore::buildObjectForSelectorHelper): (WebCore::InspectorStyleSheet::buildObjectForRule): (WebCore::InspectorStyleSheet::ensureSourceData): (WebCore::InspectorStyleSheet::buildArrayForRuleList): (WebCore::InspectorStyleSheet::collectFlatRules): (WebCore::InspectorStyleSheetForInlineStyle::create): (WebCore::InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle): * inspector/InspectorTimelineAgent.cpp: (WebCore::startProfiling): (WebCore::InspectorTimelineAgent::addRecordToTimeline): (WebCore::InspectorTimelineAgent::appendRecord): (WebCore::InspectorTimelineAgent::sendEvent): (WebCore::InspectorTimelineAgent::createRecordEntry): (WebCore::InspectorTimelineAgent::pushCurrentRecord): * inspector/InspectorTimelineAgent.h: * inspector/NetworkResourcesData.cpp: (WebCore::NetworkResourcesData::addResourceSharedBuffer): * inspector/NetworkResourcesData.h: (WebCore::NetworkResourcesData::ResourceData::setDecoder): (WebCore::NetworkResourcesData::ResourceData::setBuffer): * inspector/TimelineRecordFactory.cpp: (WebCore::buildInspectorObject): (WebCore::buildProfileInspectorObject): * inspector/WebInjectedScriptManager.cpp: (WebCore::WebInjectedScriptManager::WebInjectedScriptManager): * loader/ContentFilter.cpp: (WebCore::ContentFilter::createIfEnabled): (WebCore::ContentFilter::ContentFilter): * loader/CrossOriginPreflightResultCache.cpp: (WebCore::CrossOriginPreflightResultCache::appendEntry): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::subresources): (WebCore::DocumentLoader::installContentFilterUnblockHandler): * loader/DocumentLoader.h: (WebCore::DocumentLoader::setQuickLookHandle): * loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest): (WebCore::DocumentThreadableLoader::didReceiveResponse): * loader/HistoryController.cpp: (WebCore::HistoryController::updateBackForwardListClippedAtTarget): (WebCore::HistoryController::pushState): * loader/MediaResourceLoader.cpp: (WebCore::MediaResourceLoader::MediaResourceLoader): * loader/NavigationScheduler.cpp: (WebCore::NavigationScheduler::timerFired): (WebCore::NavigationScheduler::schedule): (WebCore::NavigationScheduler::cancel): * loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::willSendRequest): * loader/PolicyCallback.cpp: (WebCore::PolicyCallback::set): * loader/PolicyChecker.cpp: (WebCore::PolicyChecker::checkNavigationPolicy): (WebCore::PolicyChecker::checkNewWindowPolicy): (WebCore::PolicyChecker::checkContentPolicy): * loader/PolicyChecker.h: (WebCore::PolicyChecker::setContentFilterUnblockHandler): * loader/ResourceLoader.cpp: (WebCore::ResourceLoader::willSendRequest): * loader/ThreadableLoader.cpp: (WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions): (WebCore::ThreadableLoaderOptions::isolatedCopy): * loader/appcache/ApplicationCacheGroup.cpp: (WebCore::ApplicationCacheGroup::ApplicationCacheGroup): * loader/archive/cf/LegacyWebArchive.cpp: (WebCore::LegacyWebArchive::create): * loader/cache/CachedCSSStyleSheet.cpp: (WebCore::CachedCSSStyleSheet::saveParsedStyleSheet): * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::syncThreadMainLoop): * mathml/MathMLInlineContainerElement.cpp: (WebCore::MathMLInlineContainerElement::createElementRenderer): * mathml/MathMLMathElement.cpp: (WebCore::MathMLMathElement::createElementRenderer): * mathml/MathMLMencloseElement.cpp: (WebCore::MathMLMencloseElement::createElementRenderer): * mathml/MathMLSelectElement.cpp: (WebCore::MathMLSelectElement::createElementRenderer): * mathml/MathMLTextElement.cpp: (WebCore::MathMLTextElement::createElementRenderer): * page/CaptionUserPreferences.cpp: (WebCore::CaptionUserPreferences::updateCaptionStyleSheetOveride): * page/DOMTimer.cpp: (WebCore::DOMTimer::DOMTimer): (WebCore::DOMTimer::install): * page/DOMWindow.cpp: (WebCore::PostMessageTimer::PostMessageTimer): (WebCore::PostMessageTimer::event): (WebCore::DOMWindow::postMessage): (WebCore::DOMWindow::setTimeout): (WebCore::DOMWindow::setInterval): (WebCore::DOMWindow::addEventListener): (WebCore::DOMWindow::showModalDialog): * page/DebugPageOverlays.cpp: (WebCore::MouseWheelRegionOverlay::updateRegion): (WebCore::NonFastScrollableRegionOverlay::updateRegion): (WebCore::DebugPageOverlays::ensureRegionOverlayForFrame): * page/DragController.cpp: (WebCore::documentFragmentFromDragData): (WebCore::DragController::concludeEditDrag): * page/Frame.cpp: (WebCore::Frame::setView): * page/FrameView.cpp: (WebCore::FrameView::sendResizeEventIfNeeded): (WebCore::FrameView::updateOverflowStatus): * page/Page.cpp: (WebCore::Page::Page): (WebCore::Page::setSessionStorage): (WebCore::Page::setStorageNamespaceProvider): (WebCore::Page::setVisitedLinkStore): * page/PageConsoleClient.cpp: (WebCore::PageConsoleClient::addMessage): (WebCore::PageConsoleClient::messageWithTypeAndLevel): (WebCore::PageConsoleClient::count): (WebCore::PageConsoleClient::profileEnd): (WebCore::PageConsoleClient::timeEnd): (WebCore::PageConsoleClient::timeStamp): * page/PageOverlayController.cpp: (WebCore::PageOverlayController::installPageOverlay): * page/TextIndicator.cpp: (WebCore::takeSnapshot): * page/UserContentController.cpp: (WebCore::UserContentController::addUserScript): (WebCore::UserContentController::addUserStyleSheet): * page/UserScript.h: (WebCore::UserScript::UserScript): * page/UserStyleSheet.h: (WebCore::UserStyleSheet::UserStyleSheet): * page/WheelEventTestTrigger.cpp: (WebCore::WheelEventTestTrigger::setTestCallbackAndStartNotificationTimer): (WebCore::WheelEventTestTrigger::triggerTestTimerFired): * page/animation/AnimationController.cpp: (WebCore::AnimationControllerPrivate::fireEventsAndUpdateStyle): (WebCore::AnimationControllerPrivate::addElementChangeToDispatch): * page/animation/CSSPropertyAnimation.cpp: (WebCore::blendFilter): (WebCore::crossfadeBlend): (WebCore::PropertyWrapperShadow::blendSimpleOrMatchedShadowLists): (WebCore::PropertyWrapperShadow::blendMismatchedShadowLists): (WebCore::ShorthandPropertyWrapper::ShorthandPropertyWrapper): (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): * page/cocoa/ResourceUsageOverlayCocoa.mm: (WebCore::RingBuffer::append): (WebCore::MemoryCategoryInfo::MemoryCategoryInfo): * page/mac/TextIndicatorWindow.mm: (WebCore::TextIndicatorWindow::clearTextIndicator): * page/scrolling/AxisScrollSnapOffsets.cpp: (WebCore::updateSnapOffsetsForScrollableArea): * page/scrolling/ScrollingStateTree.cpp: (WebCore::ScrollingStateTree::setRemovedNodes): * page/scrolling/ScrollingThread.cpp: (WebCore::ScrollingThread::dispatchBarrier): (WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread): * page/scrolling/ThreadedScrollingTree.cpp: (WebCore::ThreadedScrollingTree::commitNewTreeState): * page/scrolling/ios/ScrollingTreeIOS.cpp: (WebCore::ScrollingTreeIOS::commitNewTreeState): * page/scrolling/mac/ScrollingCoordinatorMac.mm: (WebCore::ScrollingCoordinatorMac::commitTreeState): * platform/CalculationValue.cpp: (WebCore::CalculationValue::create): * platform/CalculationValue.h: (WebCore::CalculationValue::CalculationValue): (WebCore::CalcExpressionBinaryOperation::CalcExpressionBinaryOperation): * platform/DragImage.cpp: (WebCore::createDragImageFromSnapshot): * platform/KeyedCoding.h: (WebCore::KeyedDecoder::decodeObjects): * platform/Length.cpp: (WebCore::Length::Length): (WebCore::Length::blendMixedTypes): * platform/LengthSize.h: (WebCore::LengthSize::LengthSize): (WebCore::LengthSize::setWidth): (WebCore::LengthSize::setHeight): * platform/MainThreadSharedTimer.cpp: (WebCore::MainThreadSharedTimer::setFiredFunction): * platform/ScrollableArea.cpp: (WebCore::ScrollableArea::setHorizontalSnapOffsets): (WebCore::ScrollableArea::setVerticalSnapOffsets): * platform/SharedBuffer.cpp: (WebCore::SharedBuffer::SharedBuffer): (WebCore::SharedBuffer::createWithContentsOfFile): (WebCore::SharedBuffer::maybeTransferMappedFileData): * platform/Supplementable.h: (WebCore::Supplement::provideTo): (WebCore::Supplementable::provideSupplement): * platform/Timer.h: (WebCore::Timer::Timer): (WebCore::DeferrableOneShotTimer::DeferrableOneShotTimer): * platform/URL.h: (WebCore::URLCapture::releaseURL): * platform/audio/AudioBus.cpp: (WebCore::AudioBus::AudioBus): * platform/audio/HRTFDatabase.cpp: (WebCore::HRTFDatabase::HRTFDatabase): * platform/audio/HRTFElevation.cpp: (WebCore::HRTFElevation::createForSubject): (WebCore::HRTFElevation::createByInterpolatingSlices): * platform/audio/HRTFElevation.h: (WebCore::HRTFElevation::HRTFElevation): * platform/audio/HRTFKernel.cpp: (WebCore::HRTFKernel::createInterpolatedKernel): * platform/audio/HRTFKernel.h: (WebCore::HRTFKernel::create): (WebCore::HRTFKernel::HRTFKernel): * platform/audio/ReverbConvolver.cpp: (WebCore::ReverbConvolver::ReverbConvolver): * platform/audio/ios/MediaSessionManagerIOS.mm: (-[WebMediaSessionHelper dealloc]): * platform/cf/KeyedDecoderCF.cpp: (WebCore::KeyedDecoderCF::KeyedDecoderCF): * platform/cocoa/ContentFilterUnblockHandlerCocoa.mm: (WebCore::ContentFilterUnblockHandler::ContentFilterUnblockHandler): * platform/glib/KeyedDecoderGlib.cpp: (WebCore::KeyedDecoderGlib::dictionaryFromGVariant): * platform/graphics/FloatPolygon.cpp: (WebCore::FloatPolygon::FloatPolygon): * platform/graphics/Font.cpp: (WebCore::Font::Font): (WebCore::createAndFillGlyphPage): (WebCore::Font::systemFallbackFontForCharacter): * platform/graphics/Font.h: (WebCore::Font::create): * platform/graphics/FontCache.cpp: (WebCore::FontCache::purgeInactiveFontData): * platform/graphics/FontCascade.cpp: (WebCore::FontCascadeCacheEntry::FontCascadeCacheEntry): (WebCore::retrieveOrAddCachedFonts): (WebCore::FontCascade::update): * platform/graphics/FontCascadeFonts.cpp: (WebCore::realizeNextFallback): * platform/graphics/FontCascadeFonts.h: (WebCore::FontCascadeFonts::create): * platform/graphics/FontDescription.h: (WebCore::FontDescription::setFeatureSettings): * platform/graphics/FontFeatureSettings.cpp: (WebCore::FontFeature::FontFeature): (WebCore::FontFeatureSettings::insert): * platform/graphics/FontRanges.h: (WebCore::FontRanges::Range::Range): * platform/graphics/GLContext.cpp: (WebCore::GLContext::createContextForWindow): * platform/graphics/GraphicsContext.cpp: (WebCore::GraphicsContext::setStrokePattern): (WebCore::GraphicsContext::setFillPattern): (WebCore::GraphicsContext::setStrokeGradient): (WebCore::GraphicsContext::setFillGradient): (WebCore::GraphicsContext::drawConsumingImageBuffer): * platform/graphics/GraphicsLayer.cpp: (WebCore::KeyframeValueList::insert): * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::setWirelessPlaybackTarget): (WebCore::MediaPlayer::createResourceLoader): * platform/graphics/PlatformMediaResourceLoader.h: (WebCore::PlatformMediaResourceLoader::PlatformMediaResourceLoader): * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: (WebCore::CDMPrivateMediaSourceAVFObjC::createSession): * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget): * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setWirelessPlaybackTarget): * platform/graphics/ca/TileController.cpp: (WebCore::TileController::setContentsScale): * platform/graphics/cg/IOSurfacePool.cpp: (WebCore::IOSurfacePool::takeSurface): (WebCore::IOSurfacePool::addSurface): (WebCore::IOSurfacePool::insertSurfaceIntoPool): (WebCore::IOSurfacePool::collectInUseSurfaces): * platform/graphics/cg/ImageBufferCG.cpp: (WebCore::ImageBuffer::copyImage): (WebCore::ImageBuffer::sinkIntoImage): (WebCore::ImageBuffer::sinkIntoNativeImage): (WebCore::ImageBuffer::drawConsuming): * platform/graphics/cocoa/IOSurface.mm: (IOSurface::moveToPool): (IOSurface::createFromImageBuffer): (IOSurface::convertToFormat): * platform/graphics/efl/CairoUtilitiesEfl.cpp: (WebCore::evasObjectFromCairoImageSurface): * platform/graphics/efl/GraphicsContext3DEfl.cpp: (WebCore::GraphicsContext3D::setContextLostCallback): * platform/graphics/efl/GraphicsContext3DPrivate.cpp: (WebCore::GraphicsContext3DPrivate::setContextLostCallback): * platform/graphics/egl/GLContextEGL.cpp: (WebCore::GLContextEGL::createWindowContext): (WebCore::GLContextEGL::createPixmapContext): (WebCore::GLContextEGL::createContext): (WebCore::GLContextEGL::GLContextEGL): * platform/graphics/filters/FETile.cpp: (WebCore::FETile::platformApplySoftware): * platform/graphics/filters/Filter.h: (WebCore::Filter::setSourceImage): * platform/graphics/filters/FilterOperation.h: * platform/graphics/glx/GLContextGLX.cpp: (WebCore::GLContextGLX::createWindowContext): (WebCore::GLContextGLX::createPbufferContext): (WebCore::GLContextGLX::createPixmapContext): (WebCore::GLContextGLX::createContext): (WebCore::GLContextGLX::GLContextGLX): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::Texture): (WebCore::Texture::create): * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor): * platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h: (WebCore::MediaPlayerRequestInstallMissingPluginsCallback::create): (WebCore::MediaPlayerRequestInstallMissingPluginsCallback::MediaPlayerRequestInstallMissingPluginsCallback): * platform/graphics/gstreamer/VideoSinkGStreamer.cpp: (VideoRenderRequestScheduler::render): * platform/graphics/mac/MediaPlayerPrivateQTKit.mm: (WebCore::MediaPlayerPrivateQTKit::setWirelessPlaybackTarget): * platform/graphics/opengl/Extensions3DOpenGLES.cpp: (WebCore::Extensions3DOpenGLES::setEXTContextLostCallback): * platform/graphics/surfaces/GLTransportSurface.cpp: (WebCore::GLTransportSurface::createTransportSurface): (WebCore::GLTransportSurfaceClient::createTransportSurfaceClient): * platform/graphics/surfaces/egl/EGLSurface.cpp: (WebCore::EGLTransportSurface::createTransportSurface): (WebCore::EGLTransportSurface::createTransportSurfaceClient): * platform/graphics/texmap/BitmapTexturePool.cpp: (WebCore::BitmapTexturePool::BitmapTexturePool): * platform/graphics/texmap/BitmapTexturePool.h: (WebCore::BitmapTexturePool::Entry::Entry): * platform/graphics/texmap/TextureMapperLayer.cpp: (WebCore::TextureMapperLayer::removeAllChildren): * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: (WebCore::TextureMapperPlatformLayerBuffer::TextureMapperPlatformLayerBuffer): * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: (WebCore::TextureMapperPlatformLayerBuffer::setUnmanagedBufferDataHolder): * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: (WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): (WebCore::TextureMapperPlatformLayerProxy::getAvailableBuffer): (WebCore::TextureMapperPlatformLayerProxy::releaseUnusedBuffersTimerFired): (WebCore::TextureMapperPlatformLayerProxy::swapBuffer): (WebCore::TextureMapperPlatformLayerProxy::scheduleUpdateOnCompositorThread): (WebCore::TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired): * platform/graphics/texmap/coordinated/CompositingCoordinator.cpp: (WebCore::CompositingCoordinator::releaseInactiveAtlasesTimerFired): * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: (WebCore::CoordinatedGraphicsLayer::adjustContentsScale): * platform/graphics/wayland/PlatformDisplayWayland.cpp: (WebCore::PlatformDisplayWayland::createSharingGLContext): * platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/win/FontCustomPlatformData.cpp: (WebCore::FontCustomPlatformData::fontPlatformData): * platform/graphics/win/FontCustomPlatformDataCairo.cpp: (WebCore::FontCustomPlatformData::fontPlatformData): * platform/graphics/win/FontPlatformDataCGWin.cpp: (WebCore::FontPlatformData::FontPlatformData): * platform/graphics/win/FontPlatformDataCairoWin.cpp: (WebCore::FontPlatformData::FontPlatformData): * platform/graphics/win/FontPlatformDataWin.cpp: (WebCore::FontPlatformData::FontPlatformData): * platform/graphics/win/SharedGDIObject.h: (WebCore::SharedGDIObject::create): (WebCore::SharedGDIObject::SharedGDIObject): * platform/graphics/win/SimpleFontDataWin.cpp: (WebCore::Font::platformCreateScaledFont): * platform/ios/WebVideoFullscreenInterfaceAVKit.mm: (WebVideoFullscreenInterfaceAVKit::preparedToReturnToInline): * platform/mac/HIDGamepadProvider.cpp: (WebCore::HIDGamepadProvider::deviceAdded): * platform/mac/ThemeMac.mm: (WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext): * platform/mediastream/MediaStreamPrivate.cpp: (WebCore::MediaStreamPrivate::create): * platform/mediastream/MediaStreamTrackPrivate.cpp: (WebCore::MediaStreamTrackPrivate::create): * platform/mediastream/mac/AVVideoCaptureSource.mm: (WebCore::AVVideoCaptureSource::currentFrameImage): * platform/network/BlobData.h: (WebCore::RawData::create): (WebCore::RawData::RawData): * platform/network/BlobPart.h: (WebCore::BlobPart::BlobPart): (WebCore::BlobPart::moveData): * platform/network/DataURLDecoder.cpp: (WebCore::DataURLDecoder::DecodingResultDispatcher::dispatch): (WebCore::DataURLDecoder::DecodingResultDispatcher::DecodingResultDispatcher): (WebCore::DataURLDecoder::DecodingResultDispatcher::timerFired): (WebCore::DataURLDecoder::createDecodeTask): (WebCore::DataURLDecoder::decode): * platform/network/HTTPHeaderMap.cpp: (WebCore::HTTPHeaderMap::adopt): * platform/network/NetworkStateNotifier.cpp: (WebCore::NetworkStateNotifier::addNetworkStateChangeListener): * platform/network/ResourceHandle.h: (WebCore::ResourceHandle::setQuickLookHandle): * platform/network/ResourceRequestBase.cpp: (WebCore::ResourceRequestBase::adopt): (WebCore::ResourceRequestBase::copyData): (WebCore::ResourceRequestBase::setHTTPHeaderFields): * platform/network/ResourceResponseBase.cpp: (WebCore::ResourceResponseBase::adopt): (WebCore::ResourceResponseBase::copyData): * platform/network/cf/FormDataStreamCFNet.cpp: (WebCore::advanceCurrentStream): * platform/network/cf/ResourceHandleCFNet.cpp: (WebCore::ResourceHandle::releaseConnectionForDownload): * platform/network/curl/CurlCacheManager.cpp: (WebCore::CurlCacheManager::loadIndex): (WebCore::CurlCacheManager::didReceiveResponse): * platform/network/curl/SocketStreamHandle.h: (WebCore::SocketStreamHandle::SocketData::SocketData): * platform/network/curl/SocketStreamHandleCurl.cpp: (WebCore::SocketStreamHandle::platformSend): (WebCore::SocketStreamHandle::readData): (WebCore::SocketStreamHandle::sendData): (WebCore::SocketStreamHandle::didReceiveData): (WebCore::SocketStreamHandle::createCopy): * platform/network/soup/NetworkStorageSessionSoup.cpp: (WebCore::NetworkStorageSession::NetworkStorageSession): (WebCore::NetworkStorageSession::setSoupNetworkSession): * platform/text/LocaleICU.cpp: (WebCore::LocaleICU::createLabelVector): (WebCore::createFallbackMonthLabels): (WebCore::createFallbackAMPMLabels): * platform/win/WCDataObject.cpp: (WebCore::WCDataObject::SetData): * plugins/DOMMimeType.cpp: (WebCore::DOMMimeType::DOMMimeType): * plugins/DOMMimeType.h: (WebCore::DOMMimeType::create): * plugins/DOMPlugin.cpp: (WebCore::DOMPlugin::DOMPlugin): * plugins/DOMPlugin.h: (WebCore::DOMPlugin::create): * plugins/PluginData.cpp: (WebCore::PluginData::publiclyVisiblePlugins): * rendering/ClipPathOperation.h: * rendering/FloatingObjects.cpp: (WebCore::FloatingObjects::moveAllToFloatInfoMap): (WebCore::FloatingObjects::add): * rendering/LayoutState.cpp: (WebCore::LayoutState::LayoutState): * rendering/RenderAttachment.cpp: (WebCore::RenderAttachment::RenderAttachment): * rendering/RenderBlock.cpp: (WebCore::OverflowEventDispatcher::~OverflowEventDispatcher): (WebCore::RenderBlock::RenderBlock): * rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::RenderBlockFlow): (WebCore::RenderBlockFlow::layoutLineGridBox): (WebCore::RenderBlockFlow::insertFloatingObject): * rendering/RenderBlockFlow.h: (WebCore::RenderBlockFlow::setLineGridBox): * rendering/RenderBlockLineLayout.cpp: (WebCore::RenderBlockFlow::createAndAppendRootInlineBox): (WebCore::constructBidiRunsForSegment): (WebCore::RenderBlockFlow::linkToEndLineIfNeeded): * rendering/RenderBox.cpp: (WebCore::RenderBox::RenderBox): * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::RenderBoxModelObject): (WebCore::RenderBoxModelObject::paintFillLayerExtended): * rendering/RenderButton.cpp: (WebCore::RenderButton::RenderButton): * rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::RenderDeprecatedFlexibleBox): * rendering/RenderDetailsMarker.cpp: (WebCore::RenderDetailsMarker::RenderDetailsMarker): * rendering/RenderElement.cpp: (WebCore::RenderElement::RenderElement): (WebCore::RenderElement::createFor): (WebCore::RenderElement::setStyle): (WebCore::RenderElement::propagateStyleToAnonymousChildren): * rendering/RenderElement.h: (WebCore::RenderElement::setStyleInternal): (WebCore::RenderElement::setAnimatableStyle): * rendering/RenderEmbeddedObject.cpp: (WebCore::RenderEmbeddedObject::RenderEmbeddedObject): (WebCore::RenderEmbeddedObject::createForApplet): * rendering/RenderFieldset.cpp: (WebCore::RenderFieldset::RenderFieldset): * rendering/RenderFileUploadControl.cpp: (WebCore::RenderFileUploadControl::RenderFileUploadControl): * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::RenderFlexibleBox): * rendering/RenderFlowThread.cpp: (WebCore::RenderFlowThread::RenderFlowThread): * rendering/RenderFrame.cpp: (WebCore::RenderFrame::RenderFrame): * rendering/RenderFrameBase.cpp: (WebCore::RenderFrameBase::RenderFrameBase): * rendering/RenderFrameSet.cpp: (WebCore::RenderFrameSet::RenderFrameSet): * rendering/RenderFullScreen.cpp: (WebCore::RenderFullScreen::RenderFullScreen): (WebCore::RenderFullScreen::createPlaceholder): * rendering/RenderGrid.cpp: (WebCore::RenderGrid::RenderGrid): (WebCore::RenderGrid::computeFlexFactorUnitSize): * rendering/RenderHTMLCanvas.cpp: (WebCore::RenderHTMLCanvas::RenderHTMLCanvas): * rendering/RenderIFrame.cpp: (WebCore::RenderIFrame::RenderIFrame): * rendering/RenderImage.cpp: (WebCore::RenderImage::RenderImage): * rendering/RenderInline.cpp: (WebCore::RenderInline::RenderInline): (WebCore::updateStyleOfAnonymousBlockContinuations): (WebCore::RenderInline::addChildIgnoringContinuation): (WebCore::RenderInline::splitInlines): (WebCore::RenderInline::createAndAppendInlineFlowBox): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::registerAllViewportConstrainedLayers): * rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::RenderLayerModelObject): * rendering/RenderLineBreak.cpp: (WebCore::RenderLineBreak::RenderLineBreak): * rendering/RenderListBox.cpp: (WebCore::RenderListBox::RenderListBox): * rendering/RenderListItem.cpp: (WebCore::RenderListItem::RenderListItem): (WebCore::RenderListItem::styleDidChange): * rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::RenderListMarker): * rendering/RenderMedia.cpp: (WebCore::RenderMedia::RenderMedia): * rendering/RenderMediaControlElements.cpp: (WebCore::RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer): (WebCore::RenderMediaControlTimelineContainer::RenderMediaControlTimelineContainer): (WebCore::RenderTextTrackContainerElement::RenderTextTrackContainerElement): * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::RenderMenuList): * rendering/RenderMeter.cpp: (WebCore::RenderMeter::RenderMeter): * rendering/RenderMultiColumnFlowThread.cpp: (WebCore::RenderMultiColumnFlowThread::RenderMultiColumnFlowThread): * rendering/RenderMultiColumnSet.cpp: (WebCore::RenderMultiColumnSet::RenderMultiColumnSet): * rendering/RenderMultiColumnSpannerPlaceholder.cpp: (WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder): * rendering/RenderNamedFlowFragment.cpp: (WebCore::RenderNamedFlowFragment::RenderNamedFlowFragment): * rendering/RenderNamedFlowThread.cpp: (WebCore::RenderNamedFlowThread::RenderNamedFlowThread): (WebCore::RenderNamedFlowThread::updateWritingMode): * rendering/RenderProgress.cpp: (WebCore::RenderProgress::RenderProgress): * rendering/RenderPtr.h: * rendering/RenderQuote.cpp: (WebCore::RenderQuote::RenderQuote): * rendering/RenderRegion.cpp: (WebCore::RenderRegion::RenderRegion): * rendering/RenderRegionSet.cpp: (WebCore::RenderRegionSet::RenderRegionSet): * rendering/RenderReplaced.cpp: (WebCore::RenderReplaced::RenderReplaced): * rendering/RenderReplica.cpp: (WebCore::RenderReplica::RenderReplica): * rendering/RenderRuby.cpp: (WebCore::RenderRubyAsInline::RenderRubyAsInline): (WebCore::RenderRubyAsBlock::RenderRubyAsBlock): * rendering/RenderRubyBase.cpp: (WebCore::RenderRubyBase::RenderRubyBase): * rendering/RenderRubyRun.cpp: (WebCore::RenderRubyRun::RenderRubyRun): (WebCore::RenderRubyRun::createRubyBase): * rendering/RenderRubyText.cpp: (WebCore::RenderRubyText::RenderRubyText): * rendering/RenderScrollbarPart.cpp: (WebCore::RenderScrollbarPart::RenderScrollbarPart): * rendering/RenderSearchField.cpp: (WebCore::RenderSearchField::RenderSearchField): (WebCore::RenderSearchField::updateCancelButtonVisibility): * rendering/RenderSlider.cpp: (WebCore::RenderSlider::RenderSlider): * rendering/RenderSnapshottedPlugIn.cpp: (WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn): * rendering/RenderTable.cpp: (WebCore::RenderTable::RenderTable): * rendering/RenderTableCaption.cpp: (WebCore::RenderTableCaption::RenderTableCaption): * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::RenderTableCell): * rendering/RenderTableCol.cpp: (WebCore::RenderTableCol::RenderTableCol): * rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::RenderTableRow): * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::RenderTableSection): * rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::RenderTextControl): * rendering/RenderTextControl.h: * rendering/RenderTextControlMultiLine.cpp: (WebCore::RenderTextControlMultiLine::RenderTextControlMultiLine): * rendering/RenderTextControlSingleLine.cpp: (WebCore::RenderTextControlSingleLine::RenderTextControlSingleLine): * rendering/RenderTextControlSingleLine.h: * rendering/RenderThemeEfl.cpp: (WebCore::RenderThemeEfl::getThemePartFromCache): (WebCore::RenderThemeEfl::loadTheme): * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintProgressBar): * rendering/RenderVTTCue.cpp: (WebCore::RenderVTTCue::RenderVTTCue): * rendering/RenderVideo.cpp: (WebCore::RenderVideo::RenderVideo): * rendering/RenderView.cpp: (WebCore::RenderView::RenderView): (WebCore::RenderView::updateSelectionForSubtrees): (WebCore::RenderView::applySubtreeSelection): * rendering/RenderView.h: * rendering/RenderWidget.cpp: (WebCore::RenderWidget::RenderWidget): * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::placeEllipsis): * rendering/mathml/RenderMathMLBlock.cpp: (WebCore::RenderMathMLBlock::RenderMathMLBlock): * rendering/mathml/RenderMathMLBlock.h: * rendering/mathml/RenderMathMLFenced.cpp: (WebCore::RenderMathMLFenced::RenderMathMLFenced): * rendering/mathml/RenderMathMLFraction.cpp: (WebCore::RenderMathMLFraction::RenderMathMLFraction): * rendering/mathml/RenderMathMLMath.cpp: (WebCore::RenderMathMLMath::RenderMathMLMath): * rendering/mathml/RenderMathMLMenclose.cpp: (WebCore::RenderMathMLMenclose::RenderMathMLMenclose): * rendering/mathml/RenderMathMLOperator.cpp: (WebCore::RenderMathMLOperator::RenderMathMLOperator): (WebCore::RenderMathMLOperator::updateStyle): * rendering/mathml/RenderMathMLRadicalOperator.cpp: (WebCore::RenderMathMLRadicalOperator::RenderMathMLRadicalOperator): * rendering/mathml/RenderMathMLRoot.cpp: (WebCore::RenderMathMLRoot::RenderMathMLRoot): (WebCore::RenderMathMLRoot::updateStyle): * rendering/mathml/RenderMathMLRoot.h: * rendering/mathml/RenderMathMLRow.cpp: (WebCore::RenderMathMLRow::RenderMathMLRow): * rendering/mathml/RenderMathMLScripts.cpp: (WebCore::RenderMathMLScripts::RenderMathMLScripts): * rendering/mathml/RenderMathMLScripts.h: * rendering/mathml/RenderMathMLSpace.cpp: (WebCore::RenderMathMLSpace::RenderMathMLSpace): * rendering/mathml/RenderMathMLSquareRoot.cpp: (WebCore::RenderMathMLSquareRoot::RenderMathMLSquareRoot): * rendering/mathml/RenderMathMLToken.cpp: (WebCore::RenderMathMLToken::RenderMathMLToken): (WebCore::RenderMathMLToken::updateStyle): * rendering/mathml/RenderMathMLUnderOver.cpp: (WebCore::RenderMathMLUnderOver::RenderMathMLUnderOver): * rendering/shapes/PolygonShape.h: (WebCore::PolygonShape::PolygonShape): * rendering/shapes/RasterShape.h: * rendering/shapes/Shape.cpp: (WebCore::createPolygonShape): (WebCore::Shape::createShape): (WebCore::Shape::createRasterShape): (WebCore::Shape::createBoxShape): * rendering/style/BasicShapes.cpp: (WebCore::BasicShapeCenterCoordinate::updateComputedLength): (WebCore::BasicShapeCircle::blend): (WebCore::BasicShapeEllipse::blend): (WebCore::BasicShapePolygon::blend): (WebCore::BasicShapePath::BasicShapePath): (WebCore::BasicShapePath::blend): (WebCore::BasicShapeInset::blend): * rendering/style/BasicShapes.h: * rendering/style/ContentData.cpp: (WebCore::ContentData::clone): (WebCore::ImageContentData::createContentRenderer): (WebCore::TextContentData::createContentRenderer): (WebCore::QuoteContentData::createContentRenderer): * rendering/style/ContentData.h: (WebCore::ContentData::setNext): * rendering/style/DataRef.h: (WebCore::DataRef::DataRef): * rendering/style/FillLayer.cpp: (WebCore::FillLayer::~FillLayer): * rendering/style/FillLayer.h: (WebCore::FillLayer::setXPosition): (WebCore::FillLayer::setYPosition): (WebCore::FillLayer::setNext): * rendering/style/NinePieceImage.cpp: (WebCore::NinePieceImage::NinePieceImage): * rendering/style/NinePieceImage.h: (WebCore::NinePieceImage::setImageSlices): (WebCore::NinePieceImage::setBorderSlices): (WebCore::NinePieceImage::setOutset): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::setWillChange): (WebCore::RenderStyle::appendContent): (WebCore::RenderStyle::setContent): (WebCore::RenderStyle::setTextShadow): (WebCore::RenderStyle::setBoxShadow): (WebCore::RenderStyle::setWordSpacing): (WebCore::RenderStyle::setScrollSnapPointsX): (WebCore::RenderStyle::setScrollSnapPointsY): (WebCore::RenderStyle::setScrollSnapDestination): (WebCore::RenderStyle::setScrollSnapCoordinates): * rendering/style/RenderStyle.h: * rendering/style/SVGRenderStyle.h: (WebCore::SVGRenderStyle::setShadow): * rendering/style/ShadowData.h: (WebCore::ShadowData::setNext): * rendering/style/StyleGeneratedImage.cpp: (WebCore::StyleGeneratedImage::StyleGeneratedImage): * rendering/style/StyleGeneratedImage.h: * rendering/style/StyleReflection.h: (WebCore::StyleReflection::setOffset): * rendering/svg/RenderSVGBlock.cpp: (WebCore::RenderSVGBlock::RenderSVGBlock): * rendering/svg/RenderSVGContainer.cpp: (WebCore::RenderSVGContainer::RenderSVGContainer): * rendering/svg/RenderSVGEllipse.cpp: (WebCore::RenderSVGEllipse::RenderSVGEllipse): * rendering/svg/RenderSVGForeignObject.cpp: (WebCore::RenderSVGForeignObject::RenderSVGForeignObject): * rendering/svg/RenderSVGGradientStop.cpp: (WebCore::RenderSVGGradientStop::RenderSVGGradientStop): * rendering/svg/RenderSVGHiddenContainer.cpp: (WebCore::RenderSVGHiddenContainer::RenderSVGHiddenContainer): * rendering/svg/RenderSVGImage.cpp: (WebCore::RenderSVGImage::RenderSVGImage): * rendering/svg/RenderSVGInline.cpp: (WebCore::RenderSVGInline::RenderSVGInline): (WebCore::RenderSVGInline::createInlineFlowBox): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::createTextBox): * rendering/svg/RenderSVGModelObject.cpp: (WebCore::RenderSVGModelObject::RenderSVGModelObject): * rendering/svg/RenderSVGPath.cpp: (WebCore::RenderSVGPath::RenderSVGPath): * rendering/svg/RenderSVGRect.cpp: (WebCore::RenderSVGRect::RenderSVGRect): * rendering/svg/RenderSVGResourceClipper.cpp: (WebCore::RenderSVGResourceClipper::RenderSVGResourceClipper): * rendering/svg/RenderSVGResourceContainer.cpp: (WebCore::RenderSVGResourceContainer::RenderSVGResourceContainer): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::RenderSVGResourceFilter): (WebCore::RenderSVGResourceFilter::buildPrimitives): (WebCore::RenderSVGResourceFilter::applyResource): (WebCore::RenderSVGResourceFilter::postApplyResource): * rendering/svg/RenderSVGResourceFilterPrimitive.cpp: (WebCore::RenderSVGResourceFilterPrimitive::RenderSVGResourceFilterPrimitive): * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::RenderSVGResourceGradient): (WebCore::createMaskAndSwapContextForTextGradient): * rendering/svg/RenderSVGResourceLinearGradient.cpp: (WebCore::RenderSVGResourceLinearGradient::RenderSVGResourceLinearGradient): * rendering/svg/RenderSVGResourceMarker.cpp: (WebCore::RenderSVGResourceMarker::RenderSVGResourceMarker): * rendering/svg/RenderSVGResourceMasker.cpp: (WebCore::RenderSVGResourceMasker::RenderSVGResourceMasker): * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::RenderSVGResourcePattern): (WebCore::RenderSVGResourcePattern::buildPattern): * rendering/svg/RenderSVGResourceRadialGradient.cpp: (WebCore::RenderSVGResourceRadialGradient::RenderSVGResourceRadialGradient): * rendering/svg/RenderSVGRoot.cpp: (WebCore::RenderSVGRoot::RenderSVGRoot): * rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::RenderSVGShape): * rendering/svg/RenderSVGTSpan.h: * rendering/svg/RenderSVGText.cpp: (WebCore::RenderSVGText::RenderSVGText): (WebCore::RenderSVGText::createRootInlineBox): * rendering/svg/RenderSVGTextPath.cpp: (WebCore::RenderSVGTextPath::RenderSVGTextPath): * rendering/svg/RenderSVGTransformableContainer.cpp: (WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer): * rendering/svg/RenderSVGViewportContainer.cpp: (WebCore::RenderSVGViewportContainer::RenderSVGViewportContainer): * rendering/svg/SVGResourcesCache.cpp: (WebCore::SVGResourcesCache::addResourcesFromRenderer): * replay/CapturingInputCursor.cpp: (WebCore::CapturingInputCursor::CapturingInputCursor): (WebCore::CapturingInputCursor::create): (WebCore::CapturingInputCursor::storeInput): * replay/FunctorInputCursor.h: (WebCore::FunctorInputCursor::FunctorInputCursor): * replay/MemoizedDOMResult.cpp: (JSC::InputTraits<MemoizedDOMResultBase>::decode): * replay/ReplayController.cpp: (WebCore::ReplayController::createSegment): * replay/ReplayInputCreationMethods.cpp: (WebCore::InitialNavigation::createFromPage): * replay/ReplaySession.cpp: (WebCore::ReplaySession::appendSegment): (WebCore::ReplaySession::insertSegment): * replay/ReplayingInputCursor.cpp: (WebCore::ReplayingInputCursor::ReplayingInputCursor): (WebCore::ReplayingInputCursor::create): * replay/SegmentedInputStorage.cpp: (WebCore::SegmentedInputStorage::store): * replay/SerializationMethods.cpp: (JSC::EncodingTraits<NondeterministicInputBase>::decodeValue): * replay/UserInputBridge.cpp: (WebCore::UserInputBridge::handleMousePressEvent): (WebCore::UserInputBridge::handleMouseReleaseEvent): (WebCore::UserInputBridge::handleMouseMoveEvent): (WebCore::UserInputBridge::handleMouseMoveOnScrollbarEvent): (WebCore::UserInputBridge::handleKeyEvent): (WebCore::UserInputBridge::handleWheelEvent): * storage/Storage.cpp: (WebCore::Storage::create): (WebCore::Storage::Storage): * style/StyleResolveForDocument.cpp: (WebCore::Style::resolveForDocument): * style/StyleResolveTree.cpp: (WebCore::Style::createRendererIfNeeded): (WebCore::Style::setBeforeOrAfterPseudoElement): (WebCore::Style::resolveTree): * svg/SVGAElement.cpp: (WebCore::SVGAElement::createElementRenderer): * svg/SVGAltGlyphElement.cpp: (WebCore::SVGAltGlyphElement::createElementRenderer): * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::constructFromString): (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): * svg/SVGAnimatedTypeAnimator.cpp: (WebCore::SVGAnimatedTypeAnimator::findAnimatedPropertiesForAttributeName): * svg/SVGCircleElement.cpp: (WebCore::SVGCircleElement::createElementRenderer): * svg/SVGClipPathElement.cpp: (WebCore::SVGClipPathElement::createElementRenderer): * svg/SVGDefsElement.cpp: (WebCore::SVGDefsElement::createElementRenderer): * svg/SVGDocumentExtensions.cpp: (WebCore::SVGDocumentExtensions::markPendingResourcesForRemoval): (WebCore::SVGDocumentExtensions::addElementReferencingTarget): (WebCore::SVGDocumentExtensions::rebuildElements): * svg/SVGEllipseElement.cpp: (WebCore::SVGEllipseElement::createElementRenderer): * svg/SVGFilterElement.cpp: (WebCore::SVGFilterElement::createElementRenderer): * svg/SVGFilterPrimitiveStandardAttributes.cpp: (WebCore::SVGFilterPrimitiveStandardAttributes::createElementRenderer): * svg/SVGFontElement.cpp: (WebCore::SVGKerningMap::insert): * svg/SVGForeignObjectElement.cpp: (WebCore::SVGForeignObjectElement::createElementRenderer): * svg/SVGGElement.cpp: (WebCore::SVGGElement::createElementRenderer): * svg/SVGGraphicsElement.cpp: (WebCore::SVGGraphicsElement::createElementRenderer): * svg/SVGImageElement.cpp: (WebCore::SVGImageElement::createElementRenderer): * svg/SVGLinearGradientElement.cpp: (WebCore::SVGLinearGradientElement::createElementRenderer): * svg/SVGMarkerElement.cpp: (WebCore::SVGMarkerElement::createElementRenderer): * svg/SVGMaskElement.cpp: (WebCore::SVGMaskElement::createElementRenderer): * svg/SVGPathElement.cpp: (WebCore::SVGPathElement::createElementRenderer): * svg/SVGPathUtilities.cpp: (WebCore::appendSVGPathByteStreamFromSVGPathSeg): * svg/SVGPatternElement.cpp: (WebCore::SVGPatternElement::createElementRenderer): * svg/SVGRadialGradientElement.cpp: (WebCore::SVGRadialGradientElement::createElementRenderer): * svg/SVGRectElement.cpp: (WebCore::SVGRectElement::createElementRenderer): * svg/SVGSVGElement.cpp: (WebCore::SVGSVGElement::createElementRenderer): * svg/SVGStopElement.cpp: (WebCore::SVGStopElement::createElementRenderer): * svg/SVGSwitchElement.cpp: (WebCore::SVGSwitchElement::createElementRenderer): * svg/SVGSymbolElement.cpp: (WebCore::SVGSymbolElement::createElementRenderer): * svg/SVGTRefElement.cpp: (WebCore::SVGTRefTargetEventListener::attach): (WebCore::SVGTRefElement::createElementRenderer): * svg/SVGTSpanElement.cpp: (WebCore::SVGTSpanElement::createElementRenderer): * svg/SVGTextElement.cpp: (WebCore::SVGTextElement::createElementRenderer): * svg/SVGTextPathElement.cpp: (WebCore::SVGTextPathElement::createElementRenderer): * svg/SVGToOTFFontConversion.cpp: (WebCore::SVGToOTFFontConverter::releaseResult): (WebCore::SVGToOTFFontConverter::appendKERNSubtable): (WebCore::SVGToOTFFontConverter::processGlyphElement): * svg/SVGUseElement.cpp: (WebCore::SVGUseElement::createElementRenderer): (WebCore::SVGUseElement::cloneTarget): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::~SVGImage): (WebCore::SVGImage::drawPatternForContainer): * testing/Internals.cpp: (WebCore::Internals::insertAuthorCSS): (WebCore::Internals::insertUserCSS): (WebCore::Internals::queueMicroTask): * workers/DedicatedWorkerGlobalScope.cpp: (WebCore::DedicatedWorkerGlobalScope::postMessage): * workers/Worker.cpp: (WebCore::Worker::create): (WebCore::Worker::postMessage): * workers/WorkerEventQueue.cpp: (WebCore::WorkerEventQueue::EventDispatcher::EventDispatcher): * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::postTask): (WebCore::WorkerGlobalScope::setTimeout): (WebCore::WorkerGlobalScope::setInterval): (WebCore::WorkerGlobalScope::importScripts): (WebCore::WorkerGlobalScope::addMessage): (WebCore::WorkerGlobalScope::addMessageToWorkerConsole): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::postMessageToWorkerObject): (WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope): (WebCore::WorkerMessagingProxy::postTaskToLoader): (WebCore::WorkerMessagingProxy::postTaskForModeToWorkerGlobalScope): (WebCore::WorkerMessagingProxy::workerThreadCreated): * workers/WorkerRunLoop.cpp: (WebCore::WorkerRunLoop::postTask): (WebCore::WorkerRunLoop::postTaskAndTerminate): (WebCore::WorkerRunLoop::postTaskForMode): (WebCore::WorkerRunLoop::Task::Task): * xml/DOMParser.cpp: (WebCore::DOMParser::parseFromString): * xml/NativeXPathNSResolver.cpp: (WebCore::NativeXPathNSResolver::NativeXPathNSResolver): * xml/NativeXPathNSResolver.h: (WebCore::NativeXPathNSResolver::create): * xml/XMLErrors.cpp: (WebCore::XMLErrors::insertErrorMessageBlock): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::responseBlob): * xml/XMLHttpRequestProgressEventThrottle.cpp: (WebCore::XMLHttpRequestProgressEventThrottle::flushProgressEvent): (WebCore::XMLHttpRequestProgressEventThrottle::dispatchDeferredEvents): * xml/XMLTreeViewer.cpp: (WebCore::XMLTreeViewer::transformDocumentToTreeView): * xml/XPathExpression.cpp: (WebCore::XPathExpression::XPathExpression): (WebCore::XPathExpression::createExpression): * xml/XPathExpressionNode.cpp: (WebCore::XPath::Expression::setSubexpressions): * xml/XPathExpressionNode.h: (WebCore::XPath::Expression::addSubexpression): * xml/XPathFunctions.cpp: (WebCore::XPath::Function::setArguments): (WebCore::XPath::FunId::evaluate): (WebCore::XPath::Function::create): * xml/XPathGrammar.y: * xml/XPathNodeSet.cpp: (WebCore::XPath::NodeSet::sort): (WebCore::XPath::NodeSet::traversalSort): * xml/XPathNodeSet.h: (WebCore::XPath::NodeSet::NodeSet): (WebCore::XPath::NodeSet::append): * xml/XPathParser.cpp: (WebCore::XPath::Parser::parseStatement): * xml/XPathParser.h: (WebCore::XPath::Parser::setParseResult): * xml/XPathPath.cpp: (WebCore::XPath::Filter::Filter): (WebCore::XPath::Filter::evaluate): (WebCore::XPath::LocationPath::evaluate): (WebCore::XPath::LocationPath::appendStep): (WebCore::XPath::LocationPath::prependStep): (WebCore::XPath::Path::Path): * xml/XPathPredicate.cpp: (WebCore::XPath::StringExpression::StringExpression): (WebCore::XPath::Negative::Negative): (WebCore::XPath::NumericOp::NumericOp): (WebCore::XPath::EqTestOp::EqTestOp): (WebCore::XPath::LogicalOp::LogicalOp): (WebCore::XPath::Union::Union): * xml/XPathStep.cpp: (WebCore::XPath::Step::Step): (WebCore::XPath::Step::optimize): (WebCore::XPath::optimizeStepPair): (WebCore::XPath::Step::evaluate): * xml/XPathStep.h: (WebCore::XPath::Step::NodeTest::NodeTest): (WebCore::XPath::Step::NodeTest::operator=): * xml/XPathValue.h: (WebCore::XPath::Value::Value): (WebCore::XPath::Value::Data::create): (WebCore::XPath::Value::Data::Data): * xml/XSLTProcessor.h: (WebCore::XSLTProcessor::setXSLStyleSheet): (WebCore::XSLTProcessor::importStylesheet): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::append): * xml/parser/XMLDocumentParserLibxml2.cpp: (WebCore::PendingCallbacks::appendStartElementNSCallback): (WebCore::PendingCallbacks::appendCharactersCallback): (WebCore::PendingCallbacks::appendProcessingInstructionCallback): (WebCore::PendingCallbacks::appendCDATABlockCallback): (WebCore::PendingCallbacks::appendCommentCallback): (WebCore::PendingCallbacks::appendInternalSubsetCallback): (WebCore::PendingCallbacks::appendErrorCallback): (WebCore::OffsetBuffer::OffsetBuffer): (WebCore::openFunc): (WebCore::XMLDocumentParser::cdataBlock): (WebCore::XMLDocumentParser::comment): (WebCore::parseAttributes): Source/WebKit: * Storage/StorageNamespaceImpl.cpp: (WebCore::StorageNamespaceImpl::storageArea): Source/WebKit/ios: * WebCoreSupport/WebFixedPositionContent.mm: (-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]): * WebCoreSupport/WebInspectorClientIOS.mm: (WebInspectorFrontendClient::WebInspectorFrontendClient): Source/WebKit/mac: * History/WebHistoryItem.mm: (-[WebHistoryItem initFromDictionaryRepresentation:]): * Plugins/Hosted/HostedNetscapePluginStream.mm: (WebKit::HostedNetscapePluginStream::willSendRequest): * Plugins/Hosted/NetscapePluginInstanceProxy.h: (WebKit::NetscapePluginInstanceProxy::setCurrentReply): * Plugins/WebNetscapePluginStream.mm: (WebNetscapePluginStream::willSendRequest): * Plugins/WebNetscapePluginView.mm: (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]): * WebCoreSupport/WebContextMenuClient.mm: (WebContextMenuClient::imageForCurrentSharingServicePickerItem): * WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::dispatchDecidePolicyForResponse): (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): (WebFrameLoaderClient::dispatchWillSubmitForm): (WebFrameLoaderClient::createDocumentLoader): * WebCoreSupport/WebInspectorClient.mm: (WebInspectorFrontendClient::WebInspectorFrontendClient): * WebView/WebArchive.mm: (-[WebArchive initWithMainResource:subresources:subframeArchives:]): * WebView/WebFrame.mm: (-[WebFrame _documentFragmentWithNodesAsParagraphs:]): * WebView/WebHTMLView.mm: (-[WebHTMLView _applyEditingStyleToSelection:withUndoAction:]): * WebView/WebMediaPlaybackTargetPicker.mm: (WebMediaPlaybackTargetPicker::setPlaybackTarget): * WebView/WebView.mm: (-[WebView _loadBackForwardListFromOtherView:]): (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Source/WebKit/win: * Plugins/PluginStream.cpp: (WebCore::PluginStream::willSendRequest): * Plugins/PluginView.cpp: (WebCore::PluginView::requestTimerFired): (WebCore::PluginView::scheduleRequest): (WebCore::PluginView::handlePost): * WebCoreSupport/WebFrameLoaderClient.cpp: (WebFrameLoaderClient::createDocumentLoader): * WebCoreSupport/WebInspectorClient.cpp: (WebInspectorFrontendClient::WebInspectorFrontendClient): * WebHistory.cpp: (createUserInfoFromArray): * WebHistoryItem.cpp: (WebHistoryItem::initFromDictionaryRepresentation): * WebView.cpp: (WebView::addToDirtyRegion): (WebView::scrollBackingStore): (WebView::loadBackForwardListFromOtherView): (WebView::addUserScriptToGroup): (WebView::addUserStyleSheetToGroup): Source/WebKit2: * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::postDatabaseTask): (WebKit::DatabaseProcess::fetchWebsiteData): (WebKit::DatabaseProcess::deleteWebsiteData): (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): (WebKit::DatabaseProcess::indexedDatabaseOrigins): * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp: (WebKit::UniqueIDBDatabase::postTransactionOperation): (WebKit::UniqueIDBDatabase::postMainThreadTask): (WebKit::UniqueIDBDatabase::postDatabaseTask): * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): (WebKit::DownloadManager::convertHandleToDownload): (WebKit::DownloadManager::resumeDownload): * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm: (WebKit::NetworkServiceInitializerDelegate::NetworkServiceInitializerDelegate): * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::registerBlobURL): * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad): (WebKit::NetworkConnectionToWebProcess::registerBlobURL): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveData): (WebKit::NetworkLoad::didReceiveBuffer): (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): * NetworkProcess/NetworkProcess.cpp: (WebKit::fetchDiskCacheEntries): (WebKit::NetworkProcess::fetchWebsiteData): (WebKit::NetworkProcess::deleteWebsiteData): (WebKit::clearDiskCacheEntries): (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::SynchronousLoadData::SynchronousLoadData): (WebKit::NetworkResourceLoader::NetworkResourceLoader): (WebKit::NetworkResourceLoader::retrieveCacheEntry): (WebKit::NetworkResourceLoader::didFinishLoading): (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): (WebKit::NetworkResourceLoader::validateCacheEntry): * NetworkProcess/NetworkResourceLoader.h: * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::retrieve): (WebKit::NetworkCache::Cache::store): (WebKit::NetworkCache::Cache::clear): * NetworkProcess/cache/NetworkCacheCoders.h: * NetworkProcess/cache/NetworkCacheDataSoup.cpp: (WebKit::NetworkCache::Data::empty): (WebKit::NetworkCache::Data::subrange): (WebKit::NetworkCache::concatenate): (WebKit::NetworkCache::Data::adoptMap): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::Entry): * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::runTaskInQueue): (WebKit::NetworkCache::fillDataFromReadBuffer): (WebKit::NetworkCache::IOChannel::readSyncInThread): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading): (WebKit::NetworkCache::SpeculativeLoad::didComplete): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::ExpiringEntry::ExpiringEntry): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::PreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::takeCacheEntry): (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::create): (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::setExistingSubresourcesEntry): (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::PendingFrameLoad): (WebKit::NetworkCache::SpeculativeLoadManager::registerLoad): (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry): * NetworkProcess/cache/NetworkCacheStatistics.cpp: (WebKit::NetworkCache::Statistics::queryWasEverRequested): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::ReadOperation::finish): (WebKit::NetworkCache::Storage::synchronize): (WebKit::NetworkCache::Storage::dispatchReadOperation): (WebKit::NetworkCache::Storage::dispatchWriteOperation): (WebKit::NetworkCache::Storage::retrieve): (WebKit::NetworkCache::Storage::store): (WebKit::NetworkCache::Storage::traverse): (WebKit::NetworkCache::Storage::clear): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry): (WebKit::NetworkCache::SubresourcesEntry::updateSubresourceKeys): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkDataTask::NetworkDataTask): * NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::clearDiskCache): * Platform/IPC/ArgumentCoders.h: (IPC::ArgumentCoder<WTF::Optional<T>>::decode): * Platform/IPC/ArgumentDecoder.cpp: (IPC::ArgumentDecoder::ArgumentDecoder): * Platform/IPC/ArgumentEncoder.cpp: (IPC::ArgumentEncoder::addAttachment): (IPC::ArgumentEncoder::releaseAttachments): * Platform/IPC/Attachment.cpp: (IPC::Attachment::encode): * Platform/IPC/Connection.cpp: (IPC::Connection::SyncMessageState::processIncomingMessage): (IPC::Connection::SyncMessageState::dispatchMessages): (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): (IPC::Connection::sendMessage): (IPC::Connection::sendSyncReply): (IPC::Connection::waitForMessage): (IPC::Connection::sendSyncMessage): (IPC::Connection::sendSyncMessageFromSecondaryThread): (IPC::Connection::waitForSyncReply): (IPC::Connection::processIncomingSyncReply): (IPC::Connection::processIncomingMessage): (IPC::Connection::sendOutgoingMessages): (IPC::Connection::dispatchSyncMessage): (IPC::Connection::enqueueIncomingMessage): (IPC::Connection::dispatchOneMessage): * Platform/IPC/Connection.h: (IPC::Connection::Identifier::Identifier): (IPC::Connection::send): (IPC::Connection::sendSync): * Platform/IPC/HandleMessage.h: (IPC::handleMessage): (IPC::handleMessageDelayed): * Platform/IPC/MessageDecoder.cpp: (IPC::MessageDecoder::MessageDecoder): (IPC::MessageDecoder::setImportanceAssertion): (IPC::MessageDecoder::unwrapForTesting): * Platform/IPC/MessageDecoder.h: (IPC::MessageDecoder::setMessageProcessingToken): * Platform/IPC/MessageEncoder.cpp: (IPC::MessageEncoder::wrapForTesting): * Platform/IPC/MessageRecorder.cpp: (IPC::MessageRecorder::recordOutgoingMessage): (IPC::MessageRecorder::recordIncomingMessage): (IPC::MessageRecorder::MessageProcessingToken::MessageProcessingToken): * Platform/IPC/MessageSender.cpp: (IPC::MessageSender::sendMessage): * Platform/IPC/MessageSender.h: (IPC::MessageSender::send): (IPC::MessageSender::sendSync): * Platform/IPC/glib/GSocketMonitor.cpp: (IPC::GSocketMonitor::start): * Platform/IPC/mac/ConnectionMac.mm: (IPC::Connection::open): (IPC::createMessageDecoder): (IPC::Connection::receiveSourceEventHandler): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): * Platform/unix/SharedMemoryUnix.cpp: (WebKit::SharedMemory::Handle::decode): (WebKit::SharedMemory::Handle::releaseAttachment): (WebKit::SharedMemory::Handle::adoptAttachment): * PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm: (WebKit::PluginServiceInitializerDelegate::PluginServiceInitializerDelegate): * PluginProcess/PluginProcess.cpp: (WebKit::PluginProcess::initializePluginProcess): * PluginProcess/WebProcessConnection.cpp: (WebKit::WebProcessConnection::addPluginControllerProxy): (WebKit::WebProcessConnection::createPluginInternal): * PluginProcess/mac/PluginProcessMac.mm: (WebKit::PluginProcess::platformInitializePluginProcess): * Scripts/webkit/LegacyMessageReceiver-expected.cpp: (Messages::WebPage::GetPluginProcessConnection::DelayedReply::DelayedReply): (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send): (Messages::WebPage::TestMultipleAttributes::DelayedReply::DelayedReply): (Messages::WebPage::TestMultipleAttributes::DelayedReply::send): * Scripts/webkit/MessageReceiver-expected.cpp: (Messages::WebPage::GetPluginProcessConnection::DelayedReply::DelayedReply): (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send): (Messages::WebPage::TestMultipleAttributes::DelayedReply::DelayedReply): (Messages::WebPage::TestMultipleAttributes::DelayedReply::send): * Scripts/webkit/messages.py: (generate_message_handler): * Shared/API/APIArray.cpp: (API::Array::create): (API::Array::createStringArray): (API::Array::copy): * Shared/API/APIArray.h: * Shared/API/APIDictionary.cpp: (API::Dictionary::create): (API::Dictionary::Dictionary): (API::Dictionary::keys): * Shared/API/APIPageGroupHandle.cpp: (API::PageGroupHandle::create): (API::PageGroupHandle::PageGroupHandle): (API::PageGroupHandle::decode): * Shared/API/APIString.h: * Shared/API/APIURL.h: (API::URL::create): (API::URL::URL): * Shared/API/Cocoa/RemoteObjectInvocation.h: (WebKit::RemoteObjectInvocation::ReplyInfo::ReplyInfo): * Shared/API/Cocoa/RemoteObjectInvocation.mm: (WebKit::RemoteObjectInvocation::RemoteObjectInvocation): (WebKit::RemoteObjectInvocation::decode): * Shared/API/Cocoa/WKRemoteObjectCoder.mm: (ensureObjectStream): (createEncodedObject): * Shared/API/Cocoa/_WKRemoteObjectInterface.mm: (initializeMethod): (-[_WKRemoteObjectInterface setClasses:forSelector:argumentIndex:ofReply:]): * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: (-[_WKRemoteObjectRegistry _sendInvocation:interface:]): * Shared/API/c/WKArray.cpp: (WKArrayCreate): (WKArrayCreateAdoptingValues): * Shared/API/c/WKDictionary.cpp: (WKDictionaryCreate): * Shared/API/c/WKSharedAPICast.h: (WebKit::ProxyingRefPtr::ProxyingRefPtr): * Shared/APIWebArchive.mm: (API::WebArchive::WebArchive): (API::WebArchive::subresources): (API::WebArchive::subframeArchives): * Shared/AsyncRequest.cpp: (WebKit::AsyncRequest::AsyncRequest): (WebKit::AsyncRequest::setAbortHandler): * Shared/AsyncRequest.h: * Shared/BlockingResponseMap.h: (BlockingResponseMap::didReceiveResponse): * Shared/ChildProcessProxy.cpp: (WebKit::ChildProcessProxy::sendMessage): (WebKit::ChildProcessProxy::didFinishLaunching): * Shared/ChildProcessProxy.h: (WebKit::ChildProcessProxy::send): (WebKit::ChildProcessProxy::sendSync): * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: (WebKit::CoordinatedGraphicsScene::dispatchOnMainThread): (WebKit::CoordinatedGraphicsScene::dispatchOnClientRunLoop): (WebKit::CoordinatedGraphicsScene::createLayer): (WebKit::CoordinatedGraphicsScene::syncRemoteContent): (WebKit::CoordinatedGraphicsScene::appendUpdate): * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp: (WebKit::ThreadSafeCoordinatedSurface::create): (WebKit::ThreadSafeCoordinatedSurface::ThreadSafeCoordinatedSurface): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::CompositingRunLoop::CompositingRunLoop): (WebKit::CompositingRunLoop::callOnCompositingRunLoop): (WebKit::ThreadedCompositor::callOnCompositingThread): * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h: (WebKit::XPCServiceInitializerDelegate::XPCServiceInitializerDelegate): (WebKit::XPCServiceInitializer): * Shared/Plugins/Netscape/PluginInformation.cpp: (WebKit::createPluginInformationDictionary): * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.h: (WebKit::RemoteScrollingCoordinatorTransaction::setStateTreeToEncode): * Shared/SessionTracker.cpp: (WebKit::SessionTracker::setSession): * Shared/UserData.cpp: (WebKit::UserData::UserData): (WebKit::transformGraph): (WebKit::UserData::decode): * Shared/WebBackForwardListItem.cpp: (WebKit::WebBackForwardListItem::create): (WebKit::WebBackForwardListItem::WebBackForwardListItem): * Shared/WebBackForwardListItem.h: (WebKit::WebBackForwardListItem::setPageState): * Shared/WebCompiledContentExtension.cpp: (WebKit::WebCompiledContentExtension::create): (WebKit::WebCompiledContentExtension::WebCompiledContentExtension): * Shared/WebCompiledContentExtensionData.h: (WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData): * Shared/WebContextMenuItem.cpp: (WebKit::WebContextMenuItem::submenuItemsAsAPIArray): * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<UserStyleSheet>::decode): (IPC::ArgumentCoder<UserScript>::decode): (IPC::ArgumentCoder<FilterOperations>::decode): (IPC::ArgumentCoder<BlobPart>::decode): * Shared/WebKeyboardEvent.cpp: (WebKit::WebKeyboardEvent::WebKeyboardEvent): * Shared/WebPreferencesStore.h: (WebKit::WebPreferencesStore::Value::Value): * Shared/WebRenderLayer.cpp: (WebKit::WebRenderLayer::createArrayFromLayerList): * Shared/WebRenderObject.cpp: (WebKit::WebRenderObject::WebRenderObject): * Shared/WebTouchEvent.cpp: (WebKit::WebTouchEvent::WebTouchEvent): * Shared/efl/WebEventFactory.cpp: (WebKit::WebEventFactory::createWebTouchEvent): * Shared/gtk/NativeWebKeyboardEventGtk.cpp: (WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent): * Shared/gtk/NativeWebTouchEventGtk.cpp: (WebKit::NativeWebTouchEvent::NativeWebTouchEvent): * Shared/gtk/WebContextMenuItemGtk.cpp: (WebKit::WebContextMenuItemGtk::WebContextMenuItemGtk): * Shared/gtk/WebEventFactory.cpp: (WebKit::WebEventFactory::createWebKeyboardEvent): (WebKit::WebEventFactory::createWebTouchEvent): * Shared/linux/SeccompFilters/OpenSyscall.cpp: (WebKit::OpenSyscall::createFromOpenatContext): (WebKit::OpenSyscall::createFromCreatContext): (WebKit::OpenSyscallResult::encode): * Shared/mac/ObjCObjectGraph.mm: (WebKit::ObjCObjectGraph::decode): * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::takeFrontContextPendingFlush): (WebKit::RemoteLayerBackingStore::Buffer::discard): * Shared/mac/RemoteLayerTreeTransaction.h: (WebKit::RemoteLayerTreeTransaction::setCallbackIDs): * Shared/mac/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): (WebKit::RemoteLayerTreeTransaction::decode): (WebKit::RemoteLayerTreeTransaction::setCreatedLayers): (WebKit::RemoteLayerTreeTransaction::setDestroyedLayerIDs): (WebKit::RemoteLayerTreeTransaction::setLayerIDsWithNewlyUnreachableBackingStore): * Shared/soup/WebCoreArgumentCodersSoup.cpp: (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData): * UIProcess/API/APIProcessPoolConfiguration.h: * UIProcess/API/APISessionState.cpp: (API::SessionState::create): (API::SessionState::SessionState): * UIProcess/API/APIUserContentExtension.cpp: (API::UserContentExtension::UserContentExtension): * UIProcess/API/APIUserContentExtension.h: * UIProcess/API/APIUserContentExtensionStore.cpp: (API::compiledToFile): (API::createExtension): (API::UserContentExtensionStore::compileContentExtension): * UIProcess/API/APIUserScript.h: * UIProcess/API/APIWebsiteDataRecord.cpp: (API::WebsiteDataRecord::create): (API::WebsiteDataRecord::WebsiteDataRecord): * UIProcess/API/APIWebsiteDataStore.cpp: (API::WebsiteDataStore::create): (API::WebsiteDataStore::WebsiteDataStore): * UIProcess/API/C/WKApplicationCacheManager.cpp: (WKApplicationCacheManagerGetApplicationCacheOrigins): * UIProcess/API/C/WKKeyValueStorageManager.cpp: (WKKeyValueStorageManagerGetKeyValueStorageOrigins): (WKKeyValueStorageManagerGetStorageDetailsByOrigin): * UIProcess/API/C/WKPage.cpp: (WKPageCopySessionState): (WKPageRestoreFromSessionState): (WKPageSetPageContextMenuClient): (WKPageSetPageFindMatchesClient): (WKPageSetPageLoaderClient): (WebKit::RunJavaScriptAlertResultListener::create): (WebKit::RunJavaScriptAlertResultListener::RunJavaScriptAlertResultListener): (WebKit::RunJavaScriptConfirmResultListener::create): (WebKit::RunJavaScriptConfirmResultListener::RunJavaScriptConfirmResultListener): (WebKit::RunJavaScriptPromptResultListener::create): (WebKit::RunJavaScriptPromptResultListener::RunJavaScriptPromptResultListener): (WKPageSetPageUIClient): (WKPageSetPageNavigationClient): (WKPageCopyRelatedPages): * UIProcess/API/C/WKResourceCacheManager.cpp: (WKResourceCacheManagerGetCacheOrigins): * UIProcess/API/C/WKSessionStateRef.cpp: (WKSessionStateCreateFromData): * UIProcess/API/C/mac/WKContextPrivateMac.mm: (WKContextGetInfoForInstalledPlugIns): * UIProcess/API/C/mac/WKPagePrivateMac.mm: (-[WKObservablePageState initWithPage:]): * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm: (createWKArray): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView initWithFrame:configuration:]): (-[WKWebView _takeViewSnapshot]): (-[WKWebView _restoreFromSessionStateData:]): (-[WKWebView _setInputDelegate:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (LazyInitialized::set): * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: (-[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:]): * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: (-[_WKProcessPoolConfiguration setCachePartitionedURLSchemes:]): * UIProcess/API/Cocoa/_WKSessionState.mm: (-[_WKSessionState _initWithSessionState:]): * UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm: (-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]): * UIProcess/API/efl/ewk_database_manager.cpp: (EwkDatabaseManager::getDatabaseOrigins): * UIProcess/API/gtk/WebKitContextMenuItem.cpp: (webkitContextMenuItemToWebContextMenuItemGtk): * UIProcess/API/gtk/WebKitFileChooserRequest.cpp: (webkit_file_chooser_request_select_files): * UIProcess/API/gtk/WebKitNotificationProvider.cpp: (WebKitNotificationProvider::notificationCloseCallback): * UIProcess/API/gtk/WebKitWebContext.cpp: (webkit_web_context_prefetch_dns): (webkitWebContextCreatePageForWebView): * UIProcess/API/gtk/WebKitWebView.cpp: (webkit_web_view_get_snapshot): * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseTouchEvent): (webkitWebViewBaseCreateWebPage): * UIProcess/API/gtk/WebKitWebsiteDataManager.cpp: (webkitWebsiteDataManagerCreate): (webkitWebsiteDataManagerGetDataStore): * UIProcess/API/mac/WKView.mm: (-[WKView initWithFrame:processPool:configuration:webView:]): (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]): (-[WKView initWithFrame:configurationRef:]): * UIProcess/Cocoa/NavigationState.mm: (WebKit::tryAppLink): (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse): * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::WebViewImpl): (WebKit::WebViewImpl::takeViewSnapshot): * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp: (WebKit::CoordinatedLayerTreeHostProxy::dispatchUpdate): * UIProcess/Databases/DatabaseProcessProxy.cpp: (WebKit::DatabaseProcessProxy::fetchWebsiteData): (WebKit::DatabaseProcessProxy::deleteWebsiteData): (WebKit::DatabaseProcessProxy::deleteWebsiteDataForOrigins): * UIProcess/GenericCallback.h: (WebKit::CallbackMap::put): * UIProcess/InspectorServer/WebSocketServer.cpp: (WebKit::WebSocketServer::didAcceptConnection): * UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp: (WebKit::connectionCallback): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::fetchWebsiteData): * UIProcess/Notifications/WebNotificationManagerProxy.cpp: (WebKit::WebNotificationManagerProxy::providerDidCloseNotifications): * UIProcess/Notifications/WebNotificationProvider.cpp: (WebKit::WebNotificationProvider::clearNotifications): * UIProcess/PageLoadState.cpp: (WebKit::PageLoadState::Transaction::Transaction): * UIProcess/Plugins/PlugInAutoStartProvider.cpp: (WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy): * UIProcess/Plugins/PluginProcessManager.cpp: (WebKit::PluginProcessManager::pluginProcessToken): (WebKit::PluginProcessManager::fetchWebsiteData): (WebKit::PluginProcessManager::deleteWebsiteData): (WebKit::PluginProcessManager::deleteWebsiteDataForHostNames): * UIProcess/Plugins/PluginProcessProxy.cpp: (WebKit::PluginProcessProxy::fetchWebsiteData): (WebKit::PluginProcessProxy::deleteWebsiteData): (WebKit::PluginProcessProxy::deleteWebsiteDataForHostNames): * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::updateScrollingTree): * UIProcess/StatisticsRequest.cpp: (WebKit::StatisticsRequest::completedRequest): * UIProcess/Storage/LocalStorageDatabase.cpp: (WebKit::LocalStorageDatabase::create): (WebKit::LocalStorageDatabase::LocalStorageDatabase): * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::TransientLocalStorageNamespace::getOrCreateStorageArea): (WebKit::StorageManager::StorageArea::create): (WebKit::StorageManager::StorageArea::StorageArea): (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea): (WebKit::StorageManager::SessionStorageNamespace::getOrCreateStorageArea): (WebKit::StorageManager::getSessionStorageOrigins): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::getLocalStorageOriginDetails): (WebKit::StorageManager::createTransientLocalStorageMap): (WebKit::StorageManager::createSessionStorageMap): * UIProcess/UserContent/WebScriptMessageHandler.cpp: (WebKit::WebScriptMessageHandler::create): (WebKit::WebScriptMessageHandler::WebScriptMessageHandler): * UIProcess/UserContent/WebUserContentControllerProxy.cpp: (WebKit::WebUserContentControllerProxy::addUserStyleSheet): * UIProcess/ViewGestureController.cpp: (WebKit::ViewGestureController::SnapshotRemovalTracker::start): (WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackImmediately): * UIProcess/WebBackForwardList.cpp: (WebKit::WebBackForwardList::addItem): (WebKit::WebBackForwardList::backListAsAPIArrayWithLimit): (WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit): (WebKit::WebBackForwardList::removeAllItems): (WebKit::WebBackForwardList::clear): (WebKit::WebBackForwardList::restoreFromState): * UIProcess/WebCookieManagerProxy.cpp: (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): * UIProcess/WebFormClient.cpp: (WebKit::WebFormClient::willSubmitForm): * UIProcess/WebFrameListenerProxy.h: (WebKit::WebFrameListenerProxy::setNavigation): * UIProcess/WebFrameProxy.h: (WebKit::WebFrameProxy::contentFilterDidBlockLoad): * UIProcess/WebGrammarDetail.cpp: (WebKit::WebGrammarDetail::guesses): * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::createInspectorPage): * UIProcess/WebMediaCacheManagerProxy.cpp: (WebKit::WebMediaCacheManagerProxy::getHostnamesWithMediaCache): * UIProcess/WebPageProxy.cpp: (WebKit::ExceededDatabaseQuotaRecords::add): (WebKit::WebPageProxy::create): (WebKit::WebPageProxy::WebPageProxy): (WebKit::WebPageProxy::setHistoryClient): (WebKit::WebPageProxy::setNavigationClient): (WebKit::WebPageProxy::setLoaderClient): (WebKit::WebPageProxy::setPolicyClient): (WebKit::WebPageProxy::setFormClient): (WebKit::WebPageProxy::setUIClient): (WebKit::WebPageProxy::setFindClient): (WebKit::WebPageProxy::setFindMatchesClient): (WebKit::WebPageProxy::setDiagnosticLoggingClient): (WebKit::WebPageProxy::setContextMenuClient): (WebKit::WebPageProxy::reattachToWebProcessForReload): (WebKit::WebPageProxy::reattachToWebProcessWithItem): (WebKit::WebPageProxy::loadRequest): (WebKit::WebPageProxy::loadFile): (WebKit::WebPageProxy::loadData): (WebKit::WebPageProxy::loadHTMLString): (WebKit::WebPageProxy::reload): (WebKit::WebPageProxy::didChangeBackForwardList): (WebKit::WebPageProxy::setInitialFocus): (WebKit::WebPageProxy::validateCommand): (WebKit::WebPageProxy::handleWheelEvent): (WebKit::WebPageProxy::processNextQueuedWheelEvent): (WebKit::WebPageProxy::restoreFromSessionState): (WebKit::WebPageProxy::runJavaScriptInMainFrame): (WebKit::WebPageProxy::getRenderTreeExternalRepresentation): (WebKit::WebPageProxy::getSourceForFrame): (WebKit::WebPageProxy::getContentsAsString): (WebKit::WebPageProxy::getBytecodeProfile): (WebKit::WebPageProxy::getContentsAsMHTMLData): (WebKit::WebPageProxy::getSelectionOrContentsAsString): (WebKit::WebPageProxy::getSelectionAsWebArchiveData): (WebKit::WebPageProxy::getMainResourceDataOfFrame): (WebKit::WebPageProxy::getResourceDataFromFrame): (WebKit::WebPageProxy::getWebArchiveOfFrame): (WebKit::WebPageProxy::decidePolicyForNavigationAction): (WebKit::WebPageProxy::decidePolicyForNewWindowAction): (WebKit::WebPageProxy::decidePolicyForResponse): (WebKit::WebPageProxy::sendMessage): (WebKit::WebPageProxy::exceededDatabaseQuota): (WebKit::WebPageProxy::getMarkedRangeAsync): (WebKit::WebPageProxy::getSelectedRangeAsync): (WebKit::WebPageProxy::characterIndexForPointAsync): (WebKit::WebPageProxy::firstRectForCharacterRangeAsync): (WebKit::WebPageProxy::takeSnapshot): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setHistoryClient): (WebKit::WebProcessPool::setDownloadClient): (WebKit::WebProcessPool::createWebPage): (WebKit::WebProcessPool::getStatistics): (WebKit::WebProcessPool::pluginInfoStoreDidLoadPlugins): * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createWebPage): (WebKit::WebProcessProxy::addBackForwardItem): (WebKit::WebProcessProxy::fetchWebsiteData): * UIProcess/WebsiteData/WebsiteDataRecord.cpp: (WebKit::WebsiteDataRecord::add): * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::create): (WebKit::WebsiteDataStore::WebsiteDataStore): (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): (WebKit::WebsiteDataStore::mediaKeyOrigins): * UIProcess/efl/InputMethodContextEfl.cpp: (WebKit::InputMethodContextEfl::InputMethodContextEfl): * UIProcess/efl/InputMethodContextEfl.h: (WebKit::InputMethodContextEfl::create): * UIProcess/efl/WebContextMenuProxyEfl.cpp: (WebKit::WebContextMenuProxyEfl::showContextMenu): * UIProcess/efl/WebUIPopupMenuClient.cpp: (WebUIPopupMenuClient::showPopupMenu): * UIProcess/gtk/InputMethodFilter.cpp: (WebKit::InputMethodFilter::filterKeyEvent): * UIProcess/gtk/KeyBindingTranslator.cpp: (WebKit::KeyBindingTranslator::commandsForKeyEvent): * UIProcess/gtk/RedirectedXCompositeWindow.cpp: (WebKit::XDamageNotifier::add): (WebKit::RedirectedXCompositeWindow::RedirectedXCompositeWindow): (WebKit::RedirectedXCompositeWindow::surface): * UIProcess/ios/WKActionSheetAssistant.mm: (-[WKActionSheetAssistant showImageSheet]): (-[WKActionSheetAssistant showLinkSheet]): * UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): (-[WKContentView initWithFrame:processPool:configuration:webView:]): * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView actionSheetAssistant:decideActionsForElement:defaultActions:]): * UIProcess/ios/WKGeolocationProviderIOS.mm: (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]): (-[WKGeolocationProviderIOS geolocationAuthorizationDenied]): * UIProcess/ios/WKPDFView.mm: (-[WKPDFView actionSheetAssistant:decideActionsForElement:defaultActions:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::selectWithGesture): (WebKit::WebPageProxy::updateSelectionWithTouches): (WebKit::WebPageProxy::requestAutocorrectionData): (WebKit::WebPageProxy::applyAutocorrection): (WebKit::WebPageProxy::executeEditCommand): (WebKit::WebPageProxy::selectTextWithGranularityAtPoint): (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection): (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection): (WebKit::WebPageProxy::selectPositionAtPoint): (WebKit::WebPageProxy::beginSelectionInDirection): (WebKit::WebPageProxy::updateSelectionWithExtentPoint): (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary): (WebKit::WebPageProxy::requestDictationContext): (WebKit::WebPageProxy::requestAutocorrectionContext): (WebKit::WebPageProxy::getLookupContextAtPoint): (WebKit::WebPageProxy::selectWithTwoTouches): (WebKit::WebPageProxy::moveSelectionByOffset): (WebKit::WebPageProxy::focusNextAssistedNode): * UIProcess/ios/WebVideoFullscreenManagerProxy.h: * UIProcess/ios/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenManagerProxy::createModelAndInterface): * UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel _chooseFiles:displayString:iconImage:]): * UIProcess/mac/LegacySessionStateCoding.cpp: (WebKit::HistoryEntryDataEncoder::finishEncoding): (WebKit::decodeFormData): (WebKit::decodeBackForwardTreeNode): (WebKit::decodeSessionHistoryEntries): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing): * UIProcess/mac/ViewGestureController.h: (WebKit::ViewGestureController::setCustomSwipeViews): * UIProcess/mac/ViewGestureControllerMac.mm: (WebKit::ViewGestureController::PendingSwipeTracker::PendingSwipeTracker): * UIProcess/mac/ViewSnapshotStore.mm: (WebKit::ViewSnapshot::create): (WebKit::ViewSnapshot::ViewSnapshot): (WebKit::ViewSnapshot::setSurface): * UIProcess/mac/WebPageProxyMac.mm: (WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync): (WebKit::WebPageProxy::fontAtSelection): * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (contextMenuItems): (WKBundlePageCopyOriginsWithApplicationCache): * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: (WKBundlePageOverlayCreate): * WebProcess/InjectedBundle/API/efl/ewk_extension.cpp: (EwkExtension::didCreatePage): * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp: (webkitFrameGetOrCreate): (didInitiateLoadForResource): (willSendRequestForFrame): (didReceiveResponseForResource): (didReceiveContentLengthForResource): (didFinishLoadForResource): (didFailLoadForResource): (webkitWebPageDidReceiveMessage): * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::addUserScript): (WebKit::InjectedBundle::addUserStyleSheet): * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp: (WebKit::InjectedBundleBackForwardListItem::children): * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp: (WebKit::InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems): * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp: (WebKit::InjectedBundlePageFormClient::willSendSubmitEvent): (WebKit::InjectedBundlePageFormClient::willSubmitForm): (WebKit::InjectedBundlePageFormClient::didAssociateFormControls): * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp: (WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::willSendRequest): * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: (WebKit::NPN_PostURL): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::scheduleTimer): * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: (WebKit::convertStringToKeyCodes): * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::PDFPlugin): * WebProcess/Plugins/PDF/PDFPlugin.mm: (-[WKPDFHUDAnimationDelegate initWithAnimationCompletionHandler:]): * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): * WebProcess/Storage/StorageAreaMap.cpp: (WebKit::StorageAreaMap::create): (WebKit::StorageAreaMap::StorageAreaMap): * WebProcess/Storage/StorageNamespaceImpl.cpp: (WebKit::StorageNamespaceImpl::storageArea): * WebProcess/UserContent/WebUserContentController.cpp: (WebKit::WebUserContentController::addUserContentExtensions): * WebProcess/WebCoreSupport/SessionStateConversion.cpp: (WebKit::toHTTPBody): (WebKit::toFrameState): (WebKit::applyFrameState): * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse): (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm): (WebKit::WebFrameLoaderClient::contentFilterDidBlockLoad): * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: (WebKit::WebPasteboardOverrides::addOverride): * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp: (WebKit::WebEditorClient::executePendingEditorCommands): * WebProcess/WebPage/FindController.cpp: (WebKit::FindController::findStringMatches): * WebProcess/WebPage/ViewUpdateDispatcher.cpp: (WebKit::ViewUpdateDispatcher::dispatchVisibleContentRectUpdate): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::createSubframe): (WebKit::WebFrame::create): (WebKit::WebFrame::WebFrame): (WebKit::WebFrame::didReceivePolicyDecision): (WebKit::WebFrame::childFrames): (WebKit::WebFrame::createSelectionSnapshot): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setInjectedBundleContextMenuClient): (WebKit::WebPage::setInjectedBundleFormClient): (WebKit::WebPage::setInjectedBundleUIClient): (WebKit::WebPage::trackedRepaintRects): (WebKit::WebPage::createDocumentLoader): * WebProcess/WebPage/WebPageGroupProxy.cpp: (WebKit::WebPageGroupProxy::addUserContentExtension): * WebProcess/WebPage/WebPageOverlay.cpp: (WebKit::WebPageOverlay::create): (WebKit::WebPageOverlay::WebPageOverlay): * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: (WebKit::LayerTreeHostGtk::RenderFrameScheduler::RenderFrameScheduler): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::computePagesForPrintingAndStartDrawingToPDF): * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm: (WebKit::PlatformCAAnimationRemote::setTimingFunction): (WebKit::PlatformCAAnimationRemote::setValues): (WebKit::PlatformCAAnimationRemote::setTimingFunctions): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::layerWasCreated): (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::flushLayers): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::create): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::BackingStoreFlusher): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): (WebKit::WebProcess::transformObjectsToHandles): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): * WebProcess/ios/WebVideoFullscreenManager.mm: (WebKit::WebVideoFullscreenInterfaceContext::setLayerHostingContext): (WebKit::WebVideoFullscreenManager::createModelAndInterface): (WebKit::WebVideoFullscreenManager::setSeekableRanges): * WebProcess/soup/WebKitSoupRequestInputStream.cpp: (webkitSoupRequestInputStreamDidFailWithError): Source/WTF: This also removes the definition of WTF::move. * wtf/Deque.h: * wtf/HashMap.h: * wtf/HashSet.h: * wtf/HashTable.h: (WTF::HashTable::add): (WTF::KeyTraits>::HashTable): * wtf/Insertion.h: (WTF::executeInsertions): * wtf/IteratorAdaptors.h: (WTF::FilterIterator::FilterIterator): (WTF::TransformIterator::TransformIterator): (WTF::makeTransformIterator): * wtf/IteratorRange.h: (WTF::IteratorRange::IteratorRange): * wtf/ListHashSet.h: (WTF::U>::takeFirst): (WTF::U>::takeLast): * wtf/MainThread.cpp: (WTF::callOnMainThread): * wtf/MallocPtr.h: (WTF::MallocPtr::operator=): * wtf/MessageQueue.h: (WTF::MessageQueue<DataType>::append): (WTF::MessageQueue<DataType>::appendAndKill): (WTF::MessageQueue<DataType>::appendAndCheckEmpty): (WTF::MessageQueue<DataType>::prepend): * wtf/NakedPtr.h: (WTF::=): * wtf/OSObjectPtr.h: (WTF::OSObjectPtr::operator=): * wtf/Optional.h: (WTF::Optional::Optional): (WTF::Optional::operator=): * wtf/RefPtr.h: (WTF::=): * wtf/RetainPtr.h: (WTF::=): * wtf/RunLoop.cpp: (WTF::RunLoop::dispatch): * wtf/SharedTask.h: (WTF::createSharedTask): * wtf/StdLibExtras.h: (WTF::move): Deleted. * wtf/Threading.cpp: (WTF::threadEntryPoint): (WTF::createThread): * wtf/Vector.h: (WTF::Vector::takeLast): * wtf/efl/DispatchQueueEfl.cpp: (DispatchQueue::dispatch): (DispatchQueue::setSocketEventHandler): (DispatchQueue::performTimerWork): (DispatchQueue::insertTimerWorkItem): * wtf/efl/DispatchQueueWorkItemEfl.h: (WorkItem::WorkItem): (TimerWorkItem::create): (TimerWorkItem::TimerWorkItem): * wtf/efl/WorkQueueEfl.cpp: (WorkQueue::registerSocketEventHandler): (WorkQueue::dispatch): (WorkQueue::dispatchAfter): * wtf/glib/GRefPtr.h: (WTF::=): * wtf/glib/WorkQueueGLib.cpp: (WTF::DispatchAfterContext::DispatchAfterContext): (WTF::WorkQueue::dispatchAfter): * wtf/text/AtomicString.h: (WTF::AtomicString::AtomicString): (WTF::AtomicString::operator=): * wtf/text/StringConcatenate.h: (WTF::tryMakeString): * wtf/text/WTFString.cpp: (WTF::String::isolatedCopy): * wtf/text/WTFString.h: (WTF::String::String): (WTF::StringCapture::releaseString): * wtf/win/GDIObject.h: (WTF::=): Tools: * DumpRenderTree/TestRunner.h: (TestRunner::setAllowedHosts): * DumpRenderTree/win/DRTDataObject.cpp: (DRTDataObject::SetData): * TestWebKitAPI/Tests/WTF/Deque.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashMap.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/HashSet.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/NakedPtr.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Ref.cpp: (TestWebKitAPI::passWithRef): (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/RefPtr.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/Vector.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/WTFString.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: (TestWebKitAPI::createTestValue): (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp: (TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter): (TestWebKitAPI::InMemoryCompiledContentExtension::create): (TestWebKitAPI::InMemoryCompiledContentExtension::InMemoryCompiledContentExtension): (TestWebKitAPI::createNFAs): (TestWebKitAPI::TEST_F): * TestWebKitAPI/Tests/WebCore/DFACombiner.cpp: (TestWebKitAPI::combine): * TestWebKitAPI/Tests/WebCore/DFAHelpers.h: (TestWebKitAPI::createNFAs): * TestWebKitAPI/Tests/WebKit2/cocoa/WeakObjCPtr.mm: (TEST): * TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp: (WebProcessTest::add): Canonical link: https://commits.webkit.org/170734@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194496 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-01-02 08:03:08 +00:00
preload(WTFMove(request));
Enable the preload scanner on the background parser thread https://bugs.webkit.org/show_bug.cgi?id=108027 Reviewed by Tony Gentilcore. The patch causes us to pass all the fast/preloader tests with the threaded parser enabled. This patch wires up the BackgroundHTMLParser to the TokenPreloadScanner. Currently, we bail out of preload scanning if we encounter a document.write becaues we don't know how to rewind the preload scanner, but that's something we can tune in the future. The BackgroundHTMLParser delivers the preloads to the HTMLDocumentParser together with the token stream. If the HTMLDocumentParser isn't able to use the token stream immediately, it kicks off the preloads. * html/parser/BackgroundHTMLParser.cpp: (WebCore::checkThatPreloadsAreSafeToSendToAnotherThread): (WebCore::BackgroundHTMLParser::BackgroundHTMLParser): (WebCore::BackgroundHTMLParser::resumeFrom): (WebCore::BackgroundHTMLParser::pumpTokenizer): (WebCore::BackgroundHTMLParser::sendTokensToMainThread): * html/parser/BackgroundHTMLParser.h: (Configuration): - We need to add a struct for the create function because the number of arguments exceeds the limits of Functional.h. (BackgroundHTMLParser): (WebCore::BackgroundHTMLParser::create): * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::scanCommon): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): - We need to use a new string here so that the string is safe to send to another thread. * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser): (WebCore::HTMLDocumentParser::startBackgroundParser): - Following the example of the XSSAuditor, we create the TokenPreloadScanner on the main thread and then send it to the background thread for operation. * html/parser/HTMLDocumentParser.h: (WebCore): (ParsedChunk): * html/parser/HTMLParserOptions.h: (HTMLParserOptions): - We need to add a default constructor so that the HTMLDocumentParser can create an empty BackgroundHTMLParser::Configuration struct. * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::scan): (WebCore::TokenPreloadScanner::scanCommon): (WebCore::HTMLPreloadScanner::scan): * html/parser/HTMLPreloadScanner.h: (TokenPreloadScanner): (WebCore::TokenPreloadScanner::isSafeToSendToAnotherThread): * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::takeAndPreload): (WebCore): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): (WebCore): (HTMLResourcePreloader): Canonical link: https://commits.webkit.org/128264@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@143051 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-15 22:14:31 +00:00
}
Modernize HTML parser code https://bugs.webkit.org/show_bug.cgi?id=127236 Reviewed by Andreas Kling. * html/parser/AtomicHTMLToken.h: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::emitRule): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::detach): (WebCore::HTMLDocumentParser::stopParsing): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution): * html/parser/HTMLDocumentParser.h: * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::ElementRecord::ElementRecord): (WebCore::HTMLElementStack::insertAbove): (WebCore::HTMLElementStack::pushCommon): * html/parser/HTMLElementStack.h: (WebCore::HTMLElementStack::ElementRecord::releaseNext): (WebCore::HTMLElementStack::ElementRecord::setNext): * html/parser/HTMLMetaCharsetParser.cpp: (WebCore::HTMLMetaCharsetParser::HTMLMetaCharsetParser): * html/parser/HTMLMetaCharsetParser.h: * html/parser/HTMLParserScheduler.h: * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::scan): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): * html/parser/HTMLPreloadScanner.h: * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::takeAndPreload): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: (WebCore::PreloadRequest::PreloadRequest): * html/parser/HTMLScriptRunner.h: * html/parser/HTMLToken.h: (WebCore::HTMLToken::beginDOCTYPE): (WebCore::HTMLToken::releaseDoctypeData): * html/parser/HTMLTokenizer.h: * html/parser/HTMLTreeBuilder.h: * html/parser/HTMLViewSourceParser.cpp: (WebCore::HTMLViewSourceParser::HTMLViewSourceParser): * html/parser/HTMLViewSourceParser.h: * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::init): (WebCore::XSSAuditor::filterToken): * html/parser/XSSAuditor.h: * html/parser/XSSAuditorDelegate.h: (WebCore::XSSInfo::XSSInfo): * loader/TextResourceDecoder.cpp: (WebCore::TextResourceDecoder::checkForHeadCharset): (WebCore::TextResourceDecoder::checkForMetaCharset): * loader/TextResourceDecoder.h: Canonical link: https://commits.webkit.org/145234@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@162275 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-01-18 22:48:46 +00:00
void HTMLResourcePreloader::preload(std::unique_ptr<PreloadRequest> preload)
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
{
ASSERT(m_document.frame());
ASSERT(m_document.renderView());
[preload] Add media and type attribute support. https://bugs.webkit.org/show_bug.cgi?id=171720 Reviewed by Youenn Fablet. Source/WebCore: Tests: http/wpt/preload/media-attribute.html http/wpt/preload/type-attribute.html http/tests/preload/viewport/meta-viewport-link-headers.php * css/MediaQueryEvaluator.cpp: Move the mediaAttributeMatches code from HTMLResourcePreloader to a central location. (WebCore::MediaQueryEvaluator::mediaAttributeMatches): * css/MediaQueryEvaluator.h: * html/HTMLImageElement.cpp: (WebCore::HTMLImageElement::bestFitSourceFromPictureElement): Use isSupportedImageOrSVGMIMEType() instead of checking SVG MIME type specifically. * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::process): Call loadLink() with the media and type attributes. * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::pumpTokenizer): Trigger Link header based preload for links that have the media attribute. * html/parser/HTMLPreloadScanner.cpp: (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): Avoid preloading link resources with non-matching type. (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): Collect the type attribute for link resources. * html/parser/HTMLResourcePreloader.cpp: (WebCore::HTMLResourcePreloader::preload): Use MediaQueryEvaluator::mediaAttributeMatches instead of the local one. (WebCore::mediaAttributeMatches): Deleted. * loader/FrameLoader.cpp: (WebCore::FrameLoader::receivedFirstData): Indicate that only link preloads with no media attribute should be loaded here. * loader/LinkLoader.cpp: (WebCore::LinkLoader::loadLinksFromHeader): Load only links with or without media attributes, according to mode. Also send media and type attributes to preloadIfNeeded(). (WebCore::LinkLoader::isSupportedType): Check if the MIME type is supported for the CachedResource::Type. (WebCore::LinkLoader::preloadIfNeeded): Get the media and type attributes and only trigger a preload if media matches and type is supported. (WebCore::LinkLoader::loadLink): Pass along the media and type attributes. * loader/LinkLoader.h: * platform/MIMETypeRegistry.cpp: (WebCore::MIMETypeRegistry::isSupportedImageOrSVGMIMEType): Check if MIME type is supported for an image, or is an SVG mime type. (WebCore::MIMETypeRegistry::isSupportedStyleSheetMIMEType): Check if MIME type is supported for a stylesheet. (WebCore::MIMETypeRegistry::isSupportedFontMIMEType): Check if MIME type is supported for a font. (WebCore::MIMETypeRegistry::isSupportedTextTrackMIMEType): Check if MIME type is supported for a text track. * platform/MIMETypeRegistry.h: LayoutTests: * TestExpectations: Skip http/tests/preload/viewport as meta viewport is turned off in most platforms. * http/wpt/preload/media-attribute-expected.txt: Added. * http/wpt/preload/media-attribute.html: Added. * http/wpt/preload/type-attribute-expected.txt: Added. * http/wpt/preload/type-attribute.html: Added. * http/wpt/preload/resources/square.png: Added. * http/wpt/preload/resources/dummy.js: Added. * http/tests/preload/viewport/meta-viewport-link-headers-expected.txt: Added. * http/tests/preload/viewport/meta-viewport-link-headers.php: Added. * platform/ios-simulator/TestExpectations: Turn on http/tests/preload/viewport for ios-simulator. * platform/ios/TestExpectations: Turn on http/tests/preload/viewport for ios. Canonical link: https://commits.webkit.org/189372@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@217247 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-05-22 22:03:18 +00:00
if (!preload->media().isEmpty() && !MediaQueryEvaluator::mediaAttributeMatches(m_document, preload->media()))
PreloadScanner preloads external CSS with non-matching media attribute https://bugs.webkit.org/show_bug.cgi?id=106198 Patch by Yoav Weiss <yoav@yoav.ws> on 2013-08-03 Reviewed by Dean Jackson. Source/WebCore: Test: http/tests/loading/preload-css-test.html * html/parser/HTMLPreloadScanner.cpp: Remove m_linkMediaAttributeIsScreen Remove MediaQueryEvaluator calls Add m_mediaAttribute that gets the value of the "media" attribute Pass m_mediaAttribute to PreloadRequest (WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner): (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): (WebCore::TokenPreloadScanner::StartTagScanner::resourceType): (WebCore::TokenPreloadScanner::StartTagScanner::shouldPreload): * html/parser/HTMLResourcePreloader.cpp: Add MediaQueryEvaluator calls to see if "media" matches Perform preload only to resource with a matching media (if media exists) (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::mediaAttributeMatches): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Add a constructor with a mediaAttribute value Add m_mediaAttribute & its getter. (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::media): (WebCore::PreloadRequest::PreloadRequest): LayoutTests: * http/tests/loading/preload-css-test-expected.txt: Added. * http/tests/loading/preload-css-test.html: Added. * http/tests/loading/resources/big_mq.css: Added. * http/tests/loading/resources/small_mq.css: Added. * http/tests/local/link-stylesheet-load-order-preload-expected.txt: Canonical link: https://commits.webkit.org/137420@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-08-03 13:43:24 +00:00
return;
m_document.cachedResourceLoader().preload(preload->resourceType(), preload->resourceRequest(m_document));
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
}
PreloadScanner preloads external CSS with non-matching media attribute https://bugs.webkit.org/show_bug.cgi?id=106198 Patch by Yoav Weiss <yoav@yoav.ws> on 2013-08-03 Reviewed by Dean Jackson. Source/WebCore: Test: http/tests/loading/preload-css-test.html * html/parser/HTMLPreloadScanner.cpp: Remove m_linkMediaAttributeIsScreen Remove MediaQueryEvaluator calls Add m_mediaAttribute that gets the value of the "media" attribute Pass m_mediaAttribute to PreloadRequest (WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner): (WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest): (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): (WebCore::TokenPreloadScanner::StartTagScanner::resourceType): (WebCore::TokenPreloadScanner::StartTagScanner::shouldPreload): * html/parser/HTMLResourcePreloader.cpp: Add MediaQueryEvaluator calls to see if "media" matches Perform preload only to resource with a matching media (if media exists) (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::mediaAttributeMatches): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Add a constructor with a mediaAttribute value Add m_mediaAttribute & its getter. (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::media): (WebCore::PreloadRequest::PreloadRequest): LayoutTests: * http/tests/loading/preload-css-test-expected.txt: Added. * http/tests/loading/preload-css-test.html: Added. * http/tests/loading/resources/big_mq.css: Added. * http/tests/loading/resources/small_mq.css: Added. * http/tests/local/link-stylesheet-load-order-preload-expected.txt: Canonical link: https://commits.webkit.org/137420@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-08-03 13:43:24 +00:00
Make the existing HTMLPreloadScanner threading-aware https://bugs.webkit.org/show_bug.cgi?id=107807 Reviewed by Adam Barth. The HTMLPreloadScanner and CSSPreloadScanner do a number of things. CSSPreloadScanner is mostly just a helper class for HTMLPreloadScanner. HTMLPreloadScanner runs its own copy of the HTMLTokenizer and uses HTMLTokenizer::updateStateFor to emulate enough of the TreeBuilder to get a realistic stream of tokens. It does some additional TreeBuilder emulation, including tracking template tags and base tags, but mostly just scans the token stream for start-tags and looks for URLs in them. It tracks when it has seen a <style> tag and starts sending all character tokens to the CSSPreloadScanner until a </style> tag is seen. It also (unfortunately) knows some about the loader guts and how to construct a proper CachedResourcRequest and issue a preload. This patch changes the model so that the preload scanners only know how to produce PreloadRequest objects and append them to a passed-in vector. This changes the preload-scanner behavior so that preloads are now all issued in one large batch at the end of scanning, instead of as we hit each resource. It's possible that we'll wait to instead check for preload requests more often, at a possible tradeoff to tokenizing speed. An alternate approach might be to pass in a preload-delegate of sorts which knew how to either build a vector, or send requests immediately. For now the build-a-vector-always approach seems clean, and does not seem to slow down our PerformanceTest microbenchmarks at least. This patch has 2 main pieces: - Remove Document and (and loader) dependencies from HTMLPreloadScanner/CSSPreloadScanner This is done through introduction of a new HTMLResourcePreloader class which holds a Document* and knows how to talk to the CachedResourceLoader. - Clean-up HTMLPreloadScanners token-loop to not be tied to having a Tokenizer. (On a background thead, the HTMLPreloadScanner won't own the tokenizer, it will just be passed in tokens and expected to issue loads if necessary.) This passes all of the LayoutTests using the main thread parser. This patch does not make the HTMLPreloadScanner 100% ready for threading (it still uses AtomicString which is currently not-OK on the parser thread) but it's very close. Two further (already written) patches will complete this. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.vcxproj/WebCore.vcxproj: * WebCore.xcodeproj/project.pbxproj: * html/parser/CSSPreloadScanner.cpp: (WebCore::CSSPreloadScanner::CSSPreloadScanner): (WebCore::CSSPreloadScanner::scan): (WebCore::CSSPreloadScanner::emitRule): * html/parser/CSSPreloadScanner.h: (CSSPreloadScanner): * html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::HTMLDocumentParser): (WebCore::HTMLDocumentParser::pumpTokenizer): (WebCore::HTMLDocumentParser::insert): (WebCore::HTMLDocumentParser::append): (WebCore::HTMLDocumentParser::appendCurrentInputStreamToPreloadScannerAndScan): * html/parser/HTMLDocumentParser.h: (HTMLDocumentParser): * html/parser/HTMLPreloadScanner.cpp: (WebCore::isStartTag): (WebCore): (WebCore::isStartOrEndTag): (WebCore::PreloadTask::processAttributes): (WebCore::PreloadTask::charset): (PreloadTask): (WebCore::PreloadTask::resourceType): (WebCore::PreloadTask::shouldPreload): (WebCore::PreloadTask::createPreloadRequest): (WebCore::HTMLPreloadScanner::HTMLPreloadScanner): (WebCore::HTMLPreloadScanner::scan): (WebCore::HTMLPreloadScanner::processPossibleTemplateTag): (WebCore::HTMLPreloadScanner::processPossibleStyleTag): (WebCore::HTMLPreloadScanner::processPossibleBaseTag): (WebCore::HTMLPreloadScanner::processToken): * html/parser/HTMLPreloadScanner.h: (HTMLPreloadScanner): * html/parser/HTMLResourcePreloader.cpp: Added. (WebCore): (WebCore::isStringSafeToSendToAnotherThread): (WebCore::PreloadRequest::isSafeToSendToAnotherThread): (WebCore::PreloadRequest::completeURL): (WebCore::PreloadRequest::resourceRequest): (WebCore::HTMLResourcePreloader::preload): * html/parser/HTMLResourcePreloader.h: Added. (WebCore): (PreloadRequest): (WebCore::PreloadRequest::create): (WebCore::PreloadRequest::PreloadRequest): (HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::HTMLResourcePreloader): (WebCore::HTMLResourcePreloader::createWeakPtr): * loader/cache/CachedResourceRequest.h: Canonical link: https://commits.webkit.org/127668@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@142427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-02-11 05:14:03 +00:00
}