Title: [236762] trunk
Revision
236762
Author
[email protected]
Date
2018-10-02 13:24:42 -0700 (Tue, 02 Oct 2018)

Log Message

Remove ParsedURLString
https://bugs.webkit.org/show_bug.cgi?id=190154

Reviewed by Chris Dumez.

Source/WebCore:

Before the introduction of URLParser, it would indicate that we should assume the String
is from a valid URL so we can skip canonicalization and just find the offsets inside the String
to quickly create a URL.  It was a performance optimization that caused security issues when
misused.  Since the introduction of URLParser, we have a fast path for all URL parsing, so
right now it actually doesn't change any behavior.  It's just a relic of the past that complicates
the URL class, making it harder to express which constructor to use and making it harder to move
the class.

* Modules/navigatorcontentutils/NavigatorContentUtils.cpp:
(WebCore::NavigatorContentUtils::registerProtocolHandler):
(WebCore::NavigatorContentUtils::isProtocolHandlerRegistered):
(WebCore::NavigatorContentUtils::unregisterProtocolHandler):
* dom/Document.cpp:
(WebCore::Document::updateBaseURL):
(WebCore::Document::initSecurityContext):
* dom/ExtensionStyleSheets.cpp:
(WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const):
* dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::checkStyleSheet):
* editing/markup.cpp:
(WebCore::completeURLs):
* fileapi/BlobURL.cpp:
(WebCore::BlobURL::createBlobURL):
* history/HistoryItem.cpp:
(WebCore::HistoryItem::url const):
(WebCore::HistoryItem::originalURL const):
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::location const):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
* html/PublicURLManager.cpp:
(WebCore::PublicURLManager::stop):
* inspector/InspectorStyleSheet.cpp:
(WebCore::InspectorStyleSheet::resourceStyleSheetText const):
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::deleteCookie):
(WebCore::InspectorPageAgent::getResourceContent):
(WebCore::InspectorPageAgent::searchInResource):
* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::sourceMapURLForScript):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::subresources const):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::init):
(WebCore::FrameLoader::initForSynthesizedDocument):
* loader/HistoryController.cpp:
(WebCore::HistoryController::pushState):
(WebCore::HistoryController::replaceState):
* loader/appcache/ApplicationCache.cpp:
(WebCore::ApplicationCache::addResource):
(WebCore::ApplicationCache::resourceForURL):
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::startLoadingEntry):
(WebCore::ApplicationCacheGroup::addEntry):
* loader/appcache/ApplicationCacheStorage.cpp:
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::manifestURLs):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::urlForBlankFrame):
* platform/URL.cpp:
(WebCore::blankURL):
* platform/URL.h:
(): Deleted.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::load):
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::populateBlobsForFileWriting):
* platform/network/ResourceRequestBase.h:
(WebCore::ResourceRequestBase::decodeBase):
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::sanitizeSuggestedFilename):
* platform/network/cf/DNSResolveQueueCFNet.cpp:
(WebCore::DNSResolveQueueCFNet::updateIsUsingProxy):
* platform/network/cf/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::searchCookies):
(WebCore::CookieJarDB::setCookie):
(WebCore::CookieJarDB::deleteCookie):
* platform/network/curl/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* platform/network/soup/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* xml/XSLTProcessorLibxslt.cpp:
(WebCore::docLoaderFunc):

Source/WebKit:

* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::writeBlobToFilePath):
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::streamWillSendRequest):
(WebKit::PluginControllerProxy::streamDidReceiveResponse):
(WebKit::PluginControllerProxy::manualStreamDidReceiveResponse):
* Shared/API/APIUserContentURLPattern.h:
(API::UserContentURLPattern::matchesURL const):
* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::itemIsInSameDocument const):
* UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
(WebKit::RemoteInspectorProtocolHandler::handleRequest):
(WebKit::RemoteInspectorProtocolHandler::targetListChanged):
* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::PluginProcessProxy::openURL):
* UIProcess/SuspendedPageProxy.cpp:
(WebKit::SuspendedPageProxy::SuspendedPageProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::processDidTerminate):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::addProcessToOriginCacheSet):
(WebKit::WebProcessPool::processForNavigationInternal):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::createShareMenuItem):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::addUserScript):
(WebKit::InjectedBundle::addUserStyleSheet):
(WebKit::InjectedBundle::removeUserScript):
(WebKit::InjectedBundle::removeUserStyleSheet):
* WebProcess/Plugins/Plugin.cpp:
(WebKit::Plugin::Parameters::decode):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::url):
(WebKit::WebPlatformStrategies::readURLFromPasteboard):

Source/WebKitLegacy/mac:

* WebView/WebScriptDebugger.mm:
(toNSURL):

Source/WebKitLegacy/win:

* WebDownloadCurl.cpp:
(WebDownload::initWithRequest):
* WebURLResponse.cpp:
(WebURLResponse::createInstance):

Tools:

* TestWebKitAPI/Tests/WebCore/URL.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
(TestWebKitAPI::assertUserAgentForURLHasChromeBrowserQuirk):
(TestWebKitAPI::assertUserAgentForURLHasLinuxPlatformQuirk):
(TestWebKitAPI::assertUserAgentForURLHasMacPlatformQuirk):
(TestWebKitAPI::TEST):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (236761 => 236762)


--- trunk/Source/WebCore/ChangeLog	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/ChangeLog	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1,3 +1,103 @@
+2018-10-02  Alex Christensen  <[email protected]>
+
+        Remove ParsedURLString
+        https://bugs.webkit.org/show_bug.cgi?id=190154
+
+        Reviewed by Chris Dumez.
+
+        Before the introduction of URLParser, it would indicate that we should assume the String
+        is from a valid URL so we can skip canonicalization and just find the offsets inside the String
+        to quickly create a URL.  It was a performance optimization that caused security issues when
+        misused.  Since the introduction of URLParser, we have a fast path for all URL parsing, so
+        right now it actually doesn't change any behavior.  It's just a relic of the past that complicates
+        the URL class, making it harder to express which constructor to use and making it harder to move
+        the class.
+
+        * Modules/navigatorcontentutils/NavigatorContentUtils.cpp:
+        (WebCore::NavigatorContentUtils::registerProtocolHandler):
+        (WebCore::NavigatorContentUtils::isProtocolHandlerRegistered):
+        (WebCore::NavigatorContentUtils::unregisterProtocolHandler):
+        * dom/Document.cpp:
+        (WebCore::Document::updateBaseURL):
+        (WebCore::Document::initSecurityContext):
+        * dom/ExtensionStyleSheets.cpp:
+        (WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const):
+        * dom/ProcessingInstruction.cpp:
+        (WebCore::ProcessingInstruction::checkStyleSheet):
+        * editing/markup.cpp:
+        (WebCore::completeURLs):
+        * fileapi/BlobURL.cpp:
+        (WebCore::BlobURL::createBlobURL):
+        * history/HistoryItem.cpp:
+        (WebCore::HistoryItem::url const):
+        (WebCore::HistoryItem::originalURL const):
+        * html/HTMLFrameElementBase.cpp:
+        (WebCore::HTMLFrameElementBase::location const):
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
+        * html/PublicURLManager.cpp:
+        (WebCore::PublicURLManager::stop):
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::InspectorStyleSheet::resourceStyleSheetText const):
+        * inspector/agents/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::getCookies):
+        (WebCore::InspectorPageAgent::deleteCookie):
+        (WebCore::InspectorPageAgent::getResourceContent):
+        (WebCore::InspectorPageAgent::searchInResource):
+        * inspector/agents/page/PageDebuggerAgent.cpp:
+        (WebCore::PageDebuggerAgent::sourceMapURLForScript):
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::subresources const):
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::init):
+        (WebCore::FrameLoader::initForSynthesizedDocument):
+        * loader/HistoryController.cpp:
+        (WebCore::HistoryController::pushState):
+        (WebCore::HistoryController::replaceState):
+        * loader/appcache/ApplicationCache.cpp:
+        (WebCore::ApplicationCache::addResource):
+        (WebCore::ApplicationCache::resourceForURL):
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::startLoadingEntry):
+        (WebCore::ApplicationCacheGroup::addEntry):
+        * loader/appcache/ApplicationCacheStorage.cpp:
+        (WebCore::ApplicationCacheStorage::cacheGroupForURL):
+        (WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
+        (WebCore::ApplicationCacheStorage::loadCache):
+        (WebCore::ApplicationCacheStorage::manifestURLs):
+        * loader/archive/cf/LegacyWebArchive.cpp:
+        (WebCore::LegacyWebArchive::create):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::createWindow):
+        * page/PageSerializer.cpp:
+        (WebCore::PageSerializer::urlForBlankFrame):
+        * platform/URL.cpp:
+        (WebCore::blankURL):
+        * platform/URL.h:
+        (): Deleted.
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::load):
+        * platform/network/BlobRegistryImpl.cpp:
+        (WebCore::BlobRegistryImpl::populateBlobsForFileWriting):
+        * platform/network/ResourceRequestBase.h:
+        (WebCore::ResourceRequestBase::decodeBase):
+        * platform/network/ResourceResponseBase.cpp:
+        (WebCore::ResourceResponseBase::sanitizeSuggestedFilename):
+        * platform/network/cf/DNSResolveQueueCFNet.cpp:
+        (WebCore::DNSResolveQueueCFNet::updateIsUsingProxy):
+        * platform/network/cf/ResourceRequest.h:
+        (WebCore::ResourceRequest::ResourceRequest):
+        * platform/network/curl/CookieJarDB.cpp:
+        (WebCore::CookieJarDB::searchCookies):
+        (WebCore::CookieJarDB::setCookie):
+        (WebCore::CookieJarDB::deleteCookie):
+        * platform/network/curl/ResourceRequest.h:
+        (WebCore::ResourceRequest::ResourceRequest):
+        * platform/network/soup/ResourceRequest.h:
+        (WebCore::ResourceRequest::ResourceRequest):
+        * xml/XSLTProcessorLibxslt.cpp:
+        (WebCore::docLoaderFunc):
+
 2018-10-02  Per Arne Vollan  <[email protected]>
 
         [WebVTT] Cue with line setting is not rendered correctly

Modified: trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtils.cpp (236761 => 236762)


--- trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtils.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtils.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -107,7 +107,7 @@
     if (!verifyProtocolHandlerScheme(scheme))
         return Exception { SecurityError };
 
-    NavigatorContentUtils::from(navigator.frame()->page())->client()->registerProtocolHandler(scheme, baseURL, URL(ParsedURLString, url), navigator.frame()->displayStringModifiedByEncoding(title));
+    NavigatorContentUtils::from(navigator.frame()->page())->client()->registerProtocolHandler(scheme, baseURL, URL({ }, url), navigator.frame()->displayStringModifiedByEncoding(title));
     return { };
 }
 
@@ -147,7 +147,7 @@
     if (!verifyProtocolHandlerScheme(scheme))
         return Exception { SecurityError };
 
-    return customHandlersStateString(NavigatorContentUtils::from(navigator.frame()->page())->client()->isProtocolHandlerRegistered(scheme, baseURL, URL(ParsedURLString, url)));
+    return customHandlersStateString(NavigatorContentUtils::from(navigator.frame()->page())->client()->isProtocolHandlerRegistered(scheme, baseURL, URL({ }, url)));
 }
 
 ExceptionOr<void> NavigatorContentUtils::unregisterProtocolHandler(Navigator& navigator, const String& scheme, const String& url)
@@ -163,7 +163,7 @@
     if (!verifyProtocolHandlerScheme(scheme))
         return Exception { SecurityError };
 
-    NavigatorContentUtils::from(navigator.frame()->page())->client()->unregisterProtocolHandler(scheme, baseURL, URL(ParsedURLString, url));
+    NavigatorContentUtils::from(navigator.frame()->page())->client()->unregisterProtocolHandler(scheme, baseURL, URL({ }, url));
     return { };
 }
 

Modified: trunk/Source/WebCore/dom/Document.cpp (236761 => 236762)


--- trunk/Source/WebCore/dom/Document.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/dom/Document.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -3159,7 +3159,7 @@
         // The documentURI attribute is read-only from _javascript_, but writable from Objective C, so we need to retain
         // this fallback behavior. We use a null base URL, since the documentURI attribute is an arbitrary string
         // and DOM 3 Core does not specify how it should be resolved.
-        m_baseURL = URL(ParsedURLString, documentURI());
+        m_baseURL = URL({ }, documentURI());
     }
 
     clearSelectorQueryCache();
@@ -5606,9 +5606,9 @@
     if (!m_frame) {
         // No source for a security context.
         // This can occur via document.implementation.createDocument().
-        setCookieURL(URL(ParsedURLString, emptyString()));
+        setCookieURL(URL({ }, emptyString()));
         setSecurityOriginPolicy(SecurityOriginPolicy::create(SecurityOrigin::createUnique()));
-        setContentSecurityPolicy(std::make_unique<ContentSecurityPolicy>(URL { ParsedURLString, emptyString() }, *this));
+        setContentSecurityPolicy(std::make_unique<ContentSecurityPolicy>(URL { { }, emptyString() }, *this));
         return;
     }
 

Modified: trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp (236761 => 236762)


--- trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -140,7 +140,7 @@
     
     if (!owningPage->captionUserPreferencesStyleSheet().isEmpty()) {
         // Identify our override style sheet with a unique URL - a new scheme and a UUID.
-        static NeverDestroyed<URL> captionsStyleSheetURL(ParsedURLString, "user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23");
+        static NeverDestroyed<URL> captionsStyleSheetURL(URL(), "user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23");
 
         auto sheet = createExtensionsStyleSheet(const_cast<Document&>(m_document), captionsStyleSheetURL, owningPage->captionUserPreferencesStyleSheet(), UserStyleAuthorLevel);
 

Modified: trunk/Source/WebCore/dom/ProcessingInstruction.cpp (236761 => 236762)


--- trunk/Source/WebCore/dom/ProcessingInstruction.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/dom/ProcessingInstruction.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -122,7 +122,7 @@
             // We need to make a synthetic XSLStyleSheet that is embedded.  It needs to be able
             // to kick off import/include loads that can hang off some parent sheet.
             if (m_isXSL) {
-                URL finalURL(ParsedURLString, m_localHref);
+                URL finalURL({ }, m_localHref);
                 m_sheet = XSLStyleSheet::createEmbedded(this, finalURL);
                 m_loading = false;
                 document().scheduleToApplyXSLTransforms();

Modified: trunk/Source/WebCore/editing/markup.cpp (236761 => 236762)


--- trunk/Source/WebCore/editing/markup.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/editing/markup.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -113,7 +113,7 @@
 {
     Vector<AttributeChange> changes;
 
-    URL parsedBaseURL(ParsedURLString, baseURL);
+    URL parsedBaseURL({ }, baseURL);
 
     for (auto& element : descendantsOfType<Element>(*fragment)) {
         if (!element.hasAttributes())

Modified: trunk/Source/WebCore/fileapi/BlobURL.cpp (236761 => 236762)


--- trunk/Source/WebCore/fileapi/BlobURL.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/fileapi/BlobURL.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -73,7 +73,7 @@
 {
     ASSERT(!originString.isEmpty());
     String urlString = "blob:" + originString + '/' + createCanonicalUUIDString();
-    return URL(ParsedURLString, urlString);
+    return URL({ }, urlString);
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/history/HistoryItem.cpp (236761 => 236762)


--- trunk/Source/WebCore/history/HistoryItem.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/history/HistoryItem.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -174,12 +174,12 @@
 
 URL HistoryItem::url() const
 {
-    return URL(ParsedURLString, m_urlString);
+    return URL({ }, m_urlString);
 }
 
 URL HistoryItem::originalURL() const
 {
-    return URL(ParsedURLString, m_originalURLString);
+    return URL({ }, m_originalURLString);
 }
 
 const String& HistoryItem::referrer() const

Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.cpp (236761 => 236762)


--- trunk/Source/WebCore/html/HTMLFrameElementBase.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -162,7 +162,7 @@
 URL HTMLFrameElementBase::location() const
 {
     if (hasAttributeWithoutSynchronization(srcdocAttr))
-        return URL(ParsedURLString, "about:srcdoc");
+        return URL({ }, "about:srcdoc");
     return document().completeURL(attributeWithoutSynchronization(srcAttr));
 }
 

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (236761 => 236762)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -7199,7 +7199,7 @@
 
 #ifndef NDEBUG
     // Setting a scriptURL allows the source to be debuggable in the inspector.
-    URL scriptURL = URL(ParsedURLString, "mediaControlsScript"_s);
+    URL scriptURL = URL({ }, "mediaControlsScript"_s);
 #else
     URL scriptURL;
 #endif

Modified: trunk/Source/WebCore/html/PublicURLManager.cpp (236761 => 236762)


--- trunk/Source/WebCore/html/PublicURLManager.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/html/PublicURLManager.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -74,7 +74,7 @@
     m_isStopped = true;
     for (auto& registry : m_registryToURL) {
         for (auto& url : registry.value)
-            registry.key->unregisterURL(URL(ParsedURLString, url));
+            registry.key->unregisterURL(URL({ }, url));
     }
 
     m_registryToURL.clear();

Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (236761 => 236762)


--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1417,7 +1417,7 @@
 
     String error;
     bool base64Encoded;
-    InspectorPageAgent::resourceContent(error, ownerDocument()->frame(), URL(ParsedURLString, m_pageStyleSheet->href()), result, &base64Encoded);
+    InspectorPageAgent::resourceContent(error, ownerDocument()->frame(), URL({ }, m_pageStyleSheet->href()), result, &base64Encoded);
     return error.isEmpty() && !base64Encoded;
 }
 

Modified: trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp (236761 => 236762)


--- trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -439,7 +439,7 @@
 
         for (auto& url : allResourcesURLsForFrame(frame)) {
             Vector<Cookie> docCookiesList;
-            rawCookiesImplemented = getRawCookies(*document, URL(ParsedURLString, url), docCookiesList);
+            rawCookiesImplemented = getRawCookies(*document, URL({ }, url), docCookiesList);
 
             if (!rawCookiesImplemented) {
                 // FIXME: We need duplication checking for the String representation of cookies.
@@ -462,7 +462,7 @@
 
 void InspectorPageAgent::deleteCookie(ErrorString&, const String& cookieName, const String& url)
 {
-    URL parsedURL(ParsedURLString, url);
+    URL parsedURL({ }, url);
     for (Frame* frame = &m_page.mainFrame(); frame; frame = frame->tree().traverseNext()) {
         if (auto* document = frame->document())
             WebCore::deleteCookie(*document, parsedURL, cookieName);
@@ -480,7 +480,7 @@
     if (!frame)
         return;
 
-    resourceContent(errorString, frame, URL(ParsedURLString, url), content, base64Encoded);
+    resourceContent(errorString, frame, URL({ }, url), content, base64Encoded);
 }
 
 void InspectorPageAgent::searchInResource(ErrorString& errorString, const String& frameId, const String& url, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, const String* optionalRequestId, RefPtr<JSON::ArrayOf<Inspector::Protocol::GenericTypes::SearchMatch>>& results)
@@ -505,7 +505,7 @@
     if (!loader)
         return;
 
-    URL kurl(ParsedURLString, url);
+    URL kurl({ }, url);
 
     String content;
     bool success = false;

Modified: trunk/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp (236761 => 236762)


--- trunk/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -83,7 +83,7 @@
     static NeverDestroyed<String> sourceMapHTTPHeaderDeprecated(MAKE_STATIC_STRING_IMPL("X-SourceMap"));
 
     if (!script.url.isEmpty()) {
-        CachedResource* resource = m_pageAgent->cachedResource(&m_page.mainFrame(), URL(ParsedURLString, script.url));
+        CachedResource* resource = m_pageAgent->cachedResource(&m_page.mainFrame(), URL({ }, script.url));
         if (resource) {
             String sourceMapHeader = resource->response().httpHeaderField(sourceMapHTTPHeader);
             if (!sourceMapHeader.isEmpty())

Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/DocumentLoader.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1411,7 +1411,7 @@
 
     Vector<Ref<ArchiveResource>> subresources;
     for (auto& handle : m_cachedResourceLoader->allCachedResources().values()) {
-        if (auto subresource = this->subresource({ ParsedURLString, handle->url() }))
+        if (auto subresource = this->subresource({ { }, handle->url() }))
             subresources.append(subresource.releaseNonNull());
     }
     return subresources;

Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/FrameLoader.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -308,7 +308,7 @@
 void FrameLoader::init()
 {
     // This somewhat odd set of steps gives the frame an initial empty document.
-    setPolicyDocumentLoader(m_client.createDocumentLoader(ResourceRequest(URL(ParsedURLString, emptyString())), SubstituteData()).ptr());
+    setPolicyDocumentLoader(m_client.createDocumentLoader(ResourceRequest(URL({ }, emptyString())), SubstituteData()).ptr());
     setProvisionalDocumentLoader(m_policyDocumentLoader.get());
     m_provisionalDocumentLoader->startLoadingMainResource(ShouldContinue::Yes);
 
@@ -325,7 +325,7 @@
     // FIXME: We need to initialize the document URL to the specified URL. Currently the URL is empty and hence
     // FrameLoader::checkCompleted() will overwrite the URL of the document to be activeDocumentLoader()->documentURL().
 
-    auto loader = m_client.createDocumentLoader(ResourceRequest(URL(ParsedURLString, emptyString())), SubstituteData());
+    auto loader = m_client.createDocumentLoader(ResourceRequest(URL({ }, emptyString())), SubstituteData());
     loader->attachToFrame(m_frame);
     loader->setResponse(ResourceResponse(URL(), "text/html"_s, 0, String()));
     loader->setCommitted(true);

Modified: trunk/Source/WebCore/loader/HistoryController.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/HistoryController.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/HistoryController.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -876,7 +876,7 @@
     if (m_frame.page()->usesEphemeralSession())
         return;
 
-    addVisitedLink(*page, URL(ParsedURLString, urlString));
+    addVisitedLink(*page, URL({ }, urlString));
     m_frame.loader().client().updateGlobalHistory();
 }
 
@@ -898,7 +898,7 @@
     if (m_frame.page()->usesEphemeralSession())
         return;
 
-    addVisitedLink(*m_frame.page(), URL(ParsedURLString, urlString));
+    addVisitedLink(*m_frame.page(), URL({ }, urlString));
     m_frame.loader().client().updateGlobalHistory();
 }
 

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCache.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -76,7 +76,7 @@
 {
     auto& url = ""
 
-    ASSERT(!URL(ParsedURLString, url).hasFragmentIdentifier());
+    ASSERT(!URL({ }, url).hasFragmentIdentifier());
     ASSERT(!m_resources.contains(url));
 
     if (m_storageID) {
@@ -94,7 +94,7 @@
 
 ApplicationCacheResource* ApplicationCache::resourceForURL(const String& url)
 {
-    ASSERT(!URL(ParsedURLString, url).hasFragmentIdentifier());
+    ASSERT(!URL({ }, url).hasFragmentIdentifier());
     return m_resources.get(url);
 }    
 

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -896,7 +896,7 @@
     ASSERT(!m_manifestLoader);
     ASSERT(!m_entryLoader);
 
-    auto request = createRequest(URL { ParsedURLString, firstPendingEntryURL }, m_newestCache ? m_newestCache->resourceForURL(firstPendingEntryURL) : nullptr);
+    auto request = createRequest(URL { { }, firstPendingEntryURL }, m_newestCache ? m_newestCache->resourceForURL(firstPendingEntryURL) : nullptr);
 
     m_currentResourceIdentifier = m_frame->page()->progress().createUniqueIdentifier();
     InspectorInstrumentation::willSendRequest(m_frame, m_currentResourceIdentifier, m_frame->loader().documentLoader(), request, ResourceResponse { });
@@ -937,7 +937,7 @@
 void ApplicationCacheGroup::addEntry(const String& url, unsigned type)
 {
     ASSERT(m_cacheBeingUpdated);
-    ASSERT(!URL(ParsedURLString, url).hasFragmentIdentifier());
+    ASSERT(!URL({ }, url).hasFragmentIdentifier());
 
     // Don't add the URL if we already have an master resource in the cache
     // (i.e., the main resource finished loading before the manifest).

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -218,7 +218,7 @@
     
     int result;
     while ((result = statement.step()) == SQLITE_ROW) {
-        URL manifestURL = URL(ParsedURLString, statement.getColumnText(1));
+        URL manifestURL = URL({ }, statement.getColumnText(1));
 
         if (m_cachesInMemory.contains(manifestURL))
             continue;
@@ -285,7 +285,7 @@
     
     int result;
     while ((result = statement.step()) == SQLITE_ROW) {
-        URL manifestURL = URL(ParsedURLString, statement.getColumnText(1));
+        URL manifestURL = URL({ }, statement.getColumnText(1));
 
         if (m_cachesInMemory.contains(manifestURL))
             continue;
@@ -1109,7 +1109,7 @@
 
     int result;
     while ((result = cacheStatement.step()) == SQLITE_ROW) {
-        URL url(ParsedURLString, cacheStatement.getColumnText(0));
+        URL url({ }, cacheStatement.getColumnText(0));
         
         int httpStatusCode = cacheStatement.getColumnInt(1);
 
@@ -1162,7 +1162,7 @@
     
     Vector<URL> whitelist;
     while ((result = whitelistStatement.step()) == SQLITE_ROW) 
-        whitelist.append(URL(ParsedURLString, whitelistStatement.getColumnText(0)));
+        whitelist.append(URL({ }, whitelistStatement.getColumnText(0)));
 
     if (result != SQLITE_DONE)
         LOG_ERROR("Could not load cache online whitelist, error \"%s\"", m_database.lastErrorMsg());
@@ -1192,7 +1192,7 @@
     
     FallbackURLVector fallbackURLs;
     while ((result = fallbackStatement.step()) == SQLITE_ROW) 
-        fallbackURLs.append(std::make_pair(URL(ParsedURLString, fallbackStatement.getColumnText(0)), URL(ParsedURLString, fallbackStatement.getColumnText(1))));
+        fallbackURLs.append(std::make_pair(URL({ }, fallbackStatement.getColumnText(0)), URL({ }, fallbackStatement.getColumnText(1))));
 
     if (result != SQLITE_DONE)
         LOG_ERROR("Could not load fallback URLs, error \"%s\"", m_database.lastErrorMsg());
@@ -1323,7 +1323,7 @@
 
     Vector<URL> urls;
     while (selectURLs.step() == SQLITE_ROW)
-        urls.append(URL(ParsedURLString, selectURLs.getColumnText(0)));
+        urls.append(URL({ }, selectURLs.getColumnText(0)));
 
     return WTFMove(urls);
 }

Modified: trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp (236761 => 236762)


--- trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -472,7 +472,7 @@
     // it's possible to have a response without a URL here
     // <rdar://problem/5454935>
     if (responseURL.isNull())
-        responseURL = URL(ParsedURLString, emptyString());
+        responseURL = URL({ }, emptyString());
 
     auto mainResource = ArchiveResource::create(utf8Buffer(markupString), responseURL, response.mimeType(), "UTF-8", frame.tree().uniqueName());
     if (!mainResource)

Modified: trunk/Source/WebCore/page/DOMWindow.cpp (236761 => 236762)


--- trunk/Source/WebCore/page/DOMWindow.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/page/DOMWindow.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -2247,7 +2247,7 @@
     if (!activeDocument)
         return RefPtr<Frame> { nullptr };
 
-    URL completedURL = urlString.isEmpty() ? URL(ParsedURLString, emptyString()) : firstFrame.document()->completeURL(urlString);
+    URL completedURL = urlString.isEmpty() ? URL({ }, emptyString()) : firstFrame.document()->completeURL(urlString);
     if (!completedURL.isEmpty() && !completedURL.isValid())
         return Exception { SyntaxError };
 

Modified: trunk/Source/WebCore/page/PageSerializer.cpp (236761 => 236762)


--- trunk/Source/WebCore/page/PageSerializer.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/page/PageSerializer.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -322,7 +322,7 @@
     if (iter != m_blankFrameURLs.end())
         return iter->value;
     String url = "" + String::number(m_blankFrameCounter++);
-    URL fakeURL(ParsedURLString, url);
+    URL fakeURL({ }, url);
     m_blankFrameURLs.add(frame, fakeURL);
     return fakeURL;
 }

Modified: trunk/Source/WebCore/platform/URL.cpp (236761 => 236762)


--- trunk/Source/WebCore/platform/URL.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/URL.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -88,19 +88,6 @@
     m_queryEnd = 0;
 }
 
-URL::URL(ParsedURLStringTag, const String& url)
-{
-    URLParser parser(url);
-    *this = parser.result();
-
-#if OS(WINDOWS)
-    // FIXME(148598): Work around Windows local file handling bug in CFNetwork
-    ASSERT(isLocalFile() || url == m_string);
-#else
-    ASSERT(url == m_string);
-#endif
-}
-
 URL::URL(const URL& base, const String& relative, const URLTextEncoding* encoding)
 {
     URLParser parser(relative, base, encoding);
@@ -910,7 +897,7 @@
 
 const URL& blankURL()
 {
-    static NeverDestroyed<URL> staticBlankURL(ParsedURLString, "about:blank");
+    static NeverDestroyed<URL> staticBlankURL(URL(), "about:blank");
     return staticBlankURL;
 }
 

Modified: trunk/Source/WebCore/platform/URL.h (236761 => 236762)


--- trunk/Source/WebCore/platform/URL.h	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/URL.h	2018-10-02 20:24:42 UTC (rev 236762)
@@ -55,17 +55,11 @@
 
 struct URLHash;
 
-enum ParsedURLStringTag { ParsedURLString };
-
 class URL {
 public:
     // Generates a URL which contains a null string.
     URL() { invalidate(); }
 
-    // The argument is an absolute URL string. The string is assumed to be output of URL::string() called on a valid
-    // URL object, or indiscernible from such.
-    // It is usually best to avoid repeatedly parsing a string, unless memory saving outweigh the possible slow-downs.
-    WEBCORE_EXPORT URL(ParsedURLStringTag, const String&);
     explicit URL(WTF::HashTableDeletedValueType) : m_string(WTF::HashTableDeletedValue) { }
     bool isHashTableDeletedValue() const { return string().isHashTableDeletedValue(); }
 

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (236761 => 236762)


--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -171,7 +171,7 @@
     setNetworkState(m_preload == MediaPlayer::None ? MediaPlayer::Idle : MediaPlayer::Loading);
     setReadyState(MediaPlayer::HaveNothing);
 
-    m_assetURL = URL(ParsedURLString, url);
+    m_assetURL = URL({ }, url);
     m_requestedOrigin = SecurityOrigin::create(m_assetURL);
 
     // Don't do any more work if the url is empty.

Modified: trunk/Source/WebCore/platform/network/BlobRegistryImpl.cpp (236761 => 236762)


--- trunk/Source/WebCore/platform/network/BlobRegistryImpl.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/BlobRegistryImpl.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -251,7 +251,7 @@
         blobsForWriting.append({ });
         blobsForWriting.last().blobURL = url.isolatedCopy();
 
-        auto* blobData = getBlobDataFromURL({ ParsedURLString, url });
+        auto* blobData = getBlobDataFromURL({ { }, url });
         if (!blobData)
             return false;
 

Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.h (236761 => 236762)


--- trunk/Source/WebCore/platform/network/ResourceRequestBase.h	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.h	2018-10-02 20:24:42 UTC (rev 236762)
@@ -304,7 +304,7 @@
     String firstPartyForCookies;
     if (!decoder.decode(firstPartyForCookies))
         return false;
-    m_firstPartyForCookies = URL(ParsedURLString, firstPartyForCookies);
+    m_firstPartyForCookies = URL({ }, firstPartyForCookies);
 
     if (!decoder.decode(m_httpMethod))
         return false;

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp (236761 => 236762)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -265,7 +265,7 @@
     if (suggestedFilename.isEmpty())
         return suggestedFilename;
 
-    ResourceResponse response(URL(ParsedURLString, "http://example.com/"), String(), -1, String());
+    ResourceResponse response(URL({ }, "http://example.com/"), String(), -1, String());
     response.setHTTPStatusCode(200);
     String escapedSuggestedFilename = String(suggestedFilename).replace('\\', "\\\\").replace('"', "\\\"");
     String value = makeString("attachment; filename=\"", escapedSuggestedFilename, '"');

Modified: trunk/Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.cpp (236761 => 236762)


--- trunk/Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -55,8 +55,8 @@
         return;
     }
 
-    RetainPtr<CFURLRef> httpCFURL = URL(ParsedURLString, "http://example.com/").createCFURL();
-    RetainPtr<CFURLRef> httpsCFURL = URL(ParsedURLString, "https://example.com/").createCFURL();
+    RetainPtr<CFURLRef> httpCFURL = URL({ }, "http://example.com/").createCFURL();
+    RetainPtr<CFURLRef> httpsCFURL = URL({ }, "https://example.com/").createCFURL();
 
     RetainPtr<CFArrayRef> httpProxyArray = adoptCF(CFNetworkCopyProxiesForURL(httpCFURL.get(), proxySettings.get()));
     RetainPtr<CFArrayRef> httpsProxyArray = adoptCF(CFNetworkCopyProxiesForURL(httpsCFURL.get(), proxySettings.get()));

Modified: trunk/Source/WebCore/platform/network/cf/ResourceRequest.h (236761 => 236762)


--- trunk/Source/WebCore/platform/network/cf/ResourceRequest.h	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/cf/ResourceRequest.h	2018-10-02 20:24:42 UTC (rev 236762)
@@ -42,7 +42,7 @@
 class ResourceRequest : public ResourceRequestBase {
 public:
     ResourceRequest(const String& url) 
-        : ResourceRequestBase(URL(ParsedURLString, url), ResourceRequestCachePolicy::UseProtocolCachePolicy)
+        : ResourceRequestBase(URL({ }, url), ResourceRequestCachePolicy::UseProtocolCachePolicy)
     {
     }
 

Modified: trunk/Source/WebCore/platform/network/curl/CookieJarDB.cpp (236761 => 236762)


--- trunk/Source/WebCore/platform/network/curl/CookieJarDB.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/curl/CookieJarDB.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -315,7 +315,7 @@
     if (!isEnabled() || !m_database.isOpen())
         return false;
 
-    URL requestUrlObj(ParsedURLString, requestUrl);
+    URL requestUrlObj({ }, requestUrl);
     String requestHost(requestUrlObj.host().toString().convertToASCIILowercase());
     String requestPath(requestUrlObj.path().convertToASCIILowercase());
 
@@ -454,7 +454,7 @@
     if (url.isEmpty() || cookie.isEmpty())
         return -1;
 
-    URL urlObj(ParsedURLString, url);
+    URL urlObj({ }, url);
     String host(urlObj.host().toString());
     String path(urlObj.path());
 
@@ -488,7 +488,7 @@
     if (urlCopied.startsWith('.'))
         urlCopied.remove(0, 1);
 
-    URL urlObj(ParsedURLString, urlCopied);
+    URL urlObj({ }, urlCopied);
     if (urlObj.isValid()) {
         String hostStr(urlObj.host().toString());
         String pathStr(urlObj.path());

Modified: trunk/Source/WebCore/platform/network/curl/ResourceRequest.h (236761 => 236762)


--- trunk/Source/WebCore/platform/network/curl/ResourceRequest.h	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/curl/ResourceRequest.h	2018-10-02 20:24:42 UTC (rev 236762)
@@ -36,7 +36,7 @@
 class ResourceRequest : public ResourceRequestBase {
 public:
     ResourceRequest(const String& url)
-        : ResourceRequestBase(URL(ParsedURLString, url), ResourceRequestCachePolicy::UseProtocolCachePolicy)
+        : ResourceRequestBase(URL({ }, url), ResourceRequestCachePolicy::UseProtocolCachePolicy)
     {
     }
 

Modified: trunk/Source/WebCore/platform/network/soup/ResourceRequest.h (236761 => 236762)


--- trunk/Source/WebCore/platform/network/soup/ResourceRequest.h	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/platform/network/soup/ResourceRequest.h	2018-10-02 20:24:42 UTC (rev 236762)
@@ -36,7 +36,7 @@
     class ResourceRequest : public ResourceRequestBase {
     public:
         ResourceRequest(const String& url)
-            : ResourceRequestBase(URL(ParsedURLString, url), ResourceRequestCachePolicy::UseProtocolCachePolicy)
+            : ResourceRequestBase(URL({ }, url), ResourceRequestCachePolicy::UseProtocolCachePolicy)
             , m_acceptEncoding(true)
             , m_soupFlags(static_cast<SoupMessageFlags>(0))
             , m_initiatingPageID(0)

Modified: trunk/Source/WebCore/xml/XSLTProcessorLibxslt.cpp (236761 => 236762)


--- trunk/Source/WebCore/xml/XSLTProcessorLibxslt.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebCore/xml/XSLTProcessorLibxslt.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -102,7 +102,7 @@
     case XSLT_LOAD_DOCUMENT: {
         xsltTransformContextPtr context = (xsltTransformContextPtr)ctxt;
         xmlChar* base = xmlNodeGetBase(context->document->doc, context->node);
-        URL url(URL(ParsedURLString, reinterpret_cast<const char*>(base)), reinterpret_cast<const char*>(uri));
+        URL url(URL({ }, reinterpret_cast<const char*>(base)), reinterpret_cast<const char*>(uri));
         xmlFree(base);
         ResourceError error;
         ResourceResponse response;

Modified: trunk/Source/WebKit/ChangeLog (236761 => 236762)


--- trunk/Source/WebKit/ChangeLog	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/ChangeLog	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1,3 +1,53 @@
+2018-10-02  Alex Christensen  <[email protected]>
+
+        Remove ParsedURLString
+        https://bugs.webkit.org/show_bug.cgi?id=190154
+
+        Reviewed by Chris Dumez.
+
+        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
+        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
+        * PluginProcess/PluginControllerProxy.cpp:
+        (WebKit::PluginControllerProxy::streamWillSendRequest):
+        (WebKit::PluginControllerProxy::streamDidReceiveResponse):
+        (WebKit::PluginControllerProxy::manualStreamDidReceiveResponse):
+        * Shared/API/APIUserContentURLPattern.h:
+        (API::UserContentURLPattern::matchesURL const):
+        * Shared/WebBackForwardListItem.cpp:
+        (WebKit::WebBackForwardListItem::itemIsInSameDocument const):
+        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
+        (WebKit::RemoteInspectorProtocolHandler::handleRequest):
+        (WebKit::RemoteInspectorProtocolHandler::targetListChanged):
+        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
+        (WebKit::PluginProcessProxy::openURL):
+        * UIProcess/SuspendedPageProxy.cpp:
+        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::loadFile):
+        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
+        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
+        (WebKit::WebPageProxy::createNewPage):
+        (WebKit::WebPageProxy::processDidTerminate):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::addProcessToOriginCacheSet):
+        (WebKit::WebProcessPool::processForNavigationInternal):
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
+        * UIProcess/mac/WebContextMenuProxyMac.mm:
+        (WebKit::WebContextMenuProxyMac::createShareMenuItem):
+        * WebProcess/InjectedBundle/InjectedBundle.cpp:
+        (WebKit::InjectedBundle::addUserScript):
+        (WebKit::InjectedBundle::addUserStyleSheet):
+        (WebKit::InjectedBundle::removeUserScript):
+        (WebKit::InjectedBundle::removeUserStyleSheet):
+        * WebProcess/Plugins/Plugin.cpp:
+        (WebKit::Plugin::Parameters::decode):
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        (WebKit::WebPlatformStrategies::url):
+        (WebKit::WebPlatformStrategies::readURLFromPasteboard):
+
 2018-10-01  Dean Jackson  <[email protected]>
 
         Remove CSS Animation Triggers

Modified: trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp (236761 => 236762)


--- trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -146,7 +146,7 @@
         return;
     }
 
-    auto blobFiles = filesInBlob({ ParsedURLString, blobURL });
+    auto blobFiles = filesInBlob({ { }, blobURL });
     for (auto& file : blobFiles)
         file->prepareForFileAccess();
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (236761 => 236762)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -550,7 +550,7 @@
 {
     Vector<RefPtr<BlobDataFileReference>> fileReferences;
     for (auto& url : blobURLs)
-        fileReferences.appendVector(NetworkBlobRegistry::singleton().filesInBlob(*this, { ParsedURLString, url }));
+        fileReferences.appendVector(NetworkBlobRegistry::singleton().filesInBlob(*this, { { }, url }));
 
     for (auto& file : fileReferences)
         file->prepareForFileAccess();

Modified: trunk/Source/WebKit/PluginProcess/PluginControllerProxy.cpp (236761 => 236762)


--- trunk/Source/WebKit/PluginProcess/PluginControllerProxy.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/PluginProcess/PluginControllerProxy.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -470,12 +470,12 @@
 
 void PluginControllerProxy::streamWillSendRequest(uint64_t streamID, const String& requestURLString, const String& redirectResponseURLString, uint32_t redirectResponseStatusCode)
 {
-    m_plugin->streamWillSendRequest(streamID, URL(ParsedURLString, requestURLString), URL(ParsedURLString, redirectResponseURLString), redirectResponseStatusCode);
+    m_plugin->streamWillSendRequest(streamID, URL({ }, requestURLString), URL({ }, redirectResponseURLString), redirectResponseStatusCode);
 }
 
 void PluginControllerProxy::streamDidReceiveResponse(uint64_t streamID, const String& responseURLString, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers)
 {
-    m_plugin->streamDidReceiveResponse(streamID, URL(ParsedURLString, responseURLString), streamLength, lastModifiedTime, mimeType, headers, String());
+    m_plugin->streamDidReceiveResponse(streamID, URL({ }, responseURLString), streamLength, lastModifiedTime, mimeType, headers, String());
 }
 
 void PluginControllerProxy::streamDidReceiveData(uint64_t streamID, const IPC::DataReference& data)
@@ -498,7 +498,7 @@
     if (m_pluginCanceledManualStreamLoad)
         return;
 
-    m_plugin->manualStreamDidReceiveResponse(URL(ParsedURLString, responseURLString), streamLength, lastModifiedTime, mimeType, headers, String());
+    m_plugin->manualStreamDidReceiveResponse(URL({ }, responseURLString), streamLength, lastModifiedTime, mimeType, headers, String());
 }
 
 void PluginControllerProxy::manualStreamDidReceiveData(const IPC::DataReference& data)

Modified: trunk/Source/WebKit/Shared/API/APIUserContentURLPattern.h (236761 => 236762)


--- trunk/Source/WebKit/Shared/API/APIUserContentURLPattern.h	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/Shared/API/APIUserContentURLPattern.h	2018-10-02 20:24:42 UTC (rev 236762)
@@ -23,8 +23,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef APIUserContentURLPattern_h
-#define APIUserContentURLPattern_h
+#pragma once
 
 #include "APIObject.h"
 
@@ -43,7 +42,7 @@
     const WTF::String& host() const { return m_pattern.host(); }
     const WTF::String& scheme() const { return m_pattern.scheme(); }
     bool isValid() const { return m_pattern.isValid(); };
-    bool matchesURL(const WTF::String& url) const { return m_pattern.matches(WebCore::URL(WebCore::ParsedURLString, url)); }
+    bool matchesURL(const WTF::String& url) const { return m_pattern.matches(WebCore::URL({ }, url)); }
     bool matchesSubdomains() const { return m_pattern.matchSubdomains(); }
 
     const WTF::String& patternString() const { return m_patternString; }
@@ -60,5 +59,3 @@
 };
 
 }
-
-#endif

Modified: trunk/Source/WebKit/Shared/WebBackForwardListItem.cpp (236761 => 236762)


--- trunk/Source/WebKit/Shared/WebBackForwardListItem.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/Shared/WebBackForwardListItem.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -104,8 +104,8 @@
     if (mainFrameState.stateObjectData || otherMainFrameState.stateObjectData)
         return mainFrameState.documentSequenceNumber == otherMainFrameState.documentSequenceNumber;
 
-    WebCore::URL url = "" mainFrameState.urlString);
-    WebCore::URL otherURL = WebCore::URL(WebCore::ParsedURLString, otherMainFrameState.urlString);
+    WebCore::URL url = "" }, mainFrameState.urlString);
+    WebCore::URL otherURL = WebCore::URL({ }, otherMainFrameState.urlString);
 
     if ((url.hasFragmentIdentifier() || otherURL.hasFragmentIdentifier()) && equalIgnoringFragmentIdentifier(url, otherURL))
         return mainFrameState.documentSequenceNumber == otherMainFrameState.documentSequenceNumber;

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -47,7 +47,7 @@
         if (tokens.size() != 2)
             return;
 
-        URL requestURL = URL(ParsedURLString, page.pageLoadState().url());
+        URL requestURL = URL({ }, page.pageLoadState().url());
         m_inspectorProtocolHandler.inspect(requestURL.hostAndPort(), tokens[0].toUInt64(), tokens[1].toUInt64());
     }
 
@@ -88,7 +88,7 @@
 
 void RemoteInspectorProtocolHandler::handleRequest(WebKitURISchemeRequest* request)
 {
-    URL requestURL = URL(ParsedURLString, webkit_uri_scheme_request_get_uri(request));
+    URL requestURL = URL({ }, webkit_uri_scheme_request_get_uri(request));
     if (!requestURL.port()) {
         GUniquePtr<GError> error(g_error_new_literal(WEBKIT_POLICY_ERROR, WEBKIT_POLICY_ERROR_CANNOT_SHOW_URI, "Cannot show inspector URL: no port provided"));
         webkit_uri_scheme_request_finish_error(request, error.get());
@@ -165,7 +165,7 @@
         if (webkit_web_view_is_loading(webView))
             continue;
 
-        URL webViewURL = URL(ParsedURLString, webkit_web_view_get_uri(webView));
+        URL webViewURL = URL({ }, webkit_web_view_get_uri(webView));
         auto clientForWebView = m_inspectorClients.get(webViewURL.hostAndPort());
         if (!clientForWebView) {
             // This view is not showing a inspector view anymore.

Modified: trunk/Source/WebKit/UIProcess/Plugins/mac/PluginProcessProxyMac.mm (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/Plugins/mac/PluginProcessProxyMac.mm	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/Plugins/mac/PluginProcessProxyMac.mm	2018-10-02 20:24:42 UTC (rev 236762)
@@ -332,7 +332,7 @@
 
     result = true;
     CFURLRef launchedURL;
-    status = LSOpenCFURLRef(URL(ParsedURLString, urlString).createCFURL().get(), &launchedURL);
+    status = LSOpenCFURLRef(URL({ }, urlString).createCFURL().get(), &launchedURL);
 
     if (launchedURL) {
         launchedURLString = URL(launchedURL).string();

Modified: trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -77,7 +77,7 @@
 SuspendedPageProxy::SuspendedPageProxy(WebPageProxy& page, Ref<WebProcessProxy>&& process, WebBackForwardListItem& item)
     : m_page(page)
     , m_process(WTFMove(process))
-    , m_origin(SecurityOriginData::fromURL({ ParsedURLString, item.url() }))
+    , m_origin(SecurityOriginData::fromURL({ { }, item.url() }))
 {
     item.setSuspendedPage(*this);
     m_process->processPool().registerSuspendedPageProxy(*this);

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1032,7 +1032,7 @@
 
     URL resourceDirectoryURL;
     if (resourceDirectoryURLString.isNull())
-        resourceDirectoryURL = URL(ParsedURLString, "file:///"_s);
+        resourceDirectoryURL = URL({ }, "file:///"_s);
     else {
         resourceDirectoryURL = URL(URL(), resourceDirectoryURLString);
         if (!resourceDirectoryURL.isLocalFile())
@@ -4121,7 +4121,7 @@
             sourceFrameInfo = API::FrameInfo::create(originatingFrameInfoData, originatingPageID ? m_process->webPage(originatingPageID) : nullptr);
 
         auto userInitiatedActivity = m_process->userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
-        bool shouldOpenAppLinks = !m_shouldSuppressAppLinksInNextNavigationPolicyDecision && destinationFrameInfo->isMainFrame() && !hostsAreEqual(URL(ParsedURLString, m_mainFrame->url()), request.url()) && navigationActionData.navigationType != WebCore::NavigationType::BackForward;
+        bool shouldOpenAppLinks = !m_shouldSuppressAppLinksInNextNavigationPolicyDecision && destinationFrameInfo->isMainFrame() && !hostsAreEqual(URL({ }, m_mainFrame->url()), request.url()) && navigationActionData.navigationType != WebCore::NavigationType::BackForward;
 
         auto navigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.get(), destinationFrameInfo.ptr(), std::nullopt, WTFMove(request), originalRequest.url(), shouldOpenAppLinks, WTFMove(userInitiatedActivity), mainFrameNavigation);
 
@@ -4178,7 +4178,7 @@
             sourceFrameInfo = API::FrameInfo::create(*frame, frameSecurityOrigin.securityOrigin());
 
         auto userInitiatedActivity = m_process->userInitiatedActivity(navigationActionData.userGestureTokenIdentifier);
-        bool shouldOpenAppLinks = !hostsAreEqual(URL(ParsedURLString, m_mainFrame->url()), request.url());
+        bool shouldOpenAppLinks = !hostsAreEqual(URL({ }, m_mainFrame->url()), request.url());
         auto navigationAction = API::NavigationAction::create(WTFMove(navigationActionData), sourceFrameInfo.get(), nullptr, frameName, WTFMove(request), URL { }, shouldOpenAppLinks, WTFMove(userInitiatedActivity));
 
         m_navigationClient->decidePolicyForNavigationAction(*this, navigationAction.get(), WTFMove(listener), m_process->transformHandlesToObjects(userData.object()).get());
@@ -4332,7 +4332,7 @@
         reply(newPage->pageID(), newPage->creationParameters());
 
         WebsiteDataStore::cloneSessionData(*this, *newPage);
-        newPage->m_shouldSuppressAppLinksInNextNavigationPolicyDecision = hostsAreEqual(URL(ParsedURLString, mainFrameURL), request.url());
+        newPage->m_shouldSuppressAppLinksInNextNavigationPolicyDecision = hostsAreEqual(URL({ }, mainFrameURL), request.url());
     });
 }
     
@@ -5952,7 +5952,7 @@
 
 #if PLATFORM(IOS)
     if (m_process->isUnderMemoryPressure()) {
-        String domain = WebCore::topPrivatelyControlledDomain(WebCore::URL(WebCore::ParsedURLString, currentURL()).host().toString());
+        String domain = WebCore::topPrivatelyControlledDomain(WebCore::URL({ }, currentURL()).host().toString());
         if (!domain.isEmpty())
             logDiagnosticMessageWithEnhancedPrivacy(WebCore::DiagnosticLoggingKeys::domainCausingJetsamKey(), domain, WebCore::ShouldSample::No);
     }

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -2027,7 +2027,7 @@
 
 void WebProcessPool::addProcessToOriginCacheSet(WebPageProxy& page)
 {
-    auto registrableDomain = toRegistrableDomain({ ParsedURLString, page.pageLoadState().url() });
+    auto registrableDomain = toRegistrableDomain({ { }, page.pageLoadState().url() });
     auto result = m_swappedProcessesPerRegistrableDomain.add(registrableDomain, &page.process());
     if (!result.isNewEntry)
         result.iterator->value = &page.process();
@@ -2141,7 +2141,7 @@
         if (isInitialLoadInNewWindowOpenedByDOM && !navigation.requesterOrigin().isEmpty())
             url = "" { URL(), navigation.requesterOrigin().toString() };
         else
-            url = "" { ParsedURLString, page.pageLoadState().url() };
+            url = "" { { }, page.pageLoadState().url() };
         if (!url.isValid() || !targetURL.isValid() || url.isEmpty() || url.isBlankURL() || registrableDomainsAreEqual(url, targetURL)) {
             reason = "Navigation is same-site"_s;
             return page.process();

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -708,7 +708,7 @@
 #if ENABLE(PUBLIC_SUFFIX_LIST)
     if (pages.size() == 1) {
         auto& page = *pages[0];
-        String domain = topPrivatelyControlledDomain(WebCore::URL(WebCore::ParsedURLString, page.currentURL()).host().toString());
+        String domain = topPrivatelyControlledDomain(WebCore::URL({ }, page.currentURL()).host().toString());
         if (!domain.isEmpty())
             page.logDiagnosticMessageWithEnhancedPrivacy(WebCore::DiagnosticLoggingKeys::domainCausingCrashKey(), domain, WebCore::ShouldSample::No);
     }

Modified: trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm (236761 => 236762)


--- trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm	2018-10-02 20:24:42 UTC (rev 236762)
@@ -270,13 +270,13 @@
     auto items = adoptNS([[NSMutableArray alloc] init]);
 
     if (!hitTestData.absoluteLinkURL.isEmpty()) {
-        auto absoluteLinkURL = URL(ParsedURLString, hitTestData.absoluteLinkURL);
+        auto absoluteLinkURL = URL({ }, hitTestData.absoluteLinkURL);
         if (!absoluteLinkURL.isEmpty())
             [items addObject:(NSURL *)absoluteLinkURL];
     }
 
     if (hitTestData.isDownloadableMedia && !hitTestData.absoluteMediaURL.isEmpty()) {
-        auto downloadableMediaURL = URL(ParsedURLString, hitTestData.absoluteMediaURL);
+        auto downloadableMediaURL = URL({ }, hitTestData.absoluteMediaURL);
         if (!downloadableMediaURL.isEmpty())
             [items addObject:(NSURL *)downloadableMediaURL];
     }

Modified: trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp (236761 => 236762)


--- trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -458,7 +458,6 @@
 
 void InjectedBundle::addUserScript(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, String&& source, String&& url, API::Array* whitelist, API::Array* blacklist, WebCore::UserScriptInjectionTime injectionTime, WebCore::UserContentInjectedFrames injectedFrames)
 {
-    // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
     UserScript userScript { WTFMove(source), URL(URL(), url), whitelist ? whitelist->toStringVector() : Vector<String>(), blacklist ? blacklist->toStringVector() : Vector<String>(), injectionTime, injectedFrames };
 
     pageGroup->userContentController().addUserScript(*scriptWorld, WTFMove(userScript));
@@ -466,7 +465,6 @@
 
 void InjectedBundle::addUserStyleSheet(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& source, const String& url, API::Array* whitelist, API::Array* blacklist, WebCore::UserContentInjectedFrames injectedFrames)
 {
-    // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
     UserStyleSheet userStyleSheet{ source, URL(URL(), url), whitelist ? whitelist->toStringVector() : Vector<String>(), blacklist ? blacklist->toStringVector() : Vector<String>(), injectedFrames, UserStyleUserLevel };
 
     pageGroup->userContentController().addUserStyleSheet(*scriptWorld, WTFMove(userStyleSheet));
@@ -474,13 +472,11 @@
 
 void InjectedBundle::removeUserScript(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& url)
 {
-    // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
     pageGroup->userContentController().removeUserScriptWithURL(*scriptWorld, URL(URL(), url));
 }
 
 void InjectedBundle::removeUserStyleSheet(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& url)
 {
-    // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
     pageGroup->userContentController().removeUserStyleSheetWithURL(*scriptWorld, URL(URL(), url));
 }
 

Modified: trunk/Source/WebKit/WebProcess/Plugins/Plugin.cpp (236761 => 236762)


--- trunk/Source/WebKit/WebProcess/Plugins/Plugin.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/WebProcess/Plugins/Plugin.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -51,8 +51,7 @@
     String urlString;
     if (!decoder.decode(urlString))
         return false;
-    // FIXME: We can't assume that the url passed in here is valid.
-    parameters.url = "" urlString);
+    parameters.url = "" }, urlString);
 
     if (!decoder.decode(parameters.names))
         return false;

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (236761 => 236762)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -239,7 +239,7 @@
 {
     String urlString;
     WebProcess::singleton().parentProcessConnection()->sendSync(Messages::WebPasteboardProxy::GetPasteboardURL(pasteboardName), Messages::WebPasteboardProxy::GetPasteboardURL::Reply(urlString), 0);
-    return URL(ParsedURLString, urlString);
+    return URL({ }, urlString);
 }
 
 long WebPlatformStrategies::addTypes(const Vector<String>& pasteboardTypes, const String& pasteboardName)
@@ -368,7 +368,7 @@
 {
     String urlString;
     WebProcess::singleton().parentProcessConnection()->sendSync(Messages::WebPasteboardProxy::ReadURLFromPasteboard(index, pasteboardName), Messages::WebPasteboardProxy::ReadURLFromPasteboard::Reply(urlString, title), 0);
-    return URL(ParsedURLString, urlString);
+    return URL({ }, urlString);
 }
 
 String WebPlatformStrategies::readStringFromPasteboard(int index, const String& pasteboardType, const String& pasteboardName)

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (236761 => 236762)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1,3 +1,13 @@
+2018-10-02  Alex Christensen  <[email protected]>
+
+        Remove ParsedURLString
+        https://bugs.webkit.org/show_bug.cgi?id=190154
+
+        Reviewed by Chris Dumez.
+
+        * WebView/WebScriptDebugger.mm:
+        (toNSURL):
+
 2018-10-01  Dean Jackson  <[email protected]>
 
         Remove CSS Animation Triggers

Modified: trunk/Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm (236761 => 236762)


--- trunk/Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebScriptDebugger.mm	2018-10-02 20:24:42 UTC (rev 236762)
@@ -62,7 +62,7 @@
 {
     if (s.isEmpty())
         return nil;
-    return URL(ParsedURLString, s);
+    return URL({ }, s);
 }
 
 static WebFrame *toWebFrame(JSGlobalObject* globalObject)

Modified: trunk/Source/WebKitLegacy/win/ChangeLog (236761 => 236762)


--- trunk/Source/WebKitLegacy/win/ChangeLog	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKitLegacy/win/ChangeLog	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1,3 +1,15 @@
+2018-10-02  Alex Christensen  <[email protected]>
+
+        Remove ParsedURLString
+        https://bugs.webkit.org/show_bug.cgi?id=190154
+
+        Reviewed by Chris Dumez.
+
+        * WebDownloadCurl.cpp:
+        (WebDownload::initWithRequest):
+        * WebURLResponse.cpp:
+        (WebURLResponse::createInstance):
+
 2018-09-28  Chris Dumez  <[email protected]>
 
         Drop support for cross-origin-window-policy header

Modified: trunk/Source/WebKitLegacy/win/WebDownloadCurl.cpp (236761 => 236762)


--- trunk/Source/WebKitLegacy/win/WebDownloadCurl.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKitLegacy/win/WebDownloadCurl.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -97,7 +97,7 @@
         return E_FAIL;
 
     ResourceRequest resourceRequest;
-    resourceRequest.setURL(URL(ParsedURLString, String(url)));
+    resourceRequest.setURL(URL({ }, String(url)));
 
     const HTTPHeaderMap& headerMap = webRequest->httpHeaderFields();
     for (HTTPHeaderMap::const_iterator it = headerMap.begin(); it != headerMap.end(); ++it)

Modified: trunk/Source/WebKitLegacy/win/WebURLResponse.cpp (236761 => 236762)


--- trunk/Source/WebKitLegacy/win/WebURLResponse.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Source/WebKitLegacy/win/WebURLResponse.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -227,7 +227,7 @@
 {
     WebURLResponse* instance = new WebURLResponse();
     // fake an http response - so it has the IWebHTTPURLResponse interface
-    instance->m_response = ResourceResponse(WebCore::URL(ParsedURLString, "http://"), String(), 0, String());
+    instance->m_response = ResourceResponse(WebCore::URL({ }, "http://"), String(), 0, String());
     instance->AddRef();
     return instance;
 }

Modified: trunk/Tools/ChangeLog (236761 => 236762)


--- trunk/Tools/ChangeLog	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Tools/ChangeLog	2018-10-02 20:24:42 UTC (rev 236762)
@@ -1,3 +1,18 @@
+2018-10-02  Alex Christensen  <[email protected]>
+
+        Remove ParsedURLString
+        https://bugs.webkit.org/show_bug.cgi?id=190154
+
+        Reviewed by Chris Dumez.
+
+        * TestWebKitAPI/Tests/WebCore/URL.cpp:
+        (TestWebKitAPI::TEST_F):
+        * TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
+        (TestWebKitAPI::assertUserAgentForURLHasChromeBrowserQuirk):
+        (TestWebKitAPI::assertUserAgentForURLHasLinuxPlatformQuirk):
+        (TestWebKitAPI::assertUserAgentForURLHasMacPlatformQuirk):
+        (TestWebKitAPI::TEST):
+
 2018-10-02  Daniel Bates  <[email protected]>
 
         Fix iOS TestWebKitAPI failures following <https://trac.webkit.org/changeset/236619>

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp (236761 => 236762)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -52,7 +52,7 @@
 
 TEST_F(URLTest, URLConstructorConstChar)
 {
-    URL kurl(ParsedURLString, "http://username:[email protected]:8080/index.html?var=val#fragment");
+    URL kurl({ }, "http://username:[email protected]:8080/index.html?var=val#fragment");
 
     EXPECT_FALSE(kurl.isEmpty());
     EXPECT_FALSE(kurl.isNull());
@@ -121,7 +121,7 @@
 
 TEST_F(URLTest, URLDataURIStringSharing)
 {
-    URL baseURL(ParsedURLString, "http://www.webkit.org/");
+    URL baseURL({ }, "http://www.webkit.org/");
     String threeApples = "data:text/plain;charset=utf-8;base64,76O/76O/76O/";
 
     URL url(baseURL, threeApples);

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp (236761 => 236762)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp	2018-10-02 19:42:25 UTC (rev 236761)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp	2018-10-02 20:24:42 UTC (rev 236762)
@@ -34,7 +34,7 @@
 
 static void assertUserAgentForURLHasChromeBrowserQuirk(const char* url)
 {
-    String uaString = standardUserAgentForURL(URL(ParsedURLString, url));
+    String uaString = standardUserAgentForURL(URL({ }, url));
 
     EXPECT_TRUE(uaString.contains("Chrome"));
     EXPECT_TRUE(uaString.contains("Safari"));
@@ -44,7 +44,7 @@
 
 static void assertUserAgentForURLHasLinuxPlatformQuirk(const char* url)
 {
-    String uaString = standardUserAgentForURL(URL(ParsedURLString, url));
+    String uaString = standardUserAgentForURL(URL({ }, url));
 
     EXPECT_TRUE(uaString.contains("Linux"));
     EXPECT_FALSE(uaString.contains("Macintosh"));
@@ -56,7 +56,7 @@
 
 static void assertUserAgentForURLHasMacPlatformQuirk(const char* url)
 {
-    String uaString = standardUserAgentForURL(URL(ParsedURLString, url));
+    String uaString = standardUserAgentForURL(URL({ }, url));
 
     EXPECT_TRUE(uaString.contains("Macintosh"));
     EXPECT_TRUE(uaString.contains("Mac OS X"));
@@ -69,12 +69,12 @@
 TEST(UserAgentTest, Quirks)
 {
     // A site with not quirks should return a null String.
-    String uaString = standardUserAgentForURL(URL(ParsedURLString, "http://www.webkit.org/"));
+    String uaString = standardUserAgentForURL(URL({ }, "http://www.webkit.org/"));
     EXPECT_TRUE(uaString.isNull());
 
 #if !OS(LINUX) || !CPU(X86_64)
     // Google quirk should not affect sites with similar domains.
-    uaString = standardUserAgentForURL(URL(ParsedURLString, "http://www.googleblog.com/"));
+    uaString = standardUserAgentForURL(URL({ }, "http://www.googleblog.com/"));
     EXPECT_FALSE(uaString.contains("Linux x86_64"));
 #endif
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to