<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[238771] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/238771">238771</a></dd>
<dt>Author</dt> <dd>keith_miller@apple.com</dd>
<dt>Date</dt> <dd>2018-11-30 19:28:36 -0800 (Fri, 30 Nov 2018)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move URL from WebCore to WTF
https://bugs.webkit.org/show_bug.cgi?id=190234

Patch by Alex Christensen <achristensen@webkit.org> on 2018-11-30
Reviewed by Keith Miller.

Source/WebCore:

A URL is a low-level concept that does not depend on other classes in WebCore.
We are starting to use URLs in JavaScriptCore for modules.
I need URL and URLParser in a place with fewer dependencies for rdar://problem/44119696

* Modules/applepay/ApplePaySession.h:
* Modules/applepay/ApplePayValidateMerchantEvent.h:
* Modules/applepay/PaymentCoordinator.cpp:
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentCoordinatorClient.h:
* Modules/applepay/PaymentSession.h:
* Modules/applicationmanifest/ApplicationManifest.h:
* Modules/beacon/NavigatorBeacon.cpp:
* Modules/cache/DOMCache.cpp:
* Modules/fetch/FetchLoader.h:
* Modules/mediasession/MediaSessionMetadata.h:
* Modules/mediasource/MediaSourceRegistry.cpp:
* Modules/mediasource/MediaSourceRegistry.h:
* Modules/mediastream/MediaStream.cpp:
* Modules/mediastream/MediaStreamRegistry.cpp:
* Modules/mediastream/MediaStreamRegistry.h:
* Modules/navigatorcontentutils/NavigatorContentUtilsClient.h:
* Modules/notifications/Notification.h:
* Modules/paymentrequest/MerchantValidationEvent.h:
* Modules/paymentrequest/PaymentRequest.h:
* Modules/plugins/PluginReplacement.h:
* Modules/webaudio/AudioContext.h:
* Modules/websockets/ThreadableWebSocketChannel.h:
* Modules/websockets/WebSocket.h:
* Modules/websockets/WebSocketHandshake.cpp:
* Modules/websockets/WebSocketHandshake.h:
* Modules/websockets/WorkerThreadableWebSocketChannel.h:
* PlatformMac.cmake:
* PlatformWin.cmake:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/CachedModuleScriptLoader.h:
* bindings/js/CachedScriptFetcher.h:
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeIfJavaScriptURL):
* bindings/js/ScriptController.h:
* bindings/js/ScriptModuleLoader.h:
* bindings/js/ScriptSourceCode.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
* bindings/scripts/test/JS/JSMapLike.cpp:
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestException.cpp:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
* bindings/scripts/test/JS/JSTestIterable.cpp:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
* bindings/scripts/test/JS/JSTestSerialization.cpp:
* bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestStringifier.cpp:
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad):
(WebCore::ContentExtensions::applyBlockedStatusToRequest):
* contentextensions/ContentExtensionsBackend.h:
* css/CSSValue.h:
* css/StyleProperties.h:
* css/StyleResolver.h:
* css/StyleSheet.h:
* css/StyleSheetContents.h:
* css/parser/CSSParserContext.h:
(WebCore::CSSParserContextHash::hash):
(WTF::HashTraits<WebCore::CSSParserContext>::constructDeletedValue):
* css/parser/CSSParserIdioms.h:
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::setDataFromItemList):
* dom/Document.cpp:
(WebCore::Document::setURL):
(WebCore::Document::processHttpEquiv):
(WebCore::Document::completeURL const):
(WebCore::Document::ensureTemplateDocument):
* dom/Document.h:
(WebCore::Document::urlForBindings const):
* dom/Element.cpp:
(WebCore::Element::isJavaScriptURLAttribute const):
* dom/InlineStyleSheetOwner.cpp:
(WebCore::parserContextForElement):
* dom/Node.cpp:
(WebCore::Node::baseURI const):
* dom/Node.h:
* dom/ScriptElement.h:
* dom/ScriptExecutionContext.h:
* dom/SecurityContext.h:
* editing/Editor.cpp:
(WebCore::Editor::pasteboardWriterURL):
* editing/Editor.h:
* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):
* editing/cocoa/DataDetection.h:
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::userVisibleString):
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::replaceRichContentWithAttachments):
(WebCore::WebContentReader::readWebArchive):
* editing/mac/EditorMac.mm:
(WebCore::Editor::plainTextFromPasteboard):
(WebCore::Editor::writeImageToPasteboard):
* editing/markup.cpp:
(WebCore::removeSubresourceURLAttributes):
(WebCore::createFragmentFromMarkup):
* editing/markup.h:
* fileapi/AsyncFileStream.cpp:
* fileapi/AsyncFileStream.h:
* fileapi/Blob.h:
* fileapi/BlobURL.cpp:
* fileapi/BlobURL.h:
* fileapi/File.h:
* fileapi/FileReaderLoader.h:
* fileapi/ThreadableBlobRegistry.h:
* history/CachedFrame.h:
* history/HistoryItem.h:
* html/DOMURL.cpp:
(WebCore::DOMURL::create):
* html/DOMURL.h:
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::archiveResourceURL):
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::isURLAllowed const):
(WebCore::HTMLFrameElementBase::openURL):
(WebCore::HTMLFrameElementBase::setLocation):
* html/HTMLInputElement.h:
* html/HTMLLinkElement.h:
* html/HTMLMediaElement.cpp:
(WTF::LogArgument<URL>::toString):
(WTF::LogArgument<WebCore::URL>::toString): Deleted.
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::allowedToLoadFrameURL):
* html/ImageBitmap.h:
* html/MediaFragmentURIParser.h:
* html/PublicURLManager.cpp:
* html/PublicURLManager.h:
* html/URLInputType.cpp:
* html/URLRegistry.h:
* html/URLSearchParams.cpp:
(WebCore::URLSearchParams::URLSearchParams):
(WebCore::URLSearchParams::toString const):
(WebCore::URLSearchParams::updateURL):
(WebCore::URLSearchParams::updateFromAssociatedURL):
* html/URLUtils.h:
(WebCore::URLUtils<T>::setHost):
(WebCore::URLUtils<T>::setPort):
* html/canvas/CanvasRenderingContext.cpp:
* html/canvas/CanvasRenderingContext.h:
* html/parser/HTMLParserIdioms.cpp:
* html/parser/XSSAuditor.cpp:
(WebCore::semicolonSeparatedValueContainsJavaScriptURL):
(WebCore::XSSAuditor::filterScriptToken):
(WebCore::XSSAuditor::filterObjectToken):
(WebCore::XSSAuditor::filterParamToken):
(WebCore::XSSAuditor::filterEmbedToken):
(WebCore::XSSAuditor::filterFormToken):
(WebCore::XSSAuditor::filterInputToken):
(WebCore::XSSAuditor::filterButtonToken):
(WebCore::XSSAuditor::eraseDangerousAttributesIfInjected):
(WebCore::XSSAuditor::isLikelySafeResource):
* html/parser/XSSAuditor.h:
* html/parser/XSSAuditorDelegate.h:
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::openInNewTab):
* inspector/InspectorInstrumentation.h:
* inspector/agents/InspectorNetworkAgent.cpp:
* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorWorkerAgent.h:
* loader/ApplicationManifestLoader.h:
* loader/CookieJar.h:
* loader/CrossOriginAccessControl.h:
* loader/CrossOriginPreflightResultCache.h:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::maybeLoadEmpty):
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::serverRedirectSourceForHistory const):
* loader/DocumentWriter.h:
* loader/FormSubmission.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::submitForm):
(WebCore::FrameLoader::receivedFirstData):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
(WebCore::createWindow):
* loader/FrameLoaderClient.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::currentItemShouldBeReplaced const):
(WebCore::HistoryController::initializeItem):
* loader/LinkLoader.h:
* loader/LoadTiming.h:
* loader/LoaderStrategy.h:
* loader/MixedContentChecker.cpp:
(WebCore::MixedContentChecker::checkFormForMixedContent const):
* loader/MixedContentChecker.h:
* loader/NavigationScheduler.cpp:
(WebCore::NavigationScheduler::shouldScheduleNavigation const):
* loader/NavigationScheduler.h:
* loader/PingLoader.h:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy):
* loader/ResourceLoadInfo.h:
* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
* loader/ResourceLoadObserver.h:
* loader/ResourceLoadStatistics.h:
* loader/ResourceLoader.h:
* loader/ResourceTiming.h:
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::requestFrame):
* loader/SubframeLoader.h:
* loader/SubstituteData.h:
* loader/appcache/ApplicationCache.h:
* loader/appcache/ApplicationCacheGroup.h:
* loader/appcache/ApplicationCacheHost.h:
* loader/appcache/ApplicationCacheStorage.cpp:
* loader/appcache/ApplicationCacheStorage.h:
* loader/appcache/ManifestParser.cpp:
* loader/appcache/ManifestParser.h:
* loader/archive/ArchiveResourceCollection.h:
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createFromSelection):
* loader/cache/CachedResource.cpp:
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedStyleSheetClient.h:
* loader/cache/MemoryCache.h:
* loader/icon/IconLoader.h:
* loader/mac/LoaderNSURLExtras.mm:
* page/CaptionUserPreferencesMediaAF.cpp:
* page/ChromeClient.h:
* page/ClientOrigin.h:
* page/ContextMenuClient.h:
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::checkOrEnableIfNeeded const):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::isInsecureScriptAccess):
* page/DragController.cpp:
(WebCore::DragController::startDrag):
* page/DragController.h:
* page/EventSource.h:
* page/Frame.h:
* page/FrameView.h:
* page/History.h:
* page/Location.cpp:
(WebCore::Location::url const):
(WebCore::Location::reload):
* page/Location.h:
* page/Page.h:
* page/PageSerializer.h:
* page/Performance.h:
* page/PerformanceResourceTiming.cpp:
* page/SecurityOrigin.cpp:
(WebCore::SecurityOrigin::SecurityOrigin):
(WebCore::SecurityOrigin::create):
* page/SecurityOrigin.h:
* page/SecurityOriginData.h:
* page/SecurityOriginHash.h:
* page/SecurityPolicy.cpp:
(WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner):
* page/SecurityPolicy.h:
* page/SettingsBase.h:
* page/ShareData.h:
* page/SocketProvider.h:
* page/UserContentProvider.h:
* page/UserContentURLPattern.cpp:
* page/UserContentURLPattern.h:
* page/UserScript.h:
* page/UserStyleSheet.h:
* page/VisitedLinkStore.h:
* page/csp/ContentSecurityPolicy.h:
* page/csp/ContentSecurityPolicyClient.h:
* page/csp/ContentSecurityPolicyDirectiveList.h:
* page/csp/ContentSecurityPolicySource.cpp:
(WebCore::ContentSecurityPolicySource::portMatches const):
* page/csp/ContentSecurityPolicySource.h:
* page/csp/ContentSecurityPolicySourceList.cpp:
* page/csp/ContentSecurityPolicySourceList.h:
* page/csp/ContentSecurityPolicySourceListDirective.cpp:
* platform/ContentFilterUnblockHandler.h:
* platform/ContextMenuItem.h:
* platform/Cookie.h:
* platform/CookiesStrategy.h:
* platform/DragData.h:
* platform/DragImage.h:
* platform/FileStream.h:
* platform/LinkIcon.h:
* platform/Pasteboard.cpp:
(WebCore::Pasteboard::canExposeURLToDOMWhenPasteboardContainsFiles):
* platform/Pasteboard.h:
* platform/PasteboardStrategy.h:
* platform/PasteboardWriterData.cpp:
(WebCore::PasteboardWriterData::setURLData):
(WebCore::PasteboardWriterData::setURL): Deleted.
* platform/PasteboardWriterData.h:
* platform/PlatformPasteboard.h:
* platform/PromisedAttachmentInfo.h:
* platform/SSLKeyGenerator.h:
* platform/SchemeRegistry.cpp:
(WebCore::SchemeRegistry::isBuiltinScheme):
* platform/SharedBuffer.h:
* platform/SharedStringHash.cpp:
* platform/SharedStringHash.h:
* platform/SourcesSoup.txt:
* platform/UserAgent.h:
* platform/UserAgentQuirks.cpp:
* platform/UserAgentQuirks.h:
* platform/cocoa/NetworkExtensionContentFilter.h:
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::willSendRequest):
* platform/glib/SSLKeyGeneratorGLib.cpp: Copied from Source/WebCore/page/ShareData.h.
(WebCore::getSupportedKeySizes):
(WebCore::signedPublicKeyAndChallengeString):
* platform/glib/UserAgentGLib.cpp:
* platform/graphics/GraphicsContext.h:
* platform/graphics/Image.cpp:
* platform/graphics/Image.h:
* platform/graphics/ImageObserver.h:
* platform/graphics/ImageSource.cpp:
* platform/graphics/ImageSource.h:
* platform/graphics/MediaPlayer.h:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
* platform/graphics/cg/GraphicsContextCG.cpp:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcSetUri):
* platform/graphics/iso/ISOVTTCue.cpp:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
* platform/gtk/DragImageGtk.cpp:
* platform/gtk/PasteboardGtk.cpp:
* platform/gtk/PlatformPasteboardGtk.cpp:
* platform/gtk/SelectionData.h:
* platform/ios/PasteboardIOS.mm:
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write):
* platform/ios/QuickLook.h:
* platform/mac/DragDataMac.mm:
(WebCore::DragData::asPlainText const):
* platform/mac/DragImageMac.mm:
* platform/mac/FileSystemMac.mm:
(WebCore::FileSystem::setMetadataURL):
* platform/mac/PasteboardMac.mm:
* platform/mac/PasteboardWriter.mm:
(WebCore::createPasteboardWriter):
* platform/mac/PlatformPasteboardMac.mm:
* platform/mac/PublicSuffixMac.mm:
(WebCore::decodeHostName):
* platform/mac/SSLKeyGeneratorMac.mm:
* platform/mac/WebCoreNSURLExtras.h:
* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::isArmenianLookalikeCharacter): Deleted.
(WebCore::isArmenianScriptCharacter): Deleted.
(WebCore::isASCIIDigitOrValidHostCharacter): Deleted.
(WebCore::isLookalikeCharacter): Deleted.
(WebCore::whiteListIDNScript): Deleted.
(WebCore::readIDNScriptWhiteListFile): Deleted.
(WebCore::allCharactersInIDNScriptWhiteList): Deleted.
(WebCore::isSecondLevelDomainNameAllowedByTLDRules): Deleted.
(WebCore::isRussianDomainNameCharacter): Deleted.
(WebCore::allCharactersAllowedByTLDRules): Deleted.
(WebCore::mapHostNameWithRange): Deleted.
(WebCore::hostNameNeedsDecodingWithRange): Deleted.
(WebCore::hostNameNeedsEncodingWithRange): Deleted.
(WebCore::decodeHostNameWithRange): Deleted.
(WebCore::encodeHostNameWithRange): Deleted.
(WebCore::decodeHostName): Deleted.
(WebCore::encodeHostName): Deleted.
(WebCore::collectRangesThatNeedMapping): Deleted.
(WebCore::collectRangesThatNeedEncoding): Deleted.
(WebCore::collectRangesThatNeedDecoding): Deleted.
(WebCore::applyHostNameFunctionToMailToURLString): Deleted.
(WebCore::applyHostNameFunctionToURLString): Deleted.
(WebCore::mapHostNames): Deleted.
(WebCore::stringByTrimmingWhitespace): Deleted.
(WebCore::URLByTruncatingOneCharacterBeforeComponent): Deleted.
(WebCore::URLByRemovingResourceSpecifier): Deleted.
(WebCore::URLWithData): Deleted.
(WebCore::dataWithUserTypedString): Deleted.
(WebCore::URLWithUserTypedString): Deleted.
(WebCore::URLWithUserTypedStringDeprecated): Deleted.
(WebCore::hasQuestionMarkOnlyQueryString): Deleted.
(WebCore::dataForURLComponentType): Deleted.
(WebCore::URLByRemovingComponentAndSubsequentCharacter): Deleted.
(WebCore::URLByRemovingUserInfo): Deleted.
(WebCore::originalURLData): Deleted.
(WebCore::createStringWithEscapedUnsafeCharacters): Deleted.
(WebCore::userVisibleString): Deleted.
(WebCore::isUserVisibleURL): Deleted.
(WebCore::rangeOfURLScheme): Deleted.
(WebCore::looksLikeAbsoluteURL): Deleted.
* platform/mediastream/MediaEndpointConfiguration.h:
* platform/network/BlobPart.h:
* platform/network/BlobRegistry.h:
* platform/network/BlobRegistryImpl.h:
* platform/network/BlobResourceHandle.cpp:
* platform/network/CookieRequestHeaderFieldProxy.h:
* platform/network/CredentialStorage.cpp:
* platform/network/CredentialStorage.h:
* platform/network/DataURLDecoder.cpp:
* platform/network/DataURLDecoder.h:
* platform/network/FormData.h:
* platform/network/ProxyServer.h:
* platform/network/ResourceErrorBase.h:
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::didReceiveResponse):
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleClient.h:
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::redirectedRequest const):
* platform/network/ResourceRequestBase.h:
* platform/network/ResourceResponseBase.h:
* platform/network/SocketStreamHandle.h:
* platform/network/cf/DNSResolveQueueCFNet.cpp:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
* platform/network/cf/ProxyServerCFNet.cpp:
* platform/network/cf/ResourceErrorCF.cpp:
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
* platform/network/curl/CookieJarCurlDatabase.cpp: Added.
(WebCore::cookiesForSession):
(WebCore::CookieJarCurlDatabase::setCookiesFromDOM const):
(WebCore::CookieJarCurlDatabase::setCookiesFromHTTPResponse const):
(WebCore::CookieJarCurlDatabase::cookiesForDOM const):
(WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const):
(WebCore::CookieJarCurlDatabase::cookiesEnabled const):
(WebCore::CookieJarCurlDatabase::getRawCookies const):
(WebCore::CookieJarCurlDatabase::deleteCookie const):
(WebCore::CookieJarCurlDatabase::getHostnamesWithCookies const):
(WebCore::CookieJarCurlDatabase::deleteCookiesForHostnames const):
(WebCore::CookieJarCurlDatabase::deleteAllCookies const):
(WebCore::CookieJarCurlDatabase::deleteAllCookiesModifiedSince const):
* platform/network/curl/CookieJarDB.cpp:
* platform/network/curl/CookieUtil.h:
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlProxySettings.h:
* platform/network/curl/CurlResponse.h:
* platform/network/curl/NetworkStorageSessionCurl.cpp:
* platform/network/curl/ProxyServerCurl.cpp:
* platform/network/curl/SocketStreamHandleImplCurl.cpp:
* platform/network/mac/ResourceErrorMac.mm:
* platform/network/soup/NetworkStorageSessionSoup.cpp:
* platform/network/soup/ProxyServerSoup.cpp:
* platform/network/soup/ResourceHandleSoup.cpp:
* platform/network/soup/ResourceRequest.h:
* platform/network/soup/ResourceRequestSoup.cpp:
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
* platform/network/soup/SoupNetworkSession.cpp:
* platform/network/soup/SoupNetworkSession.h:
* platform/text/TextEncoding.h:
* platform/win/BString.cpp:
* platform/win/BString.h:
* platform/win/ClipboardUtilitiesWin.cpp:
(WebCore::markupToCFHTML):
* platform/win/ClipboardUtilitiesWin.h:
* platform/win/DragImageWin.cpp:
* platform/win/PasteboardWin.cpp:
* plugins/PluginData.h:
* rendering/HitTestResult.h:
* rendering/RenderAttachment.cpp:
* svg/SVGImageLoader.cpp:
(WebCore::SVGImageLoader::sourceURI const):
* svg/SVGURIReference.cpp:
* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageCache.h:
* svg/graphics/SVGImageForContainer.h:
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
* testing/Internals.mm:
(WebCore::Internals::userVisibleString):
* testing/MockContentFilter.cpp:
(WebCore::MockContentFilter::willSendRequest):
* testing/MockPaymentCoordinator.cpp:
* testing/js/WebCoreTestSupport.cpp:
* workers/AbstractWorker.h:
* workers/WorkerGlobalScope.h:
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerInspectorProxy.h:
* workers/WorkerLocation.h:
* workers/WorkerScriptLoader.h:
* workers/WorkerThread.cpp:
* workers/WorkerThread.h:
* workers/service/ServiceWorker.h:
* workers/service/ServiceWorkerClientData.h:
* workers/service/ServiceWorkerContainer.cpp:
* workers/service/ServiceWorkerContextData.h:
* workers/service/ServiceWorkerData.h:
* workers/service/ServiceWorkerJobData.h:
* workers/service/ServiceWorkerRegistrationKey.cpp:
* workers/service/ServiceWorkerRegistrationKey.h:
(WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::constructDeletedValue):
* worklets/WorkletGlobalScope.h:
* xml/XMLHttpRequest.h:

Source/WebKit:

* NetworkProcess/Cookies/WebCookieManager.cpp:
* NetworkProcess/Cookies/WebCookieManager.h:
* NetworkProcess/Cookies/WebCookieManager.messages.in:
* NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::publishDownloadProgress):
* NetworkProcess/Downloads/DownloadManager.h:
* NetworkProcess/Downloads/PendingDownload.cpp:
(WebKit::PendingDownload::publishProgress):
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
(WebKit::Download::publishProgress):
* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::registerBlobURL):
(WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
(WebKit::NetworkBlobRegistry::unregisterBlobURL):
(WebKit::NetworkBlobRegistry::blobSize):
(WebKit::NetworkBlobRegistry::filesInBlob):
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):
* NetworkProcess/NetworkDataTaskBlob.cpp:
* NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::setContentExtensionController):
(WebKit::NetworkLoadChecker::url const):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::writeBlobToFilePath):
(WebKit::NetworkProcess::publishDownloadProgress):
(WebKit::NetworkProcess::preconnectTo):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::logBlockedCookieInformation):
(WebKit::logCookieInformationInternal):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/NetworkSocketStream.cpp:
(WebKit::NetworkSocketStream::create):
* NetworkProcess/NetworkSocketStream.h:
* NetworkProcess/PingLoad.h:
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:
* NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::retrieveRecords):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCache.h:
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::retrieveRecords):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheStatistics.cpp:
(WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
(WebKit::NetworkCache::Statistics::recordRevalidationSuccess):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
(WebKit::NetworkCache::SubresourceInfo::firstPartyForCookies const):
* NetworkProcess/capture/NetworkCaptureEvent.cpp:
(WebKit::NetworkCapture::Request::operator WebCore::ResourceRequest const):
(WebKit::NetworkCapture::Response::operator WebCore::ResourceResponse const):
(WebKit::NetworkCapture::Error::operator WebCore::ResourceError const):
* NetworkProcess/capture/NetworkCaptureManager.cpp:
(WebKit::NetworkCapture::Manager::findBestFuzzyMatch):
(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
(WebKit::NetworkCapture::Manager::urlIdentifyingCommonDomain):
* NetworkProcess/capture/NetworkCaptureManager.h:
* NetworkProcess/capture/NetworkCaptureResource.cpp:
(WebKit::NetworkCapture::Resource::url):
(WebKit::NetworkCapture::Resource::queryParameters):
* NetworkProcess/capture/NetworkCaptureResource.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::deleteHSTSCacheForHostNames):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::openCFURLRef):
(WebKit::replacedNSWorkspace_launchApplicationAtURL_options_configuration_error):
* Shared/API/APIURL.h:
(API::URL::create):
(API::URL::equals):
(API::URL::URL):
(API::URL::url const):
(API::URL::parseURLIfNecessary const):
* Shared/API/APIUserContentURLPattern.h:
(API::UserContentURLPattern::matchesURL const):
* Shared/API/c/WKURLRequest.cpp:
* Shared/API/c/WKURLResponse.cpp:
* Shared/API/c/cf/WKURLCF.mm:
(WKURLCreateWithCFURL):
(WKURLCopyCFURL):
* Shared/API/glib/WebKitURIRequest.cpp:
* Shared/API/glib/WebKitURIResponse.cpp:
* Shared/APIWebArchiveResource.mm:
(API::WebArchiveResource::WebArchiveResource):
* Shared/AssistedNodeInformation.h:
* Shared/Cocoa/WKNSURLExtras.mm:
(-[NSURL _web_originalDataAsWTFString]):
(): Deleted.
* Shared/SessionState.h:
* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::itemIsInSameDocument const):
* Shared/WebCoreArgumentCoders.cpp:
* Shared/WebCoreArgumentCoders.h:
* Shared/WebErrors.h:
* Shared/WebHitTestResultData.cpp:
* Shared/cf/ArgumentCodersCF.cpp:
(IPC::encode):
(IPC::decode):
* Shared/gtk/WebErrorsGtk.cpp:
* Shared/ios/InteractionInformationAtPosition.h:
* UIProcess/API/APIHTTPCookieStore.h:
* UIProcess/API/APINavigation.cpp:
(API::Navigation::appendRedirectionURL):
* UIProcess/API/APINavigation.h:
(API::Navigation::takeRedirectChain):
* UIProcess/API/APINavigationAction.h:
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::signedPublicKeyAndChallengeString):
(API::NavigationClient::contentRuleListNotification):
(API::NavigationClient::webGLLoadPolicy const):
(API::NavigationClient::resolveWebGLLoadPolicy const):
* UIProcess/API/APIUIClient.h:
(API::UIClient::saveDataToFileInDownloadsFolder):
* UIProcess/API/APIUserScript.cpp:
(API::UserScript::generateUniqueURL):
* UIProcess/API/APIUserScript.h:
* UIProcess/API/APIUserStyleSheet.cpp:
(API::UserStyleSheet::generateUniqueURL):
* UIProcess/API/APIUserStyleSheet.h:
* UIProcess/API/C/WKOpenPanelResultListener.cpp:
(filePathsFromFileURLs):
* UIProcess/API/C/WKPage.cpp:
(WKPageLoadPlainTextStringWithUserData):
(WKPageSetPageUIClient):
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKPageGroup.cpp:
(WKPageGroupAddUserStyleSheet):
(WKPageGroupAddUserScript):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetResourceLoadStatisticsPrevalentResourceForDebugMode):
(WKWebsiteDataStoreSetStatisticsLastSeen):
(WKWebsiteDataStoreSetStatisticsPrevalentResource):
(WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
(WKWebsiteDataStoreIsStatisticsPrevalentResource):
(WKWebsiteDataStoreIsStatisticsVeryPrevalentResource):
(WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder):
(WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
(WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
(WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
(WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
(WKWebsiteDataStoreSetStatisticsGrandfathered):
(WKWebsiteDataStoreIsStatisticsGrandfathered):
(WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
(WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
(WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
(WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom):
(WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo):
(WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom):
* UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
* UIProcess/API/Cocoa/WKUserScript.mm:
(-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:userContentWorld:]):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
(-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]):
(-[WKWebViewConfiguration urlSchemeHandlerForURLScheme:]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
* UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(-[_WKApplicationManifest initWithCoder:]):
(+[_WKApplicationManifest applicationManifestFromJSON:manifestURL:documentURL:]):
* UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
(-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]):
* UIProcess/API/glib/IconDatabase.cpp:
* UIProcess/API/glib/WebKitCookieManager.cpp:
(webkit_cookie_manager_get_cookies):
* UIProcess/API/glib/WebKitFileChooserRequest.cpp:
* UIProcess/API/glib/WebKitSecurityOrigin.cpp:
(webkit_security_origin_new_for_uri):
* UIProcess/API/glib/WebKitUIClient.cpp:
* UIProcess/API/glib/WebKitURISchemeRequest.cpp:
* UIProcess/API/glib/WebKitWebView.cpp:
(webkit_web_view_load_plain_text):
* UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
(WebKit::WebPaymentCoordinatorProxy::validateMerchant):
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKPaymentRequest):
* UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
* UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::navigateBrowsingContext):
(WebKit::domainByAddingDotPrefixIfNeeded):
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
* UIProcess/Cocoa/DownloadClient.mm:
(WebKit::DownloadClient::didFinish):
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
(WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
(WebKit::NavigationState::NavigationClient::contentRuleListNotification):
(WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
(WebKit::NavigationState::NavigationClient::didPerformClientRedirect):
(WebKit::NavigationState::NavigationClient::signedPublicKeyAndChallengeString):
* UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Copied from Source/WebKit/WebProcess/Network/WebSocketProvider.h.
(WebKit::SafeBrowsingResult::SafeBrowsingResult):
* UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
(WebKit::reportAnErrorURL):
(WebKit::malwareDetailsURL):
(WebKit::safeBrowsingDetailsText):
(WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
(-[_WKPreviewControllerDataSource finish:]):
(WebKit::SystemPreviewController::finish):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPage):
(WebKit::UIDelegate::UIClient::saveDataToFileInDownloadsFolder):
(WebKit::requestUserMediaAuthorizationForDevices):
(WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
* UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
(-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):
* UIProcess/Cocoa/WKSafeBrowsingWarning.h:
* UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
(-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::showSafeBrowsingWarning):
(WebKit::WebViewImpl::writeToURLForFilePromiseProvider):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::publishProgress):
* UIProcess/Downloads/DownloadProxy.h:
(WebKit::DownloadProxy::setRedirectChain):
(WebKit::DownloadProxy::redirectChain const):
* UIProcess/FrameLoadState.cpp:
(WebKit::FrameLoadState::didStartProvisionalLoad):
(WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
(WebKit::FrameLoadState::didSameDocumentNotification):
(WebKit::FrameLoadState::setUnreachableURL):
* UIProcess/FrameLoadState.h:
(WebKit::FrameLoadState::url const):
(WebKit::FrameLoadState::setURL):
(WebKit::FrameLoadState::provisionalURL const):
(WebKit::FrameLoadState::unreachableURL const):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::writeBlobToFilePath):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/PageClient.h:
(WebKit::PageClient::showSafeBrowsingWarning):
* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::hasOnlySecureContent):
* UIProcess/Plugins/PluginInfoStore.cpp:
* UIProcess/Plugins/PluginInfoStore.h:
* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
* UIProcess/SafeBrowsingResult.h: Copied from Source/WebKit/UIProcess/SystemPreviewController.h.
(WebKit::SafeBrowsingResult::create):
(WebKit::SafeBrowsingResult::url const):
(WebKit::SafeBrowsingResult::provider const):
(WebKit::SafeBrowsingResult::isPhishing const):
(WebKit::SafeBrowsingResult::isMalware const):
(WebKit::SafeBrowsingResult::isUnwantedSoftware const):
(WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):
* UIProcess/SafeBrowsingWarning.h:
(WebKit::SafeBrowsingWarning::create):
* UIProcess/SuspendedPageProxy.cpp:
* UIProcess/SystemPreviewController.h:
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebFrameProxy.h:
(WebKit::WebFrameProxy::url const):
(WebKit::WebFrameProxy::provisionalURL const):
(WebKit::WebFrameProxy::unreachableURL const):
* UIProcess/WebInspectorProxy.h:
* UIProcess/WebOpenPanelResultListenerProxy.cpp:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadDataWithNavigation):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::contentRuleListNotification):
(WebKit::WebPageProxy::processDidTerminate):
(WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
(WebKit::WebPageProxy::setURLSchemeHandlerForScheme):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
(WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/ios/DragDropInteractionState.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::showSafeBrowsingWarning):
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
* UIProcess/ios/WKGeolocationProviderIOS.mm:
(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
* UIProcess/ios/WKLegacyPDFView.mm:
(-[WKLegacyPDFView actionSheetAssistant:shareElementWithURL:rect:]):
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _updateLocationInfo]):
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::decodeLegacySessionState):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::showSafeBrowsingWarning):
* UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController _defaultAnimationController]):
* UIProcess/win/WebInspectorProxyWin.cpp:
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::showPaymentUI):
(WebKit::WebPaymentCoordinator::validateMerchant):
* WebProcess/ApplePay/WebPaymentCoordinator.h:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::doRetrieveRecords):
* WebProcess/Cache/WebCacheStorageConnection.h:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::registerFileBlobURL):
* WebProcess/FileAPI/BlobRegistryProxy.h:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
(API::InjectedBundle::PageLoaderClient::willLoadDataRequest):
(API::InjectedBundle::PageLoaderClient::userAgentForURL const):
* WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
(WKBundleFrameAllowsFollowingLink):
(WKBundleFrameCopySuggestedFilenameForResourceWithURL):
(WKBundleFrameCopyMIMETypeForResourceWithURL):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageHasLocalDataForURL):
* WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp:
(convertToUTF8String):
* WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h:
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::preconnectTo):
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/Network/WebSocketProvider.h:
* WebProcess/Network/WebSocketStream.cpp:
(WebKit::WebSocketStream::WebSocketStream):
* WebProcess/Network/WebSocketStream.h:
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
* WebProcess/Plugins/Netscape/NetscapePlugin.h:
* WebProcess/Plugins/Netscape/NetscapePluginStream.h:
* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::clickedLink):
* WebProcess/Plugins/Plugin.h:
* WebProcess/Plugins/PluginController.h:
* WebProcess/Plugins/PluginProxy.h:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::performURLRequest):
(WebKit::PluginView::performJavaScriptURLRequest):
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::webVisiblePluginInfo):
* WebProcess/Plugins/WebPluginInfoProvider.h:
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::signedPublicKeyAndChallengeString const):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebContextMenuClient.h:
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
* WebProcess/WebPage/VisitedLinkTableController.h:
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::allowsFollowingLink const):
* WebProcess/WebPage/WebFrame.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadURLInFrame):
(WebKit::WebPage::loadData):
(WebKit::WebPage::loadAlternateHTML):
(WebKit::WebPage::dumpHistoryForTesting):
(WebKit::WebPage::sendCSPViolationReport):
(WebKit::WebPage::addUserScript):
(WebKit::WebPage::addUserStyleSheet):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
(WebKit::WebPrintOperationGtk::frameURL const):
* WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::sendPrewarmInformation):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::activePagesOrigins):

Source/WebKitLegacy:

* WebCoreSupport/WebResourceLoadScheduler.cpp:
* WebCoreSupport/WebResourceLoadScheduler.h:

Source/WebKitLegacy/mac:

* DOM/DOMAttr.mm:
* DOM/DOMBlob.mm:
* DOM/DOMCSSCharsetRule.mm:
* DOM/DOMCSSImportRule.mm:
* DOM/DOMCSSMediaRule.mm:
* DOM/DOMCSSPageRule.mm:
* DOM/DOMCSSPrimitiveValue.mm:
* DOM/DOMCSSRule.mm:
* DOM/DOMCSSStyleDeclaration.mm:
* DOM/DOMCSSStyleRule.mm:
* DOM/DOMCSSStyleSheet.mm:
* DOM/DOMCSSValue.mm:
* DOM/DOMCharacterData.mm:
* DOM/DOMCounter.mm:
* DOM/DOMDocument.mm:
* DOM/DOMDocumentFragment.mm:
* DOM/DOMDocumentType.mm:
* DOM/DOMEvent.mm:
* DOM/DOMFile.mm:
* DOM/DOMHTMLAnchorElement.mm:
* DOM/DOMHTMLAppletElement.mm:
* DOM/DOMHTMLAreaElement.mm:
* DOM/DOMHTMLBRElement.mm:
* DOM/DOMHTMLBaseElement.mm:
* DOM/DOMHTMLBaseFontElement.mm:
* DOM/DOMHTMLBodyElement.mm:
* DOM/DOMHTMLButtonElement.mm:
* DOM/DOMHTMLCanvasElement.mm:
* DOM/DOMHTMLCollection.mm:
* DOM/DOMHTMLDivElement.mm:
* DOM/DOMHTMLDocument.mm:
* DOM/DOMHTMLElement.mm:
* DOM/DOMHTMLEmbedElement.mm:
* DOM/DOMHTMLFieldSetElement.mm:
* DOM/DOMHTMLFontElement.mm:
* DOM/DOMHTMLFormElement.mm:
* DOM/DOMHTMLFrameElement.mm:
* DOM/DOMHTMLFrameSetElement.mm:
* DOM/DOMHTMLHRElement.mm:
* DOM/DOMHTMLHeadElement.mm:
* DOM/DOMHTMLHeadingElement.mm:
* DOM/DOMHTMLHtmlElement.mm:
* DOM/DOMHTMLIFrameElement.mm:
* DOM/DOMHTMLImageElement.mm:
* DOM/DOMHTMLInputElement.mm:
* DOM/DOMHTMLLIElement.mm:
* DOM/DOMHTMLLabelElement.mm:
* DOM/DOMHTMLLegendElement.mm:
* DOM/DOMHTMLLinkElement.mm:
* DOM/DOMHTMLMapElement.mm:
* DOM/DOMHTMLMarqueeElement.mm:
* DOM/DOMHTMLMediaElement.mm:
* DOM/DOMHTMLMetaElement.mm:
* DOM/DOMHTMLModElement.mm:
* DOM/DOMHTMLOListElement.mm:
* DOM/DOMHTMLObjectElement.mm:
* DOM/DOMHTMLOptGroupElement.mm:
* DOM/DOMHTMLOptionElement.mm:
* DOM/DOMHTMLOptionsCollection.mm:
* DOM/DOMHTMLParagraphElement.mm:
* DOM/DOMHTMLParamElement.mm:
* DOM/DOMHTMLQuoteElement.mm:
* DOM/DOMHTMLScriptElement.mm:
* DOM/DOMHTMLSelectElement.mm:
* DOM/DOMHTMLStyleElement.mm:
* DOM/DOMHTMLTableCaptionElement.mm:
* DOM/DOMHTMLTableCellElement.mm:
* DOM/DOMHTMLTableColElement.mm:
* DOM/DOMHTMLTableElement.mm:
* DOM/DOMHTMLTableRowElement.mm:
* DOM/DOMHTMLTableSectionElement.mm:
* DOM/DOMHTMLTitleElement.mm:
* DOM/DOMHTMLUListElement.mm:
* DOM/DOMHTMLVideoElement.mm:
* DOM/DOMKeyboardEvent.mm:
* DOM/DOMMediaList.mm:
* DOM/DOMMouseEvent.mm:
* DOM/DOMMutationEvent.mm:
* DOM/DOMNamedNodeMap.mm:
* DOM/DOMProcessingInstruction.mm:
* DOM/DOMRange.mm:
* DOM/DOMStyleSheet.mm:
* DOM/DOMText.mm:
* DOM/DOMTextEvent.mm:
* DOM/DOMTokenList.mm:
* DOM/DOMUIEvent.mm:
* DOM/DOMXPathResult.mm:
* History/WebHistoryItem.mm:
* Misc/WebNSURLExtras.mm:
(-[NSURL _web_userVisibleString]):
(-[NSURL _web_URLByRemovingUserInfo]):
(-[NSURL _web_dataForURLComponentType:]):
(-[NSURL _web_schemeData]):
(-[NSURL _web_hostData]):
* Misc/WebUserContentURLPattern.mm:
* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
* Plugins/WebNetscapePluginStream.h:
(WebNetscapePluginStream::setRequestURL):
* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::signedPublicKeyAndChallengeString const):
* WebCoreSupport/WebContextMenuClient.h:
* WebCoreSupport/WebContextMenuClient.mm:
* WebCoreSupport/WebDragClient.h:
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::updateGlobalHistory):
* WebCoreSupport/WebPaymentCoordinatorClient.h:
* WebCoreSupport/WebPaymentCoordinatorClient.mm:
(WebPaymentCoordinatorClient::showPaymentUI):
* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::readURLFromPasteboard):
* WebCoreSupport/WebPluginInfoProvider.h:
* WebCoreSupport/WebPluginInfoProvider.mm:
(WebPluginInfoProvider::webVisiblePluginInfo):
* WebCoreSupport/WebSecurityOrigin.mm:
* WebCoreSupport/WebVisitedLinkStore.h:
* WebView/WebDataSource.mm:
* WebView/WebFrame.mm:
(-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
* WebView/WebImmediateActionController.mm:
(-[WebImmediateActionController _defaultAnimationController]):
* WebView/WebPDFView.mm:
* WebView/WebScriptDebugger.mm:
* WebView/WebViewInternal.h:

Source/WebKitLegacy/win:

* MarshallingHelpers.cpp:
* MarshallingHelpers.h:
* Plugins/PluginDatabase.cpp:
* Plugins/PluginDatabase.h:
* Plugins/PluginDatabaseWin.cpp:
* Plugins/PluginStream.h:
* Plugins/PluginView.h:
* WebCoreSupport/WebContextMenuClient.h:
* WebCoreSupport/WebDesktopNotificationsDelegate.cpp:
* WebCoreSupport/WebDesktopNotificationsDelegate.h:
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPluginInfoProvider.cpp:
(WebPluginInfoProvider::webVisiblePluginInfo):
* WebCoreSupport/WebPluginInfoProvider.h:
* WebCoreSupport/WebVisitedLinkStore.h:
* WebDataSource.cpp:
* WebDownload.h:
* WebElementPropertyBag.cpp:
* WebFrame.h:
* WebHistory.cpp:
* WebHistory.h:
* WebHistoryItem.cpp:
* WebResource.cpp:
(WebResource::WebResource):
* WebResource.h:
* WebSecurityOrigin.cpp:
* WebURLResponse.cpp:
(WebURLResponse::createInstance):
* WebUserContentURLPattern.cpp:
* WebView.h:

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Forward.h:
* wtf/PlatformGTK.cmake:
* wtf/PlatformMac.cmake:
* wtf/PlatformWPE.cmake:
* wtf/PlatformWin.cmake:
* wtf/URL.cpp: Renamed from Source/WebCore/platform/URL.cpp.
(WTF::URL::protocolIs):
* wtf/URL.h: Renamed from Source/WebCore/platform/URL.h.
* wtf/URLHash.h: Renamed from Source/WebCore/platform/URLHash.h.
(WTF::URLHash::hash):
(WTF::URLHash::equal):
* wtf/URLParser.cpp: Renamed from Source/WebCore/platform/URLParser.cpp.
(WTF::URLParser::isInUserInfoEncodeSet):
(WTF::URLParser::parseAuthority):
* wtf/URLParser.h: Renamed from Source/WebCore/platform/URLParser.h.
(WTF::URLParser::URLParser):
(WTF::URLParser::result):
* wtf/cf/CFURLExtras.cpp: Renamed from Source/WebCore/platform/cf/CFURLExtras.cpp.
* wtf/cf/CFURLExtras.h: Renamed from Source/WebCore/platform/cf/CFURLExtras.h.
* wtf/cf/URLCF.cpp: Renamed from Source/WebCore/platform/cf/URLCF.cpp.
* wtf/cocoa/NSURLExtras.h: Copied from Source/WebCore/loader/archive/ArchiveResourceCollection.h.
* wtf/cocoa/NSURLExtras.mm: Copied from Source/WebCore/platform/mac/WebCoreNSURLExtras.mm.
(WTF::isArmenianLookalikeCharacter):
(WTF::isArmenianScriptCharacter):
(WTF::isASCIIDigitOrValidHostCharacter):
(WTF::isLookalikeCharacter):
(WTF::whiteListIDNScript):
(WTF::readIDNScriptWhiteListFile):
(WTF::allCharactersInIDNScriptWhiteList):
(WTF::isSecondLevelDomainNameAllowedByTLDRules):
(WTF::isRussianDomainNameCharacter):
(WTF::allCharactersAllowedByTLDRules):
(WTF::mapHostNameWithRange):
(WTF::hostNameNeedsDecodingWithRange):
(WTF::hostNameNeedsEncodingWithRange):
(WTF::decodeHostNameWithRange):
(WTF::encodeHostNameWithRange):
(WTF::decodeHostName):
(WTF::encodeHostName):
(WTF::collectRangesThatNeedMapping):
(WTF::collectRangesThatNeedEncoding):
(WTF::collectRangesThatNeedDecoding):
(WTF::applyHostNameFunctionToMailToURLString):
(WTF::applyHostNameFunctionToURLString):
(WTF::mapHostNames):
(WTF::stringByTrimmingWhitespace):
(WTF::URLByTruncatingOneCharacterBeforeComponent):
(WTF::URLByRemovingResourceSpecifier):
(WTF::URLWithData):
(WTF::dataWithUserTypedString):
(WTF::URLWithUserTypedString):
(WTF::URLWithUserTypedStringDeprecated):
(WTF::hasQuestionMarkOnlyQueryString):
(WTF::dataForURLComponentType):
(WTF::URLByRemovingComponentAndSubsequentCharacter):
(WTF::URLByRemovingUserInfo):
(WTF::originalURLData):
(WTF::createStringWithEscapedUnsafeCharacters):
(WTF::userVisibleString):
(WTF::isUserVisibleURL):
(WTF::rangeOfURLScheme):
(WTF::looksLikeAbsoluteURL):
* wtf/cocoa/URLCocoa.mm: Renamed from Source/WebCore/platform/mac/URLMac.mm.
(WTF::URL::URL):
(WTF::URL::createCFURL const):
* wtf/glib/GUniquePtrSoup.h: Renamed from Source/WebCore/platform/network/soup/GUniquePtrSoup.h.
* wtf/glib/URLSoup.cpp: Renamed from Source/WebCore/platform/soup/URLSoup.cpp.

Tools:

* TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
* TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:
* TestWebKitAPI/Tests/WebCore/URL.cpp:
(TestWebKitAPI::createURL):
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::checkURL):
(TestWebKitAPI::checkRelativeURL):
(TestWebKitAPI::checkURLDifferences):
(TestWebKitAPI::checkRelativeURLDifferences):
* TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
* TestWebKitAPI/Tests/WebCore/YouTubePluginReplacement.cpp:
* TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:
(TestWebKitAPI::originalDataAsString):
(TestWebKitAPI::userVisibleString):
(TestWebKitAPI::literalURL):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/LoadAlternateHTMLString.mm:
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/LoadInvalidURLRequest.mm:
(literalURL):
* TestWebKitAPI/Tests/WebKitGLib/TestCookieManager.cpp:
* TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.mm:
(-[LoadInvalidURLWebFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
* TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm:
* TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
(TestWebKitAPI::Util::createURLForResource):
* lldb/lldb_webkit.py:
(__lldb_init_module):
(WTFURL_SummaryProvider):
(WTFURLProvider):
(WebCoreURL_SummaryProvider): Deleted.
(WebCoreURLProvider): Deleted.
(WebCoreURLProvider.__init__): Deleted.
(WebCoreURLProvider.to_string): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFWTFxcodeprojprojectpbxproj">trunk/Source/WTF/WTF.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWTFwtfCMakeListstxt">trunk/Source/WTF/wtf/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWTFwtfForwardh">trunk/Source/WTF/wtf/Forward.h</a></li>
<li><a href="#trunkSourceWTFwtfPlatformGTKcmake">trunk/Source/WTF/wtf/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWTFwtfPlatformMaccmake">trunk/Source/WTF/wtf/PlatformMac.cmake</a></li>
<li><a href="#trunkSourceWTFwtfPlatformWPEcmake">trunk/Source/WTF/wtf/PlatformWPE.cmake</a></li>
<li><a href="#trunkSourceWTFwtfPlatformWincmake">trunk/Source/WTF/wtf/PlatformWin.cmake</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePaySessionh">trunk/Source/WebCore/Modules/applepay/ApplePaySession.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventh">trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentCoordinatorcpp">trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentCoordinatorh">trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentCoordinatorClienth">trunk/Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentSessionh">trunk/Source/WebCore/Modules/applepay/PaymentSession.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplicationmanifestApplicationManifesth">trunk/Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h</a></li>
<li><a href="#trunkSourceWebCoreModulesbeaconNavigatorBeaconcpp">trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulescacheDOMCachecpp">trunk/Source/WebCore/Modules/cache/DOMCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchLoaderh">trunk/Source/WebCore/Modules/fetch/FetchLoader.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasessionMediaSessionMetadatah">trunk/Source/WebCore/Modules/mediasession/MediaSessionMetadata.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourceRegistrycpp">trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourceRegistryh">trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamcpp">trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamRegistrycpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamRegistryh">trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h</a></li>
<li><a href="#trunkSourceWebCoreModulesnavigatorcontentutilsNavigatorContentUtilsClienth">trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtilsClient.h</a></li>
<li><a href="#trunkSourceWebCoreModulesnotificationsNotificationh">trunk/Source/WebCore/Modules/notifications/Notification.h</a></li>
<li><a href="#trunkSourceWebCoreModulespaymentrequestMerchantValidationEventh">trunk/Source/WebCore/Modules/paymentrequest/MerchantValidationEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulespaymentrequestPaymentRequesth">trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.h</a></li>
<li><a href="#trunkSourceWebCoreModulespluginsPluginReplacementh">trunk/Source/WebCore/Modules/plugins/PluginReplacement.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioContexth">trunk/Source/WebCore/Modules/webaudio/AudioContext.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketh">trunk/Source/WebCore/Modules/websockets/WebSocket.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketHandshakecpp">trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketHandshakeh">trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCorePlatformMaccmake">trunk/Source/WebCore/PlatformMac.cmake</a></li>
<li><a href="#trunkSourceWebCorePlatformWincmake">trunk/Source/WebCore/PlatformWin.cmake</a></li>
<li><a href="#trunkSourceWebCoreSourcestxt">trunk/Source/WebCore/Sources.txt</a></li>
<li><a href="#trunkSourceWebCoreSourcesCocoatxt">trunk/Source/WebCore/SourcesCocoa.txt</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsCachedModuleScriptLoaderh">trunk/Source/WebCore/bindings/js/CachedModuleScriptLoader.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsCachedScriptFetcherh">trunk/Source/WebCore/bindings/js/CachedScriptFetcher.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllercpp">trunk/Source/WebCore/bindings/js/ScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllerh">trunk/Source/WebCore/bindings/js/ScriptController.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptModuleLoaderh">trunk/Source/WebCore/bindings/js/ScriptModuleLoader.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptSourceCodeh">trunk/Source/WebCore/bindings/js/ScriptSourceCode.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSMapLikecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSReadOnlyMapLikecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallTracercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEnabledBySettingcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIndexedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterCallWithcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIndexedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIndexedGetterAndSettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithUnforgablePropertiescpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestPluginInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestPromiseRejectionEventcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationIndirectInheritancecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationInheritcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationInheritFinalcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierAnonymousOperationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierNamedOperationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierOperationImplementedAscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierOperationNamedToStringcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierReadOnlyAttributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierReadWriteAttributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorecontentextensionsContentExtensionsBackendcpp">trunk/Source/WebCore/contentextensions/ContentExtensionsBackend.cpp</a></li>
<li><a href="#trunkSourceWebCorecontentextensionsContentExtensionsBackendh">trunk/Source/WebCore/contentextensions/ContentExtensionsBackend.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueh">trunk/Source/WebCore/css/CSSValue.h</a></li>
<li><a href="#trunkSourceWebCorecssStylePropertiesh">trunk/Source/WebCore/css/StyleProperties.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolverh">trunk/Source/WebCore/css/StyleResolver.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleSheeth">trunk/Source/WebCore/css/StyleSheet.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleSheetContentsh">trunk/Source/WebCore/css/StyleSheetContents.h</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserContexth">trunk/Source/WebCore/css/parser/CSSParserContext.h</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserIdiomsh">trunk/Source/WebCore/css/parser/CSSParserIdioms.h</a></li>
<li><a href="#trunkSourceWebCoredomDataTransfercpp">trunk/Source/WebCore/dom/DataTransfer.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomInlineStyleSheetOwnercpp">trunk/Source/WebCore/dom/InlineStyleSheetOwner.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomScriptElementh">trunk/Source/WebCore/dom/ScriptElement.h</a></li>
<li><a href="#trunkSourceWebCoredomScriptExecutionContexth">trunk/Source/WebCore/dom/ScriptExecutionContext.h</a></li>
<li><a href="#trunkSourceWebCoredomSecurityContexth">trunk/Source/WebCore/dom/SecurityContext.h</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorh">trunk/Source/WebCore/editing/Editor.h</a></li>
<li><a href="#trunkSourceWebCoreeditingMarkupAccumulatorcpp">trunk/Source/WebCore/editing/MarkupAccumulator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaDataDetectionh">trunk/Source/WebCore/editing/cocoa/DataDetection.h</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaEditorCocoamm">trunk/Source/WebCore/editing/cocoa/EditorCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaWebContentReaderCocoamm">trunk/Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmacEditorMacmm">trunk/Source/WebCore/editing/mac/EditorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkupcpp">trunk/Source/WebCore/editing/markup.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkuph">trunk/Source/WebCore/editing/markup.h</a></li>
<li><a href="#trunkSourceWebCorefileapiAsyncFileStreamcpp">trunk/Source/WebCore/fileapi/AsyncFileStream.cpp</a></li>
<li><a href="#trunkSourceWebCorefileapiAsyncFileStreamh">trunk/Source/WebCore/fileapi/AsyncFileStream.h</a></li>
<li><a href="#trunkSourceWebCorefileapiBlobh">trunk/Source/WebCore/fileapi/Blob.h</a></li>
<li><a href="#trunkSourceWebCorefileapiBlobURLcpp">trunk/Source/WebCore/fileapi/BlobURL.cpp</a></li>
<li><a href="#trunkSourceWebCorefileapiBlobURLh">trunk/Source/WebCore/fileapi/BlobURL.h</a></li>
<li><a href="#trunkSourceWebCorefileapiFileh">trunk/Source/WebCore/fileapi/File.h</a></li>
<li><a href="#trunkSourceWebCorefileapiFileReaderLoaderh">trunk/Source/WebCore/fileapi/FileReaderLoader.h</a></li>
<li><a href="#trunkSourceWebCorefileapiThreadableBlobRegistryh">trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.h</a></li>
<li><a href="#trunkSourceWebCorehistoryCachedFrameh">trunk/Source/WebCore/history/CachedFrame.h</a></li>
<li><a href="#trunkSourceWebCorehistoryHistoryItemh">trunk/Source/WebCore/history/HistoryItem.h</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLcpp">trunk/Source/WebCore/html/DOMURL.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlDOMURLh">trunk/Source/WebCore/html/DOMURL.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAttachmentElementcpp">trunk/Source/WebCore/html/HTMLAttachmentElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementBasecpp">trunk/Source/WebCore/html/HTMLFrameElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementh">trunk/Source/WebCore/html/HTMLInputElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementh">trunk/Source/WebCore/html/HTMLLinkElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementcpp">trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlImageBitmaph">trunk/Source/WebCore/html/ImageBitmap.h</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaFragmentURIParserh">trunk/Source/WebCore/html/MediaFragmentURIParser.h</a></li>
<li><a href="#trunkSourceWebCorehtmlPublicURLManagercpp">trunk/Source/WebCore/html/PublicURLManager.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlPublicURLManagerh">trunk/Source/WebCore/html/PublicURLManager.h</a></li>
<li><a href="#trunkSourceWebCorehtmlURLInputTypecpp">trunk/Source/WebCore/html/URLInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlURLRegistryh">trunk/Source/WebCore/html/URLRegistry.h</a></li>
<li><a href="#trunkSourceWebCorehtmlURLSearchParamscpp">trunk/Source/WebCore/html/URLSearchParams.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlURLUtilsh">trunk/Source/WebCore/html/URLUtils.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContextcpp">trunk/Source/WebCore/html/canvas/CanvasRenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContexth">trunk/Source/WebCore/html/canvas/CanvasRenderingContext.h</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLParserIdiomscpp">trunk/Source/WebCore/html/parser/HTMLParserIdioms.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserXSSAuditorcpp">trunk/Source/WebCore/html/parser/XSSAuditor.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserXSSAuditorh">trunk/Source/WebCore/html/parser/XSSAuditor.h</a></li>
<li><a href="#trunkSourceWebCorehtmlparserXSSAuditorDelegateh">trunk/Source/WebCore/html/parser/XSSAuditorDelegate.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendHostcpp">trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorInstrumentationh">trunk/Source/WebCore/inspector/InspectorInstrumentation.h</a></li>
<li><a href="#trunkSourceWebCoreinspectoragentsInspectorNetworkAgentcpp">trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectoragentsInspectorNetworkAgenth">trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectoragentsInspectorPageAgenth">trunk/Source/WebCore/inspector/agents/InspectorPageAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectoragentsInspectorWorkerAgenth">trunk/Source/WebCore/inspector/agents/InspectorWorkerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreloaderApplicationManifestLoaderh">trunk/Source/WebCore/loader/ApplicationManifestLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderCookieJarh">trunk/Source/WebCore/loader/CookieJar.h</a></li>
<li><a href="#trunkSourceWebCoreloaderCrossOriginAccessControlh">trunk/Source/WebCore/loader/CrossOriginAccessControl.h</a></li>
<li><a href="#trunkSourceWebCoreloaderCrossOriginPreflightResultCacheh">trunk/Source/WebCore/loader/CrossOriginPreflightResultCache.h</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentLoadercpp">trunk/Source/WebCore/loader/DocumentLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentLoaderh">trunk/Source/WebCore/loader/DocumentLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderDocumentWriterh">trunk/Source/WebCore/loader/DocumentWriter.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFormSubmissionh">trunk/Source/WebCore/loader/FormSubmission.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoaderClienth">trunk/Source/WebCore/loader/FrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebCoreloaderHistoryControllercpp">trunk/Source/WebCore/loader/HistoryController.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderLinkLoaderh">trunk/Source/WebCore/loader/LinkLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderLoadTimingh">trunk/Source/WebCore/loader/LoadTiming.h</a></li>
<li><a href="#trunkSourceWebCoreloaderLoaderStrategyh">trunk/Source/WebCore/loader/LoaderStrategy.h</a></li>
<li><a href="#trunkSourceWebCoreloaderMixedContentCheckercpp">trunk/Source/WebCore/loader/MixedContentChecker.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderMixedContentCheckerh">trunk/Source/WebCore/loader/MixedContentChecker.h</a></li>
<li><a href="#trunkSourceWebCoreloaderNavigationSchedulercpp">trunk/Source/WebCore/loader/NavigationScheduler.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderNavigationSchedulerh">trunk/Source/WebCore/loader/NavigationScheduler.h</a></li>
<li><a href="#trunkSourceWebCoreloaderPingLoaderh">trunk/Source/WebCore/loader/PingLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderPolicyCheckercpp">trunk/Source/WebCore/loader/PolicyChecker.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoadInfoh">trunk/Source/WebCore/loader/ResourceLoadInfo.h</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoadObservercpp">trunk/Source/WebCore/loader/ResourceLoadObserver.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoadObserverh">trunk/Source/WebCore/loader/ResourceLoadObserver.h</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoadStatisticsh">trunk/Source/WebCore/loader/ResourceLoadStatistics.h</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoaderh">trunk/Source/WebCore/loader/ResourceLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceTimingh">trunk/Source/WebCore/loader/ResourceTiming.h</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoadercpp">trunk/Source/WebCore/loader/SubframeLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoaderh">trunk/Source/WebCore/loader/SubframeLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloaderSubstituteDatah">trunk/Source/WebCore/loader/SubstituteData.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheh">trunk/Source/WebCore/loader/appcache/ApplicationCache.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheGrouph">trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheHosth">trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheStoragecpp">trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheApplicationCacheStorageh">trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheManifestParsercpp">trunk/Source/WebCore/loader/appcache/ManifestParser.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheManifestParserh">trunk/Source/WebCore/loader/appcache/ManifestParser.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchiveArchiveResourceCollectionh">trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h</a></li>
<li><a href="#trunkSourceWebCoreloaderarchivecfLegacyWebArchivecpp">trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourcecpp">trunk/Source/WebCore/loader/cache/CachedResource.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoaderh">trunk/Source/WebCore/loader/cache/CachedResourceLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedStyleSheetClienth">trunk/Source/WebCore/loader/cache/CachedStyleSheetClient.h</a></li>
<li><a href="#trunkSourceWebCoreloadercacheMemoryCacheh">trunk/Source/WebCore/loader/cache/MemoryCache.h</a></li>
<li><a href="#trunkSourceWebCoreloadericonIconLoaderh">trunk/Source/WebCore/loader/icon/IconLoader.h</a></li>
<li><a href="#trunkSourceWebCoreloadermacLoaderNSURLExtrasmm">trunk/Source/WebCore/loader/mac/LoaderNSURLExtras.mm</a></li>
<li><a href="#trunkSourceWebCorepageCaptionUserPreferencesMediaAFcpp">trunk/Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp</a></li>
<li><a href="#trunkSourceWebCorepageChromeClienth">trunk/Source/WebCore/page/ChromeClient.h</a></li>
<li><a href="#trunkSourceWebCorepageClientOriginh">trunk/Source/WebCore/page/ClientOrigin.h</a></li>
<li><a href="#trunkSourceWebCorepageContextMenuClienth">trunk/Source/WebCore/page/ContextMenuClient.h</a></li>
<li><a href="#trunkSourceWebCorepageContextMenuControllercpp">trunk/Source/WebCore/page/ContextMenuController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowcpp">trunk/Source/WebCore/page/DOMWindow.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDragControllercpp">trunk/Source/WebCore/page/DragController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDragControllerh">trunk/Source/WebCore/page/DragController.h</a></li>
<li><a href="#trunkSourceWebCorepageEventSourceh">trunk/Source/WebCore/page/EventSource.h</a></li>
<li><a href="#trunkSourceWebCorepageFrameh">trunk/Source/WebCore/page/Frame.h</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewh">trunk/Source/WebCore/page/FrameView.h</a></li>
<li><a href="#trunkSourceWebCorepageHistoryh">trunk/Source/WebCore/page/History.h</a></li>
<li><a href="#trunkSourceWebCorepageLocationcpp">trunk/Source/WebCore/page/Location.cpp</a></li>
<li><a href="#trunkSourceWebCorepageLocationh">trunk/Source/WebCore/page/Location.h</a></li>
<li><a href="#trunkSourceWebCorepagePageh">trunk/Source/WebCore/page/Page.h</a></li>
<li><a href="#trunkSourceWebCorepagePageSerializerh">trunk/Source/WebCore/page/PageSerializer.h</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceh">trunk/Source/WebCore/page/Performance.h</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceResourceTimingcpp">trunk/Source/WebCore/page/PerformanceResourceTiming.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOrigincpp">trunk/Source/WebCore/page/SecurityOrigin.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOriginh">trunk/Source/WebCore/page/SecurityOrigin.h</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOriginDatah">trunk/Source/WebCore/page/SecurityOriginData.h</a></li>
<li><a href="#trunkSourceWebCorepageSecurityOriginHashh">trunk/Source/WebCore/page/SecurityOriginHash.h</a></li>
<li><a href="#trunkSourceWebCorepageSecurityPolicycpp">trunk/Source/WebCore/page/SecurityPolicy.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSecurityPolicyh">trunk/Source/WebCore/page/SecurityPolicy.h</a></li>
<li><a href="#trunkSourceWebCorepageSettingsBaseh">trunk/Source/WebCore/page/SettingsBase.h</a></li>
<li><a href="#trunkSourceWebCorepageShareDatah">trunk/Source/WebCore/page/ShareData.h</a></li>
<li><a href="#trunkSourceWebCorepageSocketProviderh">trunk/Source/WebCore/page/SocketProvider.h</a></li>
<li><a href="#trunkSourceWebCorepageUserContentProviderh">trunk/Source/WebCore/page/UserContentProvider.h</a></li>
<li><a href="#trunkSourceWebCorepageUserContentURLPatterncpp">trunk/Source/WebCore/page/UserContentURLPattern.cpp</a></li>
<li><a href="#trunkSourceWebCorepageUserContentURLPatternh">trunk/Source/WebCore/page/UserContentURLPattern.h</a></li>
<li><a href="#trunkSourceWebCorepageUserScripth">trunk/Source/WebCore/page/UserScript.h</a></li>
<li><a href="#trunkSourceWebCorepageUserStyleSheeth">trunk/Source/WebCore/page/UserStyleSheet.h</a></li>
<li><a href="#trunkSourceWebCorepageVisitedLinkStoreh">trunk/Source/WebCore/page/VisitedLinkStore.h</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicyh">trunk/Source/WebCore/page/csp/ContentSecurityPolicy.h</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicyClienth">trunk/Source/WebCore/page/csp/ContentSecurityPolicyClient.h</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicyDirectiveListh">trunk/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.h</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicySourcecpp">trunk/Source/WebCore/page/csp/ContentSecurityPolicySource.cpp</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicySourceh">trunk/Source/WebCore/page/csp/ContentSecurityPolicySource.h</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicySourceListcpp">trunk/Source/WebCore/page/csp/ContentSecurityPolicySourceList.cpp</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicySourceListh">trunk/Source/WebCore/page/csp/ContentSecurityPolicySourceList.h</a></li>
<li><a href="#trunkSourceWebCorepagecspContentSecurityPolicySourceListDirectivecpp">trunk/Source/WebCore/page/csp/ContentSecurityPolicySourceListDirective.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformContentFilterUnblockHandlerh">trunk/Source/WebCore/platform/ContentFilterUnblockHandler.h</a></li>
<li><a href="#trunkSourceWebCoreplatformContextMenuItemh">trunk/Source/WebCore/platform/ContextMenuItem.h</a></li>
<li><a href="#trunkSourceWebCoreplatformCookieh">trunk/Source/WebCore/platform/Cookie.h</a></li>
<li><a href="#trunkSourceWebCoreplatformCookiesStrategyh">trunk/Source/WebCore/platform/CookiesStrategy.h</a></li>
<li><a href="#trunkSourceWebCoreplatformDragDatah">trunk/Source/WebCore/platform/DragData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformDragImageh">trunk/Source/WebCore/platform/DragImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformFileStreamh">trunk/Source/WebCore/platform/FileStream.h</a></li>
<li><a href="#trunkSourceWebCoreplatformLinkIconh">trunk/Source/WebCore/platform/LinkIcon.h</a></li>
<li><a href="#trunkSourceWebCoreplatformPasteboardcpp">trunk/Source/WebCore/platform/Pasteboard.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformPasteboardh">trunk/Source/WebCore/platform/Pasteboard.h</a></li>
<li><a href="#trunkSourceWebCoreplatformPasteboardStrategyh">trunk/Source/WebCore/platform/PasteboardStrategy.h</a></li>
<li><a href="#trunkSourceWebCoreplatformPasteboardWriterDatacpp">trunk/Source/WebCore/platform/PasteboardWriterData.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformPasteboardWriterDatah">trunk/Source/WebCore/platform/PasteboardWriterData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformPlatformPasteboardh">trunk/Source/WebCore/platform/PlatformPasteboard.h</a></li>
<li><a href="#trunkSourceWebCoreplatformPromisedAttachmentInfoh">trunk/Source/WebCore/platform/PromisedAttachmentInfo.h</a></li>
<li><a href="#trunkSourceWebCoreplatformSSLKeyGeneratorh">trunk/Source/WebCore/platform/SSLKeyGenerator.h</a></li>
<li><a href="#trunkSourceWebCoreplatformSchemeRegistrycpp">trunk/Source/WebCore/platform/SchemeRegistry.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformSharedBufferh">trunk/Source/WebCore/platform/SharedBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformSharedStringHashcpp">trunk/Source/WebCore/platform/SharedStringHash.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformSharedStringHashh">trunk/Source/WebCore/platform/SharedStringHash.h</a></li>
<li><a href="#trunkSourceWebCoreplatformSourcesSouptxt">trunk/Source/WebCore/platform/SourcesSoup.txt</a></li>
<li><a href="#trunkSourceWebCoreplatformUserAgenth">trunk/Source/WebCore/platform/UserAgent.h</a></li>
<li><a href="#trunkSourceWebCoreplatformUserAgentQuirkscpp">trunk/Source/WebCore/platform/UserAgentQuirks.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformUserAgentQuirksh">trunk/Source/WebCore/platform/UserAgentQuirks.h</a></li>
<li><a href="#trunkSourceWebCoreplatformcocoaNetworkExtensionContentFilterh">trunk/Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.h</a></li>
<li><a href="#trunkSourceWebCoreplatformcocoaNetworkExtensionContentFiltermm">trunk/Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformglibUserAgentGLibcpp">trunk/Source/WebCore/platform/glib/UserAgentGLib.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGraphicsContexth">trunk/Source/WebCore/platform/graphics/GraphicsContext.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImagecpp">trunk/Source/WebCore/platform/graphics/Image.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImageh">trunk/Source/WebCore/platform/graphics/Image.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImageObserverh">trunk/Source/WebCore/platform/graphics/ImageObserver.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImageSourcecpp">trunk/Source/WebCore/platform/graphics/ImageSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsImageSourceh">trunk/Source/WebCore/platform/graphics/ImageSource.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayerh">trunk/Source/WebCore/platform/graphics/MediaPlayer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscgGraphicsContextCGcpp">trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgstreamerMediaPlayerPrivateGStreamercpp">trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgstreamermseMediaPlayerPrivateGStreamerMSEcpp">trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgstreamermseWebKitMediaSourceGStreamercpp">trunk/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsisoISOVTTCuecpp">trunk/Source/WebCore/platform/graphics/iso/ISOVTTCue.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicswinGraphicsContextDirect2Dcpp">trunk/Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkDragImageGtkcpp">trunk/Source/WebCore/platform/gtk/DragImageGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkPasteboardGtkcpp">trunk/Source/WebCore/platform/gtk/PasteboardGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkPlatformPasteboardGtkcpp">trunk/Source/WebCore/platform/gtk/PlatformPasteboardGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkSelectionDatah">trunk/Source/WebCore/platform/gtk/SelectionData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformiosPasteboardIOSmm">trunk/Source/WebCore/platform/ios/PasteboardIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformiosPlatformPasteboardIOSmm">trunk/Source/WebCore/platform/ios/PlatformPasteboardIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformiosQuickLookh">trunk/Source/WebCore/platform/ios/QuickLook.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacDragDataMacmm">trunk/Source/WebCore/platform/mac/DragDataMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacDragImageMacmm">trunk/Source/WebCore/platform/mac/DragImageMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacFileSystemMacmm">trunk/Source/WebCore/platform/mac/FileSystemMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacPasteboardMacmm">trunk/Source/WebCore/platform/mac/PasteboardMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacPasteboardWritermm">trunk/Source/WebCore/platform/mac/PasteboardWriter.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacPlatformPasteboardMacmm">trunk/Source/WebCore/platform/mac/PlatformPasteboardMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacPublicSuffixMacmm">trunk/Source/WebCore/platform/mac/PublicSuffixMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacSSLKeyGeneratorMacmm">trunk/Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacWebCoreNSURLExtrash">trunk/Source/WebCore/platform/mac/WebCoreNSURLExtras.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacWebCoreNSURLExtrasmm">trunk/Source/WebCore/platform/mac/WebCoreNSURLExtras.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamMediaEndpointConfigurationh">trunk/Source/WebCore/platform/mediastream/MediaEndpointConfiguration.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkBlobParth">trunk/Source/WebCore/platform/network/BlobPart.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkBlobRegistryh">trunk/Source/WebCore/platform/network/BlobRegistry.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkBlobRegistryImplh">trunk/Source/WebCore/platform/network/BlobRegistryImpl.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkBlobResourceHandlecpp">trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkCookieRequestHeaderFieldProxyh">trunk/Source/WebCore/platform/network/CookieRequestHeaderFieldProxy.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkCredentialStoragecpp">trunk/Source/WebCore/platform/network/CredentialStorage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkCredentialStorageh">trunk/Source/WebCore/platform/network/CredentialStorage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkDataURLDecodercpp">trunk/Source/WebCore/platform/network/DataURLDecoder.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkDataURLDecoderh">trunk/Source/WebCore/platform/network/DataURLDecoder.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkFormDatah">trunk/Source/WebCore/platform/network/FormData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkProxyServerh">trunk/Source/WebCore/platform/network/ProxyServer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceErrorBaseh">trunk/Source/WebCore/platform/network/ResourceErrorBase.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceHandlecpp">trunk/Source/WebCore/platform/network/ResourceHandle.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceHandleh">trunk/Source/WebCore/platform/network/ResourceHandle.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceHandleClienth">trunk/Source/WebCore/platform/network/ResourceHandleClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceRequestBasecpp">trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceRequestBaseh">trunk/Source/WebCore/platform/network/ResourceRequestBase.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceResponseBaseh">trunk/Source/WebCore/platform/network/ResourceResponseBase.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkSocketStreamHandleh">trunk/Source/WebCore/platform/network/SocketStreamHandle.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfDNSResolveQueueCFNetcpp">trunk/Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfNetworkStorageSessionCFNetcpp">trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfProxyServerCFNetcpp">trunk/Source/WebCore/platform/network/cf/ProxyServerCFNet.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcfResourceErrorCFcpp">trunk/Source/WebCore/platform/network/cf/ResourceErrorCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcocoaNetworkStorageSessionCocoamm">trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlCookieJarDBcpp">trunk/Source/WebCore/platform/network/curl/CookieJarDB.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlCookieUtilh">trunk/Source/WebCore/platform/network/curl/CookieUtil.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlCurlContexth">trunk/Source/WebCore/platform/network/curl/CurlContext.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlCurlProxySettingsh">trunk/Source/WebCore/platform/network/curl/CurlProxySettings.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlCurlResponseh">trunk/Source/WebCore/platform/network/curl/CurlResponse.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlNetworkStorageSessionCurlcpp">trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlProxyServerCurlcpp">trunk/Source/WebCore/platform/network/curl/ProxyServerCurl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlSocketStreamHandleImplCurlcpp">trunk/Source/WebCore/platform/network/curl/SocketStreamHandleImplCurl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkmacResourceErrorMacmm">trunk/Source/WebCore/platform/network/mac/ResourceErrorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupNetworkStorageSessionSoupcpp">trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupProxyServerSoupcpp">trunk/Source/WebCore/platform/network/soup/ProxyServerSoup.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupResourceHandleSoupcpp">trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupResourceRequesth">trunk/Source/WebCore/platform/network/soup/ResourceRequest.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupResourceRequestSoupcpp">trunk/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupSocketStreamHandleImplSoupcpp">trunk/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupSoupNetworkSessioncpp">trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupSoupNetworkSessionh">trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h</a></li>
<li><a href="#trunkSourceWebCoreplatformtextTextEncodingh">trunk/Source/WebCore/platform/text/TextEncoding.h</a></li>
<li><a href="#trunkSourceWebCoreplatformwinBStringcpp">trunk/Source/WebCore/platform/win/BString.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformwinBStringh">trunk/Source/WebCore/platform/win/BString.h</a></li>
<li><a href="#trunkSourceWebCoreplatformwinClipboardUtilitiesWincpp">trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformwinClipboardUtilitiesWinh">trunk/Source/WebCore/platform/win/ClipboardUtilitiesWin.h</a></li>
<li><a href="#trunkSourceWebCoreplatformwinDragImageWincpp">trunk/Source/WebCore/platform/win/DragImageWin.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformwinPasteboardWincpp">trunk/Source/WebCore/platform/win/PasteboardWin.cpp</a></li>
<li><a href="#trunkSourceWebCorepluginsPluginDatah">trunk/Source/WebCore/plugins/PluginData.h</a></li>
<li><a href="#trunkSourceWebCorerenderingHitTestResulth">trunk/Source/WebCore/rendering/HitTestResult.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderAttachmentcpp">trunk/Source/WebCore/rendering/RenderAttachment.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGImageLoadercpp">trunk/Source/WebCore/svg/SVGImageLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGURIReferencecpp">trunk/Source/WebCore/svg/SVGURIReference.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsSVGImageh">trunk/Source/WebCore/svg/graphics/SVGImage.h</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsSVGImageCacheh">trunk/Source/WebCore/svg/graphics/SVGImageCache.h</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsSVGImageForContainerh">trunk/Source/WebCore/svg/graphics/SVGImageForContainer.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsmm">trunk/Source/WebCore/testing/Internals.mm</a></li>
<li><a href="#trunkSourceWebCoretestingMockContentFiltercpp">trunk/Source/WebCore/testing/MockContentFilter.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingMockPaymentCoordinatorcpp">trunk/Source/WebCore/testing/MockPaymentCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingjsWebCoreTestSupportcpp">trunk/Source/WebCore/testing/js/WebCoreTestSupport.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersAbstractWorkerh">trunk/Source/WebCore/workers/AbstractWorker.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopeh">trunk/Source/WebCore/workers/WorkerGlobalScope.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopeProxyh">trunk/Source/WebCore/workers/WorkerGlobalScopeProxy.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerInspectorProxyh">trunk/Source/WebCore/workers/WorkerInspectorProxy.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerLocationh">trunk/Source/WebCore/workers/WorkerLocation.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerScriptLoaderh">trunk/Source/WebCore/workers/WorkerScriptLoader.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerThreadcpp">trunk/Source/WebCore/workers/WorkerThread.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerThreadh">trunk/Source/WebCore/workers/WorkerThread.h</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerh">trunk/Source/WebCore/workers/service/ServiceWorker.h</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerClientDatah">trunk/Source/WebCore/workers/service/ServiceWorkerClientData.h</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerContainercpp">trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerContextDatah">trunk/Source/WebCore/workers/service/ServiceWorkerContextData.h</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerDatah">trunk/Source/WebCore/workers/service/ServiceWorkerData.h</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerJobDatah">trunk/Source/WebCore/workers/service/ServiceWorkerJobData.h</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerRegistrationKeycpp">trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationKey.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersserviceServiceWorkerRegistrationKeyh">trunk/Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h</a></li>
<li><a href="#trunkSourceWebCoreworkletsWorkletGlobalScopeh">trunk/Source/WebCore/worklets/WorkletGlobalScope.h</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequesth">trunk/Source/WebCore/xml/XMLHttpRequest.h</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessCookiesWebCookieManagercpp">trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessCookiesWebCookieManagerh">trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessCookiesWebCookieManagermessagesin">trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessCustomProtocolsCocoaLegacyCustomProtocolManagerCocoamm">trunk/Source/WebKit/NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessDownloadsDownloadh">trunk/Source/WebKit/NetworkProcess/Downloads/Download.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessDownloadsDownloadManagercpp">trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessDownloadsDownloadManagerh">trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessDownloadsPendingDownloadcpp">trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessDownloadsPendingDownloadh">trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessDownloadscocoaDownloadCocoamm">trunk/Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessFileAPINetworkBlobRegistrycpp">trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessFileAPINetworkBlobRegistryh">trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkConnectionToWebProcessh">trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkConnectionToWebProcessmessagesin">trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkDataTaskcpp">trunk/Source/WebKit/NetworkProcess/NetworkDataTask.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkDataTaskBlobcpp">trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkLoadCheckerh">trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkProcesscpp">trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkProcessh">trunk/Source/WebKit/NetworkProcess/NetworkProcess.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkProcessmessagesin">trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkResourceLoadParametersh">trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkResourceLoadercpp">trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkResourceLoaderh">trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkSocketStreamcpp">trunk/Source/WebKit/NetworkProcess/NetworkSocketStream.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessNetworkSocketStreamh">trunk/Source/WebKit/NetworkProcess/NetworkSocketStream.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessPingLoadh">trunk/Source/WebKit/NetworkProcess/PingLoad.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessServiceWorkerWebSWServerConnectionh">trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessServiceWorkerWebSWServerConnectionmessagesin">trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in</a></li>
<li><a href="#trunkSourceWebKitNetworkProcessServiceWorkerWebSWServerToContextConnectionmessagesin">trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheCacheStorageEnginecpp">trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheCacheStorageEngineh">trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheCacheStorageEngineCacheh">trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheCacheStorageEngineConnectioncpp">trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheCacheStorageEngineConnectionh">trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheCacheStorageEngineConnectionmessagesin">trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheNetworkCacheh">trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheNetworkCacheStatisticscpp">trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStatistics.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscacheNetworkCacheSubresourcesEntryh">trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscaptureNetworkCaptureEventcpp">trunk/Source/WebKit/NetworkProcess/capture/NetworkCaptureEvent.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscaptureNetworkCaptureManagercpp">trunk/Source/WebKit/NetworkProcess/capture/NetworkCaptureManager.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscaptureNetworkCaptureManagerh">trunk/Source/WebKit/NetworkProcess/capture/NetworkCaptureManager.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscaptureNetworkCaptureResourcecpp">trunk/Source/WebKit/NetworkProcess/capture/NetworkCaptureResource.cpp</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscaptureNetworkCaptureResourceh">trunk/Source/WebKit/NetworkProcess/capture/NetworkCaptureResource.h</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscocoaNetworkDataTaskCocoamm">trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscocoaNetworkProcessCocoamm">trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitNetworkProcesscocoaNetworkSessionCocoamm">trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitPluginProcessmacPluginProcessMacmm">trunk/Source/WebKit/PluginProcess/mac/PluginProcessMac.mm</a></li>
<li><a href="#trunkSourceWebKitSharedAPIAPIURLh">trunk/Source/WebKit/Shared/API/APIURL.h</a></li>
<li><a href="#trunkSourceWebKitSharedAPIAPIUserContentURLPatternh">trunk/Source/WebKit/Shared/API/APIUserContentURLPattern.h</a></li>
<li><a href="#trunkSourceWebKitSharedAPIcWKURLRequestcpp">trunk/Source/WebKit/Shared/API/c/WKURLRequest.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedAPIcWKURLResponsecpp">trunk/Source/WebKit/Shared/API/c/WKURLResponse.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedAPIccfWKURLCFmm">trunk/Source/WebKit/Shared/API/c/cf/WKURLCF.mm</a></li>
<li><a href="#trunkSourceWebKitSharedAPIglibWebKitURIRequestcpp">trunk/Source/WebKit/Shared/API/glib/WebKitURIRequest.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedAPIglibWebKitURIResponsecpp">trunk/Source/WebKit/Shared/API/glib/WebKitURIResponse.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedAPIWebArchiveResourcemm">trunk/Source/WebKit/Shared/APIWebArchiveResource.mm</a></li>
<li><a href="#trunkSourceWebKitSharedAssistedNodeInformationh">trunk/Source/WebKit/Shared/AssistedNodeInformation.h</a></li>
<li><a href="#trunkSourceWebKitSharedCocoaWKNSURLExtrasmm">trunk/Source/WebKit/Shared/Cocoa/WKNSURLExtras.mm</a></li>
<li><a href="#trunkSourceWebKitSharedSessionStateh">trunk/Source/WebKit/Shared/SessionState.h</a></li>
<li><a href="#trunkSourceWebKitSharedWebBackForwardListItemcpp">trunk/Source/WebKit/Shared/WebBackForwardListItem.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedWebCoreArgumentCoderscpp">trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedWebCoreArgumentCodersh">trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h</a></li>
<li><a href="#trunkSourceWebKitSharedWebErrorsh">trunk/Source/WebKit/Shared/WebErrors.h</a></li>
<li><a href="#trunkSourceWebKitSharedWebHitTestResultDatacpp">trunk/Source/WebKit/Shared/WebHitTestResultData.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedcfArgumentCodersCFcpp">trunk/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp</a></li>
<li><a href="#trunkSourceWebKitSharedgtkWebErrorsGtkcpp">trunk/Source/WebKit/Shared/gtk/WebErrorsGtk.cpp</a></li>
<li><a href="#trunkSourceWebKitSharediosInteractionInformationAtPositionh">trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPIHTTPCookieStoreh">trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPINavigationcpp">trunk/Source/WebKit/UIProcess/API/APINavigation.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPINavigationh">trunk/Source/WebKit/UIProcess/API/APINavigation.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPINavigationActionh">trunk/Source/WebKit/UIProcess/API/APINavigationAction.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPINavigationClienth">trunk/Source/WebKit/UIProcess/API/APINavigationClient.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPIUIClienth">trunk/Source/WebKit/UIProcess/API/APIUIClient.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPIUserScriptcpp">trunk/Source/WebKit/UIProcess/API/APIUserScript.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPIUserScripth">trunk/Source/WebKit/UIProcess/API/APIUserScript.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPIUserStyleSheetcpp">trunk/Source/WebKit/UIProcess/API/APIUserStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIAPIUserStyleSheeth">trunk/Source/WebKit/UIProcess/API/APIUserStyleSheet.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICWKOpenPanelResultListenercpp">trunk/Source/WebKit/UIProcess/API/C/WKOpenPanelResultListener.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICWKPagecpp">trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICWKPageGroupcpp">trunk/Source/WebKit/UIProcess/API/C/WKPageGroup.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICWKWebsiteDataStoreRefcpp">trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKHTTPCookieStoremm">trunk/Source/WebKit/UIProcess/API/Cocoa/WKHTTPCookieStore.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKUserScriptmm">trunk/Source/WebKit/UIProcess/API/Cocoa/WKUserScript.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKWebViewConfigurationmm">trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKWebViewInternalh">trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKWebsiteDataStoremm">trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoa_WKApplicationManifestmm">trunk/Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoa_WKUserStyleSheetmm">trunk/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibIconDatabasecpp">trunk/Source/WebKit/UIProcess/API/glib/IconDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitCookieManagercpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitCookieManager.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitFileChooserRequestcpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitFileChooserRequest.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitSecurityOrigincpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitUIClientcpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitURISchemeRequestcpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequest.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitWebViewcpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIgtkWebKitRemoteInspectorProtocolHandlercpp">trunk/Source/WebKit/UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessApplePayWebPaymentCoordinatorProxycpp">trunk/Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessApplePayWebPaymentCoordinatorProxyh">trunk/Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessApplePaycocoaWebPaymentCoordinatorProxyCocoah">trunk/Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessApplePaycocoaWebPaymentCoordinatorProxyCocoamm">trunk/Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessApplePayiosWebPaymentCoordinatorProxyIOSmm">trunk/Source/WebKit/UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessApplePaymacWebPaymentCoordinatorProxyMacmm">trunk/Source/WebKit/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAutomationWebAutomationSessioncpp">trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaDownloadClientmm">trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaNavigationStateh">trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaNavigationStatemm">trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaSafeBrowsingWarningCocoamm">trunk/Source/WebKit/UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaSystemPreviewControllerCocoamm">trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaUIDelegateh">trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaUIDelegatemm">trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWKReloadFrameErrorRecoveryAttemptermm">trunk/Source/WebKit/UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWKSafeBrowsingWarningh">trunk/Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWKSafeBrowsingWarningmm">trunk/Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWebPasteboardProxyCocoamm">trunk/Source/WebKit/UIProcess/Cocoa/WebPasteboardProxyCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWebViewImplh">trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWebViewImplmm">trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessDownloadsDownloadProxycpp">trunk/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessDownloadsDownloadProxyh">trunk/Source/WebKit/UIProcess/Downloads/DownloadProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessFrameLoadStatecpp">trunk/Source/WebKit/UIProcess/FrameLoadState.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessFrameLoadStateh">trunk/Source/WebKit/UIProcess/FrameLoadState.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessNetworkNetworkProcessProxycpp">trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessNetworkNetworkProcessProxyh">trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessPageClienth">trunk/Source/WebKit/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessPageLoadStatecpp">trunk/Source/WebKit/UIProcess/PageLoadState.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessPluginsPluginInfoStorecpp">trunk/Source/WebKit/UIProcess/Plugins/PluginInfoStore.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessPluginsPluginInfoStoreh">trunk/Source/WebKit/UIProcess/Plugins/PluginInfoStore.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessPluginsmacPluginProcessProxyMacmm">trunk/Source/WebKit/UIProcess/Plugins/mac/PluginProcessProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessSafeBrowsingWarningh">trunk/Source/WebKit/UIProcess/SafeBrowsingWarning.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessSuspendedPageProxycpp">trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessSystemPreviewControllerh">trunk/Source/WebKit/UIProcess/SystemPreviewController.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebCookieManagerProxyh">trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebFrameProxyh">trunk/Source/WebKit/UIProcess/WebFrameProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebInspectorProxyh">trunk/Source/WebKit/UIProcess/WebInspectorProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebOpenPanelResultListenerProxycpp">trunk/Source/WebKit/UIProcess/WebOpenPanelResultListenerProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxycpp">trunk/Source/WebKit/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxyh">trunk/Source/WebKit/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxymessagesin">trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessPoolcpp">trunk/Source/WebKit/UIProcess/WebProcessPool.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessPoolh">trunk/Source/WebKit/UIProcess/WebProcessPool.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessProxycpp">trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebProcessProxyh">trunk/Source/WebKit/UIProcess/WebProcessProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebResourceLoadStatisticsStorecpp">trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebResourceLoadStatisticsStoreh">trunk/Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosDragDropInteractionStateh">trunk/Source/WebKit/UIProcess/ios/DragDropInteractionState.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosPageClientImplIOSh">trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosPageClientImplIOSmm">trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKActionSheetAssistantmm">trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKContentViewInteractionmm">trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKGeolocationProviderIOSmm">trunk/Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKLegacyPDFViewmm">trunk/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKPDFViewmm">trunk/Source/WebKit/UIProcess/ios/WKPDFView.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosfullscreenWKFullScreenWindowControllerIOSmm">trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacLegacySessionStateCodingcpp">trunk/Source/WebKit/UIProcess/mac/LegacySessionStateCoding.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacPageClientImplMach">trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacPageClientImplMacmm">trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacWKImmediateActionControllermm">trunk/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcesswinWebInspectorProxyWincpp">trunk/Source/WebKit/UIProcess/win/WebInspectorProxyWin.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessApplePayWebPaymentCoordinatorcpp">trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessApplePayWebPaymentCoordinatorh">trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessCacheWebCacheStorageConnectioncpp">trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessCacheWebCacheStorageConnectionh">trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessFileAPIBlobRegistryProxycpp">trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessFileAPIBlobRegistryProxyh">trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleAPIAPIInjectedBundlePageLoaderClienth">trunk/Source/WebKit/WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleAPIcWKBundleFramecpp">trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleAPIcWKBundlePagecpp">trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleAPIgtkDOMConvertToUTF8Stringcpp">trunk/Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleAPIgtkDOMConvertToUTF8Stringh">trunk/Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleInjectedBundleHitTestResultcpp">trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessInjectedBundleInjectedBundlePageLoaderClienth">trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessMediaCacheWebMediaKeyStorageManagercpp">trunk/Source/WebKit/WebProcess/MediaCache/WebMediaKeyStorageManager.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessNetworkWebLoaderStrategycpp">trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessNetworkWebLoaderStrategyh">trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessNetworkWebSocketProviderh">trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessNetworkWebSocketStreamcpp">trunk/Source/WebKit/WebProcess/Network/WebSocketStream.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessNetworkWebSocketStreamh">trunk/Source/WebKit/WebProcess/Network/WebSocketStream.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsNetscapeNetscapePlugincpp">trunk/Source/WebKit/WebProcess/Plugins/Netscape/NetscapePlugin.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsNetscapeNetscapePluginh">trunk/Source/WebKit/WebProcess/Plugins/Netscape/NetscapePlugin.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsNetscapeNetscapePluginStreamh">trunk/Source/WebKit/WebProcess/Plugins/Netscape/NetscapePluginStream.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsPDFPDFPluginh">trunk/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsPDFPDFPluginmm">trunk/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsPluginh">trunk/Source/WebKit/WebProcess/Plugins/Plugin.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsPluginControllerh">trunk/Source/WebKit/WebProcess/Plugins/PluginController.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsPluginProxyh">trunk/Source/WebKit/WebProcess/Plugins/PluginProxy.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsPluginViewcpp">trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsWebPluginInfoProvidercpp">trunk/Source/WebKit/WebProcess/Plugins/WebPluginInfoProvider.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessPluginsWebPluginInfoProviderh">trunk/Source/WebKit/WebProcess/Plugins/WebPluginInfoProvider.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessStorageWebSWClientConnectionh">trunk/Source/WebKit/WebProcess/Storage/WebSWClientConnection.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessStorageWebSWContextManagerConnectionh">trunk/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessUserContentWebUserContentControllerh">trunk/Source/WebKit/WebProcess/UserContent/WebUserContentController.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebChromeClienth">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebContextMenuClienth">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebContextMenuClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebDragClienth">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebDragClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebFrameLoaderClientcpp">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebPlatformStrategiescpp">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportmacWebDragClientMacmm">trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportmacWebEditorClientMacmm">trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageVisitedLinkTableControllerh">trunk/Source/WebKit/WebProcess/WebPage/VisitedLinkTableController.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebFramecpp">trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebFrameh">trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebPagecpp">trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebPageh">trunk/Source/WebKit/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageWebPagemessagesin">trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPagegtkWebPrintOperationGtkcpp">trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPagegtkWebPrintOperationGtkh">trunk/Source/WebKit/WebProcess/WebPage/gtk/WebPrintOperationGtk.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebProcesscpp">trunk/Source/WebKit/WebProcess/WebProcess.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebProcessh">trunk/Source/WebKit/WebProcess/WebProcess.h</a></li>
<li><a href="#trunkSourceWebKitWebProcesscocoaWebProcessCocoamm">trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitLegacyChangeLog">trunk/Source/WebKitLegacy/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitLegacyWebCoreSupportWebResourceLoadSchedulercpp">trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacyWebCoreSupportWebResourceLoadSchedulerh">trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacChangeLog">trunk/Source/WebKitLegacy/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMAttrmm">trunk/Source/WebKitLegacy/mac/DOM/DOMAttr.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMBlobmm">trunk/Source/WebKitLegacy/mac/DOM/DOMBlob.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSCharsetRulemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSCharsetRule.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSImportRulemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSImportRule.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSMediaRulemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSMediaRule.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSPageRulemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSPageRule.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSPrimitiveValuemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSPrimitiveValue.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSRulemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSRule.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSStyleDeclarationmm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSStyleDeclaration.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSStyleRulemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSStyleRule.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSStyleSheetmm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSStyleSheet.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCSSValuemm">trunk/Source/WebKitLegacy/mac/DOM/DOMCSSValue.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCharacterDatamm">trunk/Source/WebKitLegacy/mac/DOM/DOMCharacterData.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMCountermm">trunk/Source/WebKitLegacy/mac/DOM/DOMCounter.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMDocumentmm">trunk/Source/WebKitLegacy/mac/DOM/DOMDocument.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMDocumentFragmentmm">trunk/Source/WebKitLegacy/mac/DOM/DOMDocumentFragment.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMDocumentTypemm">trunk/Source/WebKitLegacy/mac/DOM/DOMDocumentType.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMEventmm">trunk/Source/WebKitLegacy/mac/DOM/DOMEvent.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMFilemm">trunk/Source/WebKitLegacy/mac/DOM/DOMFile.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLAnchorElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLAnchorElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLAppletElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLAppletElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLAreaElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLAreaElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLBRElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLBRElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLBaseElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLBaseElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLBaseFontElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLBaseFontElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLBodyElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLBodyElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLButtonElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLButtonElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLCanvasElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLCanvasElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLCollectionmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLCollection.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLDivElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLDivElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLDocumentmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLDocument.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLEmbedElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLEmbedElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLFieldSetElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLFieldSetElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLFontElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLFontElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLFormElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLFormElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLFrameElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLFrameElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLFrameSetElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLFrameSetElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLHRElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLHRElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLHeadElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLHeadElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLHeadingElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLHeadingElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLHtmlElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLHtmlElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLIFrameElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLIFrameElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLImageElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLImageElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLInputElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLInputElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLLIElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLLIElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLLabelElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLLabelElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLLegendElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLLegendElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLLinkElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLLinkElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLMapElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLMapElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLMarqueeElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLMarqueeElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLMediaElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLMediaElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLMetaElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLMetaElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLModElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLModElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLOListElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLOListElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLObjectElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLObjectElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLOptGroupElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLOptGroupElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLOptionElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLOptionElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLOptionsCollectionmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLOptionsCollection.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLParagraphElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLParagraphElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLParamElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLParamElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLQuoteElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLQuoteElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLScriptElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLScriptElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLSelectElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLSelectElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLStyleElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLStyleElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTableCaptionElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTableCaptionElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTableCellElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTableCellElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTableColElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTableColElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTableElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTableElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTableRowElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTableRowElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTableSectionElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTableSectionElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLTitleElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLTitleElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLUListElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLUListElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMHTMLVideoElementmm">trunk/Source/WebKitLegacy/mac/DOM/DOMHTMLVideoElement.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMKeyboardEventmm">trunk/Source/WebKitLegacy/mac/DOM/DOMKeyboardEvent.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMMediaListmm">trunk/Source/WebKitLegacy/mac/DOM/DOMMediaList.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMMouseEventmm">trunk/Source/WebKitLegacy/mac/DOM/DOMMouseEvent.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMMutationEventmm">trunk/Source/WebKitLegacy/mac/DOM/DOMMutationEvent.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMNamedNodeMapmm">trunk/Source/WebKitLegacy/mac/DOM/DOMNamedNodeMap.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMProcessingInstructionmm">trunk/Source/WebKitLegacy/mac/DOM/DOMProcessingInstruction.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMRangemm">trunk/Source/WebKitLegacy/mac/DOM/DOMRange.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMStyleSheetmm">trunk/Source/WebKitLegacy/mac/DOM/DOMStyleSheet.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMTextmm">trunk/Source/WebKitLegacy/mac/DOM/DOMText.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMTextEventmm">trunk/Source/WebKitLegacy/mac/DOM/DOMTextEvent.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMTokenListmm">trunk/Source/WebKitLegacy/mac/DOM/DOMTokenList.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMUIEventmm">trunk/Source/WebKitLegacy/mac/DOM/DOMUIEvent.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacDOMDOMXPathResultmm">trunk/Source/WebKitLegacy/mac/DOM/DOMXPathResult.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacHistoryWebHistoryItemmm">trunk/Source/WebKitLegacy/mac/History/WebHistoryItem.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacMiscWebNSURLExtrasmm">trunk/Source/WebKitLegacy/mac/Misc/WebNSURLExtras.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacMiscWebUserContentURLPatternmm">trunk/Source/WebKitLegacy/mac/Misc/WebUserContentURLPattern.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacPluginsHostedNetscapePluginInstanceProxymm">trunk/Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacPluginsWebNetscapePluginStreamh">trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebChromeClienth">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebChromeClientmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebContextMenuClienth">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebContextMenuClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebContextMenuClientmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebContextMenuClient.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebDragClienth">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebFrameLoaderClientmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebPaymentCoordinatorClienth">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebPaymentCoordinatorClientmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebPlatformStrategiesmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPlatformStrategies.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebPluginInfoProviderh">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPluginInfoProvider.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebPluginInfoProvidermm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPluginInfoProvider.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebSecurityOriginmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebSecurityOrigin.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebVisitedLinkStoreh">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebVisitedLinkStore.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebDataSourcemm">trunk/Source/WebKitLegacy/mac/WebView/WebDataSource.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebFramemm">trunk/Source/WebKitLegacy/mac/WebView/WebFrame.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebImmediateActionControllermm">trunk/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebPDFViewmm">trunk/Source/WebKitLegacy/mac/WebView/WebPDFView.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebScriptDebuggermm">trunk/Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebViewInternalh">trunk/Source/WebKitLegacy/mac/WebView/WebViewInternal.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinChangeLog">trunk/Source/WebKitLegacy/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitLegacywinMarshallingHelperscpp">trunk/Source/WebKitLegacy/win/MarshallingHelpers.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinMarshallingHelpersh">trunk/Source/WebKitLegacy/win/MarshallingHelpers.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinPluginsPluginDatabasecpp">trunk/Source/WebKitLegacy/win/Plugins/PluginDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinPluginsPluginDatabaseh">trunk/Source/WebKitLegacy/win/Plugins/PluginDatabase.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinPluginsPluginDatabaseWincpp">trunk/Source/WebKitLegacy/win/Plugins/PluginDatabaseWin.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinPluginsPluginStreamh">trunk/Source/WebKitLegacy/win/Plugins/PluginStream.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinPluginsPluginViewh">trunk/Source/WebKitLegacy/win/Plugins/PluginView.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebContextMenuClienth">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebContextMenuClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebDesktopNotificationsDelegatecpp">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebDesktopNotificationsDelegate.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebDesktopNotificationsDelegateh">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebDesktopNotificationsDelegate.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebFrameLoaderClienth">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebPlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebPluginInfoProvidercpp">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebPluginInfoProvider.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebPluginInfoProviderh">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebPluginInfoProvider.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebVisitedLinkStoreh">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebVisitedLinkStore.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebDataSourcecpp">trunk/Source/WebKitLegacy/win/WebDataSource.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebDownloadh">trunk/Source/WebKitLegacy/win/WebDownload.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebElementPropertyBagcpp">trunk/Source/WebKitLegacy/win/WebElementPropertyBag.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebFrameh">trunk/Source/WebKitLegacy/win/WebFrame.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebHistorycpp">trunk/Source/WebKitLegacy/win/WebHistory.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebHistoryh">trunk/Source/WebKitLegacy/win/WebHistory.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebHistoryItemcpp">trunk/Source/WebKitLegacy/win/WebHistoryItem.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebResourcecpp">trunk/Source/WebKitLegacy/win/WebResource.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebResourceh">trunk/Source/WebKitLegacy/win/WebResource.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebSecurityOrigincpp">trunk/Source/WebKitLegacy/win/WebSecurityOrigin.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebURLResponsecpp">trunk/Source/WebKitLegacy/win/WebURLResponse.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebUserContentURLPatterncpp">trunk/Source/WebKitLegacy/win/WebUserContentURLPattern.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebViewh">trunk/Source/WebKitLegacy/win/WebView.h</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreContentExtensionscpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreSecurityOrigincpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreURLcpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreURLParsercpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreUserAgentQuirkscpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreYouTubePluginReplacementcpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/YouTubePluginReplacement.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCorecocoaURLExtrasmm">trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebKitCocoaLoadAlternateHTMLStringmm">trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadAlternateHTMLString.mm</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebKitCocoaLoadInvalidURLRequestmm">trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/LoadInvalidURLRequest.mm</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebKitGLibTestCookieManagercpp">trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestCookieManager.cpp</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsmacLoadInvalidURLRequestmm">trunk/Tools/TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.mm</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsmacSSLKeyGeneratormm">trunk/Tools/TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm</a></li>
<li><a href="#trunkToolsTestWebKitAPIwinPlatformUtilitiesWincpp">trunk/Tools/TestWebKitAPI/win/PlatformUtilitiesWin.cpp</a></li>
<li><a href="#trunkToolslldblldb_webkitpy">trunk/Tools/lldb/lldb_webkit.py</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWTFwtfURLcpp">trunk/Source/WTF/wtf/URL.cpp</a></li>
<li><a href="#trunkSourceWTFwtfURLh">trunk/Source/WTF/wtf/URL.h</a></li>
<li><a href="#trunkSourceWTFwtfURLHashh">trunk/Source/WTF/wtf/URLHash.h</a></li>
<li><a href="#trunkSourceWTFwtfURLParsercpp">trunk/Source/WTF/wtf/URLParser.cpp</a></li>
<li><a href="#trunkSourceWTFwtfURLParserh">trunk/Source/WTF/wtf/URLParser.h</a></li>
<li><a href="#trunkSourceWTFwtfcfCFURLExtrascpp">trunk/Source/WTF/wtf/cf/CFURLExtras.cpp</a></li>
<li><a href="#trunkSourceWTFwtfcfCFURLExtrash">trunk/Source/WTF/wtf/cf/CFURLExtras.h</a></li>
<li><a href="#trunkSourceWTFwtfcfURLCFcpp">trunk/Source/WTF/wtf/cf/URLCF.cpp</a></li>
<li><a href="#trunkSourceWTFwtfcocoaNSURLExtrash">trunk/Source/WTF/wtf/cocoa/NSURLExtras.h</a></li>
<li><a href="#trunkSourceWTFwtfcocoaNSURLExtrasmm">trunk/Source/WTF/wtf/cocoa/NSURLExtras.mm</a></li>
<li><a href="#trunkSourceWTFwtfcocoaURLCocoamm">trunk/Source/WTF/wtf/cocoa/URLCocoa.mm</a></li>
<li><a href="#trunkSourceWTFwtfglibGUniquePtrSouph">trunk/Source/WTF/wtf/glib/GUniquePtrSoup.h</a></li>
<li><a href="#trunkSourceWTFwtfglibURLSoupcpp">trunk/Source/WTF/wtf/glib/URLSoup.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformglibSSLKeyGeneratorGLibcpp">trunk/Source/WebCore/platform/glib/SSLKeyGeneratorGLib.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkcurlCookieJarCurlDatabasecpp">trunk/Source/WebCore/platform/network/curl/CookieJarCurlDatabase.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaSafeBrowsingResultCocoamm">trunk/Source/WebKit/UIProcess/Cocoa/SafeBrowsingResultCocoa.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessSafeBrowsingResulth">trunk/Source/WebKit/UIProcess/SafeBrowsingResult.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformURLcpp">trunk/Source/WebCore/platform/URL.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLh">trunk/Source/WebCore/platform/URL.h</a></li>
<li><a href="#trunkSourceWebCoreplatformURLHashh">trunk/Source/WebCore/platform/URLHash.h</a></li>
<li><a href="#trunkSourceWebCoreplatformURLParsercpp">trunk/Source/WebCore/platform/URLParser.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLParserh">trunk/Source/WebCore/platform/URLParser.h</a></li>
<li><a href="#trunkSourceWebCoreplatformcfCFURLExtrascpp">trunk/Source/WebCore/platform/cf/CFURLExtras.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformcfCFURLExtrash">trunk/Source/WebCore/platform/cf/CFURLExtras.h</a></li>
<li><a href="#trunkSourceWebCoreplatformcfURLCFcpp">trunk/Source/WebCore/platform/cf/URLCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacURLMacmm">trunk/Source/WebCore/platform/mac/URLMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworksoupGUniquePtrSouph">trunk/Source/WebCore/platform/network/soup/GUniquePtrSoup.h</a></li>
<li><a href="#trunkSourceWebCoreplatformsoupURLSoupcpp">trunk/Source/WebCore/platform/soup/URLSoup.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog       2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/ChangeLog  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -1,3 +1,80 @@
</span><ins>+2018-11-30  Alex Christensen  <achristensen@webkit.org>
+
+        Move URL from WebCore to WTF
+        https://bugs.webkit.org/show_bug.cgi?id=190234
+
+        Reviewed by Keith Miller.
+
+        * WTF.xcodeproj/project.pbxproj:
+        * wtf/CMakeLists.txt:
+        * wtf/Forward.h:
+        * wtf/PlatformGTK.cmake:
+        * wtf/PlatformMac.cmake:
+        * wtf/PlatformWPE.cmake:
+        * wtf/PlatformWin.cmake:
+        * wtf/URL.cpp: Renamed from Source/WebCore/platform/URL.cpp.
+        (WTF::URL::protocolIs):
+        * wtf/URL.h: Renamed from Source/WebCore/platform/URL.h.
+        * wtf/URLHash.h: Renamed from Source/WebCore/platform/URLHash.h.
+        (WTF::URLHash::hash):
+        (WTF::URLHash::equal):
+        * wtf/URLParser.cpp: Renamed from Source/WebCore/platform/URLParser.cpp.
+        (WTF::URLParser::isInUserInfoEncodeSet):
+        (WTF::URLParser::parseAuthority):
+        * wtf/URLParser.h: Renamed from Source/WebCore/platform/URLParser.h.
+        (WTF::URLParser::URLParser):
+        (WTF::URLParser::result):
+        * wtf/cf/CFURLExtras.cpp: Renamed from Source/WebCore/platform/cf/CFURLExtras.cpp.
+        * wtf/cf/CFURLExtras.h: Renamed from Source/WebCore/platform/cf/CFURLExtras.h.
+        * wtf/cf/URLCF.cpp: Renamed from Source/WebCore/platform/cf/URLCF.cpp.
+        * wtf/cocoa/NSURLExtras.h: Copied from Source/WebCore/loader/archive/ArchiveResourceCollection.h.
+        * wtf/cocoa/NSURLExtras.mm: Copied from Source/WebCore/platform/mac/WebCoreNSURLExtras.mm.
+        (WTF::isArmenianLookalikeCharacter):
+        (WTF::isArmenianScriptCharacter):
+        (WTF::isASCIIDigitOrValidHostCharacter):
+        (WTF::isLookalikeCharacter):
+        (WTF::whiteListIDNScript):
+        (WTF::readIDNScriptWhiteListFile):
+        (WTF::allCharactersInIDNScriptWhiteList):
+        (WTF::isSecondLevelDomainNameAllowedByTLDRules):
+        (WTF::isRussianDomainNameCharacter):
+        (WTF::allCharactersAllowedByTLDRules):
+        (WTF::mapHostNameWithRange):
+        (WTF::hostNameNeedsDecodingWithRange):
+        (WTF::hostNameNeedsEncodingWithRange):
+        (WTF::decodeHostNameWithRange):
+        (WTF::encodeHostNameWithRange):
+        (WTF::decodeHostName):
+        (WTF::encodeHostName):
+        (WTF::collectRangesThatNeedMapping):
+        (WTF::collectRangesThatNeedEncoding):
+        (WTF::collectRangesThatNeedDecoding):
+        (WTF::applyHostNameFunctionToMailToURLString):
+        (WTF::applyHostNameFunctionToURLString):
+        (WTF::mapHostNames):
+        (WTF::stringByTrimmingWhitespace):
+        (WTF::URLByTruncatingOneCharacterBeforeComponent):
+        (WTF::URLByRemovingResourceSpecifier):
+        (WTF::URLWithData):
+        (WTF::dataWithUserTypedString):
+        (WTF::URLWithUserTypedString):
+        (WTF::URLWithUserTypedStringDeprecated):
+        (WTF::hasQuestionMarkOnlyQueryString):
+        (WTF::dataForURLComponentType):
+        (WTF::URLByRemovingComponentAndSubsequentCharacter):
+        (WTF::URLByRemovingUserInfo):
+        (WTF::originalURLData):
+        (WTF::createStringWithEscapedUnsafeCharacters):
+        (WTF::userVisibleString):
+        (WTF::isUserVisibleURL):
+        (WTF::rangeOfURLScheme):
+        (WTF::looksLikeAbsoluteURL):
+        * wtf/cocoa/URLCocoa.mm: Renamed from Source/WebCore/platform/mac/URLMac.mm.
+        (WTF::URL::URL):
+        (WTF::URL::createCFURL const):
+        * wtf/glib/GUniquePtrSoup.h: Renamed from Source/WebCore/platform/network/soup/GUniquePtrSoup.h.
+        * wtf/glib/URLSoup.cpp: Renamed from Source/WebCore/platform/soup/URLSoup.cpp.
+
</ins><span class="cx"> 2018-11-30  Alexey Proskuryakov  <ap@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Move USE_CFNETWORK_IGNORE_HSTS to its proper place
</span></span></pre></div>
<a id="trunkSourceWTFWTFxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.xcodeproj/project.pbxproj (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.xcodeproj/project.pbxproj   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/WTF.xcodeproj/project.pbxproj      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -72,6 +72,12 @@
</span><span class="cx">          5311BD531EA71CAD00525281 /* Signals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5311BD511EA71CAD00525281 /* Signals.cpp */; };
</span><span class="cx">          5311BD5C1EA822F900525281 /* ThreadMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5311BD5B1EA822F900525281 /* ThreadMessage.cpp */; };
</span><span class="cx">          53534F2A1EC0E10E00141B2F /* MachExceptions.defs in Sources */ = {isa = PBXBuildFile; fileRef = 53534F291EC0E10E00141B2F /* MachExceptions.defs */; settings = {ATTRIBUTES = (Client, Server, ); }; };
</span><ins>+               5C1F05932164356B0039302C /* CFURLExtras.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C1F05912164356B0039302C /* CFURLExtras.cpp */; };
+               5C1F0595216437B30039302C /* URLCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C1F0594216437B30039302C /* URLCF.cpp */; };
+               5CC0EE7521629F1900A1A842 /* URLParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CC0EE7321629F1900A1A842 /* URLParser.cpp */; };
+               5CC0EE7621629F1900A1A842 /* URL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CC0EE7421629F1900A1A842 /* URL.cpp */; };
+               5CC0EE892162BC2200A1A842 /* URLCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CC0EE862162BC2200A1A842 /* URLCocoa.mm */; };
+               5CC0EE8A2162BC2200A1A842 /* NSURLExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CC0EE882162BC2200A1A842 /* NSURLExtras.mm */; };
</ins><span class="cx">           70A993FE1AD7151300FA615B /* SymbolRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70A993FC1AD7151300FA615B /* SymbolRegistry.cpp */; };
</span><span class="cx">          70ECA60D1B02426800449739 /* AtomicStringImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70ECA60A1B02426800449739 /* AtomicStringImpl.cpp */; };
</span><span class="cx">          7A05093F1FB9DCC500B33FB8 /* JSONValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A05093E1FB9DCC500B33FB8 /* JSONValues.cpp */; };
</span><span class="lines">@@ -359,7 +365,19 @@
</span><span class="cx">          553071C91C40427200384898 /* TinyLRUCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TinyLRUCache.h; sourceTree = "<group>"; };
</span><span class="cx">          5597F82C1D94B9970066BC21 /* SynchronizedFixedQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynchronizedFixedQueue.h; sourceTree = "<group>"; };
</span><span class="cx">          5B43383A5D0B463C9433D933 /* IndexMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IndexMap.h; sourceTree = "<group>"; };
</span><ins>+               5C1F05912164356B0039302C /* CFURLExtras.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CFURLExtras.cpp; sourceTree = "<group>"; };
+               5C1F05922164356B0039302C /* CFURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFURLExtras.h; sourceTree = "<group>"; };
+               5C1F0594216437B30039302C /* URLCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URLCF.cpp; sourceTree = "<group>"; };
+               5C1F0597216439940039302C /* URLHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLHash.h; sourceTree = "<group>"; };
</ins><span class="cx">           5C7C88D31D0A3A0A009D2F6D /* UniqueRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueRef.h; sourceTree = "<group>"; };
</span><ins>+               5CC0EE7121629F1800A1A842 /* URL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URL.h; sourceTree = "<group>"; };
+               5CC0EE7221629F1900A1A842 /* URLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLParser.h; sourceTree = "<group>"; };
+               5CC0EE7321629F1900A1A842 /* URLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URLParser.cpp; sourceTree = "<group>"; };
+               5CC0EE7421629F1900A1A842 /* URL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URL.cpp; sourceTree = "<group>"; };
+               5CC0EE772162A01000A1A842 /* URLHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLHash.h; sourceTree = "<group>"; };
+               5CC0EE862162BC2200A1A842 /* URLCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = URLCocoa.mm; sourceTree = "<group>"; };
+               5CC0EE872162BC2200A1A842 /* NSURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSURLExtras.h; sourceTree = "<group>"; };
+               5CC0EE882162BC2200A1A842 /* NSURLExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NSURLExtras.mm; sourceTree = "<group>"; };
</ins><span class="cx">           5D247B6214689B8600E78B76 /* libWTF.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">          5D247B6E14689C4700E78B76 /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
</span><span class="cx">          5D247B7014689C4700E78B76 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
</span><span class="lines">@@ -697,9 +715,12 @@
</span><span class="cx">          2CDED0F018115C3F004DBA70 /* cf */ = {
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><ins>+                               5C1F05912164356B0039302C /* CFURLExtras.cpp */,
+                               5C1F05922164356B0039302C /* CFURLExtras.h */,
</ins><span class="cx">                           C2BCFC411F61D61600C9222C /* LanguageCF.cpp */,
</span><span class="cx">                          2CDED0EE18115C38004DBA70 /* RunLoopCF.cpp */,
</span><span class="cx">                          1AFDE647195201C300C48FFA /* TypeCastsCF.h */,
</span><ins>+                               5C1F0594216437B30039302C /* URLCF.cpp */,
</ins><span class="cx">                   );
</span><span class="cx">                  path = cf;
</span><span class="cx">                  sourceTree = "<group>";
</span><span class="lines">@@ -1106,6 +1127,12 @@
</span><span class="cx">                          E300E521203D645F00DA79BE /* UniqueArray.h */,
</span><span class="cx">                          5C7C88D31D0A3A0A009D2F6D /* UniqueRef.h */,
</span><span class="cx">                          CD7600FF1F90A3CA00026E26 /* UnsafePointer.h */,
</span><ins>+                               5CC0EE7421629F1900A1A842 /* URL.cpp */,
+                               5CC0EE7121629F1800A1A842 /* URL.h */,
+                               5C1F0597216439940039302C /* URLHash.h */,
+                               5CC0EE772162A01000A1A842 /* URLHash.h */,
+                               5CC0EE7321629F1900A1A842 /* URLParser.cpp */,
+                               5CC0EE7221629F1900A1A842 /* URLParser.h */,
</ins><span class="cx">                           7AFEC6B01EB22B5900DADE36 /* UUID.cpp */,
</span><span class="cx">                          7AFEC6AE1EB22AC600DADE36 /* UUID.h */,
</span><span class="cx">                          A8A4736F151A825B004123FF /* ValueCheck.h */,
</span><span class="lines">@@ -1328,7 +1355,10 @@
</span><span class="cx">                          A8A472C5151A825A004123FF /* MainThreadCocoa.mm */,
</span><span class="cx">                          ADF2CE651E39F106006889DB /* MemoryFootprintCocoa.cpp */,
</span><span class="cx">                          AD89B6B91E64150F0090707F /* MemoryPressureHandlerCocoa.mm */,
</span><ins>+                               5CC0EE872162BC2200A1A842 /* NSURLExtras.h */,
+                               5CC0EE882162BC2200A1A842 /* NSURLExtras.mm */,
</ins><span class="cx">                           A30D412C1F0DE0BA00B71954 /* SoftLinking.h */,
</span><ins>+                               5CC0EE862162BC2200A1A842 /* URLCocoa.mm */,
</ins><span class="cx">                           E4A0AD3C1A96253C00536DF6 /* WorkQueueCocoa.cpp */,
</span><span class="cx">                  );
</span><span class="cx">                  path = cocoa;
</span><span class="lines">@@ -1418,6 +1448,7 @@
</span><span class="cx">                          A8A4738B151A825B004123FF /* BitVector.cpp in Sources */,
</span><span class="cx">                          DCEE22011CEA7551000C2396 /* BlockObjCExceptions.mm in Sources */,
</span><span class="cx">                          A8A473AC151A825B004123FF /* cached-powers.cc in Sources */,
</span><ins>+                               5C1F05932164356B0039302C /* CFURLExtras.cpp in Sources */,
</ins><span class="cx">                           0F66B28A1DC97BAB004A1D3F /* ClockType.cpp in Sources */,
</span><span class="cx">                          A8A47460151A825B004123FF /* CollatorDefault.cpp in Sources */,
</span><span class="cx">                          A8A47463151A825B004123FF /* CollatorICU.cpp in Sources */,
</span><span class="lines">@@ -1469,6 +1500,7 @@
</span><span class="cx">                          AD89B6BA1E64150F0090707F /* MemoryPressureHandlerCocoa.mm in Sources */,
</span><span class="cx">                          A8A473EC151A825B004123FF /* MetaAllocator.cpp in Sources */,
</span><span class="cx">                          0F66B28C1DC97BAB004A1D3F /* MonotonicTime.cpp in Sources */,
</span><ins>+                               5CC0EE8A2162BC2200A1A842 /* NSURLExtras.mm in Sources */,
</ins><span class="cx">                           A8A473F4151A825B004123FF /* NumberOfCores.cpp in Sources */,
</span><span class="cx">                          A8A473F7151A825B004123FF /* OSAllocatorPosix.cpp in Sources */,
</span><span class="cx">                          A8A473F9151A825B004123FF /* OSRandomSource.cpp in Sources */,
</span><span class="lines">@@ -1523,6 +1555,10 @@
</span><span class="cx">                          5311BD5C1EA822F900525281 /* ThreadMessage.cpp in Sources */,
</span><span class="cx">                          0F66B2901DC97BAB004A1D3F /* TimeWithDynamicClockType.cpp in Sources */,
</span><span class="cx">                          0F7075F51FBF53CD00489AF0 /* TimingScope.cpp in Sources */,
</span><ins>+                               5CC0EE7621629F1900A1A842 /* URL.cpp in Sources */,
+                               5C1F0595216437B30039302C /* URLCF.cpp in Sources */,
+                               5CC0EE892162BC2200A1A842 /* URLCocoa.mm in Sources */,
+                               5CC0EE7521629F1900A1A842 /* URLParser.cpp in Sources */,
</ins><span class="cx">                           1C181C8F1D307AB800F5FA16 /* UTextProvider.cpp in Sources */,
</span><span class="cx">                          1C181C911D307AB800F5FA16 /* UTextProviderLatin1.cpp in Sources */,
</span><span class="cx">                          1C181C931D307AB800F5FA16 /* UTextProviderUTF16.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWTFwtfCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/CMakeLists.txt (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CMakeLists.txt      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/wtf/CMakeLists.txt 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -240,6 +240,9 @@
</span><span class="cx">     TinyPtrSet.h
</span><span class="cx">     TriState.h
</span><span class="cx">     TypeCasts.h
</span><ins>+    URL.h
+    URLHash.h
+    URLParser.h
</ins><span class="cx">     UUID.h
</span><span class="cx">     UnalignedAccess.h
</span><span class="cx">     Unexpected.h
</span><span class="lines">@@ -394,6 +397,8 @@
</span><span class="cx">     Threading.cpp
</span><span class="cx">     TimeWithDynamicClockType.cpp
</span><span class="cx">     TimingScope.cpp
</span><ins>+    URL.cpp
+    URLParser.cpp
</ins><span class="cx">     UUID.cpp
</span><span class="cx">     WTFAssertions.cpp
</span><span class="cx">     WallTime.cpp
</span></span></pre></div>
<a id="trunkSourceWTFwtfForwardh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/Forward.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Forward.h   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/wtf/Forward.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> class TextPosition;
</span><span class="cx"> class TextStream;
</span><span class="cx"> class UniquedStringImpl;
</span><ins>+class URL;
</ins><span class="cx"> class WallTime;
</span><span class="cx"> 
</span><span class="cx"> struct FastMalloc;
</span><span class="lines">@@ -112,6 +113,7 @@
</span><span class="cx"> using WTF::StringView;
</span><span class="cx"> using WTF::TextPosition;
</span><span class="cx"> using WTF::TextStream;
</span><ins>+using WTF::URL;
</ins><span class="cx"> using WTF::Variant;
</span><span class="cx"> using WTF::Vector;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWTFwtfPlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/PlatformGTK.cmake (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/PlatformGTK.cmake   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/wtf/PlatformGTK.cmake      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -6,6 +6,7 @@
</span><span class="cx">     glib/GRefPtr.h
</span><span class="cx">     glib/GTypedefs.h
</span><span class="cx">     glib/GUniquePtr.h
</span><ins>+    glib/GUniquePtrSoup.h
</ins><span class="cx">     glib/RunLoopSourcePriority.h
</span><span class="cx">     glib/WTFGType.h
</span><span class="cx"> )
</span><span class="lines">@@ -25,6 +26,7 @@
</span><span class="cx">     glib/GLibUtilities.cpp
</span><span class="cx">     glib/GRefPtr.cpp
</span><span class="cx">     glib/RunLoopGLib.cpp
</span><ins>+    glib/URLSoup.cpp
</ins><span class="cx"> 
</span><span class="cx">     text/unix/TextBreakIteratorInternalICUUnix.cpp
</span><span class="cx"> 
</span><span class="lines">@@ -50,9 +52,11 @@
</span><span class="cx">     ${GLIB_GIO_LIBRARIES}
</span><span class="cx">     ${GLIB_GOBJECT_LIBRARIES}
</span><span class="cx">     ${GLIB_LIBRARIES}
</span><ins>+    ${LIBSOUP_LIBRARIES}
</ins><span class="cx">     ${ZLIB_LIBRARIES}
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> list(APPEND WTF_SYSTEM_INCLUDE_DIRECTORIES
</span><span class="cx">     ${GLIB_INCLUDE_DIRS}
</span><ins>+    ${LIBSOUP_INCLUDE_DIRS}
</ins><span class="cx"> )
</span></span></pre></div>
<a id="trunkSourceWTFwtfPlatformMaccmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/PlatformMac.cmake (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/PlatformMac.cmake   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/wtf/PlatformMac.cmake      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -8,10 +8,12 @@
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> list(APPEND WTF_PUBLIC_HEADERS
</span><ins>+    cf/CFURLExtras.h
</ins><span class="cx">     cf/TypeCastsCF.h
</span><span class="cx"> 
</span><span class="cx">     cocoa/Entitlements.h
</span><span class="cx">     cocoa/MachSendRight.h
</span><ins>+    cocoa/NSURLExtras.h
</ins><span class="cx">     cocoa/SoftLinking.h
</span><span class="cx"> 
</span><span class="cx">     darwin/WeakLinking.h
</span><span class="lines">@@ -37,8 +39,10 @@
</span><span class="cx">     SchedulePairCF.cpp
</span><span class="cx">     SchedulePairMac.mm
</span><span class="cx"> 
</span><ins>+    cf/CFURLExtras.cpp
</ins><span class="cx">     cf/LanguageCF.cpp
</span><span class="cx">     cf/RunLoopCF.cpp
</span><ins>+    cf/URLCF.cpp
</ins><span class="cx"> 
</span><span class="cx">     cocoa/AutodrainedPool.cpp
</span><span class="cx">     cocoa/CPUTimeCocoa.cpp
</span><span class="lines">@@ -47,6 +51,8 @@
</span><span class="cx">     cocoa/MainThreadCocoa.mm
</span><span class="cx">     cocoa/MemoryFootprintCocoa.cpp
</span><span class="cx">     cocoa/MemoryPressureHandlerCocoa.mm
</span><ins>+    cocoa/NSURLExtras.mm
+    cocoa/URLCocoa.mm
</ins><span class="cx">     cocoa/WorkQueueCocoa.cpp
</span><span class="cx"> 
</span><span class="cx">     mac/DeprecatedSymbolsUsedBySafari.mm
</span></span></pre></div>
<a id="trunkSourceWTFwtfPlatformWPEcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/PlatformWPE.cmake (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/PlatformWPE.cmake   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/wtf/PlatformWPE.cmake      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -4,6 +4,7 @@
</span><span class="cx">     glib/GRefPtr.h
</span><span class="cx">     glib/GTypedefs.h
</span><span class="cx">     glib/GUniquePtr.h
</span><ins>+    glib/GUniquePtrSoup.h
</ins><span class="cx">     glib/RunLoopSourcePriority.h
</span><span class="cx">     glib/WTFGType.h
</span><span class="cx"> 
</span><span class="lines">@@ -19,6 +20,7 @@
</span><span class="cx">     glib/GLibUtilities.cpp
</span><span class="cx">     glib/GRefPtr.cpp
</span><span class="cx">     glib/RunLoopGLib.cpp
</span><ins>+    glib/URLSoup.cpp
</ins><span class="cx"> 
</span><span class="cx">     linux/CurrentProcessMemoryStatus.cpp
</span><span class="cx">     linux/MemoryFootprintLinux.cpp
</span><span class="lines">@@ -35,9 +37,11 @@
</span><span class="cx">     ${GLIB_GIO_LIBRARIES}
</span><span class="cx">     ${GLIB_GOBJECT_LIBRARIES}
</span><span class="cx">     ${GLIB_LIBRARIES}
</span><ins>+    ${LIBSOUP_LIBRARIES}
</ins><span class="cx">     ${ZLIB_LIBRARIES}
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> list(APPEND WTF_SYSTEM_INCLUDE_DIRECTORIES
</span><span class="cx">     ${GLIB_INCLUDE_DIRS}
</span><ins>+    ${LIBSOUP_INCLUDE_DIRS}
</ins><span class="cx"> )
</span></span></pre></div>
<a id="trunkSourceWTFwtfPlatformWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/PlatformWin.cmake (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/PlatformWin.cmake   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WTF/wtf/PlatformWin.cmake      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -22,11 +22,15 @@
</span><span class="cx"> 
</span><span class="cx"> if (USE_CF)
</span><span class="cx">     list(APPEND WTF_PUBLIC_HEADERS
</span><ins>+        cf/CFURLExtras.h
</ins><span class="cx">         cf/TypeCastsCF.h
</span><span class="cx"> 
</span><span class="cx">         text/cf/TextBreakIteratorCF.h
</span><span class="cx">     )
</span><span class="cx">     list(APPEND WTF_SOURCES
</span><ins>+        cf/CFURLExtras.cpp
+        cf/URLCF.cpp
+
</ins><span class="cx">         text/cf/AtomicStringImplCF.cpp
</span><span class="cx">         text/cf/StringCF.cpp
</span><span class="cx">         text/cf/StringImplCF.cpp
</span></span></pre></div>
<a id="trunkSourceWTFwtfURLcppfromrev238769trunkSourceWebCoreplatformURLcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/URL.cpp (from rev 238769, trunk/Source/WebCore/platform/URL.cpp) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/URL.cpp                             (rev 0)
+++ trunk/Source/WTF/wtf/URL.cpp        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,1109 @@
</span><ins>+/*
+ * Copyright (C) 2004, 2007-2008, 2011-2013, 2015-2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2012 Research In Motion Limited. 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
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include "config.h"
+#include <wtf/URL.h>
+
+#include "URLParser.h"
+#include <stdio.h>
+#include <unicode/uidna.h>
+#include <wtf/HashMap.h>
+#include <wtf/HexNumber.h>
+#include <wtf/NeverDestroyed.h>
+#include <wtf/StdLibExtras.h>
+#include <wtf/UUID.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/StringBuilder.h>
+#include <wtf/text/StringConcatenateNumbers.h>
+#include <wtf/text/StringHash.h>
+#include <wtf/text/TextStream.h>
+
+// FIXME: This file makes too much use of the + operator on String.
+// We either have to optimize that operator so it doesn't involve
+// so many allocations, or change this to use StringBuffer instead.
+
+
+namespace WTF {
+
+typedef Vector<char, 512> CharBuffer;
+typedef Vector<UChar, 512> UCharBuffer;
+
+static const unsigned invalidPortNumber = 0xFFFF;
+
+// Copies the source to the destination, assuming all the source characters are
+// ASCII. The destination buffer must be large enough. Null characters are allowed
+// in the source string, and no attempt is made to null-terminate the result.
+static void copyASCII(const String& string, char* dest)
+{
+    if (string.isEmpty())
+        return;
+
+    if (string.is8Bit())
+        memcpy(dest, string.characters8(), string.length());
+    else {
+        const UChar* src = string.characters16();
+        size_t length = string.length();
+        for (size_t i = 0; i < length; i++)
+            dest[i] = static_cast<char>(src[i]);
+    }
+}
+
+void URL::invalidate()
+{
+    m_isValid = false;
+    m_protocolIsInHTTPFamily = false;
+    m_cannotBeABaseURL = false;
+    m_schemeEnd = 0;
+    m_userStart = 0;
+    m_userEnd = 0;
+    m_passwordEnd = 0;
+    m_hostEnd = 0;
+    m_portLength = 0;
+    m_pathEnd = 0;
+    m_pathAfterLastSlash = 0;
+    m_queryEnd = 0;
+}
+
+URL::URL(const URL& base, const String& relative, const URLTextEncoding* encoding)
+{
+    URLParser parser(relative, base, encoding);
+    *this = parser.result();
+}
+
+static bool shouldTrimFromURL(UChar c)
+{
+    // Browsers ignore leading/trailing whitespace and control
+    // characters from URLs.  Note that c is an *unsigned* char here
+    // so this comparison should only catch control characters.
+    return c <= ' ';
+}
+
+URL URL::isolatedCopy() const
+{
+    URL result = *this;
+    result.m_string = result.m_string.isolatedCopy();
+    return result;
+}
+
+String URL::lastPathComponent() const
+{
+    if (!hasPath())
+        return String();
+
+    unsigned end = m_pathEnd - 1;
+    if (m_string[end] == '/')
+        --end;
+
+    size_t start = m_string.reverseFind('/', end);
+    if (start < static_cast<unsigned>(m_hostEnd + m_portLength))
+        return String();
+    ++start;
+
+    return m_string.substring(start, end - start + 1);
+}
+
+StringView URL::protocol() const
+{
+    return StringView(m_string).substring(0, m_schemeEnd);
+}
+
+StringView URL::host() const
+{
+    unsigned start = hostStart();
+    return StringView(m_string).substring(start, m_hostEnd - start);
+}
+
+std::optional<uint16_t> URL::port() const
+{
+    if (!m_portLength)
+        return std::nullopt;
+
+    bool ok = false;
+    unsigned number;
+    if (m_string.is8Bit())
+        number = charactersToUIntStrict(m_string.characters8() + m_hostEnd + 1, m_portLength - 1, &ok);
+    else
+        number = charactersToUIntStrict(m_string.characters16() + m_hostEnd + 1, m_portLength - 1, &ok);
+    if (!ok || number > std::numeric_limits<uint16_t>::max())
+        return std::nullopt;
+    return number;
+}
+
+String URL::hostAndPort() const
+{
+    if (auto port = this->port())
+        return makeString(host(), ':', static_cast<unsigned>(port.value()));
+    return host().toString();
+}
+
+String URL::protocolHostAndPort() const
+{
+    String result = m_string.substring(0, m_hostEnd + m_portLength);
+
+    if (m_passwordEnd - m_userStart > 0) {
+        const int allowForTrailingAtSign = 1;
+        result.remove(m_userStart, m_passwordEnd - m_userStart + allowForTrailingAtSign);
+    }
+
+    return result;
+}
+
+static String decodeEscapeSequencesFromParsedURL(StringView input)
+{
+    auto inputLength = input.length();
+    if (!inputLength)
+        return emptyString();
+    Vector<LChar> percentDecoded;
+    percentDecoded.reserveInitialCapacity(inputLength);
+    for (unsigned i = 0; i < inputLength; ++i) {
+        if (input[i] == '%'
+            && inputLength > 2
+            && i < inputLength - 2
+            && isASCIIHexDigit(input[i + 1])
+            && isASCIIHexDigit(input[i + 2])) {
+            percentDecoded.uncheckedAppend(toASCIIHexValue(input[i + 1], input[i + 2]));
+            i += 2;
+        } else
+            percentDecoded.uncheckedAppend(input[i]);
+    }
+    return String::fromUTF8(percentDecoded.data(), percentDecoded.size());
+}
+
+String URL::user() const
+{
+    return decodeEscapeSequencesFromParsedURL(StringView(m_string).substring(m_userStart, m_userEnd - m_userStart));
+}
+
+String URL::pass() const
+{
+    if (m_passwordEnd == m_userEnd)
+        return String();
+
+    return decodeEscapeSequencesFromParsedURL(StringView(m_string).substring(m_userEnd + 1, m_passwordEnd - m_userEnd - 1));
+}
+
+String URL::encodedUser() const
+{
+    return m_string.substring(m_userStart, m_userEnd - m_userStart);
+}
+
+String URL::encodedPass() const
+{
+    if (m_passwordEnd == m_userEnd)
+        return String();
+
+    return m_string.substring(m_userEnd + 1, m_passwordEnd - m_userEnd - 1);
+}
+
+String URL::fragmentIdentifier() const
+{
+    if (!hasFragmentIdentifier())
+        return String();
+
+    return m_string.substring(m_queryEnd + 1);
+}
+
+bool URL::hasFragmentIdentifier() const
+{
+    return m_isValid && m_string.length() != m_queryEnd;
+}
+
+String URL::baseAsString() const
+{
+    return m_string.left(m_pathAfterLastSlash);
+}
+
+#if !USE(CF)
+
+String URL::fileSystemPath() const
+{
+    if (!isValid() || !isLocalFile())
+        return String();
+
+    return decodeEscapeSequencesFromParsedURL(StringView(path()));
+}
+
+#endif
+
+#ifdef NDEBUG
+
+static inline void assertProtocolIsGood(StringView)
+{
+}
+
+#else
+
+static void assertProtocolIsGood(StringView protocol)
+{
+    // FIXME: We probably don't need this function any more.
+    // The isASCIIAlphaCaselessEqual function asserts that passed-in characters
+    // are ones it can handle; the older code did not and relied on these checks.
+    for (auto character : protocol.codeUnits()) {
+        ASSERT(isASCII(character));
+        ASSERT(character > ' ');
+        ASSERT(!isASCIIUpper(character));
+        ASSERT(toASCIILowerUnchecked(character) == character);
+    }
+}
+
+#endif
+
+static Lock defaultPortForProtocolMapForTestingLock;
+
+using DefaultPortForProtocolMapForTesting = HashMap<String, uint16_t>;
+static DefaultPortForProtocolMapForTesting*& defaultPortForProtocolMapForTesting()
+{
+    static DefaultPortForProtocolMapForTesting* defaultPortForProtocolMap;
+    return defaultPortForProtocolMap;
+}
+
+static DefaultPortForProtocolMapForTesting& ensureDefaultPortForProtocolMapForTesting()
+{
+    DefaultPortForProtocolMapForTesting*& defaultPortForProtocolMap = defaultPortForProtocolMapForTesting();
+    if (!defaultPortForProtocolMap)
+        defaultPortForProtocolMap = new DefaultPortForProtocolMapForTesting;
+    return *defaultPortForProtocolMap;
+}
+
+void registerDefaultPortForProtocolForTesting(uint16_t port, const String& protocol)
+{
+    auto locker = holdLock(defaultPortForProtocolMapForTestingLock);
+    ensureDefaultPortForProtocolMapForTesting().add(protocol, port);
+}
+
+void clearDefaultPortForProtocolMapForTesting()
+{
+    auto locker = holdLock(defaultPortForProtocolMapForTestingLock);
+    if (auto* map = defaultPortForProtocolMapForTesting())
+        map->clear();
+}
+
+std::optional<uint16_t> defaultPortForProtocol(StringView protocol)
+{
+    if (auto* overrideMap = defaultPortForProtocolMapForTesting()) {
+        auto locker = holdLock(defaultPortForProtocolMapForTestingLock);
+        ASSERT(overrideMap); // No need to null check again here since overrideMap cannot become null after being non-null.
+        auto iterator = overrideMap->find(protocol.toStringWithoutCopying());
+        if (iterator != overrideMap->end())
+            return iterator->value;
+    }
+    return URLParser::defaultPortForProtocol(protocol);
+}
+
+bool isDefaultPortForProtocol(uint16_t port, StringView protocol)
+{
+    return defaultPortForProtocol(protocol) == port;
+}
+
+bool URL::protocolIs(const char* protocol) const
+{
+    assertProtocolIsGood(StringView(reinterpret_cast<const LChar*>(protocol), strlen(protocol)));
+
+    // JavaScript URLs are "valid" and should be executed even if URL decides they are invalid.
+    // The free function protocolIsJavaScript() should be used instead. 
+    ASSERT(!equalLettersIgnoringASCIICase(StringView(protocol), "javascript"));
+
+    if (!m_isValid)
+        return false;
+
+    // Do the comparison without making a new string object.
+    for (unsigned i = 0; i < m_schemeEnd; ++i) {
+        if (!protocol[i] || !isASCIIAlphaCaselessEqual(m_string[i], protocol[i]))
+            return false;
+    }
+    return !protocol[m_schemeEnd]; // We should have consumed all characters in the argument.
+}
+
+bool URL::protocolIs(StringView protocol) const
+{
+    assertProtocolIsGood(protocol);
+
+    if (!m_isValid)
+        return false;
+    
+    if (m_schemeEnd != protocol.length())
+        return false;
+
+    // Do the comparison without making a new string object.
+    for (unsigned i = 0; i < m_schemeEnd; ++i) {
+        if (!isASCIIAlphaCaselessEqual(m_string[i], protocol[i]))
+            return false;
+    }
+    return true;
+}
+
+String URL::query() const
+{
+    if (m_queryEnd == m_pathEnd)
+        return String();
+
+    return m_string.substring(m_pathEnd + 1, m_queryEnd - (m_pathEnd + 1)); 
+}
+
+String URL::path() const
+{
+    unsigned portEnd = m_hostEnd + m_portLength;
+    return m_string.substring(portEnd, m_pathEnd - portEnd);
+}
+
+bool URL::setProtocol(const String& s)
+{
+    // Firefox and IE remove everything after the first ':'.
+    size_t separatorPosition = s.find(':');
+    String newProtocol = s.substring(0, separatorPosition);
+    auto canonicalized = URLParser::maybeCanonicalizeScheme(newProtocol);
+    if (!canonicalized)
+        return false;
+
+    if (!m_isValid) {
+        URLParser parser(makeString(*canonicalized, ":", m_string));
+        *this = parser.result();
+        return true;
+    }
+
+    URLParser parser(makeString(*canonicalized, m_string.substring(m_schemeEnd)));
+    *this = parser.result();
+    return true;
+}
+
+static bool isAllASCII(StringView string)
+{
+    if (string.is8Bit())
+        return charactersAreAllASCII(string.characters8(), string.length());
+    return charactersAreAllASCII(string.characters16(), string.length());
+}
+    
+// Appends the punycoded hostname identified by the given string and length to
+// the output buffer. The result will not be null terminated.
+// Return value of false means error in encoding.
+static bool appendEncodedHostname(UCharBuffer& buffer, StringView string)
+{
+    // Needs to be big enough to hold an IDN-encoded name.
+    // For host names bigger than this, we won't do IDN encoding, which is almost certainly OK.
+    const unsigned hostnameBufferLength = 2048;
+    
+    if (string.length() > hostnameBufferLength || isAllASCII(string)) {
+        append(buffer, string);
+        return true;
+    }
+    
+    UChar hostnameBuffer[hostnameBufferLength];
+    UErrorCode error = U_ZERO_ERROR;
+    UIDNAInfo processingDetails = UIDNA_INFO_INITIALIZER;
+    int32_t numCharactersConverted = uidna_nameToASCII(&URLParser::internationalDomainNameTranscoder(),
+        string.upconvertedCharacters(), string.length(), hostnameBuffer, hostnameBufferLength, &processingDetails, &error);
+    
+    if (U_SUCCESS(error) && !processingDetails.errors) {
+        buffer.append(hostnameBuffer, numCharactersConverted);
+        return true;
+    }
+    return false;
+}
+
+unsigned URL::hostStart() const
+{
+    return (m_passwordEnd == m_userStart) ? m_passwordEnd : m_passwordEnd + 1;
+}
+
+void URL::setHost(const String& s)
+{
+    if (!m_isValid)
+        return;
+
+    auto colonIndex = s.find(':');
+    if (colonIndex != notFound)
+        return;
+
+    UCharBuffer encodedHostName;
+    if (!appendEncodedHostname(encodedHostName, s))
+        return;
+    
+    bool slashSlashNeeded = m_userStart == static_cast<unsigned>(m_schemeEnd + 1);
+    
+    StringBuilder builder;
+    builder.append(m_string.left(hostStart()));
+    if (slashSlashNeeded)
+        builder.appendLiteral("//");
+    builder.append(StringView(encodedHostName.data(), encodedHostName.size()));
+    builder.append(m_string.substring(m_hostEnd));
+
+    URLParser parser(builder.toString());
+    *this = parser.result();
+}
+
+void URL::removePort()
+{
+    if (!m_portLength)
+        return;
+    URLParser parser(makeString(StringView(m_string).left(m_hostEnd), StringView(m_string).substring(m_hostEnd + m_portLength)));
+    *this = parser.result();
+}
+
+void URL::setPort(unsigned short i)
+{
+    if (!m_isValid)
+        return;
+
+    bool colonNeeded = !m_portLength;
+    unsigned portStart = (colonNeeded ? m_hostEnd : m_hostEnd + 1);
+
+    URLParser parser(makeString(StringView(m_string).left(portStart), (colonNeeded ? ":" : ""), String::number(i), StringView(m_string).substring(m_hostEnd + m_portLength)));
+    *this = parser.result();
+}
+
+void URL::setHostAndPort(const String& hostAndPort)
+{
+    if (!m_isValid)
+        return;
+
+    StringView hostName(hostAndPort);
+    StringView port;
+    
+    auto colonIndex = hostName.find(':');
+    if (colonIndex != notFound) {
+        port = hostName.substring(colonIndex + 1);
+        bool ok;
+        int portInt = port.toIntStrict(ok);
+        if (!ok || portInt < 0)
+            return;
+        hostName = hostName.substring(0, colonIndex);
+    }
+
+    if (hostName.isEmpty())
+        return;
+
+    UCharBuffer encodedHostName;
+    if (!appendEncodedHostname(encodedHostName, hostName))
+        return;
+
+    bool slashSlashNeeded = m_userStart == static_cast<unsigned>(m_schemeEnd + 1);
+
+    StringBuilder builder;
+    builder.append(m_string.left(hostStart()));
+    if (slashSlashNeeded)
+        builder.appendLiteral("//");
+    builder.append(StringView(encodedHostName.data(), encodedHostName.size()));
+    if (!port.isEmpty()) {
+        builder.appendLiteral(":");
+        builder.append(port);
+    }
+    builder.append(StringView(m_string).substring(m_hostEnd + m_portLength));
+
+    URLParser parser(builder.toString());
+    *this = parser.result();
+}
+
+static String percentEncodeCharacters(const String& input, bool(*shouldEncode)(UChar))
+{
+    auto encode = [shouldEncode] (const String& input) {
+        CString utf8 = input.utf8();
+        auto* data = utf8.data();
+        StringBuilder builder;
+        auto length = utf8.length();
+        for (unsigned j = 0; j < length; j++) {
+            auto c = data[j];
+            if (shouldEncode(c)) {
+                builder.append('%');
+                builder.append(upperNibbleToASCIIHexDigit(c));
+                builder.append(lowerNibbleToASCIIHexDigit(c));
+            } else
+                builder.append(c);
+        }
+        return builder.toString();
+    };
+
+    for (size_t i = 0; i < input.length(); ++i) {
+        if (UNLIKELY(shouldEncode(input[i])))
+            return encode(input);
+    }
+    return input;
+}
+
+void URL::setUser(const String& user)
+{
+    if (!m_isValid)
+        return;
+
+    // FIXME: Non-ASCII characters must be encoded and escaped to match parse() expectations,
+    // and to avoid changing more than just the user login.
+
+    unsigned end = m_userEnd;
+    if (!user.isEmpty()) {
+        String u = percentEncodeCharacters(user, URLParser::isInUserInfoEncodeSet);
+        if (m_userStart == static_cast<unsigned>(m_schemeEnd + 1))
+            u = "//" + u;
+        // Add '@' if we didn't have one before.
+        if (end == m_hostEnd || (end == m_passwordEnd && m_string[end] != '@'))
+            u.append('@');
+        URLParser parser(makeString(StringView(m_string).left(m_userStart), u, StringView(m_string).substring(end)));
+        *this = parser.result();
+    } else {
+        // Remove '@' if we now have neither user nor password.
+        if (m_userEnd == m_passwordEnd && end != m_hostEnd && m_string[end] == '@')
+            end += 1;
+        // We don't want to parse in the extremely common case where we are not going to make a change.
+        if (m_userStart != end) {
+            URLParser parser(makeString(StringView(m_string).left(m_userStart), StringView(m_string).substring(end)));
+            *this = parser.result();
+        }
+    }
+}
+
+void URL::setPass(const String& password)
+{
+    if (!m_isValid)
+        return;
+
+    unsigned end = m_passwordEnd;
+    if (!password.isEmpty()) {
+        String p = ":" + percentEncodeCharacters(password, URLParser::isInUserInfoEncodeSet) + "@";
+        if (m_userEnd == static_cast<unsigned>(m_schemeEnd + 1))
+            p = "//" + p;
+        // Eat the existing '@' since we are going to add our own.
+        if (end != m_hostEnd && m_string[end] == '@')
+            end += 1;
+        URLParser parser(makeString(StringView(m_string).left(m_userEnd), p, StringView(m_string).substring(end)));
+        *this = parser.result();
+    } else {
+        // Remove '@' if we now have neither user nor password.
+        if (m_userStart == m_userEnd && end != m_hostEnd && m_string[end] == '@')
+            end += 1;
+        // We don't want to parse in the extremely common case where we are not going to make a change.
+        if (m_userEnd != end) {
+            URLParser parser(makeString(StringView(m_string).left(m_userEnd), StringView(m_string).substring(end)));
+            *this = parser.result();
+        }
+    }
+}
+
+void URL::setFragmentIdentifier(StringView identifier)
+{
+    if (!m_isValid)
+        return;
+
+    // FIXME: Optimize the case where the identifier already happens to be equal to what was passed?
+    // FIXME: Is it correct to do this without encoding and escaping non-ASCII characters?
+    *this = URLParser { makeString(StringView { m_string }.substring(0, m_queryEnd), '#', identifier) }.result();
+}
+
+void URL::removeFragmentIdentifier()
+{
+    if (!m_isValid) {
+        ASSERT(!m_queryEnd);
+        return;
+    }
+    if (m_isValid && m_string.length() > m_queryEnd)
+        m_string = m_string.left(m_queryEnd);
+}
+
+void URL::removeQueryAndFragmentIdentifier()
+{
+    if (!m_isValid)
+        return;
+
+    m_string = m_string.left(m_pathEnd);
+    m_queryEnd = m_pathEnd;
+}
+
+void URL::setQuery(const String& query)
+{
+    if (!m_isValid)
+        return;
+
+    // FIXME: '#' and non-ASCII characters must be encoded and escaped.
+    // Usually, the query is encoded using document encoding, not UTF-8, but we don't have
+    // access to the document in this function.
+    // https://webkit.org/b/161176
+    if ((query.isEmpty() || query[0] != '?') && !query.isNull()) {
+        URLParser parser(makeString(StringView(m_string).left(m_pathEnd), "?", query, StringView(m_string).substring(m_queryEnd)));
+        *this = parser.result();
+    } else {
+        URLParser parser(makeString(StringView(m_string).left(m_pathEnd), query, StringView(m_string).substring(m_queryEnd)));
+        *this = parser.result();
+    }
+
+}
+
+void URL::setPath(const String& s)
+{
+    if (!m_isValid)
+        return;
+
+    String path = s;
+    if (path.isEmpty() || path[0] != '/')
+        path = "/" + path;
+
+    auto questionMarkOrNumberSign = [] (UChar character) {
+        return character == '?' || character == '#';
+    };
+    URLParser parser(makeString(StringView(m_string).left(m_hostEnd + m_portLength), percentEncodeCharacters(path, questionMarkOrNumberSign), StringView(m_string).substring(m_pathEnd)));
+    *this = parser.result();
+}
+
+bool equalIgnoringFragmentIdentifier(const URL& a, const URL& b)
+{
+    if (a.m_queryEnd != b.m_queryEnd)
+        return false;
+    unsigned queryLength = a.m_queryEnd;
+    for (unsigned i = 0; i < queryLength; ++i)
+        if (a.string()[i] != b.string()[i])
+            return false;
+    return true;
+}
+
+bool equalIgnoringQueryAndFragment(const URL& a, const URL& b)
+{
+    if (a.pathEnd() != b.pathEnd())
+        return false;
+    unsigned pathEnd = a.pathEnd();
+    for (unsigned i = 0; i < pathEnd; ++i) {
+        if (a.string()[i] != b.string()[i])
+            return false;
+    }
+    return true;
+}
+
+bool protocolHostAndPortAreEqual(const URL& a, const URL& b)
+{
+    if (a.m_schemeEnd != b.m_schemeEnd)
+        return false;
+
+    unsigned hostStartA = a.hostStart();
+    unsigned hostLengthA = a.m_hostEnd - hostStartA;
+    unsigned hostStartB = b.hostStart();
+    unsigned hostLengthB = b.m_hostEnd - b.hostStart();
+    if (hostLengthA != hostLengthB)
+        return false;
+
+    // Check the scheme
+    for (unsigned i = 0; i < a.m_schemeEnd; ++i) {
+        if (a.string()[i] != b.string()[i])
+            return false;
+    }
+
+    // And the host
+    for (unsigned i = 0; i < hostLengthA; ++i) {
+        if (a.string()[hostStartA + i] != b.string()[hostStartB + i])
+            return false;
+    }
+
+    if (a.port() != b.port())
+        return false;
+
+    return true;
+}
+
+bool hostsAreEqual(const URL& a, const URL& b)
+{
+    unsigned hostStartA = a.hostStart();
+    unsigned hostLengthA = a.m_hostEnd - hostStartA;
+    unsigned hostStartB = b.hostStart();
+    unsigned hostLengthB = b.m_hostEnd - hostStartB;
+    if (hostLengthA != hostLengthB)
+        return false;
+
+    for (unsigned i = 0; i < hostLengthA; ++i) {
+        if (a.string()[hostStartA + i] != b.string()[hostStartB + i])
+            return false;
+    }
+
+    return true;
+}
+
+bool URL::isMatchingDomain(const String& domain) const
+{
+    if (isNull())
+        return false;
+
+    if (domain.isEmpty())
+        return true;
+
+    if (!protocolIsInHTTPFamily())
+        return false;
+
+    auto host = this->host();
+    if (!host.endsWith(domain))
+        return false;
+
+    return host.length() == domain.length() || host[host.length() - domain.length() - 1] == '.';
+}
+
+String encodeWithURLEscapeSequences(const String& input)
+{
+    return percentEncodeCharacters(input, URLParser::isInUserInfoEncodeSet);
+}
+
+bool URL::isHierarchical() const
+{
+    if (!m_isValid)
+        return false;
+    ASSERT(m_string[m_schemeEnd] == ':');
+    return m_string[m_schemeEnd + 1] == '/';
+}
+
+void URL::copyToBuffer(Vector<char, 512>& buffer) const
+{
+    // FIXME: This throws away the high bytes of all the characters in the string!
+    // That's fine for a valid URL, which is all ASCII, but not for invalid URLs.
+    buffer.resize(m_string.length());
+    copyASCII(m_string, buffer.data());
+}
+
+template<typename StringClass>
+bool protocolIsInternal(const StringClass& url, const char* protocol)
+{
+    // Do the comparison without making a new string object.
+    assertProtocolIsGood(StringView(reinterpret_cast<const LChar*>(protocol), strlen(protocol)));
+    bool isLeading = true;
+    for (unsigned i = 0, j = 0; url[i]; ++i) {
+        // Skip leading whitespace and control characters.
+        if (isLeading && shouldTrimFromURL(url[i]))
+            continue;
+        isLeading = false;
+
+        // Skip any tabs and newlines.
+        if (url[i] == '\t' || url[i] == '\r' || url[i] == '\n')
+            continue;
+
+        if (!protocol[j])
+            return url[i] == ':';
+        if (!isASCIIAlphaCaselessEqual(url[i], protocol[j]))
+            return false;
+
+        ++j;
+    }
+    
+    return false;
+}
+
+bool protocolIs(const String& url, const char* protocol)
+{
+    return protocolIsInternal(url, protocol);
+}
+
+inline bool URL::protocolIs(const String& string, const char* protocol)
+{
+    return WTF::protocolIsInternal(string, protocol);
+}
+
+#ifndef NDEBUG
+
+void URL::print() const
+{
+    printf("%s\n", m_string.utf8().data());
+}
+
+#endif
+
+String URL::strippedForUseAsReferrer() const
+{
+    URL referrer(*this);
+    referrer.setUser(String());
+    referrer.setPass(String());
+    referrer.removeFragmentIdentifier();
+    return referrer.string();
+}
+
+bool URL::isLocalFile() const
+{
+    // Including feed here might be a bad idea since drag and drop uses this check
+    // and including feed would allow feeds to potentially let someone's blog
+    // read the contents of the clipboard on a drag, even without a drop.
+    // Likewise with using the FrameLoader::shouldTreatURLAsLocal() function.
+    return protocolIs("file");
+}
+
+bool protocolIsJavaScript(const String& url)
+{
+    return protocolIsInternal(url, "javascript");
+}
+
+bool protocolIsJavaScript(StringView url)
+{
+    return protocolIsInternal(url, "javascript");
+}
+
+bool protocolIsInHTTPFamily(const String& url)
+{
+    auto length = url.length();
+    // Do the comparison without making a new string object.
+    return length >= 5
+        && isASCIIAlphaCaselessEqual(url[0], 'h')
+        && isASCIIAlphaCaselessEqual(url[1], 't')
+        && isASCIIAlphaCaselessEqual(url[2], 't')
+        && isASCIIAlphaCaselessEqual(url[3], 'p')
+        && (url[4] == ':' || (isASCIIAlphaCaselessEqual(url[4], 's') && length >= 6 && url[5] == ':'));
+}
+
+const URL& blankURL()
+{
+    static NeverDestroyed<URL> staticBlankURL(URL(), "about:blank");
+    return staticBlankURL;
+}
+
+bool URL::protocolIsAbout() const
+{
+    return protocolIs("about");
+}
+
+bool portAllowed(const URL& url)
+{
+    std::optional<uint16_t> port = url.port();
+
+    // Since most URLs don't have a port, return early for the "no port" case.
+    if (!port)
+        return true;
+
+    // This blocked port list matches the port blocking that Mozilla implements.
+    // See http://www.mozilla.org/projects/netlib/PortBanning.html for more information.
+    static const uint16_t blockedPortList[] = {
+        1,    // tcpmux
+        7,    // echo
+        9,    // discard
+        11,   // systat
+        13,   // daytime
+        15,   // netstat
+        17,   // qotd
+        19,   // chargen
+        20,   // FTP-data
+        21,   // FTP-control
+        22,   // SSH
+        23,   // telnet
+        25,   // SMTP
+        37,   // time
+        42,   // name
+        43,   // nicname
+        53,   // domain
+        77,   // priv-rjs
+        79,   // finger
+        87,   // ttylink
+        95,   // supdup
+        101,  // hostriame
+        102,  // iso-tsap
+        103,  // gppitnp
+        104,  // acr-nema
+        109,  // POP2
+        110,  // POP3
+        111,  // sunrpc
+        113,  // auth
+        115,  // SFTP
+        117,  // uucp-path
+        119,  // nntp
+        123,  // NTP
+        135,  // loc-srv / epmap
+        139,  // netbios
+        143,  // IMAP2
+        179,  // BGP
+        389,  // LDAP
+        427,  // SLP (Also used by Apple Filing Protocol)
+        465,  // SMTP+SSL
+        512,  // print / exec
+        513,  // login
+        514,  // shell
+        515,  // printer
+        526,  // tempo
+        530,  // courier
+        531,  // Chat
+        532,  // netnews
+        540,  // UUCP
+        548,  // afpovertcp [Apple addition]
+        556,  // remotefs
+        563,  // NNTP+SSL
+        587,  // ESMTP
+        601,  // syslog-conn
+        636,  // LDAP+SSL
+        993,  // IMAP+SSL
+        995,  // POP3+SSL
+        2049, // NFS
+        3659, // apple-sasl / PasswordServer [Apple addition]
+        4045, // lockd
+        4190, // ManageSieve [Apple addition]
+        6000, // X11
+        6665, // Alternate IRC [Apple addition]
+        6666, // Alternate IRC [Apple addition]
+        6667, // Standard IRC [Apple addition]
+        6668, // Alternate IRC [Apple addition]
+        6669, // Alternate IRC [Apple addition]
+        6679, // Alternate IRC SSL [Apple addition]
+        6697, // IRC+SSL [Apple addition]
+        invalidPortNumber, // Used to block all invalid port numbers
+    };
+
+    // If the port is not in the blocked port list, allow it.
+    ASSERT(std::is_sorted(std::begin(blockedPortList), std::end(blockedPortList)));
+    if (!std::binary_search(std::begin(blockedPortList), std::end(blockedPortList), port.value()))
+        return true;
+
+    // Allow ports 21 and 22 for FTP URLs, as Mozilla does.
+    if ((port.value() == 21 || port.value() == 22) && url.protocolIs("ftp"))
+        return true;
+
+    // Allow any port number in a file URL, since the port number is ignored.
+    if (url.protocolIs("file"))
+        return true;
+
+    return false;
+}
+
+String mimeTypeFromDataURL(const String& url)
+{
+    ASSERT(protocolIsInternal(url, "data"));
+
+    // FIXME: What's the right behavior when the URL has a comma first, but a semicolon later?
+    // Currently this code will break at the semicolon in that case. Not sure that's correct.
+    auto index = url.find(';', 5);
+    if (index == notFound)
+        index = url.find(',', 5);
+    if (index == notFound) {
+        // FIXME: There was an old comment here that made it sound like this should be returning text/plain.
+        // But we have been returning empty string here for some time, so not changing its behavior at this time.
+        return emptyString();
+    }
+    if (index == 5)
+        return "text/plain"_s;
+    ASSERT(index >= 5);
+    return url.substring(5, index - 5).convertToASCIILowercase();
+}
+
+String URL::stringCenterEllipsizedToLength(unsigned length) const
+{
+    if (string().length() <= length)
+        return string();
+
+    return string().left(length / 2 - 1) + "..." + string().right(length / 2 - 2);
+}
+
+URL URL::fakeURLWithRelativePart(const String& relativePart)
+{
+    return URL(URL(), "webkit-fake-url://" + createCanonicalUUIDString() + '/' + relativePart);
+}
+
+URL URL::fileURLWithFileSystemPath(const String& filePath)
+{
+    return URL(URL(), "file:///" + filePath);
+}
+
+TextStream& operator<<(TextStream& ts, const URL& url)
+{
+    ts << url.string();
+    return ts;
+}
+
+#if !PLATFORM(COCOA) && !USE(SOUP)
+static bool isIPv4Address(StringView string)
+{
+    auto count = 0;
+
+    for (const auto octet : string.splitAllowingEmptyEntries('.')) {
+        if (count >= 4)
+            return false;
+
+        const auto length = octet.length();
+        if (!length || length > 3)
+            return false;
+
+        auto value = 0;
+        for (auto i = 0u; i < length; ++i) {
+            const auto digit = octet[i];
+
+            // Prohibit leading zeroes.
+            if (digit > '9' || digit < (!i && length > 1 ? '1' : '0'))
+                return false;
+
+            value = 10 * value + (digit - '0');
+        }
+
+        if (value > 255)
+            return false;
+
+        count++;
+    }
+
+    return (count == 4);
+}
+
+static bool isIPv6Address(StringView string)
+{
+    enum SkipState { None, WillSkip, Skipping, Skipped, Final };
+    auto skipState = None;
+    auto count = 0;
+
+    for (const auto hextet : string.splitAllowingEmptyEntries(':')) {
+        if (count >= 8 || skipState == Final)
+            return false;
+
+        const auto length = hextet.length();
+        if (!length) {
+            // :: may be used anywhere to skip 1 to 8 hextets, but only once.
+            if (skipState == Skipped)
+                return false;
+
+            if (skipState == None)
+                skipState = !count ? WillSkip : Skipping;
+            else if (skipState == WillSkip)
+                skipState = Skipping;
+            else
+                skipState = Final;
+            continue;
+        }
+
+        if (skipState == WillSkip)
+            return false;
+
+        if (skipState == Skipping)
+            skipState = Skipped;
+
+        if (length > 4) {
+            // An IPv4 address may be used in place of the final two hextets.
+            if ((skipState == None && count != 6) || (skipState == Skipped && count >= 6) || !isIPv4Address(hextet))
+                return false;
+
+            skipState = Final;
+            continue;
+        }
+
+        for (const auto codeUnit : hextet.codeUnits()) {
+            // IPv6 allows leading zeroes.
+            if (!isASCIIHexDigit(codeUnit))
+                return false;
+        }
+
+        count++;
+    }
+
+    return (count == 8 && skipState == None) || skipState == Skipped || skipState == Final;
+}
+
+bool URL::hostIsIPAddress(StringView host)
+{
+    if (host.find(':') == notFound)
+        return isIPv4Address(host);
+
+    return isIPv6Address(host);
+}
+#endif
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWTFwtfURLhfromrev238769trunkSourceWebCoreplatformURLh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/URL.h (from rev 238769, trunk/Source/WebCore/platform/URL.h) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/URL.h                               (rev 0)
+++ trunk/Source/WTF/wtf/URL.h  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,393 @@
</span><ins>+/*
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013 Apple 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
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include <wtf/Forward.h>
+#include <wtf/RetainPtr.h>
+#include <wtf/text/WTFString.h>
+
+#if USE(CF)
+typedef const struct __CFURL* CFURLRef;
+#endif
+
+#if USE(SOUP)
+#include <wtf/glib/GUniquePtrSoup.h>
+#endif
+
+#if USE(FOUNDATION)
+OBJC_CLASS NSURL;
+#endif
+
+namespace WTF {
+class TextStream;
+
+class URLTextEncoding {
+public:
+    virtual Vector<uint8_t> encodeForURLParsing(StringView) const = 0;
+    virtual ~URLTextEncoding() { };
+};
+
+struct URLHash;
+
+class WTF_EXPORT_PRIVATE URL {
+public:
+    // Generates a URL which contains a null string.
+    URL() { invalidate(); }
+
+    explicit URL(WTF::HashTableDeletedValueType) : m_string(WTF::HashTableDeletedValue) { }
+    bool isHashTableDeletedValue() const { return string().isHashTableDeletedValue(); }
+
+    // Resolves the relative URL with the given base URL. If provided, the
+    // URLTextEncoding is used to encode non-ASCII characers. The base URL can be
+    // null or empty, in which case the relative URL will be interpreted as
+    // absolute.
+    // FIXME: If the base URL is invalid, this always creates an invalid
+    // URL. Instead I think it would be better to treat all invalid base URLs
+    // the same way we treate null and empty base URLs.
+    URL(const URL& base, const String& relative, const URLTextEncoding* = nullptr);
+
+    static URL fakeURLWithRelativePart(const String&);
+    static URL fileURLWithFileSystemPath(const String&);
+
+    String strippedForUseAsReferrer() const;
+
+    // FIXME: The above functions should be harmonized so that passing a
+    // base of null or the empty string gives the same result as the
+    // standard String constructor.
+
+    // Makes a deep copy. Helpful only if you need to use a URL on another
+    // thread. Since the underlying StringImpl objects are immutable, there's
+    // no other reason to ever prefer isolatedCopy() over plain old assignment.
+    URL isolatedCopy() const;
+
+    bool isNull() const;
+    bool isEmpty() const;
+    bool isValid() const;
+
+    // Returns true if you can set the host and port for the URL.
+    // Non-hierarchical URLs don't have a host and port.
+    bool canSetHostOrPort() const { return isHierarchical(); }
+
+    bool canSetPathname() const { return isHierarchical(); }
+    bool isHierarchical() const;
+
+    const String& string() const { return m_string; }
+
+    String stringCenterEllipsizedToLength(unsigned length = 1024) const;
+
+    StringView protocol() const;
+    StringView host() const;
+    std::optional<uint16_t> port() const;
+    String hostAndPort() const;
+    String protocolHostAndPort() const;
+    String user() const;
+    String pass() const;
+    String path() const;
+    String lastPathComponent() const;
+    String query() const;
+    String fragmentIdentifier() const;
+    bool hasFragmentIdentifier() const;
+
+    bool hasUsername() const;
+    bool hasPassword() const;
+    bool hasQuery() const;
+    bool hasFragment() const;
+    bool hasPath() const;
+
+    // Unlike user() and pass(), these functions don't decode escape sequences.
+    // This is necessary for accurate round-tripping, because encoding doesn't encode '%' characters.
+    String encodedUser() const;
+    String encodedPass() const;
+
+    String baseAsString() const;
+
+    String fileSystemPath() const;
+
+    // Returns true if the current URL's protocol is the same as the null-
+    // terminated ASCII argument. The argument must be lower-case.
+    bool protocolIs(const char*) const;
+    bool protocolIs(StringView) const;
+    bool protocolIsBlob() const { return protocolIs("blob"); }
+    bool protocolIsData() const { return protocolIs("data"); }
+    bool protocolIsAbout() const;
+    bool protocolIsInHTTPFamily() const;
+    bool isLocalFile() const;
+    bool isBlankURL() const;
+    bool cannotBeABaseURL() const { return m_cannotBeABaseURL; }
+
+    bool isMatchingDomain(const String&) const;
+
+    bool setProtocol(const String&);
+    void setHost(const String&);
+
+    void removePort();
+    void setPort(unsigned short);
+
+    // Input is like "foo.com" or "foo.com:8000".
+    void setHostAndPort(const String&);
+
+    void setUser(const String&);
+    void setPass(const String&);
+
+    // If you pass an empty path for HTTP or HTTPS URLs, the resulting path
+    // will be "/".
+    void setPath(const String&);
+
+    // The query may begin with a question mark, or, if not, one will be added
+    // for you. Setting the query to the empty string will leave a "?" in the
+    // URL (with nothing after it). To clear the query, pass a null string.
+    void setQuery(const String&);
+
+    void setFragmentIdentifier(StringView);
+    void removeFragmentIdentifier();
+
+    void removeQueryAndFragmentIdentifier();
+
+    static bool hostIsIPAddress(StringView);
+
+    unsigned pathStart() const;
+    unsigned pathEnd() const;
+    unsigned pathAfterLastSlash() const;
+
+    operator const String&() const { return string(); }
+
+#if USE(CF)
+    URL(CFURLRef);
+    RetainPtr<CFURLRef> createCFURL() const;
+#endif
+
+#if USE(SOUP)
+    URL(SoupURI*);
+    GUniquePtr<SoupURI> createSoupURI() const;
+#endif
+
+#if USE(FOUNDATION)
+    URL(NSURL*);
+    operator NSURL*() const;
+#endif
+#ifdef __OBJC__
+    operator NSString*() const { return string(); }
+#endif
+
+#ifndef NDEBUG
+    void print() const;
+#endif
+
+    template <class Encoder> void encode(Encoder&) const;
+    template <class Decoder> static bool decode(Decoder&, URL&);
+    template <class Decoder> static std::optional<URL> decode(Decoder&);
+
+private:
+    friend class URLParser;
+    void invalidate();
+    static bool protocolIs(const String&, const char*);
+    void copyToBuffer(Vector<char, 512>& buffer) const;
+    unsigned hostStart() const;
+
+    friend WTF_EXPORT_PRIVATE bool equalIgnoringFragmentIdentifier(const URL&, const URL&);
+    friend WTF_EXPORT_PRIVATE bool protocolHostAndPortAreEqual(const URL&, const URL&);
+    friend WTF_EXPORT_PRIVATE bool hostsAreEqual(const URL&, const URL&);
+
+    String m_string;
+
+    unsigned m_isValid : 1;
+    unsigned m_protocolIsInHTTPFamily : 1;
+    unsigned m_cannotBeABaseURL : 1;
+
+    // This is out of order to align the bits better. The port is after the host.
+    unsigned m_portLength : 3;
+    static constexpr unsigned maxPortLength = (1 << 3) - 1;
+
+    static constexpr unsigned maxSchemeLength = (1 << 26) - 1;
+    unsigned m_schemeEnd : 26;
+    unsigned m_userStart;
+    unsigned m_userEnd;
+    unsigned m_passwordEnd;
+    unsigned m_hostEnd;
+    unsigned m_pathAfterLastSlash;
+    unsigned m_pathEnd;
+    unsigned m_queryEnd;
+};
+
+static_assert(sizeof(URL) == sizeof(String) + 8 * sizeof(unsigned), "URL should stay small");
+
+template <class Encoder>
+void URL::encode(Encoder& encoder) const
+{
+    encoder << m_string;
+}
+
+template <class Decoder>
+bool URL::decode(Decoder& decoder, URL& url)
+{
+    auto optionalURL = URL::decode(decoder);
+    if (!optionalURL)
+        return false;
+    url = WTFMove(*optionalURL);
+    return true;
+}
+
+template <class Decoder>
+std::optional<URL> URL::decode(Decoder& decoder)
+{
+    String string;
+    if (!decoder.decode(string))
+        return std::nullopt;
+    return URL(URL(), string);
+}
+
+WTF_EXPORT_PRIVATE bool equalIgnoringFragmentIdentifier(const URL&, const URL&);
+WTF_EXPORT_PRIVATE bool equalIgnoringQueryAndFragment(const URL&, const URL&);
+WTF_EXPORT_PRIVATE bool protocolHostAndPortAreEqual(const URL&, const URL&);
+WTF_EXPORT_PRIVATE bool hostsAreEqual(const URL&, const URL&);
+
+WTF_EXPORT_PRIVATE const URL& blankURL();
+
+// Functions to do URL operations on strings.
+// These are operations that aren't faster on a parsed URL.
+// These are also different from the URL functions in that they don't require the string to be a valid and parsable URL.
+// This is especially important because valid javascript URLs are not necessarily considered valid by URL.
+
+WTF_EXPORT_PRIVATE bool protocolIs(const String& url, const char* protocol);
+WTF_EXPORT_PRIVATE bool protocolIsJavaScript(const String& url);
+WTF_EXPORT_PRIVATE bool protocolIsJavaScript(StringView url);
+WTF_EXPORT_PRIVATE bool protocolIsInHTTPFamily(const String& url);
+
+WTF_EXPORT_PRIVATE std::optional<uint16_t> defaultPortForProtocol(StringView protocol);
+WTF_EXPORT_PRIVATE bool isDefaultPortForProtocol(uint16_t port, StringView protocol);
+WTF_EXPORT_PRIVATE bool portAllowed(const URL&); // Blacklist ports that should never be used for Web resources.
+
+WTF_EXPORT_PRIVATE void registerDefaultPortForProtocolForTesting(uint16_t port, const String& protocol);
+WTF_EXPORT_PRIVATE void clearDefaultPortForProtocolMapForTesting();
+
+WTF_EXPORT_PRIVATE bool isValidProtocol(const String&);
+
+WTF_EXPORT_PRIVATE String mimeTypeFromDataURL(const String& url);
+
+// FIXME: This is a wrong concept to expose, different parts of a URL need different escaping per the URL Standard.
+WTF_EXPORT_PRIVATE String encodeWithURLEscapeSequences(const String&);
+
+// Inlines.
+
+inline bool operator==(const URL& a, const URL& b)
+{
+    return a.string() == b.string();
+}
+
+inline bool operator==(const URL& a, const String& b)
+{
+    return a.string() == b;
+}
+
+inline bool operator==(const String& a, const URL& b)
+{
+    return a == b.string();
+}
+
+inline bool operator!=(const URL& a, const URL& b)
+{
+    return a.string() != b.string();
+}
+
+inline bool operator!=(const URL& a, const String& b)
+{
+    return a.string() != b;
+}
+
+inline bool operator!=(const String& a, const URL& b)
+{
+    return a != b.string();
+}
+
+// Inline versions of some non-GoogleURL functions so we can get inlining
+// without having to have a lot of ugly ifdefs in the class definition.
+
+inline bool URL::isNull() const
+{
+    return m_string.isNull();
+}
+
+inline bool URL::isEmpty() const
+{
+    return m_string.isEmpty();
+}
+
+inline bool URL::isValid() const
+{
+    return m_isValid;
+}
+
+inline bool URL::hasPath() const
+{
+    return m_pathEnd != m_hostEnd + m_portLength;
+}
+
+inline bool URL::hasUsername() const
+{
+    return m_userEnd > m_userStart;
+}
+
+inline bool URL::hasPassword() const
+{
+    return m_passwordEnd > (m_userEnd + 1);
+}
+
+inline bool URL::hasQuery() const
+{
+    return m_queryEnd > m_pathEnd;
+}
+
+inline bool URL::hasFragment() const
+{
+    return m_isValid && m_string.length() > m_queryEnd;
+}
+
+inline bool URL::protocolIsInHTTPFamily() const
+{
+    return m_protocolIsInHTTPFamily;
+}
+
+inline unsigned URL::pathStart() const
+{
+    return m_hostEnd + m_portLength;
+}
+
+inline unsigned URL::pathEnd() const
+{
+    return m_pathEnd;
+}
+
+inline unsigned URL::pathAfterLastSlash() const
+{
+    return m_pathAfterLastSlash;
+}
+
+WTF_EXPORT_PRIVATE WTF::TextStream& operator<<(WTF::TextStream&, const URL&);
+
+template<> struct DefaultHash<URL>;
+template<> struct HashTraits<URL>;
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWTFwtfURLHashhfromrev238769trunkSourceWebCoreplatformURLHashh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/URLHash.h (from rev 238769, trunk/Source/WebCore/platform/URLHash.h) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/URLHash.h                           (rev 0)
+++ trunk/Source/WTF/wtf/URLHash.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2008 Apple 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
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef URLHash_h
+#define URLHash_h
+
+#include <wtf/URL.h>
+#include <wtf/text/StringHash.h>
+#include <wtf/text/WTFString.h>
+
+namespace WTF {
+
+struct URLHash {
+    static unsigned hash(const URL& key)
+    {
+        return key.string().impl()->hash();
+    }
+
+    static bool equal(const URL& a, const URL& b)
+    {
+        return StringHash::equal(a.string(), b.string());
+    }
+
+    static const bool safeToCompareToEmptyOrDeleted = false;
+};
+
+// URLHash is the default hash for String
+template<> struct DefaultHash<URL> {
+    using Hash = URLHash;
+};
+
+template<> struct HashTraits<URL> : SimpleClassHashTraits<URL> { };
+
+} // namespace WTF
+
+#endif // URLHash_h
</ins></span></pre></div>
<a id="trunkSourceWTFwtfURLParsercppfromrev238769trunkSourceWebCoreplatformURLParsercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/URLParser.cpp (from rev 238769, trunk/Source/WebCore/platform/URLParser.cpp) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/URLParser.cpp                               (rev 0)
+++ trunk/Source/WTF/wtf/URLParser.cpp  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,2925 @@
</span><ins>+/*
+ * Copyright (C) 2016-2018 Apple 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. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include <wtf/URLParser.h>
+
+#include <array>
+#include <mutex>
+#include <unicode/uidna.h>
+#include <unicode/utf8.h>
+#include <unicode/utypes.h>
+
+namespace WTF {
+
+#define URL_PARSER_DEBUGGING 0
+
+#if URL_PARSER_DEBUGGING
+#define URL_PARSER_LOG(...) WTFLogAlways(__VA_ARGS__)
+#else
+#define URL_PARSER_LOG(...)
+#endif
+    
+template<typename CharacterType>
+class CodePointIterator {
+public:
+    ALWAYS_INLINE CodePointIterator() { }
+    ALWAYS_INLINE CodePointIterator(const CharacterType* begin, const CharacterType* end)
+        : m_begin(begin)
+        , m_end(end)
+    {
+    }
+    
+    ALWAYS_INLINE CodePointIterator(const CodePointIterator& begin, const CodePointIterator& end)
+        : CodePointIterator(begin.m_begin, end.m_begin)
+    {
+        ASSERT(end.m_begin >= begin.m_begin);
+    }
+    
+    ALWAYS_INLINE UChar32 operator*() const;
+    ALWAYS_INLINE CodePointIterator& operator++();
+
+    ALWAYS_INLINE bool operator==(const CodePointIterator& other) const
+    {
+        return m_begin == other.m_begin
+            && m_end == other.m_end;
+    }
+    ALWAYS_INLINE bool operator!=(const CodePointIterator& other) const { return !(*this == other); }
+    
+    ALWAYS_INLINE CodePointIterator& operator=(const CodePointIterator& other)
+    {
+        m_begin = other.m_begin;
+        m_end = other.m_end;
+        return *this;
+    }
+
+    ALWAYS_INLINE bool atEnd() const
+    {
+        ASSERT(m_begin <= m_end);
+        return m_begin >= m_end;
+    }
+    
+    ALWAYS_INLINE size_t codeUnitsSince(const CharacterType* reference) const
+    {
+        ASSERT(m_begin >= reference);
+        return m_begin - reference;
+    }
+
+    ALWAYS_INLINE size_t codeUnitsSince(const CodePointIterator& other) const
+    {
+        return codeUnitsSince(other.m_begin);
+    }
+    
+private:
+    const CharacterType* m_begin { nullptr };
+    const CharacterType* m_end { nullptr };
+};
+
+template<>
+ALWAYS_INLINE UChar32 CodePointIterator<LChar>::operator*() const
+{
+    ASSERT(!atEnd());
+    return *m_begin;
+}
+
+template<>
+ALWAYS_INLINE auto CodePointIterator<LChar>::operator++() -> CodePointIterator&
+{
+    m_begin++;
+    return *this;
+}
+
+template<>
+ALWAYS_INLINE UChar32 CodePointIterator<UChar>::operator*() const
+{
+    ASSERT(!atEnd());
+    UChar32 c;
+    U16_GET(m_begin, 0, 0, m_end - m_begin, c);
+    return c;
+}
+
+template<>
+ALWAYS_INLINE auto CodePointIterator<UChar>::operator++() -> CodePointIterator&
+{
+    unsigned i = 0;
+    size_t length = m_end - m_begin;
+    U16_FWD_1(m_begin, i, length);
+    m_begin += i;
+    return *this;
+}
+    
+ALWAYS_INLINE static void appendCodePoint(Vector<UChar>& destination, UChar32 codePoint)
+{
+    if (U_IS_BMP(codePoint)) {
+        destination.append(static_cast<UChar>(codePoint));
+        return;
+    }
+    destination.reserveCapacity(destination.size() + 2);
+    destination.uncheckedAppend(U16_LEAD(codePoint));
+    destination.uncheckedAppend(U16_TRAIL(codePoint));
+}
+
+enum URLCharacterClass {
+    UserInfo = 0x1,
+    Default = 0x2,
+    ForbiddenHost = 0x4,
+    QueryPercent = 0x8,
+    SlashQuestionOrHash = 0x10,
+    ValidScheme = 0x20,
+};
+
+static const uint8_t characterClassTable[256] = {
+    UserInfo | Default | QueryPercent | ForbiddenHost, // 0x0
+    UserInfo | Default | QueryPercent, // 0x1
+    UserInfo | Default | QueryPercent, // 0x2
+    UserInfo | Default | QueryPercent, // 0x3
+    UserInfo | Default | QueryPercent, // 0x4
+    UserInfo | Default | QueryPercent, // 0x5
+    UserInfo | Default | QueryPercent, // 0x6
+    UserInfo | Default | QueryPercent, // 0x7
+    UserInfo | Default | QueryPercent, // 0x8
+    UserInfo | Default | QueryPercent | ForbiddenHost, // 0x9
+    UserInfo | Default | QueryPercent | ForbiddenHost, // 0xA
+    UserInfo | Default | QueryPercent, // 0xB
+    UserInfo | Default | QueryPercent, // 0xC
+    UserInfo | Default | QueryPercent | ForbiddenHost, // 0xD
+    UserInfo | Default | QueryPercent, // 0xE
+    UserInfo | Default | QueryPercent, // 0xF
+    UserInfo | Default | QueryPercent, // 0x10
+    UserInfo | Default | QueryPercent, // 0x11
+    UserInfo | Default | QueryPercent, // 0x12
+    UserInfo | Default | QueryPercent, // 0x13
+    UserInfo | Default | QueryPercent, // 0x14
+    UserInfo | Default | QueryPercent, // 0x15
+    UserInfo | Default | QueryPercent, // 0x16
+    UserInfo | Default | QueryPercent, // 0x17
+    UserInfo | Default | QueryPercent, // 0x18
+    UserInfo | Default | QueryPercent, // 0x19
+    UserInfo | Default | QueryPercent, // 0x1A
+    UserInfo | Default | QueryPercent, // 0x1B
+    UserInfo | Default | QueryPercent, // 0x1C
+    UserInfo | Default | QueryPercent, // 0x1D
+    UserInfo | Default | QueryPercent, // 0x1E
+    UserInfo | Default | QueryPercent, // 0x1F
+    UserInfo | Default | QueryPercent | ForbiddenHost, // ' '
+    0, // '!'
+    UserInfo | Default | QueryPercent, // '"'
+    UserInfo | Default | QueryPercent | SlashQuestionOrHash | ForbiddenHost, // '#'
+    0, // '$'
+    ForbiddenHost, // '%'
+    0, // '&'
+    0, // '\''
+    0, // '('
+    0, // ')'
+    0, // '*'
+    ValidScheme, // '+'
+    0, // ','
+    ValidScheme, // '-'
+    ValidScheme, // '.'
+    UserInfo | SlashQuestionOrHash | ForbiddenHost, // '/'
+    ValidScheme, // '0'
+    ValidScheme, // '1'
+    ValidScheme, // '2'
+    ValidScheme, // '3'
+    ValidScheme, // '4'
+    ValidScheme, // '5'
+    ValidScheme, // '6'
+    ValidScheme, // '7'
+    ValidScheme, // '8'
+    ValidScheme, // '9'
+    UserInfo | ForbiddenHost, // ':'
+    UserInfo, // ';'
+    UserInfo | Default | QueryPercent | ForbiddenHost, // '<'
+    UserInfo, // '='
+    UserInfo | Default | QueryPercent | ForbiddenHost, // '>'
+    UserInfo | Default | SlashQuestionOrHash | ForbiddenHost, // '?'
+    UserInfo | ForbiddenHost, // '@'
+    ValidScheme, // 'A'
+    ValidScheme, // 'B'
+    ValidScheme, // 'C'
+    ValidScheme, // 'D'
+    ValidScheme, // 'E'
+    ValidScheme, // 'F'
+    ValidScheme, // 'G'
+    ValidScheme, // 'H'
+    ValidScheme, // 'I'
+    ValidScheme, // 'J'
+    ValidScheme, // 'K'
+    ValidScheme, // 'L'
+    ValidScheme, // 'M'
+    ValidScheme, // 'N'
+    ValidScheme, // 'O'
+    ValidScheme, // 'P'
+    ValidScheme, // 'Q'
+    ValidScheme, // 'R'
+    ValidScheme, // 'S'
+    ValidScheme, // 'T'
+    ValidScheme, // 'U'
+    ValidScheme, // 'V'
+    ValidScheme, // 'W'
+    ValidScheme, // 'X'
+    ValidScheme, // 'Y'
+    ValidScheme, // 'Z'
+    UserInfo | ForbiddenHost, // '['
+    UserInfo | SlashQuestionOrHash | ForbiddenHost, // '\\'
+    UserInfo | ForbiddenHost, // ']'
+    UserInfo, // '^'
+    0, // '_'
+    UserInfo | Default, // '`'
+    ValidScheme, // 'a'
+    ValidScheme, // 'b'
+    ValidScheme, // 'c'
+    ValidScheme, // 'd'
+    ValidScheme, // 'e'
+    ValidScheme, // 'f'
+    ValidScheme, // 'g'
+    ValidScheme, // 'h'
+    ValidScheme, // 'i'
+    ValidScheme, // 'j'
+    ValidScheme, // 'k'
+    ValidScheme, // 'l'
+    ValidScheme, // 'm'
+    ValidScheme, // 'n'
+    ValidScheme, // 'o'
+    ValidScheme, // 'p'
+    ValidScheme, // 'q'
+    ValidScheme, // 'r'
+    ValidScheme, // 's'
+    ValidScheme, // 't'
+    ValidScheme, // 'u'
+    ValidScheme, // 'v'
+    ValidScheme, // 'w'
+    ValidScheme, // 'x'
+    ValidScheme, // 'y'
+    ValidScheme, // 'z'
+    UserInfo | Default, // '{'
+    UserInfo, // '|'
+    UserInfo | Default, // '}'
+    0, // '~'
+    QueryPercent, // 0x7F
+    QueryPercent, // 0x80
+    QueryPercent, // 0x81
+    QueryPercent, // 0x82
+    QueryPercent, // 0x83
+    QueryPercent, // 0x84
+    QueryPercent, // 0x85
+    QueryPercent, // 0x86
+    QueryPercent, // 0x87
+    QueryPercent, // 0x88
+    QueryPercent, // 0x89
+    QueryPercent, // 0x8A
+    QueryPercent, // 0x8B
+    QueryPercent, // 0x8C
+    QueryPercent, // 0x8D
+    QueryPercent, // 0x8E
+    QueryPercent, // 0x8F
+    QueryPercent, // 0x90
+    QueryPercent, // 0x91
+    QueryPercent, // 0x92
+    QueryPercent, // 0x93
+    QueryPercent, // 0x94
+    QueryPercent, // 0x95
+    QueryPercent, // 0x96
+    QueryPercent, // 0x97
+    QueryPercent, // 0x98
+    QueryPercent, // 0x99
+    QueryPercent, // 0x9A
+    QueryPercent, // 0x9B
+    QueryPercent, // 0x9C
+    QueryPercent, // 0x9D
+    QueryPercent, // 0x9E
+    QueryPercent, // 0x9F
+    QueryPercent, // 0xA0
+    QueryPercent, // 0xA1
+    QueryPercent, // 0xA2
+    QueryPercent, // 0xA3
+    QueryPercent, // 0xA4
+    QueryPercent, // 0xA5
+    QueryPercent, // 0xA6
+    QueryPercent, // 0xA7
+    QueryPercent, // 0xA8
+    QueryPercent, // 0xA9
+    QueryPercent, // 0xAA
+    QueryPercent, // 0xAB
+    QueryPercent, // 0xAC
+    QueryPercent, // 0xAD
+    QueryPercent, // 0xAE
+    QueryPercent, // 0xAF
+    QueryPercent, // 0xB0
+    QueryPercent, // 0xB1
+    QueryPercent, // 0xB2
+    QueryPercent, // 0xB3
+    QueryPercent, // 0xB4
+    QueryPercent, // 0xB5
+    QueryPercent, // 0xB6
+    QueryPercent, // 0xB7
+    QueryPercent, // 0xB8
+    QueryPercent, // 0xB9
+    QueryPercent, // 0xBA
+    QueryPercent, // 0xBB
+    QueryPercent, // 0xBC
+    QueryPercent, // 0xBD
+    QueryPercent, // 0xBE
+    QueryPercent, // 0xBF
+    QueryPercent, // 0xC0
+    QueryPercent, // 0xC1
+    QueryPercent, // 0xC2
+    QueryPercent, // 0xC3
+    QueryPercent, // 0xC4
+    QueryPercent, // 0xC5
+    QueryPercent, // 0xC6
+    QueryPercent, // 0xC7
+    QueryPercent, // 0xC8
+    QueryPercent, // 0xC9
+    QueryPercent, // 0xCA
+    QueryPercent, // 0xCB
+    QueryPercent, // 0xCC
+    QueryPercent, // 0xCD
+    QueryPercent, // 0xCE
+    QueryPercent, // 0xCF
+    QueryPercent, // 0xD0
+    QueryPercent, // 0xD1
+    QueryPercent, // 0xD2
+    QueryPercent, // 0xD3
+    QueryPercent, // 0xD4
+    QueryPercent, // 0xD5
+    QueryPercent, // 0xD6
+    QueryPercent, // 0xD7
+    QueryPercent, // 0xD8
+    QueryPercent, // 0xD9
+    QueryPercent, // 0xDA
+    QueryPercent, // 0xDB
+    QueryPercent, // 0xDC
+    QueryPercent, // 0xDD
+    QueryPercent, // 0xDE
+    QueryPercent, // 0xDF
+    QueryPercent, // 0xE0
+    QueryPercent, // 0xE1
+    QueryPercent, // 0xE2
+    QueryPercent, // 0xE3
+    QueryPercent, // 0xE4
+    QueryPercent, // 0xE5
+    QueryPercent, // 0xE6
+    QueryPercent, // 0xE7
+    QueryPercent, // 0xE8
+    QueryPercent, // 0xE9
+    QueryPercent, // 0xEA
+    QueryPercent, // 0xEB
+    QueryPercent, // 0xEC
+    QueryPercent, // 0xED
+    QueryPercent, // 0xEE
+    QueryPercent, // 0xEF
+    QueryPercent, // 0xF0
+    QueryPercent, // 0xF1
+    QueryPercent, // 0xF2
+    QueryPercent, // 0xF3
+    QueryPercent, // 0xF4
+    QueryPercent, // 0xF5
+    QueryPercent, // 0xF6
+    QueryPercent, // 0xF7
+    QueryPercent, // 0xF8
+    QueryPercent, // 0xF9
+    QueryPercent, // 0xFA
+    QueryPercent, // 0xFB
+    QueryPercent, // 0xFC
+    QueryPercent, // 0xFD
+    QueryPercent, // 0xFE
+    QueryPercent, // 0xFF
+};
+
+template<typename CharacterType> ALWAYS_INLINE static bool isC0Control(CharacterType character) { return character <= 0x1F; }
+template<typename CharacterType> ALWAYS_INLINE static bool isC0ControlOrSpace(CharacterType character) { return character <= 0x20; }
+template<typename CharacterType> ALWAYS_INLINE static bool isTabOrNewline(CharacterType character) { return character <= 0xD && character >= 0x9 && character != 0xB && character != 0xC; }
+template<typename CharacterType> ALWAYS_INLINE static bool isInSimpleEncodeSet(CharacterType character) { return character > 0x7E || isC0Control(character); }
+template<typename CharacterType> ALWAYS_INLINE static bool isInDefaultEncodeSet(CharacterType character) { return character > 0x7E || characterClassTable[character] & Default; }
+template<typename CharacterType> ALWAYS_INLINE static bool isInUserInfoEncodeSet(CharacterType character) { return character > 0x7E || characterClassTable[character] & UserInfo; }
+template<typename CharacterType> ALWAYS_INLINE static bool isPercentOrNonASCII(CharacterType character) { return !isASCII(character) || character == '%'; }
+template<typename CharacterType> ALWAYS_INLINE static bool isSlashQuestionOrHash(CharacterType character) { return character <= '\\' && characterClassTable[character] & SlashQuestionOrHash; }
+template<typename CharacterType> ALWAYS_INLINE static bool isValidSchemeCharacter(CharacterType character) { return character <= 'z' && characterClassTable[character] & ValidScheme; }
+template<typename CharacterType> ALWAYS_INLINE static bool isForbiddenHostCodePoint(CharacterType character) { return character <= ']' && characterClassTable[character] & ForbiddenHost; }
+ALWAYS_INLINE static bool shouldPercentEncodeQueryByte(uint8_t byte, const bool& urlIsSpecial)
+{
+    if (characterClassTable[byte] & QueryPercent)
+        return true;
+    if (byte == '\'' && urlIsSpecial)
+        return true;
+    return false;
+}
+
+bool URLParser::isInUserInfoEncodeSet(UChar c)
+{
+    return WTF::isInUserInfoEncodeSet(c);
+}
+
+template<typename CharacterType, URLParser::ReportSyntaxViolation reportSyntaxViolation>
+ALWAYS_INLINE void URLParser::advance(CodePointIterator<CharacterType>& iterator, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition)
+{
+    ++iterator;
+    while (UNLIKELY(!iterator.atEnd() && isTabOrNewline(*iterator))) {
+        if (reportSyntaxViolation == ReportSyntaxViolation::Yes)
+            syntaxViolation(iteratorForSyntaxViolationPosition);
+        ++iterator;
+    }
+}
+
+template<typename CharacterType>
+bool URLParser::takesTwoAdvancesUntilEnd(CodePointIterator<CharacterType> iterator)
+{
+    if (iterator.atEnd())
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(iterator);
+    if (iterator.atEnd())
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(iterator);
+    return iterator.atEnd();
+}
+
+template<typename CharacterType>
+ALWAYS_INLINE bool URLParser::isWindowsDriveLetter(CodePointIterator<CharacterType> iterator)
+{
+    if (iterator.atEnd() || !isASCIIAlpha(*iterator))
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(iterator);
+    if (iterator.atEnd())
+        return false;
+    if (*iterator == ':')
+        return true;
+    if (UNLIKELY(*iterator == '|'))
+        return true;
+    return false;
+}
+
+ALWAYS_INLINE void URLParser::appendToASCIIBuffer(UChar32 codePoint)
+{
+    ASSERT(isASCII(codePoint));
+    if (UNLIKELY(m_didSeeSyntaxViolation))
+        m_asciiBuffer.append(codePoint);
+}
+
+ALWAYS_INLINE void URLParser::appendToASCIIBuffer(const char* characters, size_t length)
+{
+    if (UNLIKELY(m_didSeeSyntaxViolation))
+        m_asciiBuffer.append(characters, length);
+}
+
+template<typename CharacterType>
+void URLParser::appendWindowsDriveLetter(CodePointIterator<CharacterType>& iterator)
+{
+    ASSERT(isWindowsDriveLetter(iterator));
+    appendToASCIIBuffer(*iterator);
+    advance(iterator);
+    ASSERT(!iterator.atEnd());
+    ASSERT(*iterator == ':' || *iterator == '|');
+    if (*iterator == '|')
+        syntaxViolation(iterator);
+    appendToASCIIBuffer(':');
+    advance(iterator);
+}
+
+bool URLParser::copyBaseWindowsDriveLetter(const URL& base)
+{
+    if (base.protocolIs("file")) {
+        RELEASE_ASSERT(base.m_hostEnd + base.m_portLength < base.m_string.length());
+        if (base.m_string.is8Bit()) {
+            const LChar* begin = base.m_string.characters8();
+            CodePointIterator<LChar> c(begin + base.m_hostEnd + base.m_portLength + 1, begin + base.m_string.length());
+            if (isWindowsDriveLetter(c)) {
+                appendWindowsDriveLetter(c);
+                return true;
+            }
+        } else {
+            const UChar* begin = base.m_string.characters16();
+            CodePointIterator<UChar> c(begin + base.m_hostEnd + base.m_portLength + 1, begin + base.m_string.length());
+            if (isWindowsDriveLetter(c)) {
+                appendWindowsDriveLetter(c);
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+template<typename CharacterType>
+bool URLParser::shouldCopyFileURL(CodePointIterator<CharacterType> iterator)
+{
+    if (!isWindowsDriveLetter(iterator))
+        return true;
+    if (iterator.atEnd())
+        return false;
+    advance(iterator);
+    if (iterator.atEnd())
+        return true;
+    advance(iterator);
+    if (iterator.atEnd())
+        return true;
+    return !isSlashQuestionOrHash(*iterator);
+}
+
+static void percentEncodeByte(uint8_t byte, Vector<LChar>& buffer)
+{
+    buffer.append('%');
+    buffer.append(upperNibbleToASCIIHexDigit(byte));
+    buffer.append(lowerNibbleToASCIIHexDigit(byte));
+}
+
+void URLParser::percentEncodeByte(uint8_t byte)
+{
+    ASSERT(m_didSeeSyntaxViolation);
+    appendToASCIIBuffer('%');
+    appendToASCIIBuffer(upperNibbleToASCIIHexDigit(byte));
+    appendToASCIIBuffer(lowerNibbleToASCIIHexDigit(byte));
+}
+
+const char replacementCharacterUTF8PercentEncoded[10] = "%EF%BF%BD";
+const size_t replacementCharacterUTF8PercentEncodedLength = sizeof(replacementCharacterUTF8PercentEncoded) - 1;
+
+template<bool(*isInCodeSet)(UChar32), typename CharacterType>
+ALWAYS_INLINE void URLParser::utf8PercentEncode(const CodePointIterator<CharacterType>& iterator)
+{
+    ASSERT(!iterator.atEnd());
+    UChar32 codePoint = *iterator;
+    if (LIKELY(isASCII(codePoint))) {
+        if (UNLIKELY(isInCodeSet(codePoint))) {
+            syntaxViolation(iterator);
+            percentEncodeByte(codePoint);
+        } else
+            appendToASCIIBuffer(codePoint);
+        return;
+    }
+    ASSERT_WITH_MESSAGE(isInCodeSet(codePoint), "isInCodeSet should always return true for non-ASCII characters");
+    syntaxViolation(iterator);
+    
+    if (!U_IS_UNICODE_CHAR(codePoint)) {
+        appendToASCIIBuffer(replacementCharacterUTF8PercentEncoded, replacementCharacterUTF8PercentEncodedLength);
+        return;
+    }
+    
+    uint8_t buffer[U8_MAX_LENGTH];
+    int32_t offset = 0;
+    U8_APPEND_UNSAFE(buffer, offset, codePoint);
+    for (int32_t i = 0; i < offset; ++i)
+        percentEncodeByte(buffer[i]);
+}
+
+template<typename CharacterType>
+ALWAYS_INLINE void URLParser::utf8QueryEncode(const CodePointIterator<CharacterType>& iterator)
+{
+    ASSERT(!iterator.atEnd());
+    UChar32 codePoint = *iterator;
+    if (LIKELY(isASCII(codePoint))) {
+        if (UNLIKELY(shouldPercentEncodeQueryByte(codePoint, m_urlIsSpecial))) {
+            syntaxViolation(iterator);
+            percentEncodeByte(codePoint);
+        } else
+            appendToASCIIBuffer(codePoint);
+        return;
+    }
+    
+    syntaxViolation(iterator);
+    
+    if (!U_IS_UNICODE_CHAR(codePoint)) {
+        appendToASCIIBuffer(replacementCharacterUTF8PercentEncoded, replacementCharacterUTF8PercentEncodedLength);
+        return;
+    }
+
+    uint8_t buffer[U8_MAX_LENGTH];
+    int32_t offset = 0;
+    U8_APPEND_UNSAFE(buffer, offset, codePoint);
+    for (int32_t i = 0; i < offset; ++i) {
+        auto byte = buffer[i];
+        if (shouldPercentEncodeQueryByte(byte, m_urlIsSpecial))
+            percentEncodeByte(byte);
+        else
+            appendToASCIIBuffer(byte);
+    }
+}
+
+template<typename CharacterType>
+void URLParser::encodeNonUTF8Query(const Vector<UChar>& source, const URLTextEncoding& encoding, CodePointIterator<CharacterType> iterator)
+{
+    auto encoded = encoding.encodeForURLParsing(StringView(source.data(), source.size()));
+    auto* data = encoded.data();
+    size_t length = encoded.size();
+    
+    if (!length == !iterator.atEnd()) {
+        syntaxViolation(iterator);
+        return;
+    }
+    
+    size_t i = 0;
+    for (; i < length; ++i) {
+        ASSERT(!iterator.atEnd());
+        uint8_t byte = data[i];
+        if (UNLIKELY(byte != *iterator)) {
+            syntaxViolation(iterator);
+            break;
+        }
+        if (UNLIKELY(shouldPercentEncodeQueryByte(byte, m_urlIsSpecial))) {
+            syntaxViolation(iterator);
+            break;
+        }
+        appendToASCIIBuffer(byte);
+        ++iterator;
+    }
+    while (!iterator.atEnd() && isTabOrNewline(*iterator))
+        ++iterator;
+    ASSERT((i == length) == iterator.atEnd());
+    for (; i < length; ++i) {
+        ASSERT(m_didSeeSyntaxViolation);
+        uint8_t byte = data[i];
+        if (shouldPercentEncodeQueryByte(byte, m_urlIsSpecial))
+            percentEncodeByte(byte);
+        else
+            appendToASCIIBuffer(byte);
+    }
+}
+
+std::optional<uint16_t> URLParser::defaultPortForProtocol(StringView scheme)
+{
+    static const uint16_t ftpPort = 21;
+    static const uint16_t gopherPort = 70;
+    static const uint16_t httpPort = 80;
+    static const uint16_t httpsPort = 443;
+    static const uint16_t wsPort = 80;
+    static const uint16_t wssPort = 443;
+    
+    auto length = scheme.length();
+    if (!length)
+        return std::nullopt;
+    switch (scheme[0]) {
+    case 'w':
+        switch (length) {
+        case 2:
+            if (scheme[1] == 's')
+                return wsPort;
+            return std::nullopt;
+        case 3:
+            if (scheme[1] == 's'
+                && scheme[2] == 's')
+                return wssPort;
+            return std::nullopt;
+        default:
+            return false;
+        }
+    case 'h':
+        switch (length) {
+        case 4:
+            if (scheme[1] == 't'
+                && scheme[2] == 't'
+                && scheme[3] == 'p')
+                return httpPort;
+            return std::nullopt;
+        case 5:
+            if (scheme[1] == 't'
+                && scheme[2] == 't'
+                && scheme[3] == 'p'
+                && scheme[4] == 's')
+                return httpsPort;
+            return std::nullopt;
+        default:
+            return std::nullopt;
+        }
+    case 'g':
+        if (length == 6
+            && scheme[1] == 'o'
+            && scheme[2] == 'p'
+            && scheme[3] == 'h'
+            && scheme[4] == 'e'
+            && scheme[5] == 'r')
+            return gopherPort;
+        return std::nullopt;
+    case 'f':
+        if (length == 3
+            && scheme[1] == 't'
+            && scheme[2] == 'p')
+            return ftpPort;
+        return std::nullopt;
+    default:
+        return std::nullopt;
+    }
+}
+
+enum class Scheme {
+    WS,
+    WSS,
+    File,
+    FTP,
+    Gopher,
+    HTTP,
+    HTTPS,
+    NonSpecial
+};
+
+ALWAYS_INLINE static Scheme scheme(StringView scheme)
+{
+    auto length = scheme.length();
+    if (!length)
+        return Scheme::NonSpecial;
+    switch (scheme[0]) {
+    case 'f':
+        switch (length) {
+        case 3:
+            if (scheme[1] == 't'
+                && scheme[2] == 'p')
+                return Scheme::FTP;
+            return Scheme::NonSpecial;
+        case 4:
+            if (scheme[1] == 'i'
+                && scheme[2] == 'l'
+                && scheme[3] == 'e')
+                return Scheme::File;
+            return Scheme::NonSpecial;
+        default:
+            return Scheme::NonSpecial;
+        }
+    case 'g':
+        if (length == 6
+            && scheme[1] == 'o'
+            && scheme[2] == 'p'
+            && scheme[3] == 'h'
+            && scheme[4] == 'e'
+            && scheme[5] == 'r')
+            return Scheme::Gopher;
+        return Scheme::NonSpecial;
+    case 'h':
+        switch (length) {
+        case 4:
+            if (scheme[1] == 't'
+                && scheme[2] == 't'
+                && scheme[3] == 'p')
+                return Scheme::HTTP;
+            return Scheme::NonSpecial;
+        case 5:
+            if (scheme[1] == 't'
+                && scheme[2] == 't'
+                && scheme[3] == 'p'
+                && scheme[4] == 's')
+                return Scheme::HTTPS;
+            return Scheme::NonSpecial;
+        default:
+            return Scheme::NonSpecial;
+        }
+    case 'w':
+        switch (length) {
+        case 2:
+            if (scheme[1] == 's')
+                return Scheme::WS;
+            return Scheme::NonSpecial;
+        case 3:
+            if (scheme[1] == 's'
+                && scheme[2] == 's')
+                return Scheme::WSS;
+            return Scheme::NonSpecial;
+        default:
+            return Scheme::NonSpecial;
+        }
+    default:
+        return Scheme::NonSpecial;
+    }
+}
+
+std::optional<String> URLParser::maybeCanonicalizeScheme(const String& scheme)
+{
+    if (scheme.isEmpty())
+        return std::nullopt;
+
+    if (!isASCIIAlpha(scheme[0]))
+        return std::nullopt;
+
+    for (size_t i = 1; i < scheme.length(); ++i) {
+        if (isASCIIAlphanumeric(scheme[i]) || scheme[i] == '+' || scheme[i] == '-' || scheme[i] == '.')
+            continue;
+        return std::nullopt;
+    }
+
+    return scheme.convertToASCIILowercase();
+}
+
+bool URLParser::isSpecialScheme(const String& schemeArg)
+{
+    return scheme(schemeArg) != Scheme::NonSpecial;
+}
+
+enum class URLParser::URLPart {
+    SchemeEnd,
+    UserStart,
+    UserEnd,
+    PasswordEnd,
+    HostEnd,
+    PortEnd,
+    PathAfterLastSlash,
+    PathEnd,
+    QueryEnd,
+};
+
+size_t URLParser::urlLengthUntilPart(const URL& url, URLPart part)
+{
+    switch (part) {
+    case URLPart::QueryEnd:
+        return url.m_queryEnd;
+    case URLPart::PathEnd:
+        return url.m_pathEnd;
+    case URLPart::PathAfterLastSlash:
+        return url.m_pathAfterLastSlash;
+    case URLPart::PortEnd:
+        return url.m_hostEnd + url.m_portLength;
+    case URLPart::HostEnd:
+        return url.m_hostEnd;
+    case URLPart::PasswordEnd:
+        return url.m_passwordEnd;
+    case URLPart::UserEnd:
+        return url.m_userEnd;
+    case URLPart::UserStart:
+        return url.m_userStart;
+    case URLPart::SchemeEnd:
+        return url.m_schemeEnd;
+    }
+    ASSERT_NOT_REACHED();
+    return 0;
+}
+
+void URLParser::copyASCIIStringUntil(const String& string, size_t length)
+{
+    RELEASE_ASSERT(length <= string.length());
+    if (string.isNull())
+        return;
+    ASSERT(m_asciiBuffer.isEmpty());
+    if (string.is8Bit())
+        appendToASCIIBuffer(string.characters8(), length);
+    else {
+        const UChar* characters = string.characters16();
+        for (size_t i = 0; i < length; ++i) {
+            UChar c = characters[i];
+            ASSERT_WITH_SECURITY_IMPLICATION(isASCII(c));
+            appendToASCIIBuffer(c);
+        }
+    }
+}
+
+template<typename CharacterType>
+void URLParser::copyURLPartsUntil(const URL& base, URLPart part, const CodePointIterator<CharacterType>& iterator, const URLTextEncoding*& nonUTF8QueryEncoding)
+{
+    syntaxViolation(iterator);
+
+    m_asciiBuffer.clear();
+    copyASCIIStringUntil(base.m_string, urlLengthUntilPart(base, part));
+    switch (part) {
+    case URLPart::QueryEnd:
+        m_url.m_queryEnd = base.m_queryEnd;
+        FALLTHROUGH;
+    case URLPart::PathEnd:
+        m_url.m_pathEnd = base.m_pathEnd;
+        FALLTHROUGH;
+    case URLPart::PathAfterLastSlash:
+        m_url.m_pathAfterLastSlash = base.m_pathAfterLastSlash;
+        FALLTHROUGH;
+    case URLPart::PortEnd:
+        m_url.m_portLength = base.m_portLength;
+        FALLTHROUGH;
+    case URLPart::HostEnd:
+        m_url.m_hostEnd = base.m_hostEnd;
+        FALLTHROUGH;
+    case URLPart::PasswordEnd:
+        m_url.m_passwordEnd = base.m_passwordEnd;
+        FALLTHROUGH;
+    case URLPart::UserEnd:
+        m_url.m_userEnd = base.m_userEnd;
+        FALLTHROUGH;
+    case URLPart::UserStart:
+        m_url.m_userStart = base.m_userStart;
+        FALLTHROUGH;
+    case URLPart::SchemeEnd:
+        m_url.m_isValid = base.m_isValid;
+        m_url.m_protocolIsInHTTPFamily = base.m_protocolIsInHTTPFamily;
+        m_url.m_schemeEnd = base.m_schemeEnd;
+    }
+    switch (scheme(StringView(m_asciiBuffer.data(), m_url.m_schemeEnd))) {
+    case Scheme::WS:
+    case Scheme::WSS:
+        nonUTF8QueryEncoding = nullptr;
+        m_urlIsSpecial = true;
+        return;
+    case Scheme::File:
+        m_urlIsFile = true;
+        FALLTHROUGH;
+    case Scheme::FTP:
+    case Scheme::Gopher:
+    case Scheme::HTTP:
+    case Scheme::HTTPS:
+        m_urlIsSpecial = true;
+        return;
+    case Scheme::NonSpecial:
+        m_urlIsSpecial = false;
+        nonUTF8QueryEncoding = nullptr;
+        return;
+    }
+    ASSERT_NOT_REACHED();
+}
+
+static const char dotASCIICode[2] = {'2', 'e'};
+
+template<typename CharacterType>
+ALWAYS_INLINE bool URLParser::isSingleDotPathSegment(CodePointIterator<CharacterType> c)
+{
+    if (c.atEnd())
+        return false;
+    if (*c == '.') {
+        advance<CharacterType, ReportSyntaxViolation::No>(c);
+        return c.atEnd() || isSlashQuestionOrHash(*c);
+    }
+    if (*c != '%')
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(c);
+    if (c.atEnd() || *c != dotASCIICode[0])
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(c);
+    if (c.atEnd())
+        return false;
+    if (toASCIILower(*c) == dotASCIICode[1]) {
+        advance<CharacterType, ReportSyntaxViolation::No>(c);
+        return c.atEnd() || isSlashQuestionOrHash(*c);
+    }
+    return false;
+}
+
+template<typename CharacterType>
+ALWAYS_INLINE bool URLParser::isDoubleDotPathSegment(CodePointIterator<CharacterType> c)
+{
+    if (c.atEnd())
+        return false;
+    if (*c == '.') {
+        advance<CharacterType, ReportSyntaxViolation::No>(c);
+        return isSingleDotPathSegment(c);
+    }
+    if (*c != '%')
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(c);
+    if (c.atEnd() || *c != dotASCIICode[0])
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(c);
+    if (c.atEnd())
+        return false;
+    if (toASCIILower(*c) == dotASCIICode[1]) {
+        advance<CharacterType, ReportSyntaxViolation::No>(c);
+        return isSingleDotPathSegment(c);
+    }
+    return false;
+}
+
+template<typename CharacterType>
+void URLParser::consumeSingleDotPathSegment(CodePointIterator<CharacterType>& c)
+{
+    ASSERT(isSingleDotPathSegment(c));
+    if (*c == '.') {
+        advance(c);
+        if (!c.atEnd()) {
+            if (*c == '/' || *c == '\\')
+                advance(c);
+            else
+                ASSERT(*c == '?' || *c == '#');
+        }
+    } else {
+        ASSERT(*c == '%');
+        advance(c);
+        ASSERT(*c == dotASCIICode[0]);
+        advance(c);
+        ASSERT(toASCIILower(*c) == dotASCIICode[1]);
+        advance(c);
+        if (!c.atEnd()) {
+            if (*c == '/' || *c == '\\')
+                advance(c);
+            else
+                ASSERT(*c == '?' || *c == '#');
+        }
+    }
+}
+
+template<typename CharacterType>
+void URLParser::consumeDoubleDotPathSegment(CodePointIterator<CharacterType>& c)
+{
+    ASSERT(isDoubleDotPathSegment(c));
+    if (*c == '.')
+        advance(c);
+    else {
+        ASSERT(*c == '%');
+        advance(c);
+        ASSERT(*c == dotASCIICode[0]);
+        advance(c);
+        ASSERT(toASCIILower(*c) == dotASCIICode[1]);
+        advance(c);
+    }
+    consumeSingleDotPathSegment(c);
+}
+
+bool URLParser::shouldPopPath(unsigned newPathAfterLastSlash)
+{
+    ASSERT(m_didSeeSyntaxViolation);
+    if (!m_urlIsFile)
+        return true;
+
+    ASSERT(m_url.m_pathAfterLastSlash <= m_asciiBuffer.size());
+    CodePointIterator<LChar> componentToPop(&m_asciiBuffer[newPathAfterLastSlash], &m_asciiBuffer[0] + m_url.m_pathAfterLastSlash);
+    if (newPathAfterLastSlash == m_url.m_hostEnd + m_url.m_portLength + 1 && isWindowsDriveLetter(componentToPop))
+        return false;
+    return true;
+}
+
+void URLParser::popPath()
+{
+    ASSERT(m_didSeeSyntaxViolation);
+    if (m_url.m_pathAfterLastSlash > m_url.m_hostEnd + m_url.m_portLength + 1) {
+        auto newPathAfterLastSlash = m_url.m_pathAfterLastSlash - 1;
+        if (m_asciiBuffer[newPathAfterLastSlash] == '/')
+            newPathAfterLastSlash--;
+        while (newPathAfterLastSlash > m_url.m_hostEnd + m_url.m_portLength && m_asciiBuffer[newPathAfterLastSlash] != '/')
+            newPathAfterLastSlash--;
+        newPathAfterLastSlash++;
+        if (shouldPopPath(newPathAfterLastSlash))
+            m_url.m_pathAfterLastSlash = newPathAfterLastSlash;
+    }
+    m_asciiBuffer.resize(m_url.m_pathAfterLastSlash);
+}
+
+template<typename CharacterType>
+void URLParser::syntaxViolation(const CodePointIterator<CharacterType>& iterator)
+{
+    if (m_didSeeSyntaxViolation)
+        return;
+    m_didSeeSyntaxViolation = true;
+    
+    ASSERT(m_asciiBuffer.isEmpty());
+    size_t codeUnitsToCopy = iterator.codeUnitsSince(reinterpret_cast<const CharacterType*>(m_inputBegin));
+    RELEASE_ASSERT(codeUnitsToCopy <= m_inputString.length());
+    m_asciiBuffer.reserveCapacity(m_inputString.length());
+    for (size_t i = 0; i < codeUnitsToCopy; ++i) {
+        ASSERT(isASCII(m_inputString[i]));
+        m_asciiBuffer.uncheckedAppend(m_inputString[i]);
+    }
+}
+
+void URLParser::failure()
+{
+    m_url.invalidate();
+    m_url.m_string = m_inputString;
+}
+
+template<typename CharacterType>
+bool URLParser::checkLocalhostCodePoint(CodePointIterator<CharacterType>& iterator, UChar32 codePoint)
+{
+    if (iterator.atEnd() || toASCIILower(*iterator) != codePoint)
+        return false;
+    advance<CharacterType, ReportSyntaxViolation::No>(iterator);
+    return true;
+}
+
+template<typename CharacterType>
+bool URLParser::isAtLocalhost(CodePointIterator<CharacterType> iterator)
+{
+    if (!checkLocalhostCodePoint(iterator, 'l'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 'o'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 'c'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 'a'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 'l'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 'h'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 'o'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 's'))
+        return false;
+    if (!checkLocalhostCodePoint(iterator, 't'))
+        return false;
+    return iterator.atEnd();
+}
+
+bool URLParser::isLocalhost(StringView view)
+{
+    if (view.is8Bit())
+        return isAtLocalhost(CodePointIterator<LChar>(view.characters8(), view.characters8() + view.length()));
+    return isAtLocalhost(CodePointIterator<UChar>(view.characters16(), view.characters16() + view.length()));
+}
+
+ALWAYS_INLINE StringView URLParser::parsedDataView(size_t start, size_t length)
+{
+    if (UNLIKELY(m_didSeeSyntaxViolation)) {
+        ASSERT(start + length <= m_asciiBuffer.size());
+        return StringView(m_asciiBuffer.data() + start, length);
+    }
+    ASSERT(start + length <= m_inputString.length());
+    return StringView(m_inputString).substring(start, length);
+}
+
+ALWAYS_INLINE UChar URLParser::parsedDataView(size_t position)
+{
+    if (UNLIKELY(m_didSeeSyntaxViolation))
+        return m_asciiBuffer[position];
+    return m_inputString[position];
+}
+
+template<typename CharacterType>
+ALWAYS_INLINE size_t URLParser::currentPosition(const CodePointIterator<CharacterType>& iterator)
+{
+    if (UNLIKELY(m_didSeeSyntaxViolation))
+        return m_asciiBuffer.size();
+    
+    return iterator.codeUnitsSince(reinterpret_cast<const CharacterType*>(m_inputBegin));
+}
+
+URLParser::URLParser(const String& input, const URL& base, const URLTextEncoding* nonUTF8QueryEncoding)
+    : m_inputString(input)
+{
+    if (input.isNull()) {
+        if (base.isValid() && !base.m_cannotBeABaseURL) {
+            m_url = base;
+            m_url.removeFragmentIdentifier();
+        }
+        return;
+    }
+
+    if (input.is8Bit()) {
+        m_inputBegin = input.characters8();
+        parse(input.characters8(), input.length(), base, nonUTF8QueryEncoding);
+    } else {
+        m_inputBegin = input.characters16();
+        parse(input.characters16(), input.length(), base, nonUTF8QueryEncoding);
+    }
+
+    ASSERT(!m_url.m_isValid
+        || m_didSeeSyntaxViolation == (m_url.string() != input)
+        || (input.isAllSpecialCharacters<isC0ControlOrSpace>()
+            && m_url.m_string == base.m_string.left(base.m_queryEnd)));
+    ASSERT(internalValuesConsistent(m_url));
+#if !ASSERT_DISABLED
+    if (!m_didSeeSyntaxViolation) {
+        // Force a syntax violation at the beginning to make sure we get the same result.
+        URLParser parser(makeString(" ", input), base, nonUTF8QueryEncoding);
+        URL parsed = parser.result();
+        if (parsed.isValid())
+            ASSERT(allValuesEqual(parser.result(), m_url));
+    }
+#endif
+}
+
+template<typename CharacterType>
+void URLParser::parse(const CharacterType* input, const unsigned length, const URL& base, const URLTextEncoding* nonUTF8QueryEncoding)
+{
+    URL_PARSER_LOG("Parsing URL <%s> base <%s>", String(input, length).utf8().data(), base.string().utf8().data());
+    m_url = { };
+    ASSERT(m_asciiBuffer.isEmpty());
+
+    Vector<UChar> queryBuffer;
+
+    unsigned endIndex = length;
+    while (UNLIKELY(endIndex && isC0ControlOrSpace(input[endIndex - 1]))) {
+        syntaxViolation(CodePointIterator<CharacterType>(input, input));
+        endIndex--;
+    }
+    CodePointIterator<CharacterType> c(input, input + endIndex);
+    CodePointIterator<CharacterType> authorityOrHostBegin;
+    CodePointIterator<CharacterType> queryBegin;
+    while (UNLIKELY(!c.atEnd() && isC0ControlOrSpace(*c))) {
+        syntaxViolation(c);
+        ++c;
+    }
+    auto beginAfterControlAndSpace = c;
+
+    enum class State : uint8_t {
+        SchemeStart,
+        Scheme,
+        NoScheme,
+        SpecialRelativeOrAuthority,
+        PathOrAuthority,
+        Relative,
+        RelativeSlash,
+        SpecialAuthoritySlashes,
+        SpecialAuthorityIgnoreSlashes,
+        AuthorityOrHost,
+        Host,
+        File,
+        FileSlash,
+        FileHost,
+        PathStart,
+        Path,
+        CannotBeABaseURLPath,
+        UTF8Query,
+        NonUTF8Query,
+        Fragment,
+    };
+
+#define LOG_STATE(x) URL_PARSER_LOG("State %s, code point %c, parsed data <%s> size %zu", x, *c, parsedDataView(0, currentPosition(c)).utf8().data(), currentPosition(c))
+#define LOG_FINAL_STATE(x) URL_PARSER_LOG("Final State: %s", x)
+
+    State state = State::SchemeStart;
+    while (!c.atEnd()) {
+        if (UNLIKELY(isTabOrNewline(*c))) {
+            syntaxViolation(c);
+            ++c;
+            continue;
+        }
+
+        switch (state) {
+        case State::SchemeStart:
+            LOG_STATE("SchemeStart");
+            if (isASCIIAlpha(*c)) {
+                if (UNLIKELY(isASCIIUpper(*c)))
+                    syntaxViolation(c);
+                appendToASCIIBuffer(toASCIILower(*c));
+                advance(c);
+                if (c.atEnd()) {
+                    m_asciiBuffer.clear();
+                    state = State::NoScheme;
+                    c = beginAfterControlAndSpace;
+                    break;
+                }
+                state = State::Scheme;
+            } else
+                state = State::NoScheme;
+            break;
+        case State::Scheme:
+            LOG_STATE("Scheme");
+            if (isValidSchemeCharacter(*c)) {
+                if (UNLIKELY(isASCIIUpper(*c)))
+                    syntaxViolation(c);
+                appendToASCIIBuffer(toASCIILower(*c));
+            } else if (*c == ':') {
+                unsigned schemeEnd = currentPosition(c);
+                if (schemeEnd > URL::maxSchemeLength) {
+                    failure();
+                    return;
+                }
+                m_url.m_schemeEnd = schemeEnd;
+                StringView urlScheme = parsedDataView(0, m_url.m_schemeEnd);
+                appendToASCIIBuffer(':');
+                switch (scheme(urlScheme)) {
+                case Scheme::File:
+                    m_urlIsSpecial = true;
+                    m_urlIsFile = true;
+                    state = State::File;
+                    ++c;
+                    break;
+                case Scheme::WS:
+                case Scheme::WSS:
+                    nonUTF8QueryEncoding = nullptr;
+                    m_urlIsSpecial = true;
+                    if (base.protocolIs(urlScheme))
+                        state = State::SpecialRelativeOrAuthority;
+                    else
+                        state = State::SpecialAuthoritySlashes;
+                    ++c;
+                    break;
+                case Scheme::HTTP:
+                case Scheme::HTTPS:
+                    m_url.m_protocolIsInHTTPFamily = true;
+                    FALLTHROUGH;
+                case Scheme::FTP:
+                case Scheme::Gopher:
+                    m_urlIsSpecial = true;
+                    if (base.protocolIs(urlScheme))
+                        state = State::SpecialRelativeOrAuthority;
+                    else
+                        state = State::SpecialAuthoritySlashes;
+                    ++c;
+                    break;
+                case Scheme::NonSpecial:
+                    nonUTF8QueryEncoding = nullptr;
+                    auto maybeSlash = c;
+                    advance(maybeSlash);
+                    if (!maybeSlash.atEnd() && *maybeSlash == '/') {
+                        appendToASCIIBuffer('/');
+                        c = maybeSlash;
+                        state = State::PathOrAuthority;
+                        ASSERT(*c == '/');
+                        ++c;
+                        m_url.m_userStart = currentPosition(c);
+                    } else {
+                        ++c;
+                        m_url.m_userStart = currentPosition(c);
+                        m_url.m_userEnd = m_url.m_userStart;
+                        m_url.m_passwordEnd = m_url.m_userStart;
+                        m_url.m_hostEnd = m_url.m_userStart;
+                        m_url.m_portLength = 0;
+                        m_url.m_pathAfterLastSlash = m_url.m_userStart;
+                        m_url.m_cannotBeABaseURL = true;
+                        state = State::CannotBeABaseURLPath;
+                    }
+                    break;
+                }
+                break;
+            } else {
+                m_asciiBuffer.clear();
+                state = State::NoScheme;
+                c = beginAfterControlAndSpace;
+                break;
+            }
+            advance(c);
+            if (c.atEnd()) {
+                m_asciiBuffer.clear();
+                state = State::NoScheme;
+                c = beginAfterControlAndSpace;
+            }
+            break;
+        case State::NoScheme:
+            LOG_STATE("NoScheme");
+            if (!base.isValid() || (base.m_cannotBeABaseURL && *c != '#')) {
+                failure();
+                return;
+            }
+            if (base.m_cannotBeABaseURL && *c == '#') {
+                copyURLPartsUntil(base, URLPart::QueryEnd, c, nonUTF8QueryEncoding);
+                state = State::Fragment;
+                appendToASCIIBuffer('#');
+                ++c;
+                break;
+            }
+            if (!base.protocolIs("file")) {
+                state = State::Relative;
+                break;
+            }
+            copyURLPartsUntil(base, URLPart::SchemeEnd, c, nonUTF8QueryEncoding);
+            appendToASCIIBuffer(':');
+            state = State::File;
+            break;
+        case State::SpecialRelativeOrAuthority:
+            LOG_STATE("SpecialRelativeOrAuthority");
+            if (*c == '/') {
+                appendToASCIIBuffer('/');
+                advance(c);
+                if (c.atEnd()) {
+                    failure();
+                    return;
+                }
+                if (*c == '/') {
+                    appendToASCIIBuffer('/');
+                    state = State::SpecialAuthorityIgnoreSlashes;
+                    ++c;
+                } else
+                    state = State::RelativeSlash;
+            } else
+                state = State::Relative;
+            break;
+        case State::PathOrAuthority:
+            LOG_STATE("PathOrAuthority");
+            if (*c == '/') {
+                appendToASCIIBuffer('/');
+                state = State::AuthorityOrHost;
+                advance(c);
+                m_url.m_userStart = currentPosition(c);
+                authorityOrHostBegin = c;
+            } else {
+                ASSERT(parsedDataView(currentPosition(c) - 1) == '/');
+                m_url.m_userStart = currentPosition(c) - 1;
+                m_url.m_userEnd = m_url.m_userStart;
+                m_url.m_passwordEnd = m_url.m_userStart;
+                m_url.m_hostEnd = m_url.m_userStart;
+                m_url.m_portLength = 0;
+                m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+                state = State::Path;
+            }
+            break;
+        case State::Relative:
+            LOG_STATE("Relative");
+            switch (*c) {
+            case '/':
+            case '\\':
+                state = State::RelativeSlash;
+                ++c;
+                break;
+            case '?':
+                copyURLPartsUntil(base, URLPart::PathEnd, c, nonUTF8QueryEncoding);
+                appendToASCIIBuffer('?');
+                ++c;
+                if (nonUTF8QueryEncoding) {
+                    queryBegin = c;
+                    state = State::NonUTF8Query;
+                } else
+                    state = State::UTF8Query;
+                break;
+            case '#':
+                copyURLPartsUntil(base, URLPart::QueryEnd, c, nonUTF8QueryEncoding);
+                appendToASCIIBuffer('#');
+                state = State::Fragment;
+                ++c;
+                break;
+            default:
+                copyURLPartsUntil(base, URLPart::PathAfterLastSlash, c, nonUTF8QueryEncoding);
+                if (currentPosition(c) && parsedDataView(currentPosition(c) - 1) != '/') {
+                    appendToASCIIBuffer('/');
+                    m_url.m_pathAfterLastSlash = currentPosition(c);
+                }
+                state = State::Path;
+                break;
+            }
+            break;
+        case State::RelativeSlash:
+            LOG_STATE("RelativeSlash");
+            if (*c == '/' || *c == '\\') {
+                ++c;
+                copyURLPartsUntil(base, URLPart::SchemeEnd, c, nonUTF8QueryEncoding);
+                appendToASCIIBuffer("://", 3);
+                if (m_urlIsSpecial)
+                    state = State::SpecialAuthorityIgnoreSlashes;
+                else {
+                    m_url.m_userStart = currentPosition(c);
+                    state = State::AuthorityOrHost;
+                    authorityOrHostBegin = c;
+                }
+            } else {
+                copyURLPartsUntil(base, URLPart::PortEnd, c, nonUTF8QueryEncoding);
+                appendToASCIIBuffer('/');
+                m_url.m_pathAfterLastSlash = base.m_hostEnd + base.m_portLength + 1;
+                state = State::Path;
+            }
+            break;
+        case State::SpecialAuthoritySlashes:
+            LOG_STATE("SpecialAuthoritySlashes");
+            if (LIKELY(*c == '/' || *c == '\\')) {
+                if (UNLIKELY(*c == '\\'))
+                    syntaxViolation(c);
+                appendToASCIIBuffer('/');
+                advance(c);
+                if (LIKELY(!c.atEnd() && (*c == '/' || *c == '\\'))) {
+                    if (UNLIKELY(*c == '\\'))
+                        syntaxViolation(c);
+                    ++c;
+                    appendToASCIIBuffer('/');
+                } else {
+                    syntaxViolation(c);
+                    appendToASCIIBuffer('/');
+                }
+            } else {
+                syntaxViolation(c);
+                appendToASCIIBuffer("//", 2);
+            }
+            state = State::SpecialAuthorityIgnoreSlashes;
+            break;
+        case State::SpecialAuthorityIgnoreSlashes:
+            LOG_STATE("SpecialAuthorityIgnoreSlashes");
+            if (*c == '/' || *c == '\\') {
+                syntaxViolation(c);
+                ++c;
+            } else {
+                m_url.m_userStart = currentPosition(c);
+                state = State::AuthorityOrHost;
+                authorityOrHostBegin = c;
+            }
+            break;
+        case State::AuthorityOrHost:
+            do {
+                LOG_STATE("AuthorityOrHost");
+                if (*c == '@') {
+                    auto lastAt = c;
+                    auto findLastAt = c;
+                    while (!findLastAt.atEnd()) {
+                        URL_PARSER_LOG("Finding last @: %c", *findLastAt);
+                        if (*findLastAt == '@')
+                            lastAt = findLastAt;
+                        bool isSlash = *findLastAt == '/' || (m_urlIsSpecial && *findLastAt == '\\');
+                        if (isSlash || *findLastAt == '?' || *findLastAt == '#')
+                            break;
+                        ++findLastAt;
+                    }
+                    parseAuthority(CodePointIterator<CharacterType>(authorityOrHostBegin, lastAt));
+                    c = lastAt;
+                    advance(c);
+                    authorityOrHostBegin = c;
+                    state = State::Host;
+                    m_hostHasPercentOrNonASCII = false;
+                    break;
+                }
+                bool isSlash = *c == '/' || (m_urlIsSpecial && *c == '\\');
+                if (isSlash || *c == '?' || *c == '#') {
+                    auto iterator = CodePointIterator<CharacterType>(authorityOrHostBegin, c);
+                    if (iterator.atEnd()) {
+                        if (m_urlIsSpecial)
+                            return failure();
+                        m_url.m_userEnd = currentPosition(c);
+                        m_url.m_passwordEnd = m_url.m_userEnd;
+                        m_url.m_hostEnd = m_url.m_userEnd;
+                        m_url.m_portLength = 0;
+                        m_url.m_pathAfterLastSlash = m_url.m_userEnd;
+                    } else {
+                        m_url.m_userEnd = currentPosition(authorityOrHostBegin);
+                        m_url.m_passwordEnd = m_url.m_userEnd;
+                        if (!parseHostAndPort(iterator)) {
+                            failure();
+                            return;
+                        }
+                        if (UNLIKELY(!isSlash)) {
+                            if (m_urlIsSpecial) {
+                                syntaxViolation(c);
+                                appendToASCIIBuffer('/');
+                            }
+                            m_url.m_pathAfterLastSlash = currentPosition(c);
+                        }
+                    }
+                    state = State::Path;
+                    break;
+                }
+                if (isPercentOrNonASCII(*c))
+                    m_hostHasPercentOrNonASCII = true;
+                ++c;
+            } while (!c.atEnd());
+            break;
+        case State::Host:
+            do {
+                LOG_STATE("Host");
+                if (*c == '/' || *c == '?' || *c == '#') {
+                    if (!parseHostAndPort(CodePointIterator<CharacterType>(authorityOrHostBegin, c))) {
+                        failure();
+                        return;
+                    }
+                    if (*c == '?' || *c == '#') {
+                        syntaxViolation(c);
+                        appendToASCIIBuffer('/');
+                        m_url.m_pathAfterLastSlash = currentPosition(c);
+                    }
+                    state = State::Path;
+                    break;
+                }
+                if (isPercentOrNonASCII(*c))
+                    m_hostHasPercentOrNonASCII = true;
+                ++c;
+            } while (!c.atEnd());
+            break;
+        case State::File:
+            LOG_STATE("File");
+            switch (*c) {
+            case '\\':
+                syntaxViolation(c);
+                FALLTHROUGH;
+            case '/':
+                appendToASCIIBuffer('/');
+                state = State::FileSlash;
+                ++c;
+                break;
+            case '?':
+                syntaxViolation(c);
+                if (base.isValid() && base.protocolIs("file")) {
+                    copyURLPartsUntil(base, URLPart::PathEnd, c, nonUTF8QueryEncoding);
+                    appendToASCIIBuffer('?');
+                    ++c;
+                } else {
+                    appendToASCIIBuffer("///?", 4);
+                    ++c;
+                    m_url.m_userStart = currentPosition(c) - 2;
+                    m_url.m_userEnd = m_url.m_userStart;
+                    m_url.m_passwordEnd = m_url.m_userStart;
+                    m_url.m_hostEnd = m_url.m_userStart;
+                    m_url.m_portLength = 0;
+                    m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+                    m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+                }
+                if (nonUTF8QueryEncoding) {
+                    queryBegin = c;
+                    state = State::NonUTF8Query;
+                } else
+                    state = State::UTF8Query;
+                break;
+            case '#':
+                syntaxViolation(c);
+                if (base.isValid() && base.protocolIs("file")) {
+                    copyURLPartsUntil(base, URLPart::QueryEnd, c, nonUTF8QueryEncoding);
+                    appendToASCIIBuffer('#');
+                } else {
+                    appendToASCIIBuffer("///#", 4);
+                    m_url.m_userStart = currentPosition(c) - 2;
+                    m_url.m_userEnd = m_url.m_userStart;
+                    m_url.m_passwordEnd = m_url.m_userStart;
+                    m_url.m_hostEnd = m_url.m_userStart;
+                    m_url.m_portLength = 0;
+                    m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+                    m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+                    m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+                }
+                state = State::Fragment;
+                ++c;
+                break;
+            default:
+                syntaxViolation(c);
+                if (base.isValid() && base.protocolIs("file") && shouldCopyFileURL(c))
+                    copyURLPartsUntil(base, URLPart::PathAfterLastSlash, c, nonUTF8QueryEncoding);
+                else {
+                    appendToASCIIBuffer("///", 3);
+                    m_url.m_userStart = currentPosition(c) - 1;
+                    m_url.m_userEnd = m_url.m_userStart;
+                    m_url.m_passwordEnd = m_url.m_userStart;
+                    m_url.m_hostEnd = m_url.m_userStart;
+                    m_url.m_portLength = 0;
+                    m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+                    if (isWindowsDriveLetter(c))
+                        appendWindowsDriveLetter(c);
+                }
+                state = State::Path;
+                break;
+            }
+            break;
+        case State::FileSlash:
+            LOG_STATE("FileSlash");
+            if (LIKELY(*c == '/' || *c == '\\')) {
+                if (UNLIKELY(*c == '\\'))
+                    syntaxViolation(c);
+                appendToASCIIBuffer('/');
+                advance(c);
+                m_url.m_userStart = currentPosition(c);
+                m_url.m_userEnd = m_url.m_userStart;
+                m_url.m_passwordEnd = m_url.m_userStart;
+                m_url.m_hostEnd = m_url.m_userStart;
+                m_url.m_portLength = 0;
+                authorityOrHostBegin = c;
+                state = State::FileHost;
+                break;
+            }
+            syntaxViolation(c);
+            appendToASCIIBuffer("//", 2);
+            m_url.m_userStart = currentPosition(c) - 1;
+            m_url.m_userEnd = m_url.m_userStart;
+            m_url.m_passwordEnd = m_url.m_userStart;
+            m_url.m_hostEnd = m_url.m_userStart;
+            m_url.m_portLength = 0;
+            if (isWindowsDriveLetter(c)) {
+                appendWindowsDriveLetter(c);
+                m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+            } else if (copyBaseWindowsDriveLetter(base)) {
+                appendToASCIIBuffer('/');
+                m_url.m_pathAfterLastSlash = m_url.m_userStart + 4;
+            } else
+                m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+            state = State::Path;
+            break;
+        case State::FileHost:
+            do {
+                LOG_STATE("FileHost");
+                if (isSlashQuestionOrHash(*c)) {
+                    bool windowsQuirk = takesTwoAdvancesUntilEnd(CodePointIterator<CharacterType>(authorityOrHostBegin, c))
+                        && isWindowsDriveLetter(authorityOrHostBegin);
+                    if (windowsQuirk) {
+                        syntaxViolation(authorityOrHostBegin);
+                        appendToASCIIBuffer('/');
+                        appendWindowsDriveLetter(authorityOrHostBegin);
+                    }
+                    if (windowsQuirk || authorityOrHostBegin == c) {
+                        ASSERT(windowsQuirk || parsedDataView(currentPosition(c) - 1) == '/');
+                        if (UNLIKELY(*c == '?')) {
+                            syntaxViolation(c);
+                            appendToASCIIBuffer("/?", 2);
+                            ++c;
+                            if (nonUTF8QueryEncoding) {
+                                queryBegin = c;
+                                state = State::NonUTF8Query;
+                            } else
+                                state = State::UTF8Query;
+                            m_url.m_pathAfterLastSlash = currentPosition(c) - 1;
+                            m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+                            break;
+                        }
+                        if (UNLIKELY(*c == '#')) {
+                            syntaxViolation(c);
+                            appendToASCIIBuffer("/#", 2);
+                            ++c;
+                            m_url.m_pathAfterLastSlash = currentPosition(c) - 1;
+                            m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+                            m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+                            state = State::Fragment;
+                            break;
+                        }
+                        state = State::Path;
+                        break;
+                    }
+                    if (!parseHostAndPort(CodePointIterator<CharacterType>(authorityOrHostBegin, c))) {
+                        failure();
+                        return;
+                    }
+                    if (UNLIKELY(isLocalhost(parsedDataView(m_url.m_passwordEnd, currentPosition(c) - m_url.m_passwordEnd)))) {
+                        syntaxViolation(c);
+                        m_asciiBuffer.shrink(m_url.m_passwordEnd);
+                        m_url.m_hostEnd = currentPosition(c);
+                        m_url.m_portLength = 0;
+                    }
+                    
+                    state = State::PathStart;
+                    break;
+                }
+                if (isPercentOrNonASCII(*c))
+                    m_hostHasPercentOrNonASCII = true;
+                ++c;
+            } while (!c.atEnd());
+            break;
+        case State::PathStart:
+            LOG_STATE("PathStart");
+            if (*c != '/' && *c != '\\') {
+                syntaxViolation(c);
+                appendToASCIIBuffer('/');
+            }
+            m_url.m_pathAfterLastSlash = currentPosition(c);
+            state = State::Path;
+            break;
+        case State::Path:
+            LOG_STATE("Path");
+            if (*c == '/' || (m_urlIsSpecial && *c == '\\')) {
+                if (UNLIKELY(m_urlIsSpecial && *c == '\\'))
+                    syntaxViolation(c);
+                appendToASCIIBuffer('/');
+                ++c;
+                m_url.m_pathAfterLastSlash = currentPosition(c);
+                break;
+            }
+            if (UNLIKELY(currentPosition(c) && parsedDataView(currentPosition(c) - 1) == '/')) {
+                if (UNLIKELY(isDoubleDotPathSegment(c))) {
+                    syntaxViolation(c);
+                    consumeDoubleDotPathSegment(c);
+                    popPath();
+                    break;
+                }
+                if (UNLIKELY(isSingleDotPathSegment(c))) {
+                    syntaxViolation(c);
+                    consumeSingleDotPathSegment(c);
+                    break;
+                }
+            }
+            if (*c == '?') {
+                m_url.m_pathEnd = currentPosition(c);
+                appendToASCIIBuffer('?');
+                ++c;
+                if (nonUTF8QueryEncoding) {
+                    queryBegin = c;
+                    state = State::NonUTF8Query;
+                } else
+                    state = State::UTF8Query;
+                break;
+            }
+            if (*c == '#') {
+                m_url.m_pathEnd = currentPosition(c);
+                m_url.m_queryEnd = m_url.m_pathEnd;
+                state = State::Fragment;
+                break;
+            }
+            utf8PercentEncode<isInDefaultEncodeSet>(c);
+            ++c;
+            break;
+        case State::CannotBeABaseURLPath:
+            LOG_STATE("CannotBeABaseURLPath");
+            if (*c == '?') {
+                m_url.m_pathEnd = currentPosition(c);
+                appendToASCIIBuffer('?');
+                ++c;
+                if (nonUTF8QueryEncoding) {
+                    queryBegin = c;
+                    state = State::NonUTF8Query;
+                } else
+                    state = State::UTF8Query;
+            } else if (*c == '#') {
+                m_url.m_pathEnd = currentPosition(c);
+                m_url.m_queryEnd = m_url.m_pathEnd;
+                state = State::Fragment;
+            } else if (*c == '/') {
+                appendToASCIIBuffer('/');
+                ++c;
+                m_url.m_pathAfterLastSlash = currentPosition(c);
+            } else {
+                utf8PercentEncode<isInSimpleEncodeSet>(c);
+                ++c;
+            }
+            break;
+        case State::UTF8Query:
+            LOG_STATE("UTF8Query");
+            ASSERT(queryBegin == CodePointIterator<CharacterType>());
+            if (*c == '#') {
+                m_url.m_queryEnd = currentPosition(c);
+                state = State::Fragment;
+                break;
+            }
+            ASSERT(!nonUTF8QueryEncoding);
+            utf8QueryEncode(c);
+            ++c;
+            break;
+        case State::NonUTF8Query:
+            do {
+                LOG_STATE("NonUTF8Query");
+                ASSERT(queryBegin != CodePointIterator<CharacterType>());
+                if (*c == '#') {
+                    encodeNonUTF8Query(queryBuffer, *nonUTF8QueryEncoding, CodePointIterator<CharacterType>(queryBegin, c));
+                    m_url.m_queryEnd = currentPosition(c);
+                    state = State::Fragment;
+                    break;
+                }
+                appendCodePoint(queryBuffer, *c);
+                advance(c, queryBegin);
+            } while (!c.atEnd());
+            break;
+        case State::Fragment:
+            URL_PARSER_LOG("State Fragment");
+            utf8PercentEncode<isInSimpleEncodeSet>(c);
+            ++c;
+            break;
+        }
+    }
+
+    switch (state) {
+    case State::SchemeStart:
+        LOG_FINAL_STATE("SchemeStart");
+        if (!currentPosition(c) && base.isValid() && !base.m_cannotBeABaseURL) {
+            m_url = base;
+            m_url.removeFragmentIdentifier();
+            return;
+        }
+        failure();
+        return;
+    case State::Scheme:
+        LOG_FINAL_STATE("Scheme");
+        failure();
+        return;
+    case State::NoScheme:
+        LOG_FINAL_STATE("NoScheme");
+        RELEASE_ASSERT_NOT_REACHED();
+    case State::SpecialRelativeOrAuthority:
+        LOG_FINAL_STATE("SpecialRelativeOrAuthority");
+        copyURLPartsUntil(base, URLPart::QueryEnd, c, nonUTF8QueryEncoding);
+        break;
+    case State::PathOrAuthority:
+        LOG_FINAL_STATE("PathOrAuthority");
+        ASSERT(m_url.m_userStart);
+        ASSERT(m_url.m_userStart == currentPosition(c));
+        ASSERT(parsedDataView(currentPosition(c) - 1) == '/');
+        m_url.m_userStart--;
+        m_url.m_userEnd = m_url.m_userStart;
+        m_url.m_passwordEnd = m_url.m_userStart;
+        m_url.m_hostEnd = m_url.m_userStart;
+        m_url.m_portLength = 0;
+        m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+        m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+        m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+        break;
+    case State::Relative:
+        LOG_FINAL_STATE("Relative");
+        RELEASE_ASSERT_NOT_REACHED();
+    case State::RelativeSlash:
+        LOG_FINAL_STATE("RelativeSlash");
+        copyURLPartsUntil(base, URLPart::PortEnd, c, nonUTF8QueryEncoding);
+        appendToASCIIBuffer('/');
+        m_url.m_pathAfterLastSlash = m_url.m_hostEnd + m_url.m_portLength + 1;
+        m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+        m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+        break;
+    case State::SpecialAuthoritySlashes:
+        LOG_FINAL_STATE("SpecialAuthoritySlashes");
+        m_url.m_userStart = currentPosition(c);
+        m_url.m_userEnd = m_url.m_userStart;
+        m_url.m_passwordEnd = m_url.m_userStart;
+        m_url.m_hostEnd = m_url.m_userStart;
+        m_url.m_portLength = 0;
+        m_url.m_pathAfterLastSlash = m_url.m_userStart;
+        m_url.m_pathEnd = m_url.m_userStart;
+        m_url.m_queryEnd = m_url.m_userStart;
+        break;
+    case State::SpecialAuthorityIgnoreSlashes:
+        LOG_FINAL_STATE("SpecialAuthorityIgnoreSlashes");
+        failure();
+        return;
+    case State::AuthorityOrHost:
+        LOG_FINAL_STATE("AuthorityOrHost");
+        m_url.m_userEnd = currentPosition(authorityOrHostBegin);
+        m_url.m_passwordEnd = m_url.m_userEnd;
+        if (authorityOrHostBegin.atEnd()) {
+            m_url.m_userEnd = m_url.m_userStart;
+            m_url.m_passwordEnd = m_url.m_userStart;
+            m_url.m_hostEnd = m_url.m_userStart;
+            m_url.m_portLength = 0;
+            m_url.m_pathEnd = m_url.m_userStart;
+        } else if (!parseHostAndPort(authorityOrHostBegin)) {
+            failure();
+            return;
+        } else {
+            if (m_urlIsSpecial) {
+                syntaxViolation(c);
+                appendToASCIIBuffer('/');
+                m_url.m_pathEnd = m_url.m_hostEnd + m_url.m_portLength + 1;
+            } else
+                m_url.m_pathEnd = m_url.m_hostEnd + m_url.m_portLength;
+        }
+        m_url.m_pathAfterLastSlash = m_url.m_pathEnd;
+        m_url.m_queryEnd = m_url.m_pathEnd;
+        break;
+    case State::Host:
+        LOG_FINAL_STATE("Host");
+        if (!parseHostAndPort(authorityOrHostBegin)) {
+            failure();
+            return;
+        }
+        if (m_urlIsSpecial) {
+            syntaxViolation(c);
+            appendToASCIIBuffer('/');
+            m_url.m_pathEnd = m_url.m_hostEnd + m_url.m_portLength + 1;
+        } else
+            m_url.m_pathEnd = m_url.m_hostEnd + m_url.m_portLength;
+        m_url.m_pathAfterLastSlash = m_url.m_pathEnd;
+        m_url.m_queryEnd = m_url.m_pathEnd;
+        break;
+    case State::File:
+        LOG_FINAL_STATE("File");
+        if (base.isValid() && base.protocolIs("file")) {
+            copyURLPartsUntil(base, URLPart::QueryEnd, c, nonUTF8QueryEncoding);
+            break;
+        }
+        syntaxViolation(c);
+        appendToASCIIBuffer("///", 3);
+        m_url.m_userStart = currentPosition(c) - 1;
+        m_url.m_userEnd = m_url.m_userStart;
+        m_url.m_passwordEnd = m_url.m_userStart;
+        m_url.m_hostEnd = m_url.m_userStart;
+        m_url.m_portLength = 0;
+        m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+        m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+        m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+        break;
+    case State::FileSlash:
+        LOG_FINAL_STATE("FileSlash");
+        syntaxViolation(c);
+        m_url.m_userStart = currentPosition(c) + 1;
+        appendToASCIIBuffer("//", 2);
+        m_url.m_userEnd = m_url.m_userStart;
+        m_url.m_passwordEnd = m_url.m_userStart;
+        m_url.m_hostEnd = m_url.m_userStart;
+        m_url.m_portLength = 0;
+        if (copyBaseWindowsDriveLetter(base)) {
+            appendToASCIIBuffer('/');
+            m_url.m_pathAfterLastSlash = m_url.m_userStart + 4;
+        } else
+            m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+        m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+        m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+        break;
+    case State::FileHost:
+        LOG_FINAL_STATE("FileHost");
+        if (takesTwoAdvancesUntilEnd(CodePointIterator<CharacterType>(authorityOrHostBegin, c))
+            && isWindowsDriveLetter(authorityOrHostBegin)) {
+            syntaxViolation(authorityOrHostBegin);
+            appendToASCIIBuffer('/');
+            appendWindowsDriveLetter(authorityOrHostBegin);
+            m_url.m_pathAfterLastSlash = currentPosition(c);
+            m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+            m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+            break;
+        }
+        
+        if (authorityOrHostBegin == c) {
+            syntaxViolation(c);
+            appendToASCIIBuffer('/');
+            m_url.m_userStart = currentPosition(c) - 1;
+            m_url.m_userEnd = m_url.m_userStart;
+            m_url.m_passwordEnd = m_url.m_userStart;
+            m_url.m_hostEnd = m_url.m_userStart;
+            m_url.m_portLength = 0;
+            m_url.m_pathAfterLastSlash = m_url.m_userStart + 1;
+            m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+            m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+            break;
+        }
+
+        if (!parseHostAndPort(CodePointIterator<CharacterType>(authorityOrHostBegin, c))) {
+            failure();
+            return;
+        }
+
+        syntaxViolation(c);
+        if (isLocalhost(parsedDataView(m_url.m_passwordEnd, currentPosition(c) - m_url.m_passwordEnd))) {
+            m_asciiBuffer.shrink(m_url.m_passwordEnd);
+            m_url.m_hostEnd = currentPosition(c);
+            m_url.m_portLength = 0;
+        }
+        appendToASCIIBuffer('/');
+        m_url.m_pathAfterLastSlash = m_url.m_hostEnd + m_url.m_portLength + 1;
+        m_url.m_pathEnd = m_url.m_pathAfterLastSlash;
+        m_url.m_queryEnd = m_url.m_pathAfterLastSlash;
+        break;
+    case State::PathStart:
+        LOG_FINAL_STATE("PathStart");
+        RELEASE_ASSERT_NOT_REACHED();
+    case State::Path:
+        LOG_FINAL_STATE("Path");
+        m_url.m_pathEnd = currentPosition(c);
+        m_url.m_queryEnd = m_url.m_pathEnd;
+        break;
+    case State::CannotBeABaseURLPath:
+        LOG_FINAL_STATE("CannotBeABaseURLPath");
+        m_url.m_pathEnd = currentPosition(c);
+        m_url.m_queryEnd = m_url.m_pathEnd;
+        break;
+    case State::UTF8Query:
+        LOG_FINAL_STATE("UTF8Query");
+        ASSERT(queryBegin == CodePointIterator<CharacterType>());
+        m_url.m_queryEnd = currentPosition(c);
+        break;
+    case State::NonUTF8Query:
+        LOG_FINAL_STATE("NonUTF8Query");
+        ASSERT(queryBegin != CodePointIterator<CharacterType>());
+        encodeNonUTF8Query(queryBuffer, *nonUTF8QueryEncoding, CodePointIterator<CharacterType>(queryBegin, c));
+        m_url.m_queryEnd = currentPosition(c);
+        break;
+    case State::Fragment:
+        LOG_FINAL_STATE("Fragment");
+        break;
+    }
+
+    if (LIKELY(!m_didSeeSyntaxViolation)) {
+        m_url.m_string = m_inputString;
+        ASSERT(m_asciiBuffer.isEmpty());
+    } else
+        m_url.m_string = String::adopt(WTFMove(m_asciiBuffer));
+    m_url.m_isValid = true;
+    URL_PARSER_LOG("Parsed URL <%s>", m_url.m_string.utf8().data());
+}
+
+template<typename CharacterType>
+void URLParser::parseAuthority(CodePointIterator<CharacterType> iterator)
+{
+    if (UNLIKELY(iterator.atEnd())) {
+        syntaxViolation(iterator);
+        m_url.m_userEnd = currentPosition(iterator);
+        m_url.m_passwordEnd = m_url.m_userEnd;
+        return;
+    }
+    for (; !iterator.atEnd(); advance(iterator)) {
+        if (*iterator == ':') {
+            m_url.m_userEnd = currentPosition(iterator);
+            auto iteratorAtColon = iterator;
+            ++iterator;
+            bool tabOrNewlineAfterColon = false;
+            while (UNLIKELY(!iterator.atEnd() && isTabOrNewline(*iterator))) {
+                tabOrNewlineAfterColon = true;
+                ++iterator;
+            }
+            if (UNLIKELY(iterator.atEnd())) {
+                syntaxViolation(iteratorAtColon);
+                m_url.m_passwordEnd = m_url.m_userEnd;
+                if (m_url.m_userEnd > m_url.m_userStart)
+                    appendToASCIIBuffer('@');
+                return;
+            }
+            if (tabOrNewlineAfterColon)
+                syntaxViolation(iteratorAtColon);
+            appendToASCIIBuffer(':');
+            break;
+        }
+        utf8PercentEncode<WTF::isInUserInfoEncodeSet>(iterator);
+    }
+    for (; !iterator.atEnd(); advance(iterator))
+        utf8PercentEncode<WTF::isInUserInfoEncodeSet>(iterator);
+    m_url.m_passwordEnd = currentPosition(iterator);
+    if (!m_url.m_userEnd)
+        m_url.m_userEnd = m_url.m_passwordEnd;
+    appendToASCIIBuffer('@');
+}
+
+template<typename UnsignedIntegerType>
+void URLParser::appendNumberToASCIIBuffer(UnsignedIntegerType number)
+{
+    LChar buf[sizeof(UnsignedIntegerType) * 3 + 1];
+    LChar* end = std::end(buf);
+    LChar* p = end;
+    do {
+        *--p = (number % 10) + '0';
+        number /= 10;
+    } while (number);
+    appendToASCIIBuffer(p, end - p);
+}
+
+void URLParser::serializeIPv4(IPv4Address address)
+{
+    appendNumberToASCIIBuffer<uint8_t>(address >> 24);
+    appendToASCIIBuffer('.');
+    appendNumberToASCIIBuffer<uint8_t>(address >> 16);
+    appendToASCIIBuffer('.');
+    appendNumberToASCIIBuffer<uint8_t>(address >> 8);
+    appendToASCIIBuffer('.');
+    appendNumberToASCIIBuffer<uint8_t>(address);
+}
+    
+static size_t zeroSequenceLength(const std::array<uint16_t, 8>& address, size_t begin)
+{
+    size_t end = begin;
+    for (; end < 8; end++) {
+        if (address[end])
+            break;
+    }
+    return end - begin;
+}
+
+static std::optional<size_t> findLongestZeroSequence(const std::array<uint16_t, 8>& address)
+{
+    std::optional<size_t> longest;
+    size_t longestLength = 0;
+    for (size_t i = 0; i < 8; i++) {
+        size_t length = zeroSequenceLength(address, i);
+        if (length) {
+            if (length > 1 && (!longest || longestLength < length)) {
+                longest = i;
+                longestLength = length;
+            }
+            i += length;
+        }
+    }
+    return longest;
+}
+
+void URLParser::serializeIPv6Piece(uint16_t piece)
+{
+    bool printed = false;
+    if (auto nibble0 = piece >> 12) {
+        appendToASCIIBuffer(lowerNibbleToLowercaseASCIIHexDigit(nibble0));
+        printed = true;
+    }
+    auto nibble1 = piece >> 8 & 0xF;
+    if (printed || nibble1) {
+        appendToASCIIBuffer(lowerNibbleToLowercaseASCIIHexDigit(nibble1));
+        printed = true;
+    }
+    auto nibble2 = piece >> 4 & 0xF;
+    if (printed || nibble2)
+        appendToASCIIBuffer(lowerNibbleToLowercaseASCIIHexDigit(nibble2));
+    appendToASCIIBuffer(lowerNibbleToLowercaseASCIIHexDigit(piece & 0xF));
+}
+
+void URLParser::serializeIPv6(URLParser::IPv6Address address)
+{
+    appendToASCIIBuffer('[');
+    auto compressPointer = findLongestZeroSequence(address);
+    for (size_t piece = 0; piece < 8; piece++) {
+        if (compressPointer && compressPointer.value() == piece) {
+            ASSERT(!address[piece]);
+            if (piece)
+                appendToASCIIBuffer(':');
+            else
+                appendToASCIIBuffer("::", 2);
+            while (piece < 8 && !address[piece])
+                piece++;
+            if (piece == 8)
+                break;
+        }
+        serializeIPv6Piece(address[piece]);
+        if (piece < 7)
+            appendToASCIIBuffer(':');
+    }
+    appendToASCIIBuffer(']');
+}
+
+enum class URLParser::IPv4PieceParsingError {
+    Failure,
+    Overflow,
+};
+
+template<typename CharacterType>
+Expected<uint32_t, URLParser::IPv4PieceParsingError> URLParser::parseIPv4Piece(CodePointIterator<CharacterType>& iterator, bool& didSeeSyntaxViolation)
+{
+    enum class State : uint8_t {
+        UnknownBase,
+        Decimal,
+        OctalOrHex,
+        Octal,
+        Hex,
+    };
+    State state = State::UnknownBase;
+    Checked<uint32_t, RecordOverflow> value = 0;
+    if (!iterator.atEnd() && *iterator == '.')
+        return makeUnexpected(IPv4PieceParsingError::Failure);
+    while (!iterator.atEnd()) {
+        if (isTabOrNewline(*iterator)) {
+            didSeeSyntaxViolation = true;
+            ++iterator;
+            continue;
+        }
+        if (*iterator == '.') {
+            ASSERT(!value.hasOverflowed());
+            return value.unsafeGet();
+        }
+        switch (state) {
+        case State::UnknownBase:
+            if (UNLIKELY(*iterator == '0')) {
+                ++iterator;
+                state = State::OctalOrHex;
+                break;
+            }
+            state = State::Decimal;
+            break;
+        case State::OctalOrHex:
+            didSeeSyntaxViolation = true;
+            if (*iterator == 'x' || *iterator == 'X') {
+                ++iterator;
+                state = State::Hex;
+                break;
+            }
+            state = State::Octal;
+            break;
+        case State::Decimal:
+            if (!isASCIIDigit(*iterator))
+                return makeUnexpected(IPv4PieceParsingError::Failure);
+            value *= 10;
+            value += *iterator - '0';
+            if (UNLIKELY(value.hasOverflowed()))
+                return makeUnexpected(IPv4PieceParsingError::Overflow);
+            ++iterator;
+            break;
+        case State::Octal:
+            ASSERT(didSeeSyntaxViolation);
+            if (*iterator < '0' || *iterator > '7')
+                return makeUnexpected(IPv4PieceParsingError::Failure);
+            value *= 8;
+            value += *iterator - '0';
+            if (UNLIKELY(value.hasOverflowed()))
+                return makeUnexpected(IPv4PieceParsingError::Overflow);
+            ++iterator;
+            break;
+        case State::Hex:
+            ASSERT(didSeeSyntaxViolation);
+            if (!isASCIIHexDigit(*iterator))
+                return makeUnexpected(IPv4PieceParsingError::Failure);
+            value *= 16;
+            value += toASCIIHexValue(*iterator);
+            if (UNLIKELY(value.hasOverflowed()))
+                return makeUnexpected(IPv4PieceParsingError::Overflow);
+            ++iterator;
+            break;
+        }
+    }
+    ASSERT(!value.hasOverflowed());
+    return value.unsafeGet();
+}
+
+ALWAYS_INLINE static uint64_t pow256(size_t exponent)
+{
+    RELEASE_ASSERT(exponent <= 4);
+    uint64_t values[5] = {1, 256, 256 * 256, 256 * 256 * 256, 256ull * 256 * 256 * 256 };
+    return values[exponent];
+}
+
+enum class URLParser::IPv4ParsingError {
+    Failure,
+    NotIPv4,
+};
+
+template<typename CharacterTypeForSyntaxViolation, typename CharacterType>
+Expected<URLParser::IPv4Address, URLParser::IPv4ParsingError> URLParser::parseIPv4Host(const CodePointIterator<CharacterTypeForSyntaxViolation>& iteratorForSyntaxViolationPosition, CodePointIterator<CharacterType> iterator)
+{
+    Vector<Expected<uint32_t, URLParser::IPv4PieceParsingError>, 4> items;
+    bool didSeeSyntaxViolation = false;
+    if (!iterator.atEnd() && *iterator == '.')
+        return makeUnexpected(IPv4ParsingError::NotIPv4);
+    while (!iterator.atEnd()) {
+        if (isTabOrNewline(*iterator)) {
+            didSeeSyntaxViolation = true;
+            ++iterator;
+            continue;
+        }
+        if (items.size() >= 4)
+            return makeUnexpected(IPv4ParsingError::NotIPv4);
+        items.append(parseIPv4Piece(iterator, didSeeSyntaxViolation));
+        if (!iterator.atEnd() && *iterator == '.') {
+            ++iterator;
+            if (iterator.atEnd())
+                syntaxViolation(iteratorForSyntaxViolationPosition);
+            else if (*iterator == '.')
+                return makeUnexpected(IPv4ParsingError::NotIPv4);
+        }
+    }
+    if (!iterator.atEnd() || !items.size() || items.size() > 4)
+        return makeUnexpected(IPv4ParsingError::NotIPv4);
+    for (const auto& item : items) {
+        if (!item.has_value() && item.error() == IPv4PieceParsingError::Failure)
+            return makeUnexpected(IPv4ParsingError::NotIPv4);
+    }
+    for (const auto& item : items) {
+        if (!item.has_value() && item.error() == IPv4PieceParsingError::Overflow)
+            return makeUnexpected(IPv4ParsingError::Failure);
+    }
+    if (items.size() > 1) {
+        for (size_t i = 0; i < items.size() - 1; i++) {
+            if (items[i].value() > 255)
+                return makeUnexpected(IPv4ParsingError::Failure);
+        }
+    }
+    if (items[items.size() - 1].value() >= pow256(5 - items.size()))
+        return makeUnexpected(IPv4ParsingError::Failure);
+
+    if (didSeeSyntaxViolation)
+        syntaxViolation(iteratorForSyntaxViolationPosition);
+    for (const auto& item : items) {
+        if (item.value() > 255)
+            syntaxViolation(iteratorForSyntaxViolationPosition);
+    }
+
+    if (UNLIKELY(items.size() != 4))
+        syntaxViolation(iteratorForSyntaxViolationPosition);
+
+    IPv4Address ipv4 = items.takeLast().value();
+    for (size_t counter = 0; counter < items.size(); ++counter)
+        ipv4 += items[counter].value() * pow256(3 - counter);
+    return ipv4;
+}
+
+template<typename CharacterType>
+std::optional<uint32_t> URLParser::parseIPv4PieceInsideIPv6(CodePointIterator<CharacterType>& iterator)
+{
+    if (iterator.atEnd())
+        return std::nullopt;
+    uint32_t piece = 0;
+    bool leadingZeros = false;
+    size_t digitCount = 0;
+    while (!iterator.atEnd()) {
+        if (!isASCIIDigit(*iterator))
+            return std::nullopt;
+        ++digitCount;
+        if (!piece && *iterator == '0') {
+            if (leadingZeros)
+                return std::nullopt;
+            leadingZeros = true;
+        }
+        if (!piece && *iterator == '0')
+            leadingZeros = true;
+        piece = piece * 10 + *iterator - '0';
+        if (piece > 255)
+            return std::nullopt;
+        advance<CharacterType, ReportSyntaxViolation::No>(iterator);
+        if (iterator.atEnd())
+            break;
+        if (*iterator == '.')
+            break;
+    }
+    if (piece && leadingZeros)
+        return std::nullopt;
+    return piece;
+}
+
+template<typename CharacterType>
+std::optional<URLParser::IPv4Address> URLParser::parseIPv4AddressInsideIPv6(CodePointIterator<CharacterType> iterator)
+{
+    IPv4Address address = 0;
+    for (size_t i = 0; i < 4; ++i) {
+        if (std::optional<uint32_t> piece = parseIPv4PieceInsideIPv6(iterator))
+            address = (address << 8) + piece.value();
+        else
+            return std::nullopt;
+        if (i < 3) {
+            if (iterator.atEnd())
+                return std::nullopt;
+            if (*iterator != '.')
+                return std::nullopt;
+            advance<CharacterType, ReportSyntaxViolation::No>(iterator);
+        } else if (!iterator.atEnd())
+            return std::nullopt;
+    }
+    ASSERT(iterator.atEnd());
+    return address;
+}
+
+template<typename CharacterType>
+std::optional<URLParser::IPv6Address> URLParser::parseIPv6Host(CodePointIterator<CharacterType> c)
+{
+    ASSERT(*c == '[');
+    const auto hostBegin = c;
+    advance(c, hostBegin);
+    if (c.atEnd())
+        return std::nullopt;
+
+    IPv6Address address = {{0, 0, 0, 0, 0, 0, 0, 0}};
+    size_t piecePointer = 0;
+    std::optional<size_t> compressPointer;
+
+    if (*c == ':') {
+        advance(c, hostBegin);
+        if (c.atEnd())
+            return std::nullopt;
+        if (*c != ':')
+            return std::nullopt;
+        advance(c, hostBegin);
+        ++piecePointer;
+        compressPointer = piecePointer;
+    }
+    
+    while (!c.atEnd()) {
+        if (piecePointer == 8)
+            return std::nullopt;
+        if (*c == ':') {
+            if (compressPointer)
+                return std::nullopt;
+            advance(c, hostBegin);
+            ++piecePointer;
+            compressPointer = piecePointer;
+            continue;
+        }
+        if (piecePointer == 6 || (compressPointer && piecePointer < 6)) {
+            if (std::optional<IPv4Address> ipv4Address = parseIPv4AddressInsideIPv6(c)) {
+                if (compressPointer && piecePointer == 5)
+                    return std::nullopt;
+                syntaxViolation(hostBegin);
+                address[piecePointer++] = ipv4Address.value() >> 16;
+                address[piecePointer++] = ipv4Address.value() & 0xFFFF;
+                c = { };
+                break;
+            }
+        }
+        uint16_t value = 0;
+        size_t length = 0;
+        bool leadingZeros = false;
+        for (; length < 4; length++) {
+            if (c.atEnd())
+                break;
+            if (!isASCIIHexDigit(*c))
+                break;
+            if (isASCIIUpper(*c))
+                syntaxViolation(hostBegin);
+            if (*c == '0' && !length)
+                leadingZeros = true;
+            value = value * 0x10 + toASCIIHexValue(*c);
+            advance(c, hostBegin);
+        }
+        
+        if (UNLIKELY((value && leadingZeros) || (!value && length > 1)))
+            syntaxViolation(hostBegin);
+
+        address[piecePointer++] = value;
+        if (c.atEnd())
+            break;
+        if (piecePointer == 8 || *c != ':')
+            return std::nullopt;
+        advance(c, hostBegin);
+    }
+    
+    if (!c.atEnd())
+        return std::nullopt;
+    
+    if (compressPointer) {
+        size_t swaps = piecePointer - compressPointer.value();
+        piecePointer = 7;
+        while (swaps)
+            std::swap(address[piecePointer--], address[compressPointer.value() + swaps-- - 1]);
+    } else if (piecePointer != 8)
+        return std::nullopt;
+
+    std::optional<size_t> possibleCompressPointer = findLongestZeroSequence(address);
+    if (possibleCompressPointer)
+        possibleCompressPointer.value()++;
+    if (UNLIKELY(compressPointer != possibleCompressPointer))
+        syntaxViolation(hostBegin);
+    
+    return address;
+}
+
+template<typename CharacterType>
+URLParser::LCharBuffer URLParser::percentDecode(const LChar* input, size_t length, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition)
+{
+    LCharBuffer output;
+    output.reserveInitialCapacity(length);
+    
+    for (size_t i = 0; i < length; ++i) {
+        uint8_t byte = input[i];
+        if (byte != '%')
+            output.uncheckedAppend(byte);
+        else if (length > 2 && i < length - 2) {
+            if (isASCIIHexDigit(input[i + 1]) && isASCIIHexDigit(input[i + 2])) {
+                syntaxViolation(iteratorForSyntaxViolationPosition);
+                output.uncheckedAppend(toASCIIHexValue(input[i + 1], input[i + 2]));
+                i += 2;
+            } else
+                output.uncheckedAppend(byte);
+        } else
+            output.uncheckedAppend(byte);
+    }
+    return output;
+}
+    
+URLParser::LCharBuffer URLParser::percentDecode(const LChar* input, size_t length)
+{
+    LCharBuffer output;
+    output.reserveInitialCapacity(length);
+    
+    for (size_t i = 0; i < length; ++i) {
+        uint8_t byte = input[i];
+        if (byte != '%')
+            output.uncheckedAppend(byte);
+        else if (length > 2 && i < length - 2) {
+            if (isASCIIHexDigit(input[i + 1]) && isASCIIHexDigit(input[i + 2])) {
+                output.uncheckedAppend(toASCIIHexValue(input[i + 1], input[i + 2]));
+                i += 2;
+            } else
+                output.uncheckedAppend(byte);
+        } else
+            output.uncheckedAppend(byte);
+    }
+    return output;
+}
+
+template<typename CharacterType> std::optional<URLParser::LCharBuffer> URLParser::domainToASCII(StringImpl& domain, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition)
+{
+    LCharBuffer ascii;
+    if (domain.isAllASCII()) {
+        size_t length = domain.length();
+        if (domain.is8Bit()) {
+            const LChar* characters = domain.characters8();
+            ascii.reserveInitialCapacity(length);
+            for (size_t i = 0; i < length; ++i) {
+                if (UNLIKELY(isASCIIUpper(characters[i])))
+                    syntaxViolation(iteratorForSyntaxViolationPosition);
+                ascii.uncheckedAppend(toASCIILower(characters[i]));
+            }
+        } else {
+            const UChar* characters = domain.characters16();
+            ascii.reserveInitialCapacity(length);
+            for (size_t i = 0; i < length; ++i) {
+                if (UNLIKELY(isASCIIUpper(characters[i])))
+                    syntaxViolation(iteratorForSyntaxViolationPosition);
+                ascii.uncheckedAppend(toASCIILower(characters[i]));
+            }
+        }
+        return ascii;
+    }
+    
+    const size_t maxDomainLength = 64;
+    UChar hostnameBuffer[maxDomainLength];
+    UErrorCode error = U_ZERO_ERROR;
+    UIDNAInfo processingDetails = UIDNA_INFO_INITIALIZER;
+    int32_t numCharactersConverted = uidna_nameToASCII(&internationalDomainNameTranscoder(), StringView(domain).upconvertedCharacters(), domain.length(), hostnameBuffer, maxDomainLength, &processingDetails, &error);
+    ASSERT(numCharactersConverted <= static_cast<int32_t>(maxDomainLength));
+
+    if (U_SUCCESS(error) && !processingDetails.errors) {
+        for (int32_t i = 0; i < numCharactersConverted; ++i) {
+            ASSERT(isASCII(hostnameBuffer[i]));
+            ASSERT(!isASCIIUpper(hostnameBuffer[i]));
+        }
+        ascii.append(hostnameBuffer, numCharactersConverted);
+        if (domain != StringView(ascii.data(), ascii.size()))
+            syntaxViolation(iteratorForSyntaxViolationPosition);
+        return ascii;
+    }
+    return std::nullopt;
+}
+
+bool URLParser::hasForbiddenHostCodePoint(const URLParser::LCharBuffer& asciiDomain)
+{
+    for (size_t i = 0; i < asciiDomain.size(); ++i) {
+        if (isForbiddenHostCodePoint(asciiDomain[i]))
+            return true;
+    }
+    return false;
+}
+
+template<typename CharacterType>
+bool URLParser::parsePort(CodePointIterator<CharacterType>& iterator)
+{
+    ASSERT(*iterator == ':');
+    auto colonIterator = iterator;
+    advance(iterator, colonIterator);
+    uint32_t port = 0;
+    if (UNLIKELY(iterator.atEnd())) {
+        unsigned portLength = currentPosition(colonIterator) - m_url.m_hostEnd;
+        RELEASE_ASSERT(portLength <= URL::maxPortLength);
+        m_url.m_portLength = portLength;
+        syntaxViolation(colonIterator);
+        return true;
+    }
+    size_t digitCount = 0;
+    bool leadingZeros = false;
+    for (; !iterator.atEnd(); ++iterator) {
+        if (UNLIKELY(isTabOrNewline(*iterator))) {
+            syntaxViolation(colonIterator);
+            continue;
+        }
+        if (isASCIIDigit(*iterator)) {
+            if (*iterator == '0' && !digitCount)
+                leadingZeros = true;
+            ++digitCount;
+            port = port * 10 + *iterator - '0';
+            if (port > std::numeric_limits<uint16_t>::max())
+                return false;
+        } else
+            return false;
+    }
+
+    if (port && leadingZeros)
+        syntaxViolation(colonIterator);
+    
+    if (!port && digitCount > 1)
+        syntaxViolation(colonIterator);
+
+    ASSERT(port == static_cast<uint16_t>(port));
+    if (UNLIKELY(defaultPortForProtocol(parsedDataView(0, m_url.m_schemeEnd)) == static_cast<uint16_t>(port)))
+        syntaxViolation(colonIterator);
+    else {
+        appendToASCIIBuffer(':');
+        ASSERT(port <= std::numeric_limits<uint16_t>::max());
+        appendNumberToASCIIBuffer<uint16_t>(static_cast<uint16_t>(port));
+    }
+
+    unsigned portLength = currentPosition(iterator) - m_url.m_hostEnd;
+    RELEASE_ASSERT(portLength <= URL::maxPortLength);
+    m_url.m_portLength = portLength;
+    return true;
+}
+
+template<typename CharacterType>
+bool URLParser::parseHostAndPort(CodePointIterator<CharacterType> iterator)
+{
+    if (iterator.atEnd())
+        return false;
+    if (*iterator == ':')
+        return false;
+    if (*iterator == '[') {
+        auto ipv6End = iterator;
+        while (!ipv6End.atEnd() && *ipv6End != ']')
+            ++ipv6End;
+        if (ipv6End.atEnd())
+            return false;
+        if (auto address = parseIPv6Host(CodePointIterator<CharacterType>(iterator, ipv6End))) {
+            serializeIPv6(address.value());
+            if (!ipv6End.atEnd()) {
+                advance(ipv6End);
+                if (!ipv6End.atEnd() && *ipv6End == ':') {
+                    m_url.m_hostEnd = currentPosition(ipv6End);
+                    return parsePort(ipv6End);
+                }
+                m_url.m_hostEnd = currentPosition(ipv6End);
+                m_url.m_portLength = 0;
+                return true;
+            }
+            m_url.m_hostEnd = currentPosition(ipv6End);
+            return true;
+        }
+        return false;
+    }
+
+    if (!m_urlIsSpecial) {
+        for (; !iterator.atEnd(); ++iterator) {
+            if (UNLIKELY(isTabOrNewline(*iterator))) {
+                syntaxViolation(iterator);
+                continue;
+            }
+            if (*iterator == ':')
+                break;
+            if (UNLIKELY(isForbiddenHostCodePoint(*iterator) && *iterator != '%'))
+                return false;
+            utf8PercentEncode<isInSimpleEncodeSet>(iterator);
+        }
+        m_url.m_hostEnd = currentPosition(iterator);
+        if (iterator.atEnd()) {
+            m_url.m_portLength = 0;
+            return true;
+        }
+        return parsePort(iterator);
+    }
+    
+    if (LIKELY(!m_hostHasPercentOrNonASCII)) {
+        auto hostIterator = iterator;
+        for (; !iterator.atEnd(); ++iterator) {
+            if (isTabOrNewline(*iterator))
+                continue;
+            if (*iterator == ':')
+                break;
+            if (isForbiddenHostCodePoint(*iterator))
+                return false;
+        }
+        auto address = parseIPv4Host(hostIterator, CodePointIterator<CharacterType>(hostIterator, iterator));
+        if (address) {
+            serializeIPv4(address.value());
+            m_url.m_hostEnd = currentPosition(iterator);
+            if (iterator.atEnd()) {
+                m_url.m_portLength = 0;
+                return true;
+            }
+            return parsePort(iterator);
+        }
+        if (address.error() == IPv4ParsingError::Failure)
+            return false;
+        for (; hostIterator != iterator; ++hostIterator) {
+            if (UNLIKELY(isTabOrNewline(*hostIterator))) {
+                syntaxViolation(hostIterator);
+                continue;
+            }
+            if (UNLIKELY(isASCIIUpper(*hostIterator)))
+                syntaxViolation(hostIterator);
+            appendToASCIIBuffer(toASCIILower(*hostIterator));
+        }
+        m_url.m_hostEnd = currentPosition(iterator);
+        if (!hostIterator.atEnd())
+            return parsePort(hostIterator);
+        unsigned portLength = currentPosition(iterator) - m_url.m_hostEnd;
+        RELEASE_ASSERT(portLength <= URL::maxPortLength);
+        m_url.m_portLength = portLength;
+        return true;
+    }
+    
+    const auto hostBegin = iterator;
+    
+    LCharBuffer utf8Encoded;
+    for (; !iterator.atEnd(); ++iterator) {
+        if (UNLIKELY(isTabOrNewline(*iterator))) {
+            syntaxViolation(hostBegin);
+            continue;
+        }
+        if (*iterator == ':')
+            break;
+        if (UNLIKELY(!isASCII(*iterator)))
+            syntaxViolation(hostBegin);
+
+        if (!U_IS_UNICODE_CHAR(*iterator))
+            return false;
+        uint8_t buffer[U8_MAX_LENGTH];
+        int32_t offset = 0;
+        U8_APPEND_UNSAFE(buffer, offset, *iterator);
+        utf8Encoded.append(buffer, offset);
+    }
+    LCharBuffer percentDecoded = percentDecode(utf8Encoded.data(), utf8Encoded.size(), hostBegin);
+    String domain = String::fromUTF8(percentDecoded.data(), percentDecoded.size());
+    if (domain.isNull())
+        return false;
+    if (domain != StringView(percentDecoded.data(), percentDecoded.size()))
+        syntaxViolation(hostBegin);
+    auto asciiDomain = domainToASCII(*domain.impl(), hostBegin);
+    if (!asciiDomain || hasForbiddenHostCodePoint(asciiDomain.value()))
+        return false;
+    LCharBuffer& asciiDomainValue = asciiDomain.value();
+    const LChar* asciiDomainCharacters = asciiDomainValue.data();
+
+    auto address = parseIPv4Host(hostBegin, CodePointIterator<LChar>(asciiDomainValue.begin(), asciiDomainValue.end()));
+    if (address) {
+        serializeIPv4(address.value());
+        m_url.m_hostEnd = currentPosition(iterator);
+        if (iterator.atEnd()) {
+            m_url.m_portLength = 0;
+            return true;
+        }
+        return parsePort(iterator);
+    }
+    if (address.error() == IPv4ParsingError::Failure)
+        return false;
+
+    appendToASCIIBuffer(asciiDomainCharacters, asciiDomainValue.size());
+    m_url.m_hostEnd = currentPosition(iterator);
+    if (!iterator.atEnd())
+        return parsePort(iterator);
+    m_url.m_portLength = 0;
+    return true;
+}
+
+std::optional<String> URLParser::formURLDecode(StringView input)
+{
+    auto utf8 = input.utf8(StrictConversion);
+    if (utf8.isNull())
+        return std::nullopt;
+    auto percentDecoded = percentDecode(reinterpret_cast<const LChar*>(utf8.data()), utf8.length());
+    return String::fromUTF8(percentDecoded.data(), percentDecoded.size());
+}
+
+// https://url.spec.whatwg.org/#concept-urlencoded-parser
+auto URLParser::parseURLEncodedForm(StringView input) -> URLEncodedForm
+{
+    URLEncodedForm output;
+    for (StringView bytes : input.split('&')) {
+        auto equalIndex = bytes.find('=');
+        if (equalIndex == notFound) {
+            auto name = formURLDecode(bytes.toString().replace('+', 0x20));
+            if (name)
+                output.append({ name.value(), emptyString() });
+        } else {
+            auto name = formURLDecode(bytes.substring(0, equalIndex).toString().replace('+', 0x20));
+            auto value = formURLDecode(bytes.substring(equalIndex + 1).toString().replace('+', 0x20));
+            if (name && value)
+                output.append({ name.value(), value.value() });
+        }
+    }
+    return output;
+}
+
+static void serializeURLEncodedForm(const String& input, Vector<LChar>& output)
+{
+    auto utf8 = input.utf8(StrictConversion);
+    const char* data = utf8.data();
+    for (size_t i = 0; i < utf8.length(); ++i) {
+        const char byte = data[i];
+        if (byte == 0x20)
+            output.append(0x2B);
+        else if (byte == 0x2A
+            || byte == 0x2D
+            || byte == 0x2E
+            || (byte >= 0x30 && byte <= 0x39)
+            || (byte >= 0x41 && byte <= 0x5A)
+            || byte == 0x5F
+            || (byte >= 0x61 && byte <= 0x7A)) // FIXME: Put these in the characterClassTable to avoid branches.
+            output.append(byte);
+        else
+            percentEncodeByte(byte, output);
+    }
+}
+    
+String URLParser::serialize(const URLEncodedForm& tuples)
+{
+    if (tuples.isEmpty())
+        return { };
+
+    Vector<LChar> output;
+    for (auto& tuple : tuples) {
+        if (!output.isEmpty())
+            output.append('&');
+        serializeURLEncodedForm(tuple.key, output);
+        output.append('=');
+        serializeURLEncodedForm(tuple.value, output);
+    }
+    return String::adopt(WTFMove(output));
+}
+
+const UIDNA& URLParser::internationalDomainNameTranscoder()
+{
+    static UIDNA* encoder;
+    static std::once_flag onceFlag;
+    std::call_once(onceFlag, [] {
+        UErrorCode error = U_ZERO_ERROR;
+        // Warning: Please contact a WebKitGTK+ developer if changing these flags.
+        // They should be synced with ephy_uri_decode() in ephy-uri-helpers.c.
+        encoder = uidna_openUTS46(UIDNA_CHECK_BIDI | UIDNA_CHECK_CONTEXTJ | UIDNA_NONTRANSITIONAL_TO_UNICODE | UIDNA_NONTRANSITIONAL_TO_ASCII, &error);
+        RELEASE_ASSERT(U_SUCCESS(error));
+        RELEASE_ASSERT(encoder);
+    });
+    return *encoder;
+}
+
+bool URLParser::allValuesEqual(const URL& a, const URL& b)
+{
+    URL_PARSER_LOG("%d %d %d %d %d %d %d %d %d %d %d %d %s\n%d %d %d %d %d %d %d %d %d %d %d %d %s",
+        a.m_isValid,
+        a.m_cannotBeABaseURL,
+        a.m_protocolIsInHTTPFamily,
+        a.m_schemeEnd,
+        a.m_userStart,
+        a.m_userEnd,
+        a.m_passwordEnd,
+        a.m_hostEnd,
+        a.m_hostEnd + a.m_portLength,
+        a.m_pathAfterLastSlash,
+        a.m_pathEnd,
+        a.m_queryEnd,
+        a.m_string.utf8().data(),
+        b.m_isValid,
+        b.m_cannotBeABaseURL,
+        b.m_protocolIsInHTTPFamily,
+        b.m_schemeEnd,
+        b.m_userStart,
+        b.m_userEnd,
+        b.m_passwordEnd,
+        b.m_hostEnd,
+        b.m_hostEnd + b.m_portLength,
+        b.m_pathAfterLastSlash,
+        b.m_pathEnd,
+        b.m_queryEnd,
+        b.m_string.utf8().data());
+
+    return a.m_string == b.m_string
+        && a.m_isValid == b.m_isValid
+        && a.m_cannotBeABaseURL == b.m_cannotBeABaseURL
+        && a.m_protocolIsInHTTPFamily == b.m_protocolIsInHTTPFamily
+        && a.m_schemeEnd == b.m_schemeEnd
+        && a.m_userStart == b.m_userStart
+        && a.m_userEnd == b.m_userEnd
+        && a.m_passwordEnd == b.m_passwordEnd
+        && a.m_hostEnd == b.m_hostEnd
+        && a.m_portLength == b.m_portLength
+        && a.m_pathAfterLastSlash == b.m_pathAfterLastSlash
+        && a.m_pathEnd == b.m_pathEnd
+        && a.m_queryEnd == b.m_queryEnd;
+}
+
+bool URLParser::internalValuesConsistent(const URL& url)
+{
+    return url.m_schemeEnd <= url.m_userStart
+        && url.m_userStart <= url.m_userEnd
+        && url.m_userEnd <= url.m_passwordEnd
+        && url.m_passwordEnd <= url.m_hostEnd
+        && url.m_hostEnd + url.m_portLength <= url.m_pathAfterLastSlash
+        && url.m_pathAfterLastSlash <= url.m_pathEnd
+        && url.m_pathEnd <= url.m_queryEnd
+        && url.m_queryEnd <= url.m_string.length();
+}
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWTFwtfURLParserhfromrev238769trunkSourceWebCoreplatformURLParserh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/URLParser.h (from rev 238769, trunk/Source/WebCore/platform/URLParser.h) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/URLParser.h                         (rev 0)
+++ trunk/Source/WTF/wtf/URLParser.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,136 @@
</span><ins>+/*
+ * Copyright (C) 2016-2018 Apple 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. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/Expected.h>
+#include <wtf/Forward.h>
+#include <wtf/URL.h>
+
+struct UIDNA;
+
+namespace WTF {
+
+template<typename CharacterType> class CodePointIterator;
+
+class URLParser {
+public:
+    WTF_EXPORT_PRIVATE static bool allValuesEqual(const URL&, const URL&);
+    WTF_EXPORT_PRIVATE static bool internalValuesConsistent(const URL&);
+    
+    using URLEncodedForm = Vector<WTF::KeyValuePair<String, String>>;
+    WTF_EXPORT_PRIVATE static URLEncodedForm parseURLEncodedForm(StringView);
+    WTF_EXPORT_PRIVATE static String serialize(const URLEncodedForm&);
+
+    WTF_EXPORT_PRIVATE static bool isSpecialScheme(const String& scheme);
+    WTF_EXPORT_PRIVATE static std::optional<String> maybeCanonicalizeScheme(const String& scheme);
+
+    static const UIDNA& internationalDomainNameTranscoder();
+    static bool isInUserInfoEncodeSet(UChar);
+
+private:
+    URLParser(const String&, const URL& = { }, const URLTextEncoding* = nullptr);
+    URL result() { return m_url; }
+
+    static std::optional<uint16_t> defaultPortForProtocol(StringView);
+    friend std::optional<uint16_t> defaultPortForProtocol(StringView);
+    friend class URL;
+
+    URL m_url;
+    Vector<LChar> m_asciiBuffer;
+    bool m_urlIsSpecial { false };
+    bool m_urlIsFile { false };
+    bool m_hostHasPercentOrNonASCII { false };
+    String m_inputString;
+    const void* m_inputBegin { nullptr };
+
+    bool m_didSeeSyntaxViolation { false };
+    static constexpr size_t defaultInlineBufferSize = 2048;
+    using LCharBuffer = Vector<LChar, defaultInlineBufferSize>;
+
+    template<typename CharacterType> void parse(const CharacterType*, const unsigned length, const URL&, const URLTextEncoding*);
+    template<typename CharacterType> void parseAuthority(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool parseHostAndPort(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool parsePort(CodePointIterator<CharacterType>&);
+
+    void failure();
+    enum class ReportSyntaxViolation { No, Yes };
+    template<typename CharacterType, ReportSyntaxViolation reportSyntaxViolation = ReportSyntaxViolation::Yes>
+    void advance(CodePointIterator<CharacterType>& iterator) { advance<CharacterType, reportSyntaxViolation>(iterator, iterator); }
+    template<typename CharacterType, ReportSyntaxViolation = ReportSyntaxViolation::Yes>
+    void advance(CodePointIterator<CharacterType>&, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition);
+    template<typename CharacterType> bool takesTwoAdvancesUntilEnd(CodePointIterator<CharacterType>);
+    template<typename CharacterType> void syntaxViolation(const CodePointIterator<CharacterType>&);
+    template<typename CharacterType> bool isPercentEncodedDot(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool isWindowsDriveLetter(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool isSingleDotPathSegment(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool isDoubleDotPathSegment(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool shouldCopyFileURL(CodePointIterator<CharacterType>);
+    template<typename CharacterType> bool checkLocalhostCodePoint(CodePointIterator<CharacterType>&, UChar32);
+    template<typename CharacterType> bool isAtLocalhost(CodePointIterator<CharacterType>);
+    bool isLocalhost(StringView);
+    template<typename CharacterType> void consumeSingleDotPathSegment(CodePointIterator<CharacterType>&);
+    template<typename CharacterType> void consumeDoubleDotPathSegment(CodePointIterator<CharacterType>&);
+    template<typename CharacterType> void appendWindowsDriveLetter(CodePointIterator<CharacterType>&);
+    template<typename CharacterType> size_t currentPosition(const CodePointIterator<CharacterType>&);
+    template<typename UnsignedIntegerType> void appendNumberToASCIIBuffer(UnsignedIntegerType);
+    template<bool(*isInCodeSet)(UChar32), typename CharacterType> void utf8PercentEncode(const CodePointIterator<CharacterType>&);
+    template<typename CharacterType> void utf8QueryEncode(const CodePointIterator<CharacterType>&);
+    template<typename CharacterType> std::optional<LCharBuffer> domainToASCII(StringImpl&, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition);
+    template<typename CharacterType> LCharBuffer percentDecode(const LChar*, size_t, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition);
+    static LCharBuffer percentDecode(const LChar*, size_t);
+    static std::optional<String> formURLDecode(StringView input);
+    static bool hasForbiddenHostCodePoint(const LCharBuffer&);
+    void percentEncodeByte(uint8_t);
+    void appendToASCIIBuffer(UChar32);
+    void appendToASCIIBuffer(const char*, size_t);
+    void appendToASCIIBuffer(const LChar* characters, size_t size) { appendToASCIIBuffer(reinterpret_cast<const char*>(characters), size); }
+    template<typename CharacterType> void encodeNonUTF8Query(const Vector<UChar>& source, const URLTextEncoding&, CodePointIterator<CharacterType>);
+    void copyASCIIStringUntil(const String&, size_t length);
+    bool copyBaseWindowsDriveLetter(const URL&);
+    StringView parsedDataView(size_t start, size_t length);
+    UChar parsedDataView(size_t position);
+
+    using IPv4Address = uint32_t;
+    void serializeIPv4(IPv4Address);
+    enum class IPv4ParsingError;
+    enum class IPv4PieceParsingError;
+    template<typename CharacterTypeForSyntaxViolation, typename CharacterType> Expected<IPv4Address, IPv4ParsingError> parseIPv4Host(const CodePointIterator<CharacterTypeForSyntaxViolation>&, CodePointIterator<CharacterType>);
+    template<typename CharacterType> Expected<uint32_t, URLParser::IPv4PieceParsingError> parseIPv4Piece(CodePointIterator<CharacterType>&, bool& syntaxViolation);
+    using IPv6Address = std::array<uint16_t, 8>;
+    template<typename CharacterType> std::optional<IPv6Address> parseIPv6Host(CodePointIterator<CharacterType>);
+    template<typename CharacterType> std::optional<uint32_t> parseIPv4PieceInsideIPv6(CodePointIterator<CharacterType>&);
+    template<typename CharacterType> std::optional<IPv4Address> parseIPv4AddressInsideIPv6(CodePointIterator<CharacterType>);
+    void serializeIPv6Piece(uint16_t piece);
+    void serializeIPv6(IPv6Address);
+
+    enum class URLPart;
+    template<typename CharacterType> void copyURLPartsUntil(const URL& base, URLPart, const CodePointIterator<CharacterType>&, const URLTextEncoding*&);
+    static size_t urlLengthUntilPart(const URL&, URLPart);
+    void popPath();
+    bool shouldPopPath(unsigned);
+};
+
+}
</ins></span></pre></div>
<a id="trunkSourceWTFwtfcfCFURLExtrascppfromrev238769trunkSourceWebCoreplatformcfCFURLExtrascpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/cf/CFURLExtras.cpp (from rev 238769, trunk/Source/WebCore/platform/cf/CFURLExtras.cpp) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/cf/CFURLExtras.cpp                          (rev 0)
+++ trunk/Source/WTF/wtf/cf/CFURLExtras.cpp     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple 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. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CFURLExtras.h"
+
+#include <wtf/URL.h>
+#include <wtf/text/CString.h>
+
+namespace WTF {
+
+RetainPtr<CFURLRef> createCFURLFromBuffer(const char* data, size_t size, CFURLRef baseURL)
+{
+    // NOTE: We use UTF-8 here since this encoding is used when computing strings when returning URL components
+    // (e.g calls to NSURL -path). However, this function is not tolerant of illegal UTF-8 sequences, which
+    // could either be a malformed string or bytes in a different encoding, like Shift-JIS, so we fall back
+    // onto using ISO Latin-1 in those cases.
+    RetainPtr<CFURLRef> result = adoptCF(CFURLCreateAbsoluteURLWithBytes(0, reinterpret_cast<const UInt8*>(data), size, kCFStringEncodingUTF8, baseURL, true));
+    if (!result)
+        result = adoptCF(CFURLCreateAbsoluteURLWithBytes(0, reinterpret_cast<const UInt8*>(data), size, kCFStringEncodingISOLatin1, baseURL, true));
+    return result;
+}
+
+void getURLBytes(CFURLRef url, URLCharBuffer& result)
+{
+    CFIndex bytesLength = CFURLGetBytes(url, 0, 0);
+    result.resize(bytesLength);
+    CFIndex finalLength = CFURLGetBytes(url, reinterpret_cast<UInt8*>(result.data()), bytesLength);
+    ASSERT_UNUSED(finalLength, finalLength == bytesLength);
+}
+
+void getURLBytes(CFURLRef url, CString& result)
+{
+    CFIndex bytesLength = CFURLGetBytes(url, 0, 0);
+    char* bytes;
+    result = CString::newUninitialized(bytesLength, bytes);
+    CFIndex finalLength = CFURLGetBytes(url, reinterpret_cast<UInt8*>(bytes), bytesLength);
+    ASSERT_UNUSED(finalLength, finalLength == bytesLength);
+}
+
+bool isCFURLSameOrigin(CFURLRef cfURL, const URL& url)
+{
+    ASSERT(url.protocolIsInHTTPFamily());
+
+    if (url.hasUsername() || url.hasPassword())
+        return protocolHostAndPortAreEqual(url, URL { cfURL });
+
+    URLCharBuffer bytes;
+    getURLBytes(cfURL, bytes);
+    StringView cfURLString { reinterpret_cast<const LChar*>(bytes.data()), static_cast<unsigned>(bytes.size()) };
+
+    if (!url.hasPath())
+        return StringView { url.string() } == cfURLString;
+
+    auto urlWithoutPath = StringView { url.string() }.substring(0, url.pathStart() + 1);
+    return cfURLString.startsWith(urlWithoutPath);
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWTFwtfcfCFURLExtrashfromrev238769trunkSourceWebCoreplatformcfCFURLExtrash"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/cf/CFURLExtras.h (from rev 238769, trunk/Source/WebCore/platform/cf/CFURLExtras.h) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/cf/CFURLExtras.h                            (rev 0)
+++ trunk/Source/WTF/wtf/cf/CFURLExtras.h       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple 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. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CFURLExtras_h
+#define CFURLExtras_h
+
+#include <wtf/Forward.h>
+#include <wtf/RetainPtr.h>
+#include <wtf/Vector.h>
+
+namespace WTF {
+
+class URL;
+typedef Vector<char, 512> URLCharBuffer;
+
+WTF_EXPORT_PRIVATE RetainPtr<CFURLRef> createCFURLFromBuffer(const char*, size_t, CFURLRef baseURL = 0);
+WTF_EXPORT_PRIVATE void getURLBytes(CFURLRef, URLCharBuffer&);
+WTF_EXPORT_PRIVATE void getURLBytes(CFURLRef, CString&);
+
+bool isCFURLSameOrigin(CFURLRef, const URL&);
+
+}
+
+#endif // CFURLExtras_h
</ins></span></pre></div>
<a id="trunkSourceWTFwtfcfURLCFcppfromrev238769trunkSourceWebCoreplatformcfURLCFcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/cf/URLCF.cpp (from rev 238769, trunk/Source/WebCore/platform/cf/URLCF.cpp) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/cf/URLCF.cpp                                (rev 0)
+++ trunk/Source/WTF/wtf/cf/URLCF.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+/*
+ * Copyright (C) 2004, 2008, 2013 Apple 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
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include "config.h"
+#include <wtf/URL.h>
+
+#include "CFURLExtras.h"
+#include "URLParser.h"
+#include <CoreFoundation/CFURL.h>
+#include <wtf/text/CString.h>
+
+namespace WTF {
+
+URL::URL(CFURLRef url)
+{
+    if (!url) {
+        invalidate();
+        return;
+    }
+
+    // FIXME: Why is it OK to ignore base URL here?
+    CString urlBytes;
+    getURLBytes(url, urlBytes);
+    URLParser parser(urlBytes.data());
+    *this = parser.result();
+}
+
+#if !USE(FOUNDATION)
+RetainPtr<CFURLRef> URL::createCFURL() const
+{
+    // FIXME: What should this return for invalid URLs?
+    // Currently it throws away the high bytes of the characters in the string in that case,
+    // which is clearly wrong.
+    URLCharBuffer buffer;
+    copyToBuffer(buffer);
+    auto cfURL = createCFURLFromBuffer(buffer.data(), buffer.size());
+
+    if (protocolIsInHTTPFamily() && !isCFURLSameOrigin(cfURL.get(), *this))
+        return nullptr;
+
+    return cfURL;
+}
+#endif
+
+String URL::fileSystemPath() const
+{
+    RetainPtr<CFURLRef> cfURL = createCFURL();
+    if (!cfURL)
+        return String();
+
+#if PLATFORM(WIN)
+    CFURLPathStyle pathStyle = kCFURLWindowsPathStyle;
+#else
+    CFURLPathStyle pathStyle = kCFURLPOSIXPathStyle;
+#endif
+    return adoptCF(CFURLCopyFileSystemPath(cfURL.get(), pathStyle)).get();
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWTFwtfcocoaNSURLExtrashfromrev238769trunkSourceWebCoreloaderarchiveArchiveResourceCollectionh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/cocoa/NSURLExtras.h (from rev 238769, trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/cocoa/NSURLExtras.h                         (rev 0)
+++ trunk/Source/WTF/wtf/cocoa/NSURLExtras.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2005, 2007, 2012, 2014 Apple, 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. 
+ * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+@class NSString;
+@class NSURL;
+
+namespace WTF {
+
+WTF_EXPORT_PRIVATE NSString *userVisibleString(NSURL *);
+WTF_EXPORT_PRIVATE NSURL *URLWithUserTypedString(NSString *, NSURL *baseURL); // Return value of nil means error.
+WTF_EXPORT_PRIVATE NSURL *URLByRemovingUserInfo(NSURL *);
+WTF_EXPORT_PRIVATE NSString *decodeHostName(NSString *); // Return value of nil means error.
+WTF_EXPORT_PRIVATE NSString *encodeHostName(NSString *); // Return value of nil means error.
+WTF_EXPORT_PRIVATE NSURL *URLByTruncatingOneCharacterBeforeComponent(NSURL *, CFURLComponentType);
+WTF_EXPORT_PRIVATE NSURL *URLWithData(NSData *, NSURL *baseURL);
+WTF_EXPORT_PRIVATE NSData *originalURLData(NSURL *);
+WTF_EXPORT_PRIVATE NSData *dataForURLComponentType(NSURL *, CFURLComponentType);
+WTF_EXPORT_PRIVATE NSURL *URLWithUserTypedStringDeprecated(NSString *, NSURL *baseURL);
+
+NSRange rangeOfURLScheme(NSString *);
+WTF_EXPORT_PRIVATE BOOL isUserVisibleURL(NSString *);
+WTF_EXPORT_PRIVATE BOOL looksLikeAbsoluteURL(NSString *);
+
+} // namespace WTF
</ins></span></pre></div>
<a id="trunkSourceWTFwtfcocoaNSURLExtrasmmfromrev238769trunkSourceWebCoreplatformmacWebCoreNSURLExtrasmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/cocoa/NSURLExtras.mm (from rev 238769, trunk/Source/WebCore/platform/mac/WebCoreNSURLExtras.mm) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/cocoa/NSURLExtras.mm                                (rev 0)
+++ trunk/Source/WTF/wtf/cocoa/NSURLExtras.mm   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,1236 @@
</span><ins>+/*
+ * Copyright (C) 2005, 2007, 2014 Apple 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. 
+ * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import <Foundation/Foundation.h>
+#import "NSURLExtras.h"
+
+#import "CFURLExtras.h"
+#import "URLParser.h"
+#import <wtf/Function.h>
+#import <wtf/HexNumber.h>
+#import <wtf/ObjCRuntimeExtras.h>
+#import <wtf/RetainPtr.h>
+#import <wtf/Vector.h>
+#import <unicode/uchar.h>
+#import <unicode/uidna.h>
+#import <unicode/uscript.h>
+
+// Needs to be big enough to hold an IDN-encoded name.
+// For host names bigger than this, we won't do IDN encoding, which is almost certainly OK.
+#define HOST_NAME_BUFFER_LENGTH 2048
+#define URL_BYTES_BUFFER_LENGTH 2048
+
+typedef void (* StringRangeApplierFunction)(NSString *, NSRange, RetainPtr<NSMutableArray>&);
+
+static uint32_t IDNScriptWhiteList[(USCRIPT_CODE_LIMIT + 31) / 32];
+
+namespace WTF {
+
+static bool isArmenianLookalikeCharacter(UChar32 codePoint)
+{
+    return codePoint == 0x0548 || codePoint == 0x054D || codePoint == 0x0578 || codePoint == 0x057D;
+}
+
+static bool isArmenianScriptCharacter(UChar32 codePoint)
+{
+    UErrorCode error = U_ZERO_ERROR;
+    UScriptCode script = uscript_getScript(codePoint, &error);
+    if (error != U_ZERO_ERROR) {
+        LOG_ERROR("got ICU error while trying to look at scripts: %d", error);
+        return false;
+    }
+
+    return script == USCRIPT_ARMENIAN;
+}
+
+
+template<typename CharacterType> inline bool isASCIIDigitOrValidHostCharacter(CharacterType charCode)
+{
+    if (!isASCIIDigitOrPunctuation(charCode))
+        return false;
+
+    // Things the URL Parser rejects:
+    switch (charCode) {
+    case '#':
+    case '%':
+    case '/':
+    case ':':
+    case '?':
+    case '@':
+    case '[':
+    case '\\':
+    case ']':
+        return false;
+    default:
+        return true;
+    }
+}
+
+
+
+static BOOL isLookalikeCharacter(std::optional<UChar32> previousCodePoint, UChar32 charCode)
+{
+    // This function treats the following as unsafe, lookalike characters:
+    // any non-printable character, any character considered as whitespace,
+    // any ignorable character, and emoji characters related to locks.
+    
+    // We also considered the characters in Mozilla's blacklist <http://kb.mozillazine.org/Network.IDN.blacklist_chars>.
+
+    // Some of the characters here will never appear once ICU has encoded.
+    // For example, ICU transforms most spaces into an ASCII space and most
+    // slashes into an ASCII solidus. But one of the two callers uses this
+    // on characters that have not been processed by ICU, so they are needed here.
+    
+    if (!u_isprint(charCode) || u_isUWhiteSpace(charCode) || u_hasBinaryProperty(charCode, UCHAR_DEFAULT_IGNORABLE_CODE_POINT))
+        return YES;
+    
+    switch (charCode) {
+        case 0x00BC: /* VULGAR FRACTION ONE QUARTER */
+        case 0x00BD: /* VULGAR FRACTION ONE HALF */
+        case 0x00BE: /* VULGAR FRACTION THREE QUARTERS */
+        case 0x00ED: /* LATIN SMALL LETTER I WITH ACUTE */
+        case 0x01C3: /* LATIN LETTER RETROFLEX CLICK */
+        case 0x0251: /* LATIN SMALL LETTER ALPHA */
+        case 0x0261: /* LATIN SMALL LETTER SCRIPT G */
+        case 0x02D0: /* MODIFIER LETTER TRIANGULAR COLON */
+        case 0x0335: /* COMBINING SHORT STROKE OVERLAY */
+        case 0x0337: /* COMBINING SHORT SOLIDUS OVERLAY */
+        case 0x0338: /* COMBINING LONG SOLIDUS OVERLAY */
+        case 0x0589: /* ARMENIAN FULL STOP */
+        case 0x05B4: /* HEBREW POINT HIRIQ */
+        case 0x05BC: /* HEBREW POINT DAGESH OR MAPIQ */
+        case 0x05C3: /* HEBREW PUNCTUATION SOF PASUQ */
+        case 0x05F4: /* HEBREW PUNCTUATION GERSHAYIM */
+        case 0x0609: /* ARABIC-INDIC PER MILLE SIGN */
+        case 0x060A: /* ARABIC-INDIC PER TEN THOUSAND SIGN */
+        case 0x0650: /* ARABIC KASRA */
+        case 0x0660: /* ARABIC INDIC DIGIT ZERO */
+        case 0x066A: /* ARABIC PERCENT SIGN */
+        case 0x06D4: /* ARABIC FULL STOP */
+        case 0x06F0: /* EXTENDED ARABIC INDIC DIGIT ZERO */
+        case 0x0701: /* SYRIAC SUPRALINEAR FULL STOP */
+        case 0x0702: /* SYRIAC SUBLINEAR FULL STOP */
+        case 0x0703: /* SYRIAC SUPRALINEAR COLON */
+        case 0x0704: /* SYRIAC SUBLINEAR COLON */
+        case 0x1735: /* PHILIPPINE SINGLE PUNCTUATION */
+        case 0x1D04: /* LATIN LETTER SMALL CAPITAL C */
+        case 0x1D0F: /* LATIN LETTER SMALL CAPITAL O */
+        case 0x1D1C: /* LATIN LETTER SMALL CAPITAL U */
+        case 0x1D20: /* LATIN LETTER SMALL CAPITAL V */
+        case 0x1D21: /* LATIN LETTER SMALL CAPITAL W */
+        case 0x1D22: /* LATIN LETTER SMALL CAPITAL Z */
+        case 0x1ECD: /* LATIN SMALL LETTER O WITH DOT BELOW */
+        case 0x2010: /* HYPHEN */
+        case 0x2011: /* NON-BREAKING HYPHEN */
+        case 0x2024: /* ONE DOT LEADER */
+        case 0x2027: /* HYPHENATION POINT */
+        case 0x2039: /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */
+        case 0x203A: /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */
+        case 0x2041: /* CARET INSERTION POINT */
+        case 0x2044: /* FRACTION SLASH */
+        case 0x2052: /* COMMERCIAL MINUS SIGN */
+        case 0x2153: /* VULGAR FRACTION ONE THIRD */
+        case 0x2154: /* VULGAR FRACTION TWO THIRDS */
+        case 0x2155: /* VULGAR FRACTION ONE FIFTH */
+        case 0x2156: /* VULGAR FRACTION TWO FIFTHS */
+        case 0x2157: /* VULGAR FRACTION THREE FIFTHS */
+        case 0x2158: /* VULGAR FRACTION FOUR FIFTHS */
+        case 0x2159: /* VULGAR FRACTION ONE SIXTH */
+        case 0x215A: /* VULGAR FRACTION FIVE SIXTHS */
+        case 0x215B: /* VULGAR FRACTION ONE EIGHT */
+        case 0x215C: /* VULGAR FRACTION THREE EIGHTHS */
+        case 0x215D: /* VULGAR FRACTION FIVE EIGHTHS */
+        case 0x215E: /* VULGAR FRACTION SEVEN EIGHTHS */
+        case 0x215F: /* FRACTION NUMERATOR ONE */
+        case 0x2212: /* MINUS SIGN */
+        case 0x2215: /* DIVISION SLASH */
+        case 0x2216: /* SET MINUS */
+        case 0x2236: /* RATIO */
+        case 0x233F: /* APL FUNCTIONAL SYMBOL SLASH BAR */
+        case 0x23AE: /* INTEGRAL EXTENSION */
+        case 0x244A: /* OCR DOUBLE BACKSLASH */
+        case 0x2571: /* DisplayType::Box DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT */
+        case 0x2572: /* DisplayType::Box DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT */
+        case 0x29F6: /* SOLIDUS WITH OVERBAR */
+        case 0x29F8: /* BIG SOLIDUS */
+        case 0x2AFB: /* TRIPLE SOLIDUS BINARY RELATION */
+        case 0x2AFD: /* DOUBLE SOLIDUS OPERATOR */
+        case 0x2FF0: /* IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT */
+        case 0x2FF1: /* IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW */
+        case 0x2FF2: /* IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT */
+        case 0x2FF3: /* IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW */
+        case 0x2FF4: /* IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND */
+        case 0x2FF5: /* IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE */
+        case 0x2FF6: /* IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW */
+        case 0x2FF7: /* IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT */
+        case 0x2FF8: /* IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT */
+        case 0x2FF9: /* IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT */
+        case 0x2FFA: /* IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT */
+        case 0x2FFB: /* IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID */
+        case 0x3002: /* IDEOGRAPHIC FULL STOP */
+        case 0x3008: /* LEFT ANGLE BRACKET */
+        case 0x3014: /* LEFT TORTOISE SHELL BRACKET */
+        case 0x3015: /* RIGHT TORTOISE SHELL BRACKET */
+        case 0x3033: /* VERTICAL KANA REPEAT MARK UPPER HALF */
+        case 0x3035: /* VERTICAL KANA REPEAT MARK LOWER HALF */
+        case 0x321D: /* PARENTHESIZED KOREAN CHARACTER OJEON */
+        case 0x321E: /* PARENTHESIZED KOREAN CHARACTER O HU */
+        case 0x33AE: /* SQUARE RAD OVER S */
+        case 0x33AF: /* SQUARE RAD OVER S SQUARED */
+        case 0x33C6: /* SQUARE C OVER KG */
+        case 0x33DF: /* SQUARE A OVER M */
+        case 0x05B9: /* HEBREW POINT HOLAM */
+        case 0x05BA: /* HEBREW POINT HOLAM HASER FOR VAV */
+        case 0x05C1: /* HEBREW POINT SHIN DOT */
+        case 0x05C2: /* HEBREW POINT SIN DOT */
+        case 0x05C4: /* HEBREW MARK UPPER DOT */
+        case 0xA731: /* LATIN LETTER SMALL CAPITAL S */
+        case 0xA771: /* LATIN SMALL LETTER DUM */
+        case 0xA789: /* MODIFIER LETTER COLON */
+        case 0xFE14: /* PRESENTATION FORM FOR VERTICAL SEMICOLON */
+        case 0xFE15: /* PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK */
+        case 0xFE3F: /* PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET */
+        case 0xFE5D: /* SMALL LEFT TORTOISE SHELL BRACKET */
+        case 0xFE5E: /* SMALL RIGHT TORTOISE SHELL BRACKET */
+        case 0xFF0E: /* FULLWIDTH FULL STOP */
+        case 0xFF0F: /* FULL WIDTH SOLIDUS */
+        case 0xFF61: /* HALFWIDTH IDEOGRAPHIC FULL STOP */
+        case 0xFFFC: /* OBJECT REPLACEMENT CHARACTER */
+        case 0xFFFD: /* REPLACEMENT CHARACTER */
+        case 0x1F50F: /* LOCK WITH INK PEN */
+        case 0x1F510: /* CLOSED LOCK WITH KEY */
+        case 0x1F511: /* KEY */
+        case 0x1F512: /* LOCK */
+        case 0x1F513: /* OPEN LOCK */
+            return YES;
+        case 0x0307: /* COMBINING DOT ABOVE */
+            return previousCodePoint == 0x0237 /* LATIN SMALL LETTER DOTLESS J */
+                || previousCodePoint == 0x0131 /* LATIN SMALL LETTER DOTLESS I */
+                || previousCodePoint == 0x05D5; /* HEBREW LETTER VAV */
+        case 0x0548: /* ARMENIAN CAPITAL LETTER VO */
+        case 0x054D: /* ARMENIAN CAPITAL LETTER SEH */
+        case 0x0578: /* ARMENIAN SMALL LETTER VO */
+        case 0x057D: /* ARMENIAN SMALL LETTER SEH */
+            return previousCodePoint
+                && !isASCIIDigitOrValidHostCharacter(previousCodePoint.value())
+                && !isArmenianScriptCharacter(previousCodePoint.value());
+        case '.':
+            return NO;
+        default:
+            return previousCodePoint
+                && isArmenianLookalikeCharacter(previousCodePoint.value())
+                && !(isArmenianScriptCharacter(charCode) || isASCIIDigitOrValidHostCharacter(charCode));
+    }
+}
+
+static void whiteListIDNScript(const char* scriptName)
+{
+    int32_t script = u_getPropertyValueEnum(UCHAR_SCRIPT, scriptName);
+    if (script >= 0 && script < USCRIPT_CODE_LIMIT) {
+        size_t index = script / 32;
+        uint32_t mask = 1 << (script % 32);
+        IDNScriptWhiteList[index] |= mask;
+    }
+}
+
+static BOOL readIDNScriptWhiteListFile(NSString *filename)
+{
+    if (!filename)
+        return NO;
+
+    FILE *file = fopen([filename fileSystemRepresentation], "r");
+    if (!file)
+        return NO;
+    
+    // Read a word at a time.
+    // Allow comments, starting with # character to the end of the line.
+    while (1) {
+        // Skip a comment if present.
+        if (fscanf(file, " #%*[^\n\r]%*[\n\r]") == EOF)
+            break;
+        
+        // Read a script name if present.
+        char word[33];
+        int result = fscanf(file, " %32[^# \t\n\r]%*[^# \t\n\r] ", word);
+        if (result == EOF)
+            break;
+        
+        if (result == 1) {
+            // Got a word, map to script code and put it into the array.
+            whiteListIDNScript(word);
+        }
+    }
+    fclose(file);
+    return YES;
+}
+
+static BOOL allCharactersInIDNScriptWhiteList(const UChar *buffer, int32_t length)
+{
+    static dispatch_once_t flag;
+    dispatch_once(&flag, ^{
+        // Read white list from library.
+        NSArray *dirs = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES);
+        int numDirs = [dirs count];
+        for (int i = 0; i < numDirs; i++) {
+            if (readIDNScriptWhiteListFile([[dirs objectAtIndex:i] stringByAppendingPathComponent:@"IDNScriptWhiteList.txt"]))
+                return;
+        }
+        const char* defaultIDNScriptWhiteList[20] = {
+            "Common",
+            "Inherited",
+            "Arabic",
+            "Armenian",
+            "Bopomofo",
+            "Canadian_Aboriginal",
+            "Devanagari",
+            "Deseret",
+            "Gujarati",
+            "Gurmukhi",
+            "Hangul",
+            "Han",
+            "Hebrew",
+            "Hiragana",
+            "Katakana_Or_Hiragana",
+            "Katakana",
+            "Latin",
+            "Tamil",
+            "Thai",
+            "Yi",
+        };
+        for (const char* scriptName : defaultIDNScriptWhiteList)
+            whiteListIDNScript(scriptName);
+    });
+    
+    int32_t i = 0;
+    std::optional<UChar32> previousCodePoint;
+    while (i < length) {
+        UChar32 c;
+        U16_NEXT(buffer, i, length, c)
+        UErrorCode error = U_ZERO_ERROR;
+        UScriptCode script = uscript_getScript(c, &error);
+        if (error != U_ZERO_ERROR) {
+            LOG_ERROR("got ICU error while trying to look at scripts: %d", error);
+            return NO;
+        }
+        if (script < 0) {
+            LOG_ERROR("got negative number for script code from ICU: %d", script);
+            return NO;
+        }
+        if (script >= USCRIPT_CODE_LIMIT)
+            return NO;
+
+        size_t index = script / 32;
+        uint32_t mask = 1 << (script % 32);
+        if (!(IDNScriptWhiteList[index] & mask))
+            return NO;
+        
+        if (isLookalikeCharacter(previousCodePoint, c))
+            return NO;
+        previousCodePoint = c;
+    }
+    return YES;
+}
+
+static bool isSecondLevelDomainNameAllowedByTLDRules(const UChar* buffer, int32_t length, const WTF::Function<bool(UChar)>& characterIsAllowed)
+{
+    ASSERT(length > 0);
+
+    for (int32_t i = length - 1; i >= 0; --i) {
+        UChar ch = buffer[i];
+        
+        if (characterIsAllowed(ch))
+            continue;
+        
+        // Only check the second level domain. Lower level registrars may have different rules.
+        if (ch == '.')
+            break;
+        
+        return false;
+    }
+    return true;
+}
+
+#define CHECK_RULES_IF_SUFFIX_MATCHES(suffix, function) \
+    { \
+        static const int32_t suffixLength = sizeof(suffix) / sizeof(suffix[0]); \
+        if (length > suffixLength && 0 == memcmp(buffer + length - suffixLength, suffix, sizeof(suffix))) \
+            return isSecondLevelDomainNameAllowedByTLDRules(buffer, length - suffixLength, function); \
+    }
+
+static bool isRussianDomainNameCharacter(UChar ch)
+{
+    // Only modern Russian letters, digits and dashes are allowed.
+    return (ch >= 0x0430 && ch <= 0x044f) || ch == 0x0451 || isASCIIDigit(ch) || ch == '-';
+}
+
+static BOOL allCharactersAllowedByTLDRules(const UChar* buffer, int32_t length)
+{
+    // Skip trailing dot for root domain.
+    if (buffer[length - 1] == '.')
+        length--;
+
+    // http://cctld.ru/files/pdf/docs/rules_ru-rf.pdf
+    static const UChar cyrillicRF[] = {
+        '.',
+        0x0440, // CYRILLIC SMALL LETTER ER
+        0x0444  // CYRILLIC SMALL LETTER EF
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicRF, isRussianDomainNameCharacter);
+
+    // http://rusnames.ru/rules.pl
+    static const UChar cyrillicRUS[] = {
+        '.',
+        0x0440, // CYRILLIC SMALL LETTER ER
+        0x0443, // CYRILLIC SMALL LETTER U
+        0x0441  // CYRILLIC SMALL LETTER ES
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicRUS, isRussianDomainNameCharacter);
+
+    // http://ru.faitid.org/projects/moscow/documents/moskva/idn
+    static const UChar cyrillicMOSKVA[] = {
+        '.',
+        0x043C, // CYRILLIC SMALL LETTER EM
+        0x043E, // CYRILLIC SMALL LETTER O
+        0x0441, // CYRILLIC SMALL LETTER ES
+        0x043A, // CYRILLIC SMALL LETTER KA
+        0x0432, // CYRILLIC SMALL LETTER VE
+        0x0430  // CYRILLIC SMALL LETTER A
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicMOSKVA, isRussianDomainNameCharacter);
+
+    // http://www.dotdeti.ru/foruser/docs/regrules.php
+    static const UChar cyrillicDETI[] = {
+        '.',
+        0x0434, // CYRILLIC SMALL LETTER DE
+        0x0435, // CYRILLIC SMALL LETTER IE
+        0x0442, // CYRILLIC SMALL LETTER TE
+        0x0438  // CYRILLIC SMALL LETTER I
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicDETI, isRussianDomainNameCharacter);
+
+    // http://corenic.org - rules not published. The word is Russian, so only allowing Russian at this time,
+    // although we may need to revise the checks if this ends up being used with other languages spoken in Russia.
+    static const UChar cyrillicONLAYN[] = {
+        '.',
+        0x043E, // CYRILLIC SMALL LETTER O
+        0x043D, // CYRILLIC SMALL LETTER EN
+        0x043B, // CYRILLIC SMALL LETTER EL
+        0x0430, // CYRILLIC SMALL LETTER A
+        0x0439, // CYRILLIC SMALL LETTER SHORT I
+        0x043D  // CYRILLIC SMALL LETTER EN
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicONLAYN, isRussianDomainNameCharacter);
+
+    // http://corenic.org - same as above.
+    static const UChar cyrillicSAYT[] = {
+        '.',
+        0x0441, // CYRILLIC SMALL LETTER ES
+        0x0430, // CYRILLIC SMALL LETTER A
+        0x0439, // CYRILLIC SMALL LETTER SHORT I
+        0x0442  // CYRILLIC SMALL LETTER TE
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicSAYT, isRussianDomainNameCharacter);
+
+    // http://pir.org/products/opr-domain/ - rules not published. According to the registry site,
+    // the intended audience is "Russian and other Slavic-speaking markets".
+    // Chrome appears to only allow Russian, so sticking with that for now.
+    static const UChar cyrillicORG[] = {
+        '.',
+        0x043E, // CYRILLIC SMALL LETTER O
+        0x0440, // CYRILLIC SMALL LETTER ER
+        0x0433  // CYRILLIC SMALL LETTER GHE
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicORG, isRussianDomainNameCharacter);
+
+    // http://cctld.by/rules.html
+    static const UChar cyrillicBEL[] = {
+        '.',
+        0x0431, // CYRILLIC SMALL LETTER BE
+        0x0435, // CYRILLIC SMALL LETTER IE
+        0x043B  // CYRILLIC SMALL LETTER EL
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicBEL, [](UChar ch) {
+        // Russian and Byelorussian letters, digits and dashes are allowed.
+        return (ch >= 0x0430 && ch <= 0x044f) || ch == 0x0451 || ch == 0x0456 || ch == 0x045E || ch == 0x2019 || isASCIIDigit(ch) || ch == '-';
+    });
+
+    // http://www.nic.kz/docs/poryadok_vnedreniya_kaz_ru.pdf
+    static const UChar cyrillicKAZ[] = {
+        '.',
+        0x049B, // CYRILLIC SMALL LETTER KA WITH DESCENDER
+        0x0430, // CYRILLIC SMALL LETTER A
+        0x0437  // CYRILLIC SMALL LETTER ZE
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicKAZ, [](UChar ch) {
+        // Kazakh letters, digits and dashes are allowed.
+        return (ch >= 0x0430 && ch <= 0x044f) || ch == 0x0451 || ch == 0x04D9 || ch == 0x0493 || ch == 0x049B || ch == 0x04A3 || ch == 0x04E9 || ch == 0x04B1 || ch == 0x04AF || ch == 0x04BB || ch == 0x0456 || isASCIIDigit(ch) || ch == '-';
+    });
+
+    // http://uanic.net/docs/documents-ukr/Rules%20of%20UKR_v4.0.pdf
+    static const UChar cyrillicUKR[] = {
+        '.',
+        0x0443, // CYRILLIC SMALL LETTER U
+        0x043A, // CYRILLIC SMALL LETTER KA
+        0x0440  // CYRILLIC SMALL LETTER ER
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicUKR, [](UChar ch) {
+        // Russian and Ukrainian letters, digits and dashes are allowed.
+        return (ch >= 0x0430 && ch <= 0x044f) || ch == 0x0451 || ch == 0x0491 || ch == 0x0404 || ch == 0x0456 || ch == 0x0457 || isASCIIDigit(ch) || ch == '-';
+    });
+
+    // http://www.rnids.rs/data/DOKUMENTI/idn-srb-policy-termsofuse-v1.4-eng.pdf
+    static const UChar cyrillicSRB[] = {
+        '.',
+        0x0441, // CYRILLIC SMALL LETTER ES
+        0x0440, // CYRILLIC SMALL LETTER ER
+        0x0431  // CYRILLIC SMALL LETTER BE
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicSRB, [](UChar ch) {
+        // Serbian letters, digits and dashes are allowed.
+        return (ch >= 0x0430 && ch <= 0x0438) || (ch >= 0x043A && ch <= 0x0448) || ch == 0x0452 || ch == 0x0458 || ch == 0x0459 || ch == 0x045A || ch == 0x045B || ch == 0x045F || isASCIIDigit(ch) || ch == '-';
+    });
+
+    // http://marnet.mk/doc/pravilnik-mk-mkd.pdf
+    static const UChar cyrillicMKD[] = {
+        '.',
+        0x043C, // CYRILLIC SMALL LETTER EM
+        0x043A, // CYRILLIC SMALL LETTER KA
+        0x0434  // CYRILLIC SMALL LETTER DE
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicMKD, [](UChar ch) {
+        // Macedonian letters, digits and dashes are allowed.
+        return (ch >= 0x0430 && ch <= 0x0438) || (ch >= 0x043A && ch <= 0x0448) || ch == 0x0453 || ch == 0x0455 || ch == 0x0458 || ch == 0x0459 || ch == 0x045A || ch == 0x045C || ch == 0x045F || isASCIIDigit(ch) || ch == '-';
+    });
+
+    // https://www.mon.mn/cs/
+    static const UChar cyrillicMON[] = {
+        '.',
+        0x043C, // CYRILLIC SMALL LETTER EM
+        0x043E, // CYRILLIC SMALL LETTER O
+        0x043D  // CYRILLIC SMALL LETTER EN
+    };
+    CHECK_RULES_IF_SUFFIX_MATCHES(cyrillicMON, [](UChar ch) {
+        // Mongolian letters, digits and dashes are allowed.
+        return (ch >= 0x0430 && ch <= 0x044f) || ch == 0x0451 || ch == 0x04E9 || ch == 0x04AF || isASCIIDigit(ch) || ch == '-';
+    });
+
+    // Not a known top level domain with special rules.
+    return NO;
+}
+
+// Return value of nil means no mapping is necessary.
+// If makeString is NO, then return value is either nil or self to indicate mapping is necessary.
+// If makeString is YES, then return value is either nil or the mapped string.
+static NSString *mapHostNameWithRange(NSString *string, NSRange range, BOOL encode, BOOL makeString, BOOL *error)
+{
+    if (range.length > HOST_NAME_BUFFER_LENGTH)
+        return nil;
+    
+    if (![string length])
+        return nil;
+    
+    UChar sourceBuffer[HOST_NAME_BUFFER_LENGTH];
+    UChar destinationBuffer[HOST_NAME_BUFFER_LENGTH];
+    
+    if (encode && [string rangeOfString:@"%" options:NSLiteralSearch range:range].location != NSNotFound) {
+        NSString *substring = [string substringWithRange:range];
+        substring = CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapes(nullptr, (CFStringRef)substring, CFSTR("")));
+        if (substring) {
+            string = substring;
+            range = NSMakeRange(0, [string length]);
+        }
+    }
+    
+    int length = range.length;
+    [string getCharacters:sourceBuffer range:range];
+    
+    UErrorCode uerror = U_ZERO_ERROR;
+    UIDNAInfo processingDetails = UIDNA_INFO_INITIALIZER;
+    int32_t numCharactersConverted = (encode ? uidna_nameToASCII : uidna_nameToUnicode)(&URLParser::internationalDomainNameTranscoder(), sourceBuffer, length, destinationBuffer, HOST_NAME_BUFFER_LENGTH, &processingDetails, &uerror);
+    if (length && (U_FAILURE(uerror) || processingDetails.errors)) {
+        *error = YES;
+        return nil;
+    }
+    
+    if (numCharactersConverted == length && !memcmp(sourceBuffer, destinationBuffer, length * sizeof(UChar)))
+        return nil;
+    
+    if (!encode && !allCharactersInIDNScriptWhiteList(destinationBuffer, numCharactersConverted) && !allCharactersAllowedByTLDRules(destinationBuffer, numCharactersConverted))
+        return nil;
+    
+    return makeString ? [NSString stringWithCharacters:destinationBuffer length:numCharactersConverted] : string;
+}
+
+static BOOL hostNameNeedsDecodingWithRange(NSString *string, NSRange range, BOOL *error)
+{
+    return mapHostNameWithRange(string, range, NO, NO, error) != nil;
+}

+static BOOL hostNameNeedsEncodingWithRange(NSString *string, NSRange range, BOOL *error)
+{
+    return mapHostNameWithRange(string, range, YES,  NO, error) != nil;
+}
+
+static NSString *decodeHostNameWithRange(NSString *string, NSRange range)
+{
+    BOOL error = NO;
+    NSString *host = mapHostNameWithRange(string, range, NO, YES, &error);
+    if (error)
+        return nil;
+    return !host ? string : host;
+}
+
+static NSString *encodeHostNameWithRange(NSString *string, NSRange range)
+{
+    BOOL error = NO;
+    NSString *host = mapHostNameWithRange(string, range, YES, YES, &error);
+    if (error)
+        return nil;
+    return !host ? string : host;
+}
+
+NSString *decodeHostName(NSString *string)
+{
+    BOOL error = NO;
+    NSString *host = mapHostNameWithRange(string, NSMakeRange(0, [string length]), NO, YES, &error);
+    if (error)
+        return nil;
+    return !host ? string : host;
+}
+
+NSString *encodeHostName(NSString *string)
+{
+    BOOL error = NO;
+    NSString *host = mapHostNameWithRange(string, NSMakeRange(0, [string length]), YES, YES, &error);
+    if (error)
+        return nil;
+    return !host ? string : host;
+}
+
+static void collectRangesThatNeedMapping(NSString *string, NSRange range, RetainPtr<NSMutableArray>& array, BOOL encode)
+{
+    // Generally, we want to optimize for the case where there is one host name that does not need mapping.
+    // Therefore, we use nil to indicate no mapping here and an empty array to indicate error.
+
+    BOOL error = NO;
+    BOOL needsMapping = encode ? hostNameNeedsEncodingWithRange(string, range, &error) : hostNameNeedsDecodingWithRange(string, range, &error);
+    if (!error && !needsMapping)
+        return;
+    
+    if (!array)
+        array = adoptNS([NSMutableArray new]);
+
+    if (!error)
+        [array addObject:[NSValue valueWithRange:range]];
+}
+
+static void collectRangesThatNeedEncoding(NSString *string, NSRange range, RetainPtr<NSMutableArray>& array)
+{
+    return collectRangesThatNeedMapping(string, range, array, YES);
+}
+
+static void collectRangesThatNeedDecoding(NSString *string, NSRange range, RetainPtr<NSMutableArray>& array)
+{
+    return collectRangesThatNeedMapping(string, range, array, NO);
+}
+
+static void applyHostNameFunctionToMailToURLString(NSString *string, StringRangeApplierFunction f, RetainPtr<NSMutableArray>& array)
+{
+    // In a mailto: URL, host names come after a '@' character and end with a '>' or ',' or '?' character.
+    // Skip quoted strings so that characters in them don't confuse us.
+    // When we find a '?' character, we are past the part of the URL that contains host names.
+    
+    static NeverDestroyed<RetainPtr<NSCharacterSet>> hostNameOrStringStartCharacters = [NSCharacterSet characterSetWithCharactersInString:@"\"@?"];
+    static NeverDestroyed<RetainPtr<NSCharacterSet>> hostNameEndCharacters = [NSCharacterSet characterSetWithCharactersInString:@">,?"];
+    static NeverDestroyed<RetainPtr<NSCharacterSet>> quotedStringCharacters = [NSCharacterSet characterSetWithCharactersInString:@"\"\\"];
+    
+    unsigned stringLength = [string length];
+    NSRange remaining = NSMakeRange(0, stringLength);
+    
+    while (1) {
+        // Find start of host name or of quoted string.
+        NSRange hostNameOrStringStart = [string rangeOfCharacterFromSet:hostNameOrStringStartCharacters.get().get() options:0 range:remaining];
+        if (hostNameOrStringStart.location == NSNotFound)
+            return;
+
+        unichar c = [string characterAtIndex:hostNameOrStringStart.location];
+        remaining.location = NSMaxRange(hostNameOrStringStart);
+        remaining.length = stringLength - remaining.location;
+        
+        if (c == '?')
+            return;
+        
+        if (c == '@') {
+            // Find end of host name.
+            unsigned hostNameStart = remaining.location;
+            NSRange hostNameEnd = [string rangeOfCharacterFromSet:hostNameEndCharacters.get().get() options:0 range:remaining];
+            BOOL done;
+            if (hostNameEnd.location == NSNotFound) {
+                hostNameEnd.location = stringLength;
+                done = YES;
+            } else {
+                remaining.location = hostNameEnd.location;
+                remaining.length = stringLength - remaining.location;
+                done = NO;
+            }
+            
+            // Process host name range.
+            f(string, NSMakeRange(hostNameStart, hostNameEnd.location - hostNameStart), array);
+            
+            if (done)
+                return;
+        } else {
+            // Skip quoted string.
+            ASSERT(c == '"');
+            while (1) {
+                NSRange escapedCharacterOrStringEnd = [string rangeOfCharacterFromSet:quotedStringCharacters.get().get() options:0 range:remaining];
+                if (escapedCharacterOrStringEnd.location == NSNotFound)
+                    return;
+
+                c = [string characterAtIndex:escapedCharacterOrStringEnd.location];
+                remaining.location = NSMaxRange(escapedCharacterOrStringEnd);
+                remaining.length = stringLength - remaining.location;
+                
+                // If we are the end of the string, then break from the string loop back to the host name loop.
+                if (c == '"')
+                    break;
+                
+                // Skip escaped character.
+                ASSERT(c == '\\');
+                if (!remaining.length)
+                    return;
+
+                remaining.location += 1;
+                remaining.length -= 1;
+            }
+        }
+    }
+}
+
+static void applyHostNameFunctionToURLString(NSString *string, StringRangeApplierFunction f, RetainPtr<NSMutableArray>& array)
+{
+    // Find hostnames. Too bad we can't use any real URL-parsing code to do this,
+    // but we have to do it before doing all the %-escaping, and this is the only
+    // code we have that parses mailto URLs anyway.
+    
+    // Maybe we should implement this using a character buffer instead?
+    
+    if (protocolIs(string, "mailto")) {
+        applyHostNameFunctionToMailToURLString(string, f, array);
+        return;
+    }
+    
+    // Find the host name in a hierarchical URL.
+    // It comes after a "://" sequence, with scheme characters preceding.
+    // If ends with the end of the string or a ":", "/", or a "?".
+    // If there is a "@" character, the host part is just the part after the "@".
+    NSRange separatorRange = [string rangeOfString:@"://"];
+    if (separatorRange.location == NSNotFound)
+        return;
+    
+    // Check that all characters before the :// are valid scheme characters.
+    static NeverDestroyed<RetainPtr<NSCharacterSet>> nonSchemeCharacters = [[NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-."] invertedSet];
+    if ([string rangeOfCharacterFromSet:nonSchemeCharacters.get().get() options:0 range:NSMakeRange(0, separatorRange.location)].location != NSNotFound)
+        return;
+    
+    unsigned stringLength = [string length];
+    
+    static NeverDestroyed<RetainPtr<NSCharacterSet>> hostTerminators = [NSCharacterSet characterSetWithCharactersInString:@":/?#"];
+    
+    // Start after the separator.
+    unsigned authorityStart = NSMaxRange(separatorRange);
+    
+    // Find terminating character.
+    NSRange hostNameTerminator = [string rangeOfCharacterFromSet:hostTerminators.get().get() options:0 range:NSMakeRange(authorityStart, stringLength - authorityStart)];
+    unsigned hostNameEnd = hostNameTerminator.location == NSNotFound ? stringLength : hostNameTerminator.location;
+    
+    // Find "@" for the start of the host name.
+    NSRange userInfoTerminator = [string rangeOfString:@"@" options:0 range:NSMakeRange(authorityStart, hostNameEnd - authorityStart)];
+    unsigned hostNameStart = userInfoTerminator.location == NSNotFound ? authorityStart : NSMaxRange(userInfoTerminator);
+    
+    return f(string, NSMakeRange(hostNameStart, hostNameEnd - hostNameStart), array);
+}
+
+static RetainPtr<NSString> mapHostNames(NSString *string, BOOL encode)
+{
+    // Generally, we want to optimize for the case where there is one host name that does not need mapping.
+    
+    if (encode && [string canBeConvertedToEncoding:NSASCIIStringEncoding])
+        return string;
+    
+    // Make a list of ranges that actually need mapping.
+    RetainPtr<NSMutableArray> hostNameRanges;
+    StringRangeApplierFunction f = encode ? collectRangesThatNeedEncoding : collectRangesThatNeedDecoding;
+    applyHostNameFunctionToURLString(string, f, hostNameRanges);
+    if (!hostNameRanges)
+        return string;
+
+    if (![hostNameRanges count])
+        return nil;
+    
+    // Do the mapping.
+    auto mutableCopy = adoptNS([string mutableCopy]);
+    unsigned i = [hostNameRanges count];
+    while (i--) {
+        NSRange hostNameRange = [[hostNameRanges objectAtIndex:i] rangeValue];
+        NSString *mappedHostName = encode ? encodeHostNameWithRange(string, hostNameRange) : decodeHostNameWithRange(string, hostNameRange);
+        [mutableCopy replaceCharactersInRange:hostNameRange withString:mappedHostName];
+    }
+    return mutableCopy;
+}
+
+static RetainPtr<NSString> stringByTrimmingWhitespace(NSString *string)
+{
+    auto trimmed = adoptNS([string mutableCopy]);
+    CFStringTrimWhitespace((__bridge CFMutableStringRef)trimmed.get());
+    return trimmed;
+}
+
+NSURL *URLByTruncatingOneCharacterBeforeComponent(NSURL *URL, CFURLComponentType component)
+{
+    if (!URL)
+        return nil;
+    
+    CFRange fragRg = CFURLGetByteRangeForComponent((__bridge CFURLRef)URL, component, nullptr);
+    if (fragRg.location == kCFNotFound)
+        return URL;
+
+    Vector<UInt8, URL_BYTES_BUFFER_LENGTH> urlBytes(URL_BYTES_BUFFER_LENGTH);
+    CFIndex numBytes = CFURLGetBytes((__bridge CFURLRef)URL, urlBytes.data(), urlBytes.size());
+    if (numBytes == -1) {
+        numBytes = CFURLGetBytes((__bridge CFURLRef)URL, nullptr, 0);
+        urlBytes.grow(numBytes);
+        CFURLGetBytes((__bridge CFURLRef)URL, urlBytes.data(), numBytes);
+    }
+
+    CFURLRef result = CFURLCreateWithBytes(nullptr, urlBytes.data(), fragRg.location - 1, kCFStringEncodingUTF8, nullptr);
+    if (!result)
+        result = CFURLCreateWithBytes(nullptr, urlBytes.data(), fragRg.location - 1, kCFStringEncodingISOLatin1, nullptr);
+        
+    return result ? CFBridgingRelease(result) : URL;
+}
+
+static NSURL *URLByRemovingResourceSpecifier(NSURL *URL)
+{
+    return URLByTruncatingOneCharacterBeforeComponent(URL, kCFURLComponentResourceSpecifier);
+}
+
+NSURL *URLWithData(NSData *data, NSURL *baseURL)
+{
+    if (!data)
+        return nil;
+    
+    NSURL *result = nil;
+    size_t length = [data length];
+    if (length > 0) {
+        // work around <rdar://4470771>: CFURLCreateAbsoluteURLWithBytes(.., TRUE) doesn't remove non-path components.
+        baseURL = URLByRemovingResourceSpecifier(baseURL);
+        
+        const UInt8 *bytes = static_cast<const UInt8*>([data bytes]);
+        
+        // CFURLCreateAbsoluteURLWithBytes would complain to console if we passed a path to it.
+        if (bytes[0] == '/' && !baseURL)
+            return nil;
+        
+        // NOTE: We use UTF-8 here since this encoding is used when computing strings when returning URL components
+        // (e.g calls to NSURL -path). However, this function is not tolerant of illegal UTF-8 sequences, which
+        // could either be a malformed string or bytes in a different encoding, like shift-jis, so we fall back
+        // onto using ISO Latin 1 in those cases.
+        result = CFBridgingRelease(CFURLCreateAbsoluteURLWithBytes(nullptr, bytes, length, kCFStringEncodingUTF8, (__bridge CFURLRef)baseURL, YES));
+        if (!result)
+            result = CFBridgingRelease(CFURLCreateAbsoluteURLWithBytes(nullptr, bytes, length, kCFStringEncodingISOLatin1, (__bridge CFURLRef)baseURL, YES));
+    } else
+        result = [NSURL URLWithString:@""];
+
+    return result;
+}
+static NSData *dataWithUserTypedString(NSString *string)
+{
+    NSData *userTypedData = [string dataUsingEncoding:NSUTF8StringEncoding];
+    ASSERT(userTypedData);
+    
+    const UInt8* inBytes = static_cast<const UInt8 *>([userTypedData bytes]);
+    int inLength = [userTypedData length];
+    if (!inLength)
+        return nil;
+    
+    char* outBytes = static_cast<char *>(malloc(inLength * 3)); // large enough to %-escape every character
+    char* p = outBytes;
+    int outLength = 0;
+    for (int i = 0; i < inLength; i++) {
+        UInt8 c = inBytes[i];
+        if (c <= 0x20 || c >= 0x7f) {
+            *p++ = '%';
+            *p++ = upperNibbleToASCIIHexDigit(c);
+            *p++ = lowerNibbleToASCIIHexDigit(c);
+            outLength += 3;
+        } else {
+            *p++ = c;
+            outLength++;
+        }
+    }
+    
+    return [NSData dataWithBytesNoCopy:outBytes length:outLength]; // adopts outBytes
+}
+
+NSURL *URLWithUserTypedString(NSString *string, NSURL *nsURL)
+{
+    if (!string)
+        return nil;
+
+    auto mappedString = mapHostNames(stringByTrimmingWhitespace(string).get(), YES);
+    if (!mappedString)
+        return nil;
+
+    // Let's check whether the URL is bogus.
+    URL url { URL { nsURL }, mappedString.get() };
+    if (!url.createCFURL())
+        return nil;
+
+    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=186057
+    // We should be able to use url.createCFURL instead of using directly CFURL parsing routines.
+    NSData *data = dataWithUserTypedString(mappedString.get());
+    if (!data)
+        return [NSURL URLWithString:@""];
+
+    return URLWithData(data, nsURL);
+}
+
+NSURL *URLWithUserTypedStringDeprecated(NSString *string, NSURL *URL)
+{
+    if (!string)
+        return nil;
+
+    NSURL *result = URLWithUserTypedString(string, URL);
+    if (!result) {
+        NSData *resultData = dataWithUserTypedString(string);
+        if (!resultData)
+            return [NSURL URLWithString:@""];
+        result = URLWithData(resultData, URL);
+    }
+
+    return result;
+}
+
+static BOOL hasQuestionMarkOnlyQueryString(NSURL *URL)
+{
+    CFRange rangeWithSeparators;
+    CFURLGetByteRangeForComponent((__bridge CFURLRef)URL, kCFURLComponentQuery, &rangeWithSeparators);
+    if (rangeWithSeparators.location != kCFNotFound && rangeWithSeparators.length == 1)
+        return YES;
+
+    return NO;
+}
+
+NSData *dataForURLComponentType(NSURL *URL, CFURLComponentType componentType)
+{
+    Vector<UInt8, URL_BYTES_BUFFER_LENGTH> allBytesBuffer(URL_BYTES_BUFFER_LENGTH);
+    CFIndex bytesFilled = CFURLGetBytes((__bridge CFURLRef)URL, allBytesBuffer.data(), allBytesBuffer.size());
+    if (bytesFilled == -1) {
+        CFIndex bytesToAllocate = CFURLGetBytes((__bridge CFURLRef)URL, nullptr, 0);
+        allBytesBuffer.grow(bytesToAllocate);
+        bytesFilled = CFURLGetBytes((__bridge CFURLRef)URL, allBytesBuffer.data(), bytesToAllocate);
+    }
+    
+    const CFURLComponentType completeURL = (CFURLComponentType)-1;
+    CFRange range;
+    if (componentType != completeURL) {
+        range = CFURLGetByteRangeForComponent((__bridge CFURLRef)URL, componentType, nullptr);
+        if (range.location == kCFNotFound)
+            return nil;
+    } else {
+        range.location = 0;
+        range.length = bytesFilled;
+    }
+    
+    NSData *componentData = [NSData dataWithBytes:allBytesBuffer.data() + range.location length:range.length]; 
+    
+    const unsigned char *bytes = static_cast<const unsigned char *>([componentData bytes]);
+    NSMutableData *resultData = [NSMutableData data];
+    // NOTE: add leading '?' to query strings non-zero length query strings.
+    // NOTE: retain question-mark only query strings.
+    if (componentType == kCFURLComponentQuery) {
+        if (range.length > 0 || hasQuestionMarkOnlyQueryString(URL))
+            [resultData appendBytes:"?" length:1];    
+    }
+    for (int i = 0; i < range.length; i++) {
+        unsigned char c = bytes[i];
+        if (c <= 0x20 || c >= 0x7f) {
+            char escaped[3];
+            escaped[0] = '%';
+            escaped[1] = upperNibbleToASCIIHexDigit(c);
+            escaped[2] = lowerNibbleToASCIIHexDigit(c);
+            [resultData appendBytes:escaped length:3];    
+        } else {
+            char b[1];
+            b[0] = c;
+            [resultData appendBytes:b length:1];    
+        }               
+    }
+    
+    return resultData;
+}
+
+static NSURL *URLByRemovingComponentAndSubsequentCharacter(NSURL *URL, CFURLComponentType component)
+{
+    CFRange range = CFURLGetByteRangeForComponent((__bridge CFURLRef)URL, component, 0);
+    if (range.location == kCFNotFound)
+        return URL;
+    
+    // Remove one subsequent character.
+    range.length++;
+
+    Vector<UInt8, URL_BYTES_BUFFER_LENGTH> buffer(URL_BYTES_BUFFER_LENGTH);
+    CFIndex numBytes = CFURLGetBytes((__bridge CFURLRef)URL, buffer.data(), buffer.size());
+    if (numBytes == -1) {
+        numBytes = CFURLGetBytes((__bridge CFURLRef)URL, nullptr, 0);
+        buffer.grow(numBytes);
+        CFURLGetBytes((__bridge CFURLRef)URL, buffer.data(), numBytes);
+    }
+    UInt8* urlBytes = buffer.data();
+        
+    if (numBytes < range.location)
+        return URL;
+    if (numBytes < range.location + range.length)
+        range.length = numBytes - range.location;
+        
+    memmove(urlBytes + range.location, urlBytes + range.location + range.length, numBytes - range.location + range.length);
+    
+    CFURLRef result = CFURLCreateWithBytes(nullptr, urlBytes, numBytes - range.length, kCFStringEncodingUTF8, nullptr);
+    if (!result)
+        result = CFURLCreateWithBytes(nullptr, urlBytes, numBytes - range.length, kCFStringEncodingISOLatin1, nullptr);
+                
+    return result ? CFBridgingRelease(result) : URL;
+}
+
+NSURL *URLByRemovingUserInfo(NSURL *URL)
+{
+    return URLByRemovingComponentAndSubsequentCharacter(URL, kCFURLComponentUserInfo);
+}
+
+NSData *originalURLData(NSURL *URL)
+{
+    UInt8 *buffer = (UInt8 *)malloc(URL_BYTES_BUFFER_LENGTH);
+    CFIndex bytesFilled = CFURLGetBytes((__bridge CFURLRef)URL, buffer, URL_BYTES_BUFFER_LENGTH);
+    if (bytesFilled == -1) {
+        CFIndex bytesToAllocate = CFURLGetBytes((__bridge CFURLRef)URL, nullptr, 0);
+        buffer = (UInt8 *)realloc(buffer, bytesToAllocate);
+        bytesFilled = CFURLGetBytes((__bridge CFURLRef)URL, buffer, bytesToAllocate);
+        ASSERT(bytesFilled == bytesToAllocate);
+    }
+    
+    // buffer is adopted by the NSData
+    NSData *data = [NSData dataWithBytesNoCopy:buffer length:bytesFilled freeWhenDone:YES];
+    
+    NSURL *baseURL = (__bridge NSURL *)CFURLGetBaseURL((__bridge CFURLRef)URL);
+    if (baseURL)
+        return originalURLData(URLWithData(data, baseURL));
+    return data;
+}
+
+static CFStringRef createStringWithEscapedUnsafeCharacters(CFStringRef string)
+{
+    CFIndex length = CFStringGetLength(string);
+    Vector<UChar, URL_BYTES_BUFFER_LENGTH> sourceBuffer(length);
+    CFStringGetCharacters(string, CFRangeMake(0, length), sourceBuffer.data());
+    
+    Vector<UChar, URL_BYTES_BUFFER_LENGTH> outBuffer;
+    
+    std::optional<UChar32> previousCodePoint;
+    CFIndex i = 0;
+    while (i < length) {
+        UChar32 c;
+        U16_NEXT(sourceBuffer, i, length, c)
+        
+        if (isLookalikeCharacter(previousCodePoint, c)) {
+            uint8_t utf8Buffer[4];
+            CFIndex offset = 0;
+            UBool failure = false;
+            U8_APPEND(utf8Buffer, offset, 4, c, failure)
+            ASSERT(!failure);
+            
+            for (CFIndex j = 0; j < offset; ++j) {
+                outBuffer.append('%');
+                outBuffer.append(upperNibbleToASCIIHexDigit(utf8Buffer[j]));
+                outBuffer.append(lowerNibbleToASCIIHexDigit(utf8Buffer[j]));
+            }
+        } else {
+            UChar utf16Buffer[2];
+            CFIndex offset = 0;
+            UBool failure = false;
+            U16_APPEND(utf16Buffer, offset, 2, c, failure)
+            ASSERT(!failure);
+            for (CFIndex j = 0; j < offset; ++j)
+                outBuffer.append(utf16Buffer[j]);
+        }
+        previousCodePoint = c;
+    }
+    
+    return CFStringCreateWithCharacters(nullptr, outBuffer.data(), outBuffer.size());
+}
+
+NSString *userVisibleString(NSURL *URL)
+{
+    NSData *data = originalURLData(URL);
+    const unsigned char *before = static_cast<const unsigned char*>([data bytes]);
+    int length = [data length];
+    
+    bool mayNeedHostNameDecoding = false;
+    
+    const unsigned char *p = before;
+    int bufferLength = (length * 3) + 1;
+    Vector<char, URL_BYTES_BUFFER_LENGTH> after(bufferLength); // large enough to %-escape every character
+    char *q = after.data();
+    for (int i = 0; i < length; i++) {
+        unsigned char c = p[i];
+        // unescape escape sequences that indicate bytes greater than 0x7f
+        if (c == '%' && (i + 1 < length && isASCIIHexDigit(p[i + 1])) && i + 2 < length && isASCIIHexDigit(p[i + 2])) {
+            auto u = toASCIIHexValue(p[i + 1], p[i + 2]);
+            if (u > 0x7f) {
+                // unescape
+                *q++ = u;
+            } else {
+                // do not unescape
+                *q++ = p[i];
+                *q++ = p[i + 1];
+                *q++ = p[i + 2];
+            }
+            i += 2;
+        } else {
+            *q++ = c;
+            
+            // Check for "xn--" in an efficient, non-case-sensitive, way.
+            if (c == '-' && i >= 3 && !mayNeedHostNameDecoding && (q[-4] | 0x20) == 'x' && (q[-3] | 0x20) == 'n' && q[-2] == '-')
+                mayNeedHostNameDecoding = true;
+        }
+    }
+    *q = '\0';
+    
+    // Check string to see if it can be converted to display using UTF-8  
+    RetainPtr<NSString> result = [NSString stringWithUTF8String:after.data()];
+    if (!result) {
+        // Could not convert to UTF-8.
+        // Convert characters greater than 0x7f to escape sequences.
+        // Shift current string to the end of the buffer
+        // then we will copy back bytes to the start of the buffer 
+        // as we convert.
+        int afterlength = q - after.data();
+        char *p = after.data() + bufferLength - afterlength - 1;
+        memmove(p, after.data(), afterlength + 1); // copies trailing '\0'
+        char *q = after.data();
+        while (*p) {
+            unsigned char c = *p;
+            if (c > 0x7f) {
+                *q++ = '%';
+                *q++ = upperNibbleToASCIIHexDigit(c);
+                *q++ = lowerNibbleToASCIIHexDigit(c);
+            } else
+                *q++ = *p;
+            p++;
+        }
+        *q = '\0';
+        result = [NSString stringWithUTF8String:after.data()];
+    }
+    
+    if (mayNeedHostNameDecoding) {
+        // FIXME: Is it good to ignore the failure of mapHostNames and keep result intact?
+        auto mappedResult = mapHostNames(result.get(), NO);
+        if (mappedResult)
+            result = mappedResult;
+    }
+
+    result = [result precomposedStringWithCanonicalMapping];
+    return CFBridgingRelease(createStringWithEscapedUnsafeCharacters((__bridge CFStringRef)result.get()));
+}
+
+BOOL isUserVisibleURL(NSString *string)
+{
+    BOOL valid = YES;
+    // get buffer
+    
+    char static_buffer[1024];
+    const char *p;
+    BOOL success = CFStringGetCString((__bridge CFStringRef)string, static_buffer, 1023, kCFStringEncodingUTF8);
+    p = success ? static_buffer : [string UTF8String];
+    
+    int length = strlen(p);
+    
+    // check for characters <= 0x20 or >=0x7f, %-escape sequences of %7f, and xn--, these
+    // are the things that will lead _web_userVisibleString to actually change things.
+    for (int i = 0; i < length; i++) {
+        unsigned char c = p[i];
+        // escape control characters, space, and delete
+        if (c <= 0x20 || c == 0x7f) {
+            valid = NO;
+            break;
+        } else if (c == '%' && (i + 1 < length && isASCIIHexDigit(p[i + 1])) && i + 2 < length && isASCIIHexDigit(p[i + 2])) {
+            auto u = toASCIIHexValue(p[i + 1], p[i + 2]);
+            if (u > 0x7f) {
+                valid = NO;
+                break;
+            }
+            i += 2;
+        } else {
+            // Check for "xn--" in an efficient, non-case-sensitive, way.
+            if (c == '-' && i >= 3 && (p[i - 3] | 0x20) == 'x' && (p[i - 2] | 0x20) == 'n' && p[i - 1] == '-') {
+                valid = NO;
+                break;
+            }
+        }
+    }
+    
+    return valid;
+}
+
+NSRange rangeOfURLScheme(NSString *string)
+{
+    NSRange colon = [string rangeOfString:@":"];
+    if (colon.location != NSNotFound && colon.location > 0) {
+        NSRange scheme = {0, colon.location};
+        /*
+         This stuff is very expensive.  10-15 msec on a 2x1.2GHz.  If not cached it swamps
+         everything else when adding items to the autocomplete DB.  Makes me wonder if we
+         even need to enforce the character set here.
+         */
+        NSString *acceptableCharacters = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+.-";
+        static NeverDestroyed<RetainPtr<NSCharacterSet>> InverseSchemeCharacterSet([[NSCharacterSet characterSetWithCharactersInString:acceptableCharacters] invertedSet]);
+        NSRange illegals = [string rangeOfCharacterFromSet:InverseSchemeCharacterSet.get().get() options:0 range:scheme];
+        if (illegals.location == NSNotFound)
+            return scheme;
+    }
+    return NSMakeRange(NSNotFound, 0);
+}
+
+BOOL looksLikeAbsoluteURL(NSString *string)
+{
+    // Trim whitespace because _web_URLWithString allows whitespace.
+    return rangeOfURLScheme(stringByTrimmingWhitespace(string).get()).location != NSNotFound;
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWTFwtfcocoaURLCocoammfromrev238769trunkSourceWebCoreplatformmacURLMacmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/cocoa/URLCocoa.mm (from rev 238769, trunk/Source/WebCore/platform/mac/URLMac.mm) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/cocoa/URLCocoa.mm                           (rev 0)
+++ trunk/Source/WTF/wtf/cocoa/URLCocoa.mm      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,95 @@
</span><ins>+/*
+ * Copyright (C) 2004, 2008 Apple 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
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import "config.h"
+#import <wtf/URL.h>
+
+#import "CFURLExtras.h"
+#import "NSURLExtras.h"
+#import <wtf/ObjCRuntimeExtras.h>
+#import <wtf/URLParser.h>
+#import <wtf/text/CString.h>
+
+@interface NSString (WTFNSURLExtras)
+- (BOOL)_web_looksLikeIPAddress;
+@end
+
+namespace WTF {
+
+URL::URL(NSURL *url)
+{
+    if (!url) {
+        invalidate();
+        return;
+    }
+
+    // FIXME: Why is it OK to ignore base URL here?
+    CString urlBytes;
+    WTF::getURLBytes((__bridge CFURLRef)url, urlBytes);
+    URLParser parser(urlBytes.data());
+    *this = parser.result();
+}
+
+URL::operator NSURL *() const
+{
+    // Creating a toll-free bridged CFURL because creation with NSURL methods would not preserve the original string.
+    // We'll need fidelity when round-tripping via CFURLGetBytes().
+    return createCFURL().bridgingAutorelease();
+}
+
+RetainPtr<CFURLRef> URL::createCFURL() const
+{
+    if (isNull())
+        return nullptr;
+
+    if (isEmpty()) {
+        // We use the toll-free bridge between NSURL and CFURL to create a CFURLRef supporting both empty and null values.
+        return (__bridge CFURLRef)adoptNS([[NSURL alloc] initWithString:@""]).get();
+    }
+
+    RetainPtr<CFURLRef> cfURL;
+
+    // Fast path if the input data is 8-bit to avoid copying into a temporary buffer.
+    if (LIKELY(m_string.is8Bit()))
+        cfURL = WTF::createCFURLFromBuffer(reinterpret_cast<const char*>(m_string.characters8()), m_string.length());
+    else {
+        // Slower path.
+        WTF::URLCharBuffer buffer;
+        copyToBuffer(buffer);
+        cfURL = WTF::createCFURLFromBuffer(buffer.data(), buffer.size());
+    }
+
+    if (protocolIsInHTTPFamily() && !WTF::isCFURLSameOrigin(cfURL.get(), *this))
+        return nullptr;
+
+    return cfURL;
+}
+
+bool URL::hostIsIPAddress(StringView host)
+{
+    return [host.createNSStringWithoutCopying().get() _web_looksLikeIPAddress];
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWTFwtfglibGUniquePtrSouphfromrev238769trunkSourceWebCoreplatformnetworksoupGUniquePtrSouph"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/glib/GUniquePtrSoup.h (from rev 238769, trunk/Source/WebCore/platform/network/soup/GUniquePtrSoup.h) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/glib/GUniquePtrSoup.h                               (rev 0)
+++ trunk/Source/WTF/wtf/glib/GUniquePtrSoup.h  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+/*
+ *  Copyright (C) 2014 Igalia S.L
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public License
+ *  along with this library; see the file COPYING.LIB.  If not, write to
+ *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+ */
+
+#pragma once
+
+#include <wtf/Platform.h>
+
+#if USE(SOUP)
+
+#include <libsoup/soup.h>
+#include <wtf/glib/GUniquePtr.h>
+
+namespace WTF {
+
+WTF_DEFINE_GPTR_DELETER(SoupURI, soup_uri_free)
+WTF_DEFINE_GPTR_DELETER(SoupCookie, soup_cookie_free)
+WTF_DEFINE_GPTR_DELETER(SoupMessageHeaders, soup_message_headers_free)
+WTF_DEFINE_GPTR_DELETER(SoupBuffer, soup_buffer_free)
+
+} // namespace WTF
+
+#endif // USE(SOUP)
</ins></span></pre></div>
<a id="trunkSourceWTFwtfglibURLSoupcppfromrev238769trunkSourceWebCoreplatformsoupURLSoupcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/glib/URLSoup.cpp (from rev 238769, trunk/Source/WebCore/platform/soup/URLSoup.cpp) (0 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/glib/URLSoup.cpp                            (rev 0)
+++ trunk/Source/WTF/wtf/glib/URLSoup.cpp       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if USE(SOUP)
+
+#include <libsoup/soup.h>
+#include <wtf/URL.h>
+#include <wtf/URLParser.h>
+#include <wtf/text/CString.h>
+
+namespace WTF {
+
+URL::URL(SoupURI* soupURI)
+{
+    if (!soupURI) {
+        invalidate();
+        return;
+    }
+
+    GUniquePtr<gchar> urlString(soup_uri_to_string(soupURI, FALSE));
+    URLParser parser(String::fromUTF8(urlString.get()));
+    *this = parser.result();
+
+    if (!isValid())
+        return;
+
+    // Motivated by https://bugs.webkit.org/show_bug.cgi?id=38956. libsoup
+    // does not add the password to the URL when calling
+    // soup_uri_to_string, and thus the requests are not properly
+    // built. Fixing soup_uri_to_string is a no-no as the maintainer does
+    // not want to break compatibility with previous implementations
+    if (soupURI->password)
+        setPass(String::fromUTF8(soupURI->password));
+}
+
+GUniquePtr<SoupURI> URL::createSoupURI() const
+{
+    if (!isValid())
+        return nullptr;
+
+    return GUniquePtr<SoupURI>(soup_uri_new(string().utf8().data()));
+}
+
+bool URL::hostIsIPAddress(StringView host)
+{
+    return !host.isEmpty() && g_hostname_is_ip_address(host.utf8().data());
+}
+
+} // namespace WTF
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/ChangeLog      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -1,3 +1,557 @@
</span><ins>+2018-11-30  Alex Christensen  <achristensen@webkit.org>
+
+        Move URL from WebCore to WTF
+        https://bugs.webkit.org/show_bug.cgi?id=190234
+
+        Reviewed by Keith Miller.
+
+        A URL is a low-level concept that does not depend on other classes in WebCore.
+        We are starting to use URLs in JavaScriptCore for modules.
+        I need URL and URLParser in a place with fewer dependencies for rdar://problem/44119696
+
+        * Modules/applepay/ApplePaySession.h:
+        * Modules/applepay/ApplePayValidateMerchantEvent.h:
+        * Modules/applepay/PaymentCoordinator.cpp:
+        * Modules/applepay/PaymentCoordinator.h:
+        * Modules/applepay/PaymentCoordinatorClient.h:
+        * Modules/applepay/PaymentSession.h:
+        * Modules/applicationmanifest/ApplicationManifest.h:
+        * Modules/beacon/NavigatorBeacon.cpp:
+        * Modules/cache/DOMCache.cpp:
+        * Modules/fetch/FetchLoader.h:
+        * Modules/mediasession/MediaSessionMetadata.h:
+        * Modules/mediasource/MediaSourceRegistry.cpp:
+        * Modules/mediasource/MediaSourceRegistry.h:
+        * Modules/mediastream/MediaStream.cpp:
+        * Modules/mediastream/MediaStreamRegistry.cpp:
+        * Modules/mediastream/MediaStreamRegistry.h:
+        * Modules/navigatorcontentutils/NavigatorContentUtilsClient.h:
+        * Modules/notifications/Notification.h:
+        * Modules/paymentrequest/MerchantValidationEvent.h:
+        * Modules/paymentrequest/PaymentRequest.h:
+        * Modules/plugins/PluginReplacement.h:
+        * Modules/webaudio/AudioContext.h:
+        * Modules/websockets/ThreadableWebSocketChannel.h:
+        * Modules/websockets/WebSocket.h:
+        * Modules/websockets/WebSocketHandshake.cpp:
+        * Modules/websockets/WebSocketHandshake.h:
+        * Modules/websockets/WorkerThreadableWebSocketChannel.h:
+        * PlatformMac.cmake:
+        * PlatformWin.cmake:
+        * Sources.txt:
+        * SourcesCocoa.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/CachedModuleScriptLoader.h:
+        * bindings/js/CachedScriptFetcher.h:
+        * bindings/js/ScriptController.cpp:
+        (WebCore::ScriptController::executeIfJavaScriptURL):
+        * bindings/js/ScriptController.h:
+        * bindings/js/ScriptModuleLoader.h:
+        * bindings/js/ScriptSourceCode.h:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+        * bindings/scripts/test/JS/JSInterfaceName.cpp:
+        * bindings/scripts/test/JS/JSMapLike.cpp:
+        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
+        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
+        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
+        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
+        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
+        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+        * bindings/scripts/test/JS/JSTestException.cpp:
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
+        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
+        * bindings/scripts/test/JS/JSTestIterable.cpp:
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
+        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
+        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
+        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
+        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
+        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
+        * bindings/scripts/test/JS/JSTestNode.cpp:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
+        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
+        * bindings/scripts/test/JS/JSTestSerialization.cpp:
+        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
+        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
+        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        * bindings/scripts/test/JS/JSTestStringifier.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        * contentextensions/ContentExtensionsBackend.cpp:
+        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad):
+        (WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad):
+        (WebCore::ContentExtensions::applyBlockedStatusToRequest):
+        * contentextensions/ContentExtensionsBackend.h:
+        * css/CSSValue.h:
+        * css/StyleProperties.h:
+        * css/StyleResolver.h:
+        * css/StyleSheet.h:
+        * css/StyleSheetContents.h:
+        * css/parser/CSSParserContext.h:
+        (WebCore::CSSParserContextHash::hash):
+        (WTF::HashTraits<WebCore::CSSParserContext>::constructDeletedValue):
+        * css/parser/CSSParserIdioms.h:
+        * dom/DataTransfer.cpp:
+        (WebCore::DataTransfer::setDataFromItemList):
+        * dom/Document.cpp:
+        (WebCore::Document::setURL):
+        (WebCore::Document::processHttpEquiv):
+        (WebCore::Document::completeURL const):
+        (WebCore::Document::ensureTemplateDocument):
+        * dom/Document.h:
+        (WebCore::Document::urlForBindings const):
+        * dom/Element.cpp:
+        (WebCore::Element::isJavaScriptURLAttribute const):
+        * dom/InlineStyleSheetOwner.cpp:
+        (WebCore::parserContextForElement):
+        * dom/Node.cpp:
+        (WebCore::Node::baseURI const):
+        * dom/Node.h:
+        * dom/ScriptElement.h:
+        * dom/ScriptExecutionContext.h:
+        * dom/SecurityContext.h:
+        * editing/Editor.cpp:
+        (WebCore::Editor::pasteboardWriterURL):
+        * editing/Editor.h:
+        * editing/MarkupAccumulator.cpp:
+        (WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):
+        * editing/cocoa/DataDetection.h:
+        * editing/cocoa/EditorCocoa.mm:
+        (WebCore::Editor::userVisibleString):
+        * editing/cocoa/WebContentReaderCocoa.mm:
+        (WebCore::replaceRichContentWithAttachments):
+        (WebCore::WebContentReader::readWebArchive):
+        * editing/mac/EditorMac.mm:
+        (WebCore::Editor::plainTextFromPasteboard):
+        (WebCore::Editor::writeImageToPasteboard):
+        * editing/markup.cpp:
+        (WebCore::removeSubresourceURLAttributes):
+        (WebCore::createFragmentFromMarkup):
+        * editing/markup.h:
+        * fileapi/AsyncFileStream.cpp:
+        * fileapi/AsyncFileStream.h:
+        * fileapi/Blob.h:
+        * fileapi/BlobURL.cpp:
+        * fileapi/BlobURL.h:
+        * fileapi/File.h:
+        * fileapi/FileReaderLoader.h:
+        * fileapi/ThreadableBlobRegistry.h:
+        * history/CachedFrame.h:
+        * history/HistoryItem.h:
+        * html/DOMURL.cpp:
+        (WebCore::DOMURL::create):
+        * html/DOMURL.h:
+        * html/HTMLAttachmentElement.cpp:
+        (WebCore::HTMLAttachmentElement::archiveResourceURL):
+        * html/HTMLFrameElementBase.cpp:
+        (WebCore::HTMLFrameElementBase::isURLAllowed const):
+        (WebCore::HTMLFrameElementBase::openURL):
+        (WebCore::HTMLFrameElementBase::setLocation):
+        * html/HTMLInputElement.h:
+        * html/HTMLLinkElement.h:
+        * html/HTMLMediaElement.cpp:
+        (WTF::LogArgument<URL>::toString):
+        (WTF::LogArgument<WebCore::URL>::toString): Deleted.
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::allowedToLoadFrameURL):
+        * html/ImageBitmap.h:
+        * html/MediaFragmentURIParser.h:
+        * html/PublicURLManager.cpp:
+        * html/PublicURLManager.h:
+        * html/URLInputType.cpp:
+        * html/URLRegistry.h:
+        * html/URLSearchParams.cpp:
+        (WebCore::URLSearchParams::URLSearchParams):
+        (WebCore::URLSearchParams::toString const):
+        (WebCore::URLSearchParams::updateURL):
+        (WebCore::URLSearchParams::updateFromAssociatedURL):
+        * html/URLUtils.h:
+        (WebCore::URLUtils<T>::setHost):
+        (WebCore::URLUtils<T>::setPort):
+        * html/canvas/CanvasRenderingContext.cpp:
+        * html/canvas/CanvasRenderingContext.h:
+        * html/parser/HTMLParserIdioms.cpp:
+        * html/parser/XSSAuditor.cpp:
+        (WebCore::semicolonSeparatedValueContainsJavaScriptURL):
+        (WebCore::XSSAuditor::filterScriptToken):
+        (WebCore::XSSAuditor::filterObjectToken):
+        (WebCore::XSSAuditor::filterParamToken):
+        (WebCore::XSSAuditor::filterEmbedToken):
+        (WebCore::XSSAuditor::filterFormToken):
+        (WebCore::XSSAuditor::filterInputToken):
+        (WebCore::XSSAuditor::filterButtonToken):
+        (WebCore::XSSAuditor::eraseDangerousAttributesIfInjected):
+        (WebCore::XSSAuditor::isLikelySafeResource):
+        * html/parser/XSSAuditor.h:
+        * html/parser/XSSAuditorDelegate.h:
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::InspectorFrontendHost::openInNewTab):
+        * inspector/InspectorInstrumentation.h:
+        * inspector/agents/InspectorNetworkAgent.cpp:
+        * inspector/agents/InspectorNetworkAgent.h:
+        * inspector/agents/InspectorPageAgent.h:
+        * inspector/agents/InspectorWorkerAgent.h:
+        * loader/ApplicationManifestLoader.h:
+        * loader/CookieJar.h:
+        * loader/CrossOriginAccessControl.h:
+        * loader/CrossOriginPreflightResultCache.h:
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::willSendRequest):
+        (WebCore::DocumentLoader::maybeLoadEmpty):
+        * loader/DocumentLoader.h:
+        (WebCore::DocumentLoader::serverRedirectSourceForHistory const):
+        * loader/DocumentWriter.h:
+        * loader/FormSubmission.h:
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::submitForm):
+        (WebCore::FrameLoader::receivedFirstData):
+        (WebCore::FrameLoader::loadWithDocumentLoader):
+        (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
+        (WebCore::createWindow):
+        * loader/FrameLoaderClient.h:
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::currentItemShouldBeReplaced const):
+        (WebCore::HistoryController::initializeItem):
+        * loader/LinkLoader.h:
+        * loader/LoadTiming.h:
+        * loader/LoaderStrategy.h:
+        * loader/MixedContentChecker.cpp:
+        (WebCore::MixedContentChecker::checkFormForMixedContent const):
+        * loader/MixedContentChecker.h:
+        * loader/NavigationScheduler.cpp:
+        (WebCore::NavigationScheduler::shouldScheduleNavigation const):
+        * loader/NavigationScheduler.h:
+        * loader/PingLoader.h:
+        * loader/PolicyChecker.cpp:
+        (WebCore::PolicyChecker::checkNavigationPolicy):
+        * loader/ResourceLoadInfo.h:
+        * loader/ResourceLoadObserver.cpp:
+        (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
+        * loader/ResourceLoadObserver.h:
+        * loader/ResourceLoadStatistics.h:
+        * loader/ResourceLoader.h:
+        * loader/ResourceTiming.h:
+        * loader/SubframeLoader.cpp:
+        (WebCore::SubframeLoader::requestFrame):
+        * loader/SubframeLoader.h:
+        * loader/SubstituteData.h:
+        * loader/appcache/ApplicationCache.h:
+        * loader/appcache/ApplicationCacheGroup.h:
+        * loader/appcache/ApplicationCacheHost.h:
+        * loader/appcache/ApplicationCacheStorage.cpp:
+        * loader/appcache/ApplicationCacheStorage.h:
+        * loader/appcache/ManifestParser.cpp:
+        * loader/appcache/ManifestParser.h:
+        * loader/archive/ArchiveResourceCollection.h:
+        * loader/archive/cf/LegacyWebArchive.cpp:
+        (WebCore::LegacyWebArchive::createFromSelection):
+        * loader/cache/CachedResource.cpp:
+        * loader/cache/CachedResourceLoader.h:
+        * loader/cache/CachedStyleSheetClient.h:
+        * loader/cache/MemoryCache.h:
+        * loader/icon/IconLoader.h:
+        * loader/mac/LoaderNSURLExtras.mm:
+        * page/CaptionUserPreferencesMediaAF.cpp:
+        * page/ChromeClient.h:
+        * page/ClientOrigin.h:
+        * page/ContextMenuClient.h:
+        * page/ContextMenuController.cpp:
+        (WebCore::ContextMenuController::checkOrEnableIfNeeded const):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::isInsecureScriptAccess):
+        * page/DragController.cpp:
+        (WebCore::DragController::startDrag):
+        * page/DragController.h:
+        * page/EventSource.h:
+        * page/Frame.h:
+        * page/FrameView.h:
+        * page/History.h:
+        * page/Location.cpp:
+        (WebCore::Location::url const):
+        (WebCore::Location::reload):
+        * page/Location.h:
+        * page/Page.h:
+        * page/PageSerializer.h:
+        * page/Performance.h:
+        * page/PerformanceResourceTiming.cpp:
+        * page/SecurityOrigin.cpp:
+        (WebCore::SecurityOrigin::SecurityOrigin):
+        (WebCore::SecurityOrigin::create):
+        * page/SecurityOrigin.h:
+        * page/SecurityOriginData.h:
+        * page/SecurityOriginHash.h:
+        * page/SecurityPolicy.cpp:
+        (WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner):
+        * page/SecurityPolicy.h:
+        * page/SettingsBase.h:
+        * page/ShareData.h:
+        * page/SocketProvider.h:
+        * page/UserContentProvider.h:
+        * page/UserContentURLPattern.cpp:
+        * page/UserContentURLPattern.h:
+        * page/UserScript.h:
+        * page/UserStyleSheet.h:
+        * page/VisitedLinkStore.h:
+        * page/csp/ContentSecurityPolicy.h:
+        * page/csp/ContentSecurityPolicyClient.h:
+        * page/csp/ContentSecurityPolicyDirectiveList.h:
+        * page/csp/ContentSecurityPolicySource.cpp:
+        (WebCore::ContentSecurityPolicySource::portMatches const):
+        * page/csp/ContentSecurityPolicySource.h:
+        * page/csp/ContentSecurityPolicySourceList.cpp:
+        * page/csp/ContentSecurityPolicySourceList.h:
+        * page/csp/ContentSecurityPolicySourceListDirective.cpp:
+        * platform/ContentFilterUnblockHandler.h:
+        * platform/ContextMenuItem.h:
+        * platform/Cookie.h:
+        * platform/CookiesStrategy.h:
+        * platform/DragData.h:
+        * platform/DragImage.h:
+        * platform/FileStream.h:
+        * platform/LinkIcon.h:
+        * platform/Pasteboard.cpp:
+        (WebCore::Pasteboard::canExposeURLToDOMWhenPasteboardContainsFiles):
+        * platform/Pasteboard.h:
+        * platform/PasteboardStrategy.h:
+        * platform/PasteboardWriterData.cpp:
+        (WebCore::PasteboardWriterData::setURLData):
+        (WebCore::PasteboardWriterData::setURL): Deleted.
+        * platform/PasteboardWriterData.h:
+        * platform/PlatformPasteboard.h:
+        * platform/PromisedAttachmentInfo.h:
+        * platform/SSLKeyGenerator.h:
+        * platform/SchemeRegistry.cpp:
+        (WebCore::SchemeRegistry::isBuiltinScheme):
+        * platform/SharedBuffer.h:
+        * platform/SharedStringHash.cpp:
+        * platform/SharedStringHash.h:
+        * platform/SourcesSoup.txt:
+        * platform/UserAgent.h:
+        * platform/UserAgentQuirks.cpp:
+        * platform/UserAgentQuirks.h:
+        * platform/cocoa/NetworkExtensionContentFilter.h:
+        * platform/cocoa/NetworkExtensionContentFilter.mm:
+        (WebCore::NetworkExtensionContentFilter::willSendRequest):
+        * platform/glib/SSLKeyGeneratorGLib.cpp: Copied from Source/WebCore/page/ShareData.h.
+        (WebCore::getSupportedKeySizes):
+        (WebCore::signedPublicKeyAndChallengeString):
+        * platform/glib/UserAgentGLib.cpp:
+        * platform/graphics/GraphicsContext.h:
+        * platform/graphics/Image.cpp:
+        * platform/graphics/Image.h:
+        * platform/graphics/ImageObserver.h:
+        * platform/graphics/ImageSource.cpp:
+        * platform/graphics/ImageSource.h:
+        * platform/graphics/MediaPlayer.h:
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        * platform/graphics/cg/GraphicsContextCG.cpp:
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
+        * platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
+        (webKitMediaSrcSetUri):
+        * platform/graphics/iso/ISOVTTCue.cpp:
+        * platform/graphics/win/GraphicsContextDirect2D.cpp:
+        * platform/gtk/DragImageGtk.cpp:
+        * platform/gtk/PasteboardGtk.cpp:
+        * platform/gtk/PlatformPasteboardGtk.cpp:
+        * platform/gtk/SelectionData.h:
+        * platform/ios/PasteboardIOS.mm:
+        * platform/ios/PlatformPasteboardIOS.mm:
+        (WebCore::PlatformPasteboard::write):
+        * platform/ios/QuickLook.h:
+        * platform/mac/DragDataMac.mm:
+        (WebCore::DragData::asPlainText const):
+        * platform/mac/DragImageMac.mm:
+        * platform/mac/FileSystemMac.mm:
+        (WebCore::FileSystem::setMetadataURL):
+        * platform/mac/PasteboardMac.mm:
+        * platform/mac/PasteboardWriter.mm:
+        (WebCore::createPasteboardWriter):
+        * platform/mac/PlatformPasteboardMac.mm:
+        * platform/mac/PublicSuffixMac.mm:
+        (WebCore::decodeHostName):
+        * platform/mac/SSLKeyGeneratorMac.mm:
+        * platform/mac/WebCoreNSURLExtras.h:
+        * platform/mac/WebCoreNSURLExtras.mm:
+        (WebCore::isArmenianLookalikeCharacter): Deleted.
+        (WebCore::isArmenianScriptCharacter): Deleted.
+        (WebCore::isASCIIDigitOrValidHostCharacter): Deleted.
+        (WebCore::isLookalikeCharacter): Deleted.
+        (WebCore::whiteListIDNScript): Deleted.
+        (WebCore::readIDNScriptWhiteListFile): Deleted.
+        (WebCore::allCharactersInIDNScriptWhiteList): Deleted.
+        (WebCore::isSecondLevelDomainNameAllowedByTLDRules): Deleted.
+        (WebCore::isRussianDomainNameCharacter): Deleted.
+        (WebCore::allCharactersAllowedByTLDRules): Deleted.
+        (WebCore::mapHostNameWithRange): Deleted.
+        (WebCore::hostNameNeedsDecodingWithRange): Deleted.
+        (WebCore::hostNameNeedsEncodingWithRange): Deleted.
+        (WebCore::decodeHostNameWithRange): Deleted.
+        (WebCore::encodeHostNameWithRange): Deleted.
+        (WebCore::decodeHostName): Deleted.
+        (WebCore::encodeHostName): Deleted.
+        (WebCore::collectRangesThatNeedMapping): Deleted.
+        (WebCore::collectRangesThatNeedEncoding): Deleted.
+        (WebCore::collectRangesThatNeedDecoding): Deleted.
+        (WebCore::applyHostNameFunctionToMailToURLString): Deleted.
+        (WebCore::applyHostNameFunctionToURLString): Deleted.
+        (WebCore::mapHostNames): Deleted.
+        (WebCore::stringByTrimmingWhitespace): Deleted.
+        (WebCore::URLByTruncatingOneCharacterBeforeComponent): Deleted.
+        (WebCore::URLByRemovingResourceSpecifier): Deleted.
+        (WebCore::URLWithData): Deleted.
+        (WebCore::dataWithUserTypedString): Deleted.
+        (WebCore::URLWithUserTypedString): Deleted.
+        (WebCore::URLWithUserTypedStringDeprecated): Deleted.
+        (WebCore::hasQuestionMarkOnlyQueryString): Deleted.
+        (WebCore::dataForURLComponentType): Deleted.
+        (WebCore::URLByRemovingComponentAndSubsequentCharacter): Deleted.
+        (WebCore::URLByRemovingUserInfo): Deleted.
+        (WebCore::originalURLData): Deleted.
+        (WebCore::createStringWithEscapedUnsafeCharacters): Deleted.
+        (WebCore::userVisibleString): Deleted.
+        (WebCore::isUserVisibleURL): Deleted.
+        (WebCore::rangeOfURLScheme): Deleted.
+        (WebCore::looksLikeAbsoluteURL): Deleted.
+        * platform/mediastream/MediaEndpointConfiguration.h:
+        * platform/network/BlobPart.h:
+        * platform/network/BlobRegistry.h:
+        * platform/network/BlobRegistryImpl.h:
+        * platform/network/BlobResourceHandle.cpp:
+        * platform/network/CookieRequestHeaderFieldProxy.h:
+        * platform/network/CredentialStorage.cpp:
+        * platform/network/CredentialStorage.h:
+        * platform/network/DataURLDecoder.cpp:
+        * platform/network/DataURLDecoder.h:
+        * platform/network/FormData.h:
+        * platform/network/ProxyServer.h:
+        * platform/network/ResourceErrorBase.h:
+        * platform/network/ResourceHandle.cpp:
+        (WebCore::ResourceHandle::didReceiveResponse):
+        * platform/network/ResourceHandle.h:
+        * platform/network/ResourceHandleClient.h:
+        * platform/network/ResourceRequestBase.cpp:
+        (WebCore::ResourceRequestBase::redirectedRequest const):
+        * platform/network/ResourceRequestBase.h:
+        * platform/network/ResourceResponseBase.h:
+        * platform/network/SocketStreamHandle.h:
+        * platform/network/cf/DNSResolveQueueCFNet.cpp:
+        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
+        * platform/network/cf/ProxyServerCFNet.cpp:
+        * platform/network/cf/ResourceErrorCF.cpp:
+        * platform/network/cocoa/NetworkStorageSessionCocoa.mm:
+        * platform/network/curl/CookieJarCurlDatabase.cpp: Added.
+        (WebCore::cookiesForSession):
+        (WebCore::CookieJarCurlDatabase::setCookiesFromDOM const):
+        (WebCore::CookieJarCurlDatabase::setCookiesFromHTTPResponse const):
+        (WebCore::CookieJarCurlDatabase::cookiesForDOM const):
+        (WebCore::CookieJarCurlDatabase::cookieRequestHeaderFieldValue const):
+        (WebCore::CookieJarCurlDatabase::cookiesEnabled const):
+        (WebCore::CookieJarCurlDatabase::getRawCookies const):
+        (WebCore::CookieJarCurlDatabase::deleteCookie const):
+        (WebCore::CookieJarCurlDatabase::getHostnamesWithCookies const):
+        (WebCore::CookieJarCurlDatabase::deleteCookiesForHostnames const):
+        (WebCore::CookieJarCurlDatabase::deleteAllCookies const):
+        (WebCore::CookieJarCurlDatabase::deleteAllCookiesModifiedSince const):
+        * platform/network/curl/CookieJarDB.cpp:
+        * platform/network/curl/CookieUtil.h:
+        * platform/network/curl/CurlContext.h:
+        * platform/network/curl/CurlProxySettings.h:
+        * platform/network/curl/CurlResponse.h:
+        * platform/network/curl/NetworkStorageSessionCurl.cpp:
+        * platform/network/curl/ProxyServerCurl.cpp:
+        * platform/network/curl/SocketStreamHandleImplCurl.cpp:
+        * platform/network/mac/ResourceErrorMac.mm:
+        * platform/network/soup/NetworkStorageSessionSoup.cpp:
+        * platform/network/soup/ProxyServerSoup.cpp:
+        * platform/network/soup/ResourceHandleSoup.cpp:
+        * platform/network/soup/ResourceRequest.h:
+        * platform/network/soup/ResourceRequestSoup.cpp:
+        * platform/network/soup/SocketStreamHandleImplSoup.cpp:
+        * platform/network/soup/SoupNetworkSession.cpp:
+        * platform/network/soup/SoupNetworkSession.h:
+        * platform/text/TextEncoding.h:
+        * platform/win/BString.cpp:
+        * platform/win/BString.h:
+        * platform/win/ClipboardUtilitiesWin.cpp:
+        (WebCore::markupToCFHTML):
+        * platform/win/ClipboardUtilitiesWin.h:
+        * platform/win/DragImageWin.cpp:
+        * platform/win/PasteboardWin.cpp:
+        * plugins/PluginData.h:
+        * rendering/HitTestResult.h:
+        * rendering/RenderAttachment.cpp:
+        * svg/SVGImageLoader.cpp:
+        (WebCore::SVGImageLoader::sourceURI const):
+        * svg/SVGURIReference.cpp:
+        * svg/graphics/SVGImage.h:
+        * svg/graphics/SVGImageCache.h:
+        * svg/graphics/SVGImageForContainer.h:
+        * testing/Internals.cpp:
+        (WebCore::Internals::resetToConsistentState):
+        * testing/Internals.mm:
+        (WebCore::Internals::userVisibleString):
+        * testing/MockContentFilter.cpp:
+        (WebCore::MockContentFilter::willSendRequest):
+        * testing/MockPaymentCoordinator.cpp:
+        * testing/js/WebCoreTestSupport.cpp:
+        * workers/AbstractWorker.h:
+        * workers/WorkerGlobalScope.h:
+        * workers/WorkerGlobalScopeProxy.h:
+        * workers/WorkerInspectorProxy.h:
+        * workers/WorkerLocation.h:
+        * workers/WorkerScriptLoader.h:
+        * workers/WorkerThread.cpp:
+        * workers/WorkerThread.h:
+        * workers/service/ServiceWorker.h:
+        * workers/service/ServiceWorkerClientData.h:
+        * workers/service/ServiceWorkerContainer.cpp:
+        * workers/service/ServiceWorkerContextData.h:
+        * workers/service/ServiceWorkerData.h:
+        * workers/service/ServiceWorkerJobData.h:
+        * workers/service/ServiceWorkerRegistrationKey.cpp:
+        * workers/service/ServiceWorkerRegistrationKey.h:
+        (WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::constructDeletedValue):
+        * worklets/WorkletGlobalScope.h:
+        * xml/XMLHttpRequest.h:
+
</ins><span class="cx"> 2018-11-30  Chris Dumez  <cdumez@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Drop unused Cross-Origin-Window-Policy from HTTPHeaderNames.in
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePaySessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySession.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.h  2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.h     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -48,7 +48,6 @@
</span><span class="cx"> class PaymentContact;
</span><span class="cx"> class PaymentCoordinator;
</span><span class="cx"> class PaymentMethod;
</span><del>-class URL;
</del><span class="cx"> enum class PaymentAuthorizationStatus;
</span><span class="cx"> struct ApplePayLineItem;
</span><span class="cx"> struct ApplePayPaymentRequest;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #if ENABLE(APPLE_PAY)
</span><span class="cx"> 
</span><span class="cx"> #include "Event.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentCoordinatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.cpp     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.cpp        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #include "PaymentAuthorizationStatus.h"
</span><span class="cx"> #include "PaymentCoordinatorClient.h"
</span><span class="cx"> #include "PaymentSession.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentCoordinatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.h       2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.h  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> class PaymentMerchantSession;
</span><span class="cx"> class PaymentMethod;
</span><span class="cx"> class PaymentSession;
</span><del>-class URL;
</del><span class="cx"> enum class PaymentAuthorizationStatus;
</span><span class="cx"> struct PaymentAuthorizationResult;
</span><span class="cx"> struct PaymentMethodUpdate;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentCoordinatorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class PaymentMerchantSession;
</span><del>-class URL;
</del><span class="cx"> struct PaymentAuthorizationResult;
</span><span class="cx"> struct PaymentMethodUpdate;
</span><span class="cx"> struct ShippingContactUpdate;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentSessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/PaymentSession.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentSession.h   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applepay/PaymentSession.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> class Payment;
</span><span class="cx"> class PaymentContact;
</span><span class="cx"> class PaymentMethod;
</span><del>-class URL;
</del><span class="cx"> 
</span><span class="cx"> class PaymentSession : public virtual PaymentSessionBase {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplicationmanifestApplicationManifesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,8 +27,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(APPLICATION_MANIFEST)
</span><span class="cx"> 
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/EnumTraits.h>
</ins><span class="cx"> #include <wtf/Optional.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesbeaconNavigatorBeaconcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.cpp  2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.cpp     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include "Frame.h"
</span><span class="cx"> #include "HTTPParsers.h"
</span><span class="cx"> #include "Navigator.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulescacheDOMCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/cache/DOMCache.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/cache/DOMCache.cpp  2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/cache/DOMCache.cpp     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> #include "JSFetchResponse.h"
</span><span class="cx"> #include "ReadableStreamChunk.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchLoader.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchLoader.h 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/fetch/FetchLoader.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #include "FetchBodyConsumer.h"
</span><span class="cx"> #include "ThreadableLoader.h"
</span><span class="cx"> #include "ThreadableLoaderClient.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasessionMediaSessionMetadatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasession/MediaSessionMetadata.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasession/MediaSessionMetadata.h 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSessionMetadata.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><span class="cx"> 
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourceRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -35,9 +35,9 @@
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><span class="cx"> 
</span><span class="cx"> #include "MediaSource.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourceRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSourceRegistry.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class URL;
</del><span class="cx"> class MediaSource;
</span><span class="cx"> 
</span><span class="cx"> class MediaSourceRegistry final : public URLRegistry {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> #include "NetworkingContext.h"
</span><span class="cx"> #include "Page.h"
</span><span class="cx"> #include "RealtimeMediaSource.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -29,9 +29,9 @@
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx"> 
</span><span class="cx"> #include "MediaStream.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamRegistryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamRegistry.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx"> 
</span><span class="cx"> class MediaStream;
</span><span class="cx"> class MediaStreamPrivate;
</span><del>-class URL;
</del><span class="cx"> 
</span><span class="cx"> class MediaStreamRegistry final : public URLRegistry {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnavigatorcontentutilsNavigatorContentUtilsClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtilsClient.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtilsClient.h 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtilsClient.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NAVIGATOR_CONTENT_UTILS)
</span><span class="cx"> 
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/Notification.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/Notification.h        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/notifications/Notification.h   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> #include "NotificationDirection.h"
</span><span class="cx"> #include "NotificationPermission.h"
</span><span class="cx"> #include "Timer.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include "WritingMode.h"
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulespaymentrequestMerchantValidationEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/paymentrequest/MerchantValidationEvent.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/paymentrequest/MerchantValidationEvent.h    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/paymentrequest/MerchantValidationEvent.h       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #if ENABLE(PAYMENT_REQUEST)
</span><span class="cx"> 
</span><span class="cx"> #include "Event.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulespaymentrequestPaymentRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.h     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.h        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #include "PaymentMethodChangeEvent.h"
</span><span class="cx"> #include "PaymentOptions.h"
</span><span class="cx"> #include "PaymentResponse.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include <wtf/Variant.h>
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulespluginsPluginReplacementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/plugins/PluginReplacement.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/plugins/PluginReplacement.h 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/plugins/PluginReplacement.h    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> class RenderTreePosition;
</span><span class="cx"> class Settings;
</span><span class="cx"> class ShadowRoot;
</span><del>-class URL;
</del><span class="cx"> 
</span><span class="cx"> class PluginReplacement : public RefCounted<PluginReplacement> {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioContext.h     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.h        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -71,7 +71,6 @@
</span><span class="cx"> class PannerNode;
</span><span class="cx"> class PeriodicWave;
</span><span class="cx"> class ScriptProcessorNode;
</span><del>-class URL;
</del><span class="cx"> class WaveShaperNode;
</span><span class="cx"> 
</span><span class="cx"> // AudioContext is the cornerstone of the web audio API and all AudioNodes are created from it.
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class Blob;
</span><del>-class URL;
</del><span class="cx"> class ScriptExecutionContext;
</span><span class="cx"> class SocketProvider;
</span><span class="cx"> class WebSocketChannelClient;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.h      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.h 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> #include "EventTarget.h"
</span><span class="cx"> #include "ExceptionOr.h"
</span><span class="cx"> #include "Timer.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include "WebSocketChannelClient.h"
</span><span class="cx"> #include <wtf/Deque.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketHandshakecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> #include "ResourceRequest.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><span class="cx"> #include "SecurityOrigin.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include "WebSocket.h"
</span><span class="cx"> #include <wtf/ASCIICType.h>
</span><span class="cx"> #include <wtf/CryptographicallyRandomNumber.h>
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketHandshakeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include "CookieRequestHeaderFieldProxy.h"
</span><del>-#include "URL.h"
</del><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include "ResourceResponse.h"
</span><span class="cx"> #include "WebSocketExtensionDispatcher.h"
</span><span class="cx"> #include "WebSocketExtensionProcessor.h"
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h       2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class URL;
</del><span class="cx"> class ScriptExecutionContext;
</span><span class="cx"> class ThreadableWebSocketChannelClientWrapper;
</span><span class="cx"> class WorkerGlobalScope;
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformMaccmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformMac.cmake (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformMac.cmake   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/PlatformMac.cmake      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -187,7 +187,6 @@
</span><span class="cx">     platform/audio/mac/FFTFrameMac.cpp
</span><span class="cx">     platform/audio/mac/MediaSessionManagerMac.mm
</span><span class="cx"> 
</span><del>-    platform/cf/CFURLExtras.cpp
</del><span class="cx">     platform/cf/FileSystemCF.cpp
</span><span class="cx">     platform/cf/KeyedDecoderCF.cpp
</span><span class="cx">     platform/cf/KeyedEncoderCF.cpp
</span><span class="lines">@@ -195,7 +194,6 @@
</span><span class="cx">     platform/cf/MediaAccessibilitySoftLink.cpp
</span><span class="cx">     platform/cf/RunLoopObserver.cpp
</span><span class="cx">     platform/cf/SharedBufferCF.cpp
</span><del>-    platform/cf/URLCF.cpp
</del><span class="cx"> 
</span><span class="cx">     platform/cocoa/ContentFilterUnblockHandlerCocoa.mm
</span><span class="cx">     platform/cocoa/CoreVideoSoftLink.cpp
</span><span class="lines">@@ -397,7 +395,6 @@
</span><span class="cx">     platform/mac/SuddenTermination.mm
</span><span class="cx">     platform/mac/ThemeMac.mm
</span><span class="cx">     platform/mac/ThreadCheck.mm
</span><del>-    platform/mac/URLMac.mm
</del><span class="cx">     platform/mac/UserActivityMac.mm
</span><span class="cx">     platform/mac/ValidationBubbleMac.mm
</span><span class="cx">     platform/mac/WebCoreFullScreenPlaceholderView.mm
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformWin.cmake (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformWin.cmake   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/PlatformWin.cmake      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -249,12 +249,10 @@
</span><span class="cx">     list(APPEND WebCore_SOURCES
</span><span class="cx">         loader/archive/cf/LegacyWebArchive.cpp
</span><span class="cx"> 
</span><del>-        platform/cf/CFURLExtras.cpp
</del><span class="cx">         platform/cf/FileSystemCF.cpp
</span><span class="cx">         platform/cf/KeyedDecoderCF.cpp
</span><span class="cx">         platform/cf/KeyedEncoderCF.cpp
</span><span class="cx">         platform/cf/SharedBufferCF.cpp
</span><del>-        platform/cf/URLCF.cpp
</del><span class="cx"> 
</span><span class="cx">         platform/cf/win/CertificateCFWin.cpp
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreSourcestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Sources.txt (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Sources.txt 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/Sources.txt    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -1584,8 +1584,6 @@
</span><span class="cx"> platform/ThreadGlobalData.cpp
</span><span class="cx"> platform/ThreadTimers.cpp
</span><span class="cx"> platform/Timer.cpp
</span><del>-platform/URL.cpp
-platform/URLParser.cpp
</del><span class="cx"> platform/UserActivity.cpp
</span><span class="cx"> platform/WebCoreCrossThreadCopier.cpp
</span><span class="cx"> platform/WebGLStateTracker.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreSourcesCocoatxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/SourcesCocoa.txt (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/SourcesCocoa.txt    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/SourcesCocoa.txt       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -180,7 +180,6 @@
</span><span class="cx"> platform/audio/mac/CARingBuffer.cpp
</span><span class="cx"> platform/audio/mac/FFTFrameMac.cpp
</span><span class="cx"> 
</span><del>-platform/cf/CFURLExtras.cpp
</del><span class="cx"> platform/cf/FileSystemCF.cpp
</span><span class="cx"> platform/cf/KeyedDecoderCF.cpp
</span><span class="cx"> platform/cf/KeyedEncoderCF.cpp
</span><span class="lines">@@ -188,7 +187,6 @@
</span><span class="cx"> platform/cf/MediaAccessibilitySoftLink.cpp
</span><span class="cx"> platform/cf/RunLoopObserver.cpp
</span><span class="cx"> platform/cf/SharedBufferCF.cpp
</span><del>-platform/cf/URLCF.cpp
</del><span class="cx"> 
</span><span class="cx"> platform/cocoa/ContentFilterUnblockHandlerCocoa.mm @no-unify
</span><span class="cx"> platform/cocoa/CoreVideoSoftLink.cpp
</span><span class="lines">@@ -467,7 +465,6 @@
</span><span class="cx"> platform/mac/SuddenTermination.mm
</span><span class="cx"> platform/mac/ThemeMac.mm
</span><span class="cx"> platform/mac/ThreadCheck.mm @no-unify
</span><del>-platform/mac/URLMac.mm
</del><span class="cx"> platform/mac/UserActivityMac.mm
</span><span class="cx"> platform/mac/UserAgentMac.mm
</span><span class="cx"> platform/mac/ValidationBubbleMac.mm
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -1893,7 +1893,6 @@
</span><span class="cx">          5C4304B0191AC908000E2BC0 /* EXTShaderTextureLOD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C4304AD191AC908000E2BC0 /* EXTShaderTextureLOD.cpp */; };
</span><span class="cx">          5C4304B1191AC908000E2BC0 /* EXTShaderTextureLOD.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C4304AE191AC908000E2BC0 /* EXTShaderTextureLOD.h */; };
</span><span class="cx">          5C4304B6191AEF46000E2BC0 /* JSEXTShaderTextureLOD.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C4304B4191AEF46000E2BC0 /* JSEXTShaderTextureLOD.h */; };
</span><del>-               5C6E65431D5CEFBF00F7862E /* URLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C6E65401D5CEDC900F7862E /* URLParser.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">           5C7C88D81D0F1F4A009D2F6D /* SocketProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7C88D71D0F1F2B009D2F6D /* SocketProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          5CA1DEC61F71F1C700E71BD3 /* HTTPHeaderField.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA1DEC41F71E68700E71BD3 /* HTTPHeaderField.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          5CB37FFF1C62D2A100F20188 /* ScrollAnimatorMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB37FFD1C62D27800F20188 /* ScrollAnimatorMock.h */; };
</span><span class="lines">@@ -1968,7 +1967,6 @@
</span><span class="cx">          656D37480ADBA5DE00A4554D /* SubresourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 656D37300ADBA5DE00A4554D /* SubresourceLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          657AFAFC20047A2900509464 /* SpectreGadget.h in Headers */ = {isa = PBXBuildFile; fileRef = 657AFAF82004789900509464 /* SpectreGadget.h */; };
</span><span class="cx">          658436860AE01B7400E53753 /* FrameLoadRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 658436850AE01B7400E53753 /* FrameLoadRequest.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-               6593923809AE4346002C531F /* URL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6593923609AE4346002C531F /* URL.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">           659A7D130B6DB4D9001155B3 /* SubstituteData.h in Headers */ = {isa = PBXBuildFile; fileRef = 659A7D120B6DB4D9001155B3 /* SubstituteData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          659DDC8309E198BA001BF3C6 /* JSDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 659DDC8109E198BA001BF3C6 /* JSDocument.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          65A21468097A329100B9050A /* Page.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A21467097A329100B9050A /* Page.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -3859,7 +3857,6 @@
</span><span class="cx">          BCBB8AB913F1AFB000734DF0 /* PODInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB513F1AFB000734DF0 /* PODInterval.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          BCBB8ABA13F1AFB000734DF0 /* PODIntervalTree.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          BCBB8ABB13F1AFB000734DF0 /* PODRedBlackTree.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB713F1AFB000734DF0 /* PODRedBlackTree.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-               BCBD21AB0E417AD400A070F2 /* URLHash.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD21AA0E417AD400A070F2 /* URLHash.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">           BCBFB53D0DCD29CF0019B3E5 /* JSWindowProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBFB53B0DCD29CF0019B3E5 /* JSWindowProxy.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          BCC0E8761BFE70E9008F7F50 /* HTMLPictureElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC0E8741BFE70E9008F7F50 /* HTMLPictureElement.h */; };
</span><span class="cx">          BCC5BE010C0E93110011C2DB /* JSCSSStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC5BDFF0C0E93110011C2DB /* JSCSSStyleSheet.h */; };
</span><span class="lines">@@ -4733,7 +4730,6 @@
</span><span class="cx">          E1A1470811102B1500EEC0F3 /* ContainerNodeAlgorithms.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */; };
</span><span class="cx">          E1A3162D134BC32D007C9A4F /* WebNSAttributedStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          E1A643F20EC0972500779668 /* WorkerScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A643F10EC0972500779668 /* WorkerScriptController.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-               E1A8E56717552B2A007488E7 /* CFURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A8E56517552B2A007488E7 /* CFURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">           E1ADECBF0E76ACF1004A1A5E /* MessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADECBD0E76ACF1004A1A5E /* MessagePort.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          E1ADECCE0E76AD8B004A1A5E /* MessageChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADECCC0E76AD8B004A1A5E /* MessageChannel.h */; };
</span><span class="cx">          E1ADEDDA0E76BD93004A1A5E /* JSMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = E1ADEDD80E76BD93004A1A5E /* JSMessagePort.h */; };
</span><span class="lines">@@ -6183,7 +6179,6 @@
</span><span class="cx">          1A927FCF1416A15B003A83C8 /* npapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npapi.h; sourceTree = "<group>"; };
</span><span class="cx">          1A927FD01416A15B003A83C8 /* npruntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npruntime.h; sourceTree = "<group>"; };
</span><span class="cx">          1A927FD11416A15B003A83C8 /* nptypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nptypes.h; sourceTree = "<group>"; };
</span><del>-               1A98956A0AA78F80005EF5EF /* URLCF.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = URLCF.cpp; sourceTree = "<group>"; };
</del><span class="cx">           1AA84F02143BA7BD0051D153 /* ScrollController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollController.mm; sourceTree = "<group>"; };
</span><span class="cx">          1AA84F03143BA7BD0051D153 /* ScrollController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollController.h; sourceTree = "<group>"; };
</span><span class="cx">          1AAADDA114DB409F00AF64B3 /* ScrollingTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingTree.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -8843,8 +8838,6 @@
</span><span class="cx">          5C668E641E7C6C3500D32B3B /* SocketStreamHandleImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SocketStreamHandleImpl.cpp; sourceTree = "<group>"; };
</span><span class="cx">          5C688AA01D380509000B54FA /* ThreadableWebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableWebSocketChannel.cpp; sourceTree = "<group>"; };
</span><span class="cx">          5C688AA21D38126F000B54FA /* SocketProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SocketProvider.cpp; sourceTree = "<group>"; };
</span><del>-               5C6E653F1D5CEDC900F7862E /* URLParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URLParser.cpp; sourceTree = "<group>"; };
-               5C6E65401D5CEDC900F7862E /* URLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLParser.h; sourceTree = "<group>"; };
</del><span class="cx">           5C7C88D71D0F1F2B009D2F6D /* SocketProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketProvider.h; sourceTree = "<group>"; };
</span><span class="cx">          5C97A3361F5F7A6500105207 /* RectEdges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RectEdges.h; sourceTree = "<group>"; };
</span><span class="cx">          5C9B860B1C21E3C600110F36 /* NetworkLoadMetrics.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkLoadMetrics.mm; sourceTree = "<group>"; };
</span><span class="lines">@@ -8997,8 +8990,6 @@
</span><span class="cx">          657AFAFA2004789A00509464 /* SpectreGadget.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SpectreGadget.idl; sourceTree = "<group>"; };
</span><span class="cx">          657AFAFB2004789A00509464 /* SpectreGadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpectreGadget.cpp; sourceTree = "<group>"; };
</span><span class="cx">          658436850AE01B7400E53753 /* FrameLoadRequest.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FrameLoadRequest.h; sourceTree = "<group>"; };
</span><del>-               6593923509AE4346002C531F /* URL.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = URL.cpp; sourceTree = "<group>"; };
-               6593923609AE4346002C531F /* URL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = URL.h; sourceTree = "<group>"; };
</del><span class="cx">           6593923909AE435C002C531F /* URLMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = URLMac.mm; sourceTree = "<group>"; };
</span><span class="cx">          659A7D120B6DB4D9001155B3 /* SubstituteData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SubstituteData.h; sourceTree = "<group>"; };
</span><span class="cx">          659DDC8009E198BA001BF3C6 /* JSDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocument.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -13017,7 +13008,6 @@
</span><span class="cx">          BCBB8AB513F1AFB000734DF0 /* PODInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODInterval.h; sourceTree = "<group>"; };
</span><span class="cx">          BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODIntervalTree.h; sourceTree = "<group>"; };
</span><span class="cx">          BCBB8AB713F1AFB000734DF0 /* PODRedBlackTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODRedBlackTree.h; sourceTree = "<group>"; };
</span><del>-               BCBD21AA0E417AD400A070F2 /* URLHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLHash.h; sourceTree = "<group>"; };
</del><span class="cx">           BCBFB53A0DCD29CF0019B3E5 /* JSWindowProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWindowProxy.cpp; sourceTree = "<group>"; };
</span><span class="cx">          BCBFB53B0DCD29CF0019B3E5 /* JSWindowProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWindowProxy.h; sourceTree = "<group>"; };
</span><span class="cx">          BCC0E8731BFE70E9008F7F50 /* HTMLPictureElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPictureElement.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -14518,8 +14508,6 @@
</span><span class="cx">          E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMessageChannelCustom.cpp; sourceTree = "<group>"; };
</span><span class="cx">          E1A643F10EC0972500779668 /* WorkerScriptController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerScriptController.h; sourceTree = "<group>"; };
</span><span class="cx">          E1A643FC0EC097A000779668 /* WorkerScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerScriptController.cpp; sourceTree = "<group>"; };
</span><del>-               E1A8E56417552B2A007488E7 /* CFURLExtras.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CFURLExtras.cpp; sourceTree = "<group>"; };
-               E1A8E56517552B2A007488E7 /* CFURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFURLExtras.h; sourceTree = "<group>"; };
</del><span class="cx">           E1AB1EA814E9E27D00449E13 /* FileList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FileList.idl; sourceTree = "<group>"; };
</span><span class="cx">          E1AB1EB714E9E35800449E13 /* File.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = File.idl; sourceTree = "<group>"; };
</span><span class="cx">          E1AB1EBB14E9E37A00449E13 /* FileError.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = FileError.idl; sourceTree = "<group>"; };
</span><span class="lines">@@ -16525,8 +16513,6 @@
</span><span class="cx">          1AE42F670AA4B8CB00C8612D /* cf */ = {
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><del>-                               E1A8E56417552B2A007488E7 /* CFURLExtras.cpp */,
-                               E1A8E56517552B2A007488E7 /* CFURLExtras.h */,
</del><span class="cx">                           5160306B0CC4362300C8AC25 /* FileSystemCF.cpp */,
</span><span class="cx">                          517A63BF1B74317E00E7DCDC /* KeyedDecoderCF.cpp */,
</span><span class="cx">                          517A63C01B74317E00E7DCDC /* KeyedDecoderCF.h */,
</span><span class="lines">@@ -16538,7 +16524,6 @@
</span><span class="cx">                          2D76BB8319456F8100CFD29A /* RunLoopObserver.cpp */,
</span><span class="cx">                          2D76BB801945632400CFD29A /* RunLoopObserver.h */,
</span><span class="cx">                          512DD8E20D91E2B4000F89EE /* SharedBufferCF.cpp */,
</span><del>-                               1A98956A0AA78F80005EF5EF /* URLCF.cpp */,
</del><span class="cx">                   );
</span><span class="cx">                  path = cf;
</span><span class="cx">                  sourceTree = "<group>";
</span><span class="lines">@@ -25130,11 +25115,6 @@
</span><span class="cx">                          185BCF270F3279CE000EA262 /* ThreadTimers.h */,
</span><span class="cx">                          93309EA1099EB78C0056E581 /* Timer.cpp */,
</span><span class="cx">                          9305B24C098F1B6B00C28855 /* Timer.h */,
</span><del>-                               6593923509AE4346002C531F /* URL.cpp */,
-                               6593923609AE4346002C531F /* URL.h */,
-                               BCBD21AA0E417AD400A070F2 /* URLHash.h */,
-                               5C6E653F1D5CEDC900F7862E /* URLParser.cpp */,
-                               5C6E65401D5CEDC900F7862E /* URLParser.h */,
</del><span class="cx">                           868160D1187669C40021E79D /* UserActivity.cpp */,
</span><span class="cx">                          868160D2187669C40021E79D /* UserActivity.h */,
</span><span class="cx">                          A3AF9D8220325324006CAD06 /* UserAgent.h */,
</span><span class="lines">@@ -28008,9 +27988,8 @@
</span><span class="cx">                          CD318623199F1E2A0030A0F7 /* CDMPrivateMediaSourceAVFObjC.h in Headers */,
</span><span class="cx">                          CDE595971BF26E2100A1CBE8 /* CDMSessionMediaSourceAVFObjC.h in Headers */,
</span><span class="cx">                          5FA904CA178E61F5004C8A2D /* CertificateInfo.h in Headers */,
</span><del>-                               91B8F0B521953D65000C2B00 /* CertificateInfoBase.h in Headers */,
-                               E1A8E56717552B2A007488E7 /* CFURLExtras.h in Headers */,
-                               FE36FD1516C7826500F887C1 /* ChangeVersionData.h in Headers */,
</del><ins>+                                91B8F0B521953D65000C2B00 /* CertificateInfoBase.h in Headers */,
+                                FE36FD1516C7826500F887C1 /* ChangeVersionData.h in Headers */,
</ins><span class="cx">                           97BC69DD1505F076001B74AC /* ChangeVersionWrapper.h in Headers */,
</span><span class="cx">                          FD315FFF12B0267600C1A359 /* ChannelMergerNode.h in Headers */,
</span><span class="cx">                          FD31600212B0267600C1A359 /* ChannelSplitterNode.h in Headers */,
</span><span class="lines">@@ -31506,11 +31485,8 @@
</span><span class="cx">                          E4AFCFA50DAF29A300F5F55C /* UnitBezier.h in Headers */,
</span><span class="cx">                          D086FE9809D53AAB005BC74D /* UnlinkCommand.h in Headers */,
</span><span class="cx">                          FD1762E0176686D900D836A8 /* UpSampler.h in Headers */,
</span><del>-                               6593923809AE4346002C531F /* URL.h in Headers */,
</del><span class="cx">                           267726051A5DF6F2003C24DD /* URLFilterParser.h in Headers */,
</span><del>-                               BCBD21AB0E417AD400A070F2 /* URLHash.h in Headers */,
</del><span class="cx">                           F55B3DDE1251F12D003EF269 /* URLInputType.h in Headers */,
</span><del>-                               5C6E65431D5CEFBF00F7862E /* URLParser.h in Headers */,
</del><span class="cx">                           7CC289DF1AA0FE5D009A9CE3 /* URLRegistry.h in Headers */,
</span><span class="cx">                          93D437A21D57B3FE00AB85EA /* URLUtils.h in Headers */,
</span><span class="cx">                          A72763BF16689BFB002FCACB /* UserActionElementSet.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsCachedModuleScriptLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/CachedModuleScriptLoader.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/CachedModuleScriptLoader.h      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/js/CachedModuleScriptLoader.h 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> class Document;
</span><span class="cx"> class JSDOMGlobalObject;
</span><span class="cx"> class ModuleFetchParameters;
</span><del>-class URL;
</del><span class="cx"> 
</span><span class="cx"> class CachedModuleScriptLoader final : public RefCounted<CachedModuleScriptLoader>, private CachedResourceClient {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsCachedScriptFetcherh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/CachedScriptFetcher.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/CachedScriptFetcher.h   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/js/CachedScriptFetcher.h      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> 
</span><span class="cx"> class CachedScript;
</span><span class="cx"> class Document;
</span><del>-class URL;
</del><span class="cx"> 
</span><span class="cx"> class CachedScriptFetcher : public JSC::ScriptFetcher {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.cpp    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/js/ScriptController.cpp       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -589,7 +589,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool ScriptController::executeIfJavaScriptURL(const URL& url, ShouldReplaceDocumentIfJavaScriptURL shouldReplaceDocumentIfJavaScriptURL)
</span><span class="cx"> {
</span><del>-    if (!protocolIsJavaScript(url))
</del><ins>+    if (!WTF::protocolIsJavaScript(url))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (!m_frame.page() || !m_frame.document()->contentSecurityPolicy()->allowJavaScriptURLs(m_frame.document()->url(), eventHandlerPosition().m_line))
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.h      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/js/ScriptController.h 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -60,7 +60,6 @@
</span><span class="cx"> class ModuleFetchParameters;
</span><span class="cx"> class ScriptSourceCode;
</span><span class="cx"> class SecurityOrigin;
</span><del>-class URL;
</del><span class="cx"> class Widget;
</span><span class="cx"> struct ExceptionDetails;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptModuleLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptModuleLoader.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptModuleLoader.h    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/js/ScriptModuleLoader.h       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,10 +27,10 @@
</span><span class="cx"> 
</span><span class="cx"> #include "CachedModuleScriptLoader.h"
</span><span class="cx"> #include "CachedModuleScriptLoaderClient.h"
</span><del>-#include "URL.h"
-#include "URLHash.h"
</del><span class="cx"> #include <JavaScriptCore/JSCJSValue.h>
</span><span class="cx"> #include <wtf/Noncopyable.h>
</span><ins>+#include <wtf/URL.h>
+#include <wtf/URLHash.h>
</ins><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptSourceCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptSourceCode.h (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptSourceCode.h      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/js/ScriptSourceCode.h 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -34,10 +34,10 @@
</span><span class="cx"> #include "CachedScript.h"
</span><span class="cx"> #include "CachedScriptFetcher.h"
</span><span class="cx"> #include "CachedScriptSourceProvider.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/SourceCode.h>
</span><span class="cx"> #include <JavaScriptCore/SourceProvider.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include <wtf/text/TextPosition.h>
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -4551,7 +4551,7 @@
</span><span class="cx">     if (NeedsImplementationClass($interface) && !$interface->extendedAttributes->{CustomHeapSnapshot}) {
</span><span class="cx">         AddToImplIncludes("<JavaScriptCore/HeapSnapshotBuilder.h>");
</span><span class="cx">         AddToImplIncludes("ScriptExecutionContext.h");
</span><del>-        AddToImplIncludes("URL.h");
</del><ins>+        AddToImplIncludes("<wtf/URL.h>");
</ins><span class="cx">         push(@implContent, "void ${className}::heapSnapshot(JSCell* cell, HeapSnapshotBuilder& builder)\n");
</span><span class="cx">         push(@implContent, "{\n");
</span><span class="cx">         push(@implContent, "    auto* thisObject = jsCast<${className}*>(cell);\n");
</span><span class="lines">@@ -4563,7 +4563,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ($indexedGetterOperation) {
</span><del>-        $implIncludes{"URL.h"} = 1 if $indexedGetterOperation->type->name eq "DOMString";
</del><ins>+        $implIncludes{"<wtf/URL.h>"} = 1 if $indexedGetterOperation->type->name eq "DOMString";
</ins><span class="cx">         if ($interfaceName =~ /^HTML\w*Collection$/ or $interfaceName eq "RadioNodeList") {
</span><span class="cx">             $implIncludes{"JSNode.h"} = 1;
</span><span class="cx">             $implIncludes{"Node.h"} = 1;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -26,12 +26,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSMapLikecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/BuiltinNames.h>
</span><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="lines">@@ -38,6 +37,7 @@
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSReadOnlyMapLikecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/BuiltinNames.h>
</span><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="lines">@@ -38,6 +37,7 @@
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp  2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -33,12 +33,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "JSNode.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -34,12 +34,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "JSTestCEReactionsStringifier.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -30,12 +30,12 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallTracercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp       2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -37,12 +37,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "JSNode.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> #include <wtf/Variant.h>
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,12 +27,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><span class="cx"> #include "TestClassWithJSBuiltinConstructorBuiltins.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -26,12 +26,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -41,12 +41,12 @@
</span><span class="cx"> #include "JSElement.h"
</span><span class="cx"> #include "JSNodeList.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FrameTracers.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEnabledBySettingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include "JSTestSubObj.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><span class="cx"> #include "Settings.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include "WebCoreJSClientData.h"
</span><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="lines">@@ -38,6 +37,7 @@
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(TEST_FEATURE)
</span><span class="cx"> #include "JSDOMConvertStrings.h"
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -30,11 +30,11 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -32,12 +32,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "JSNode.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "RuntimeEnabledFeatures.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include "WebCoreJSClientData.h"
</span><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="lines">@@ -41,6 +40,7 @@
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(TEST_FEATURE)
</span><span class="cx"> #include "TestGlobalObjectBuiltins.h"
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -34,6 +33,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -34,6 +33,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -36,6 +35,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -34,12 +34,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><span class="cx"> #include "TestSupplemental.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition11) || ENABLE(Condition12) || ENABLE(Condition2) || ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> #include "JSDOMConvertStrings.h"
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp       2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/BuiltinNames.h>
</span><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="lines">@@ -35,6 +34,7 @@
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -30,12 +30,12 @@
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "JSMediaQueryListListener.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -35,6 +34,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp   2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp      2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -35,6 +34,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -37,6 +36,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -29,12 +29,12 @@
</span><span class="cx"> #include "JSDOMNamedConstructor.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp 2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp    2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp       2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp  2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -29,12 +29,12 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIndexedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp    2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp       2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="lines">@@ -35,6 +34,7 @@
</span><span class="cx"> #include <JavaScriptCore/PropertyNameArray.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterCallWithcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp      2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp 2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp  2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -29,12 +29,12 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp  2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp     2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp     2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp        2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -28,12 +28,12 @@
</span><span class="cx"> #include "JSDOMExceptionHandling.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #include <JavaScriptCore/JSCInlines.h>
</span><span class="cx"> #include <wtf/GetPtr.h>
</span><span class="cx"> #include <wtf/PointerPreparations.h>
</span><ins>+#include <wtf/URL.h>
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp (238770 => 238771)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp        2018-12-01 03:25:50 UTC (rev 238770)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp   2018-12-01 03:28:36 UTC (rev 238771)
</span><span class="lines">@@ -29,12 +29,12 @@
</span><span class="cx"> #include "JSDOMOperation.h"
</span><span class="cx"> #include "JSDOMWrapperCache.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><del>-#include "URL.h"
</del><span class="cx"> #include <JavaScriptCore/FunctionPrototype.h>
</span><span class="cx"> #include <JavaScriptCore/HeapSnapshotBuilder.h>
</span><span class="cx"> #