Changeset 232198 in webkit


Ignore:
Timestamp:
May 25, 2018, 1:39:37 PM (7 years ago)
Author:
achristensen@apple.com
Message:

URL::host should return a StringView to reduce allocations
https://bugs.webkit.org/show_bug.cgi?id=185986

Reviewed by Geoff Garen.

Source/WebCore:

No change in behaviour. Just fewer allocations.

  • Modules/plugins/YouTubePluginReplacement.cpp:

(WebCore::isYouTubeURL):
(WebCore::processAndCreateYouTubeURL):

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::hostName):
(WebCore::WebSocketHandshake::host const):

  • contentextensions/ContentExtension.cpp:

(WebCore::ContentExtensions::ContentExtension::populateConditionCacheIfNeeded):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAttribute):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaSessionTitle const):
(WebCore::needsSeekingSupportQuirk):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns):
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn):

  • html/ImageDocument.cpp:

(WebCore::ImageDocument::finishedParsing):

  • html/URLUtils.h:

(WebCore::URLUtils<T>::hostname const):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::setFirstPartyForCookies):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::loadLink):

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::primaryDomain):

  • loader/mac/LoaderNSURLExtras.mm:

(suggestedFilenameWithMIMEType):

  • page/Chrome.cpp:

(WebCore::Chrome::mouseDidMoveOverElement):

  • page/Location.cpp:

(WebCore::Location::hostname const):

  • page/Page.cpp:

(WebCore::Page::mainFrameLoadStarted):

  • page/PerformanceMonitor.cpp:

(WebCore::reportPageOverPostLoadResourceThreshold):

  • page/SecurityOrigin.cpp:

(WebCore::isLoopbackIPAddress):
(WebCore::shouldTreatAsPotentiallyTrustworthy):
(WebCore::SecurityOrigin::isLocalHostOrLoopbackIPAddress):

  • page/SecurityOrigin.h:
  • page/SecurityOriginData.h:

(WebCore::SecurityOriginData::fromURL):

  • page/UserContentURLPattern.cpp:

(WebCore::UserContentURLPattern::matchesHost const):

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::hostMatches const):

  • platform/PublicSuffix.h:
  • platform/URL.cpp:

(WebCore::URL::host const):
(WebCore::URL::hostAndPort const):
(WebCore::URL::isMatchingDomain const):

  • platform/URL.h:
  • platform/mac/SSLKeyGeneratorMac.mm:

(WebCore::signedPublicKeyAndChallengeString):

  • platform/network/ResourceRequestBase.h:

(WebCore::registrableDomainsAreEqual):

  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::getPartitioningDomain):

  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::SocketStreamHandleImpl::createStreams):

  • workers/WorkerLocation.cpp:

(WebCore::WorkerLocation::hostname const):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::fetchDiskCacheEntries):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::areFrameAncestorsSameSite):

  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::overrideSystemProxies):

  • Shared/API/APIURL.h:

(API::URL::host const):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::pluginDidReceiveUserInteraction):

  • WebProcess/Plugins/WebPluginInfoProvider.cpp:

(WebKit::WebPluginInfoProvider::populatePluginCache):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::needsHiddenContentEditableQuirk):
(WebKit::needsPlainTextQuirk):
(WebKit::WebPage::determinePrimarySnapshottedPlugIn):

Source/WebKitLegacy:

  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::hostForURL):

Tools:

  • TestWebKitAPI/Tests/WebCore/URL.cpp:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::eq):

  • TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm:

(TestWebKitAPI::SSLKeyGeneratorTest::TearDown):

Location:
trunk
Files:
52 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r232194 r232198  
     12018-05-25  Alex Christensen  <achristensen@webkit.org>
     2
     3        URL::host should return a StringView to reduce allocations
     4        https://bugs.webkit.org/show_bug.cgi?id=185986
     5
     6        Reviewed by Geoff Garen.
     7
     8        No change in behaviour.  Just fewer allocations.
     9
     10        * Modules/plugins/YouTubePluginReplacement.cpp:
     11        (WebCore::isYouTubeURL):
     12        (WebCore::processAndCreateYouTubeURL):
     13        * Modules/websockets/WebSocketHandshake.cpp:
     14        (WebCore::hostName):
     15        (WebCore::WebSocketHandshake::host const):
     16        * contentextensions/ContentExtension.cpp:
     17        (WebCore::ContentExtensions::ContentExtension::populateConditionCacheIfNeeded):
     18        * html/HTMLAnchorElement.cpp:
     19        (WebCore::HTMLAnchorElement::parseAttribute):
     20        * html/HTMLMediaElement.cpp:
     21        (WebCore::HTMLMediaElement::mediaSessionTitle const):
     22        (WebCore::needsSeekingSupportQuirk):
     23        * html/HTMLPlugInImageElement.cpp:
     24        (WebCore::HTMLPlugInImageElement::restartSimilarPlugIns):
     25        (WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
     26        (WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn):
     27        * html/ImageDocument.cpp:
     28        (WebCore::ImageDocument::finishedParsing):
     29        * html/URLUtils.h:
     30        (WebCore::URLUtils<T>::hostname const):
     31        * loader/FrameLoader.cpp:
     32        (WebCore::FrameLoader::setFirstPartyForCookies):
     33        * loader/LinkLoader.cpp:
     34        (WebCore::LinkLoader::loadLink):
     35        * loader/ResourceLoadStatistics.cpp:
     36        (WebCore::ResourceLoadStatistics::primaryDomain):
     37        * loader/mac/LoaderNSURLExtras.mm:
     38        (suggestedFilenameWithMIMEType):
     39        * page/Chrome.cpp:
     40        (WebCore::Chrome::mouseDidMoveOverElement):
     41        * page/Location.cpp:
     42        (WebCore::Location::hostname const):
     43        * page/Page.cpp:
     44        (WebCore::Page::mainFrameLoadStarted):
     45        * page/PerformanceMonitor.cpp:
     46        (WebCore::reportPageOverPostLoadResourceThreshold):
     47        * page/SecurityOrigin.cpp:
     48        (WebCore::isLoopbackIPAddress):
     49        (WebCore::shouldTreatAsPotentiallyTrustworthy):
     50        (WebCore::SecurityOrigin::isLocalHostOrLoopbackIPAddress):
     51        * page/SecurityOrigin.h:
     52        * page/SecurityOriginData.h:
     53        (WebCore::SecurityOriginData::fromURL):
     54        * page/UserContentURLPattern.cpp:
     55        (WebCore::UserContentURLPattern::matchesHost const):
     56        * page/csp/ContentSecurityPolicySource.cpp:
     57        (WebCore::ContentSecurityPolicySource::hostMatches const):
     58        * platform/PublicSuffix.h:
     59        * platform/URL.cpp:
     60        (WebCore::URL::host const):
     61        (WebCore::URL::hostAndPort const):
     62        (WebCore::URL::isMatchingDomain const):
     63        * platform/URL.h:
     64        * platform/mac/SSLKeyGeneratorMac.mm:
     65        (WebCore::signedPublicKeyAndChallengeString):
     66        * platform/network/ResourceRequestBase.h:
     67        (WebCore::registrableDomainsAreEqual):
     68        * platform/network/cf/NetworkStorageSessionCFNet.cpp:
     69        (WebCore::getPartitioningDomain):
     70        * platform/network/cf/SocketStreamHandleImplCFNet.cpp:
     71        (WebCore::SocketStreamHandleImpl::createStreams):
     72        * workers/WorkerLocation.cpp:
     73        (WebCore::WorkerLocation::hostname const):
     74        * workers/service/server/SWServer.cpp:
     75        (WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):
     76
    1772018-05-24  Dean Jackson  <dino@apple.com>
    278
  • trunk/Source/WebCore/Modules/plugins/YouTubePluginReplacement.cpp

    r225117 r232198  
    177177static bool isYouTubeURL(const URL& url)
    178178{
    179     String hostName = url.host();
     179    auto hostName = url.host();
    180180    return equalLettersIgnoringASCIICase(hostName, "m.youtube.com")
    181181        || equalLettersIgnoringASCIICase(hostName, "youtu.be")
     
    204204        return URL();
    205205
    206     String hostName = url.host();
     206    auto hostName = url.host();
    207207    bool isYouTubeMobileWebAppURL = equalLettersIgnoringASCIICase(hostName, "m.youtube.com");
    208208    isYouTubeShortenedURL = equalLettersIgnoringASCIICase(hostName, "youtu.be");
  • trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp

    r230875 r232198  
    8383    ASSERT(url.protocolIs("wss") == secure);
    8484    StringBuilder builder;
    85     builder.append(url.host().convertToASCIILowercase());
     85    builder.append(url.host().toString().convertToASCIILowercase());
    8686    if (url.port() && ((!secure && url.port().value() != 80) || (secure && url.port().value() != 443))) {
    8787        builder.append(':');
     
    147147const String WebSocketHandshake::host() const
    148148{
    149     return m_url.host().convertToASCIILowercase();
     149    return m_url.host().toString().convertToASCIILowercase();
    150150}
    151151
  • trunk/Source/WebCore/contentextensions/ContentExtension.cpp

    r230326 r232198  
    123123        DFABytecodeInterpreter interpreter(m_compiledExtension->topURLFiltersBytecode(), m_compiledExtension->topURLFiltersBytecodeLength());
    124124        const uint16_t allLoadTypesAndResourceTypes = LoadTypeMask | ResourceTypeMask;
    125         String string = m_compiledExtension->conditionsApplyOnlyToDomain() ? topURL.host() : topURL.string();
     125        String string = m_compiledExtension->conditionsApplyOnlyToDomain() ? topURL.host().toString() : topURL.string();
    126126        auto topURLActions = interpreter.interpret(string.utf8(), allLoadTypesAndResourceTypes);
    127127       
  • trunk/Source/WebCore/html/HTMLAnchorElement.cpp

    r232194 r232198  
    245245            if (document().isDNSPrefetchEnabled() && document().frame()) {
    246246                if (protocolIsInHTTPFamily(parsedURL) || parsedURL.startsWith("//"))
    247                     document().frame()->loader().client().prefetchDNS(document().completeURL(parsedURL).host());
     247                    document().frame()->loader().client().prefetchDNS(document().completeURL(parsedURL).host().toString());
    248248            }
    249249        }
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r232001 r232198  
    74627462        return title;
    74637463
    7464     title = m_currentSrc.host();
     7464    title = m_currentSrc.host().toString();
    74657465#if PLATFORM(MAC) || PLATFORM(IOS)
    74667466    if (!title.isEmpty())
     
    75257525        return false;
    75267526
    7527     String host = document.topDocument().url().host();
     7527    auto host = document.topDocument().url().host();
    75287528    return equalLettersIgnoringASCIICase(host, "netflix.com") || host.endsWithIgnoringASCIICase(".netflix.com");
    75297529}
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp

    r231292 r232198  
    436436    // may be in different frames, so traverse from the top of the document.
    437437
    438     String plugInOrigin = m_loadedUrl.host();
     438    auto plugInOrigin = m_loadedUrl.host();
    439439    String mimeType = serviceType();
    440440    Vector<Ref<HTMLPlugInImageElement>> similarPlugins;
     
    470470        m_pendingClickEventFromSnapshot = &event;
    471471
    472     String plugInOrigin = m_loadedUrl.host();
     472    auto plugInOrigin = m_loadedUrl.host();
    473473    if (document().page() && !SchemeRegistry::shouldTreatURLSchemeAsLocal(document().page()->mainFrame().document()->baseURL().protocol().toStringWithoutCopying()) && document().page()->settings().autostartOriginPlugInSnapshottingEnabled())
    474         document().page()->plugInClient()->didStartFromOrigin(document().page()->mainFrame().document()->baseURL().host(), plugInOrigin, serviceType(), document().page()->sessionID());
     474        document().page()->plugInClient()->didStartFromOrigin(document().page()->mainFrame().document()->baseURL().host().toString(), plugInOrigin.toString(), serviceType(), document().page()->sessionID());
    475475
    476476    LOG(Plugins, "%p User clicked on snapshotted plug-in. Restart.", this);
     
    676676    }
    677677
    678     if (document().page()->settings().autostartOriginPlugInSnapshottingEnabled() && document().page()->plugInClient() && document().page()->plugInClient()->shouldAutoStartFromOrigin(document().page()->mainFrame().document()->baseURL().host(), url.host(), serviceType())) {
     678    if (document().page()->settings().autostartOriginPlugInSnapshottingEnabled() && document().page()->plugInClient() && document().page()->plugInClient()->shouldAutoStartFromOrigin(document().page()->mainFrame().document()->baseURL().host().toString(), url.host().toString(), serviceType())) {
    679679        LOG(Plugins, "%p Plug-in from (%s, %s) is marked to auto-start, set to play", this, document().page()->mainFrame().document()->baseURL().host().utf8().data(), url.host().utf8().data());
    680680        m_snapshotDecision = NeverSnapshot;
  • trunk/Source/WebCore/html/ImageDocument.cpp

    r231114 r232198  
    169169            String name = decodeURLEscapeSequences(url().lastPathComponent());
    170170            if (name.isEmpty())
    171                 name = url().host();
     171                name = url().host().toString();
    172172            setTitle(imageTitle(name, size));
    173173        }
  • trunk/Source/WebCore/html/URLUtils.h

    r217004 r232198  
    187187String URLUtils<T>::hostname() const
    188188{
    189     return href().host();
     189    return href().host().toString();
    190190}
    191191
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r232147 r232198  
    10771077        frame->document()->setFirstPartyForCookies(url);
    10781078
    1079     String registrableDomain = ResourceRequest::partitionName(url.host());
     1079    String registrableDomain = ResourceRequest::partitionName(url.host().toString());
    10801080    for (Frame* frame = &m_frame; frame; frame = frame->tree().traverseNext(&m_frame)) {
    10811081        if (SecurityPolicy::shouldInheritSecurityOriginFromOwner(frame->document()->url()) || registrableDomainsAreEqual(frame->document()->url(), registrableDomain))
  • trunk/Source/WebCore/loader/LinkLoader.cpp

    r231713 r232198  
    295295        // to complete that as URL <https://bugs.webkit.org/show_bug.cgi?id=48857>.
    296296        if (document.settings().dnsPrefetchingEnabled() && href.isValid() && !href.isEmpty() && document.frame())
    297             document.frame()->loader().client().prefetchDNS(href.host());
     297            document.frame()->loader().client().prefetchDNS(href.host().toString());
    298298    }
    299299
  • trunk/Source/WebCore/loader/ResourceLoadStatistics.cpp

    r229919 r232198  
    334334String ResourceLoadStatistics::primaryDomain(const URL& url)
    335335{
    336     return primaryDomain(url.host());
     336    return primaryDomain(url.host().toString());
    337337}
    338338
  • trunk/Source/WebCore/loader/mac/LoaderNSURLExtras.mm

    r225087 r232198  
    4949    if ([filename length] == 0 || [lastPathComponent isEqualToString:@"/"]) {
    5050        // lastPathComponent is no good, try the host.
    51         NSString *host = URL(url).host();
     51        NSString *host = URL(url).host().toString();
    5252        filename = filenameByFixingIllegalCharacters(host);
    5353        if ([filename length] == 0) {
  • trunk/Source/WebCore/page/Chrome.cpp

    r231779 r232198  
    325325{
    326326    if (result.innerNode() && result.innerNode()->document().isDNSPrefetchEnabled())
    327         m_page.mainFrame().loader().client().prefetchDNS(result.absoluteLinkURL().host());
     327        m_page.mainFrame().loader().client().prefetchDNS(result.absoluteLinkURL().host().toString());
    328328    m_client.mouseDidMoveOverElement(result, modifierFlags);
    329329
  • trunk/Source/WebCore/page/Location.cpp

    r230864 r232198  
    9595        return String();
    9696
    97     return url().host();
     97    return url().host().toString();
    9898}
    9999
  • trunk/Source/WebCore/page/Page.cpp

    r231798 r232198  
    21052105    String domain;
    21062106#if ENABLE(PUBLIC_SUFFIX_LIST)
    2107     domain = topPrivatelyControlledDomain(destinationURL.host());
     2107    domain = topPrivatelyControlledDomain(destinationURL.host().toString());
    21082108#else
    21092109    UNUSED_PARAM(destinationURL);
  • trunk/Source/WebCore/page/PerformanceMonitor.cpp

    r230211 r232198  
    149149        return;
    150150
    151     String domain = topPrivatelyControlledDomain(document->url().host());
     151    String domain = topPrivatelyControlledDomain(document->url().host().toString());
    152152    if (domain.isEmpty())
    153153        return;
  • trunk/Source/WebCore/page/SecurityOrigin.cpp

    r230205 r232198  
    100100}
    101101
    102 static bool isLoopbackIPAddress(const String& host)
     102static bool isLoopbackIPAddress(StringView host)
    103103{
    104104    // The IPv6 loopback address is 0:0:0:0:0:0:0:1, which compresses to ::1.
     
    138138bool shouldTreatAsPotentiallyTrustworthy(const URL& url)
    139139{
    140     return shouldTreatAsPotentiallyTrustworthy(url.protocol().toStringWithoutCopying(), url.host());
     140    return shouldTreatAsPotentiallyTrustworthy(url.protocol().toStringWithoutCopying(), url.host().toStringWithoutCopying());
    141141}
    142142
     
    549549}
    550550
    551 bool SecurityOrigin::isLocalHostOrLoopbackIPAddress(const String& host)
     551bool SecurityOrigin::isLocalHostOrLoopbackIPAddress(StringView host)
    552552{
    553553    if (isLoopbackIPAddress(host))
  • trunk/Source/WebCore/page/SecurityOrigin.h

    r230541 r232198  
    203203    bool isPotentiallyTrustworthy() const { return m_isPotentiallyTrustworthy; }
    204204
    205     static bool isLocalHostOrLoopbackIPAddress(const String& host);
     205    static bool isLocalHostOrLoopbackIPAddress(StringView);
    206206
    207207    const SecurityOriginData& data() const { return m_data; }
  • trunk/Source/WebCore/page/SecurityOriginData.h

    r229979 r232198  
    5151        return SecurityOriginData {
    5252            url.protocol().isNull() ? emptyString() : url.protocol().toString().convertToASCIILowercase(),
    53             url.host().isNull() ? emptyString() : url.host().convertToASCIILowercase(),
     53            url.host().isNull() ? emptyString() : url.host().toString().convertToASCIILowercase(),
    5454            url.port()
    5555        };
  • trunk/Source/WebCore/page/UserContentURLPattern.cpp

    r225117 r232198  
    126126bool UserContentURLPattern::matchesHost(const URL& test) const
    127127{
    128     const String& host = test.host();
     128    auto host = test.host();
    129129    if (equalIgnoringASCIICase(host, m_host))
    130130        return true;
  • trunk/Source/WebCore/page/csp/ContentSecurityPolicySource.cpp

    r231476 r232198  
    6565bool ContentSecurityPolicySource::hostMatches(const URL& url) const
    6666{
    67     const String& host = url.host();
    68     return equalIgnoringASCIICase(host, m_host) || (m_hostHasWildcard && host.endsWithIgnoringASCIICase("." + m_host));
     67    auto host = url.host();
     68    return equalIgnoringASCIICase(host, m_host) || (m_hostHasWildcard && host.endsWithIgnoringASCIICase(makeString(".", m_host)));
    6969
    7070}
  • trunk/Source/WebCore/platform/PublicSuffix.h

    r232001 r232198  
    2424 */
    2525
    26 #ifndef PublicSuffix_h
    27 #define PublicSuffix_h
     26#pragma once
    2827
    2928#include <wtf/text/WTFString.h>
     
    4039
    4140#endif // ENABLE(PUBLIC_SUFFIX_LIST)
    42 
    43 #endif // PublicSuffix_h
  • trunk/Source/WebCore/platform/URL.cpp

    r231110 r232198  
    156156}
    157157
    158 String URL::host() const
     158StringView URL::host() const
    159159{
    160160    unsigned start = hostStart();
    161     return m_string.substring(start, m_hostEnd - start);
     161    return StringView(m_string).substring(start, m_hostEnd - start);
    162162}
    163163
     
    181181{
    182182    if (auto port = this->port())
    183         return host() + ':' + String::number(port.value());
    184     return host();
     183        return makeString(host(), ':', String::number(port.value()));
     184    return host().toString();
    185185}
    186186
     
    797797        return false;
    798798
    799     return host.length() == domain.length() || host.characterAt(host.length() - domain.length() - 1) == '.';
     799    return host.length() == domain.length() || host[host.length() - domain.length() - 1] == '.';
    800800}
    801801
  • trunk/Source/WebCore/platform/URL.h

    r229540 r232198  
    105105
    106106    WEBCORE_EXPORT StringView protocol() const;
    107     WEBCORE_EXPORT String host() const;
     107    WEBCORE_EXPORT StringView host() const;
    108108    WEBCORE_EXPORT std::optional<uint16_t> port() const;
    109109    WEBCORE_EXPORT String hostAndPort() const;
  • trunk/Source/WebCore/platform/UserAgentQuirks.cpp

    r231800 r232198  
    3737static bool isGoogle(const URL& url)
    3838{
    39     String baseDomain = topPrivatelyControlledDomain(url.host());
     39    String baseDomain = topPrivatelyControlledDomain(url.host().toString());
    4040
    4141    // Our Google UA is *very* complicated to get right. Read
     
    6161static bool urlRequiresChromeBrowser(const URL& url)
    6262{
    63     String baseDomain = topPrivatelyControlledDomain(url.host());
     63    String baseDomain = topPrivatelyControlledDomain(url.host().toString());
    6464
    6565    // Needed for fonts on many sites to work with WebKit.
     
    7979static bool urlRequiresMacintoshPlatform(const URL& url)
    8080{
    81     String domain = url.host();
     81    String domain = url.host().toString();
    8282    String baseDomain = topPrivatelyControlledDomain(domain);
    8383
  • trunk/Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm

    r230225 r232198  
    247247    auto challenge = challengeString.isAllASCII() ? challengeString.ascii() : "";
    248248
    249     return signedPublicKeyAndChallengeString(keySize, challenge, keygenKeychainItemName(url.host()));
     249    return signedPublicKeyAndChallengeString(keySize, challenge, keygenKeychainItemName(url.host().toString()));
    250250}
    251251
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r232090 r232198  
    256256inline bool registrableDomainsAreEqual(const URL& a, const URL& b)
    257257{
    258     return ResourceRequestBase::partitionName(a.host()) == ResourceRequestBase::partitionName(b.host());
     258    return ResourceRequestBase::partitionName(a.host().toString()) == ResourceRequestBase::partitionName(b.host().toString());
    259259}
    260260inline bool registrableDomainsAreEqual(const URL& a, const String& registrableDomain)
    261261{
    262     return ResourceRequestBase::partitionName(a.host()) == registrableDomain;
     262    return ResourceRequestBase::partitionName(a.host().toString()) == registrableDomain;
    263263}
    264264
  • trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp

    r229978 r232198  
    199199{
    200200#if ENABLE(PUBLIC_SUFFIX_LIST)
    201     auto domain = topPrivatelyControlledDomain(url.host());
     201    auto domain = topPrivatelyControlledDomain(url.host().toString());
    202202    if (domain.isEmpty())
    203         domain = url.host();
     203        domain = url.host().toString();
    204204#else
    205     auto domain = url.host();
     205    auto domain = url.host().toString();
    206206#endif
    207207    return domain;
  • trunk/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp

    r231319 r232198  
    313313        return;
    314314
    315     RetainPtr<CFStringRef> host = m_url.host().createCFString();
     315    RetainPtr<CFStringRef> host = m_url.host().toString().createCFString();
    316316
    317317    // Creating streams to final destination, not to proxy.
  • trunk/Source/WebCore/platform/network/curl/CookieJarDB.cpp

    r231862 r232198  
    246246
    247247    URL requestUrlObj(ParsedURLString, requestUrl);
    248     String requestHost(requestUrlObj.host().convertToASCIILowercase());
     248    String requestHost(requestUrlObj.host().toString().convertToASCIILowercase());
    249249    String requestPath(requestUrlObj.path().convertToASCIILowercase());
    250250
     
    383383
    384384    URL urlObj(ParsedURLString, url);
    385     String host(urlObj.host());
     385    String host(urlObj.host().toString());
    386386    String path(urlObj.path());
    387387
     
    418418    URL urlObj(ParsedURLString, urlCopied);
    419419    if (urlObj.isValid()) {
    420         String hostStr(urlObj.host());
     420        String hostStr(urlObj.host().toString());
    421421        String pathStr(urlObj.path());
    422422        int ret = deleteCookieInternal(name, hostStr, pathStr);
  • trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp

    r230885 r232198  
    278278        return std::nullopt;
    279279
    280     auto it = clientCertificates().find(requestURL.host());
     280    auto it = clientCertificates().find(requestURL.host().toString());
    281281    if (it != clientCertificates().end() && it->value.contains(certificate))
    282282        return std::nullopt;
  • trunk/Source/WebCore/platform/win/PasteboardWin.cpp

    r229503 r232198  
    370370        title = url.lastPathComponent();
    371371        if (title.isEmpty())
    372             title = url.host();
     372            title = url.host().toString();
    373373    }
    374374
     
    708708        title = pasteboardURL.url.lastPathComponent();
    709709        if (title.isEmpty())
    710             title = pasteboardURL.url.host();
     710            title = pasteboardURL.url.host().toString();
    711711    }
    712712
  • trunk/Source/WebCore/workers/WorkerLocation.cpp

    r230009 r232198  
    4949String WorkerLocation::hostname() const
    5050{
    51     return m_url.host();
     51    return m_url.host().toString();
    5252}
    5353
  • trunk/Source/WebCore/workers/service/server/SWServer.cpp

    r230500 r232198  
    867867    for (auto& key : m_registrations.keys()) {
    868868        originsWithRegistrations.add(key.topOrigin());
    869         originsWithRegistrations.add(SecurityOriginData { key.scope().protocol().toString(), key.scope().host(), key.scope().port() });
     869        originsWithRegistrations.add(SecurityOriginData { key.scope().protocol().toString(), key.scope().host().toString(), key.scope().port() });
    870870    }
    871871
  • trunk/Source/WebKit/ChangeLog

    r232196 r232198  
     12018-05-25  Alex Christensen  <achristensen@webkit.org>
     2
     3        URL::host should return a StringView to reduce allocations
     4        https://bugs.webkit.org/show_bug.cgi?id=185986
     5
     6        Reviewed by Geoff Garen.
     7
     8        * NetworkProcess/NetworkProcess.cpp:
     9        (WebKit::fetchDiskCacheEntries):
     10        * NetworkProcess/NetworkResourceLoader.cpp:
     11        (WebKit::areFrameAncestorsSameSite):
     12        * NetworkProcess/mac/NetworkProcessMac.mm:
     13        (WebKit::overrideSystemProxies):
     14        * Shared/API/APIURL.h:
     15        (API::URL::host const):
     16        * UIProcess/Automation/WebAutomationSession.cpp:
     17        (WebKit::WebAutomationSession::addSingleCookie):
     18        (WebKit::WebAutomationSession::deleteAllCookies):
     19        * UIProcess/WebProcessProxy.cpp:
     20        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
     21        * WebProcess/Plugins/PluginView.cpp:
     22        (WebKit::PluginView::pluginDidReceiveUserInteraction):
     23        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
     24        (WebKit::WebPluginInfoProvider::populatePluginCache):
     25        * WebProcess/WebPage/WebPage.cpp:
     26        (WebKit::needsHiddenContentEditableQuirk):
     27        (WebKit::needsPlainTextQuirk):
     28        (WebKit::WebPage::determinePrimarySnapshottedPlugIn):
     29
    1302018-05-25  Adrian Perez de Castro  <aperez@igalia.com>
    231
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r232176 r232198  
    478478
    479479            auto url = traversalEntry->entry.response().url();
    480             auto result = originsAndSizes.add({url.protocol().toString(), url.host(), url.port()}, 0);
     480            auto result = originsAndSizes.add({url.protocol().toString(), url.host().toString(), url.port()}, 0);
    481481
    482482            if (fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes))
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r232163 r232198  
    365365{
    366366#if ENABLE(PUBLIC_SUFFIX_LIST)
    367     auto responsePartition = ResourceRequest::partitionName(response.url().host());
     367    auto responsePartition = ResourceRequest::partitionName(response.url().host().toString());
    368368    return frameAncestorOrigins.findMatching([&](const auto& item) {
    369369        return item->isUnique() || ResourceRequest::partitionName(item->host()) != responsePartition;
  • trunk/Source/WebKit/NetworkProcess/mac/NetworkProcessMac.mm

    r231239 r232198  
    7373        URL httpProxyURL(URL(), httpProxy);
    7474        if (httpProxyURL.isValid()) {
    75             [proxySettings setObject:nsStringFromWebCoreString(httpProxyURL.host()) forKey:(NSString *)kCFNetworkProxiesHTTPProxy];
     75            [proxySettings setObject:nsStringFromWebCoreString(httpProxyURL.host().toString()) forKey:(NSString *)kCFNetworkProxiesHTTPProxy];
    7676            if (httpProxyURL.port()) {
    7777                NSNumber *port = [NSNumber numberWithInt:httpProxyURL.port().value()];
     
    8787        if (httpsProxyURL.isValid()) {
    8888#if !ENABLE(MINIMAL_SIMULATOR)
    89             [proxySettings setObject:nsStringFromWebCoreString(httpsProxyURL.host()) forKey:(NSString *)kCFNetworkProxiesHTTPSProxy];
     89            [proxySettings setObject:nsStringFromWebCoreString(httpsProxyURL.host().toString()) forKey:(NSString *)kCFNetworkProxiesHTTPSProxy];
    9090            if (httpsProxyURL.port()) {
    9191                NSNumber *port = [NSNumber numberWithInt:httpsProxyURL.port().value()];
  • trunk/Source/WebKit/Shared/API/APIURL.h

    r207769 r232198  
    6565    {
    6666        parseURLIfNecessary();
    67         return m_parsedURL->isValid() ? m_parsedURL->host() : WTF::String();
     67        return m_parsedURL->isValid() ? m_parsedURL->host().toString() : WTF::String();
    6868    }
    6969
  • trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp

    r232150 r232198  
    13181318    // Inherit the domain/host from the main frame's URL if it is not explicitly set.
    13191319    if (domain.isEmpty())
    1320         domain = activeURL.host();
     1320        domain = activeURL.host().toString();
    13211321
    13221322    cookie.domain = domainByAddingDotPrefixIfNeeded(domain);
     
    13621362
    13631363    WebCookieManagerProxy* cookieManager = m_processPool->supplement<WebCookieManagerProxy>();
    1364     cookieManager->deleteCookiesForHostname(page->websiteDataStore().sessionID(), domainByAddingDotPrefixIfNeeded(activeURL.host()));
     1364    cookieManager->deleteCookiesForHostname(page->websiteDataStore().sessionID(), domainByAddingDotPrefixIfNeeded(activeURL.host().toString()));
    13651365}
    13661366
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r232165 r232198  
    58005800#if PLATFORM(IOS)
    58015801    if (m_process->isUnderMemoryPressure()) {
    5802         String domain = WebCore::topPrivatelyControlledDomain(WebCore::URL(WebCore::ParsedURLString, currentURL()).host());
     5802        String domain = WebCore::topPrivatelyControlledDomain(WebCore::URL(WebCore::ParsedURLString, currentURL()).host().toString());
    58035803        if (!domain.isEmpty())
    58045804            logDiagnosticMessageWithEnhancedPrivacy(WebCore::DiagnosticLoggingKeys::domainCausingJetsamKey(), domain, WebCore::ShouldSample::No);
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp

    r231931 r232198  
    677677    if (pages.size() == 1) {
    678678        auto& page = *pages[0];
    679         String domain = topPrivatelyControlledDomain(WebCore::URL(WebCore::ParsedURLString, page.currentURL()).host());
     679        String domain = topPrivatelyControlledDomain(WebCore::URL(WebCore::ParsedURLString, page.currentURL()).host().toString());
    680680        if (!domain.isEmpty())
    681681            page.logDiagnosticMessageWithEnhancedPrivacy(WebCore::DiagnosticLoggingKeys::domainCausingCrashKey(), domain, WebCore::ShouldSample::No);
  • trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp

    r231963 r232198  
    18321832
    18331833    HTMLPlugInImageElement& plugInImageElement = downcast<HTMLPlugInImageElement>(*m_pluginElement);
    1834     String pageOrigin = plugInImageElement.document().page()->mainFrame().document()->baseURL().host();
    1835     String pluginOrigin = plugInImageElement.loadedUrl().host();
     1834    String pageOrigin = plugInImageElement.document().page()->mainFrame().document()->baseURL().host().toString();
     1835    String pluginOrigin = plugInImageElement.loadedUrl().host().toString();
    18361836    String mimeType = plugInImageElement.serviceType();
    18371837
  • trunk/Source/WebKit/WebProcess/Plugins/WebPluginInfoProvider.cpp

    r230843 r232198  
    157157
    158158#if PLATFORM(MAC)
    159     String pageHost = page.mainFrame().loader().documentLoader()->responseURL().host();
     159    String pageHost = page.mainFrame().loader().documentLoader()->responseURL().host().toString();
    160160    if (pageHost.isNull())
    161161        return;
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r232032 r232198  
    48494849        return false;
    48504850
    4851     String host = url.host();
    4852     String path = url.path();
    4853     return equalLettersIgnoringASCIICase(host, "docs.google.com");
     4851    return equalLettersIgnoringASCIICase(url.host(), "docs.google.com");
    48544852}
    48554853
     
    48594857        return false;
    48604858
    4861     String host = url.host();
     4859    auto host = url.host();
    48624860
    48634861    if (equalLettersIgnoringASCIICase(host, "twitter.com"))
     
    54325430    LOG(Plugins, "Primary Plug-In Detection: success - found a candidate plug-in - inform it.");
    54335431    m_didFindPrimarySnapshottedPlugin = true;
    5434     m_primaryPlugInPageOrigin = m_page->mainFrame().document()->baseURL().host();
    5435     m_primaryPlugInOrigin = candidatePlugIn->loadedUrl().host();
     5432    m_primaryPlugInPageOrigin = m_page->mainFrame().document()->baseURL().host().toString();
     5433    m_primaryPlugInOrigin = candidatePlugIn->loadedUrl().host().toString();
    54365434    m_primaryPlugInMimeType = candidatePlugIn->serviceType();
    54375435
  • trunk/Source/WebKitLegacy/ChangeLog

    r231709 r232198  
     12018-05-25  Alex Christensen  <achristensen@webkit.org>
     2
     3        URL::host should return a StringView to reduce allocations
     4        https://bugs.webkit.org/show_bug.cgi?id=185986
     5
     6        Reviewed by Geoff Garen.
     7
     8        * WebCoreSupport/WebResourceLoadScheduler.cpp:
     9        (WebResourceLoadScheduler::hostForURL):
     10
    1112018-05-11  Charles Vazac  <cvazac@gmail.com>
    212
  • trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp

    r231282 r232198  
    6767
    6868    m_hosts.checkConsistency();
    69     String hostName = url.host();
     69    String hostName = url.host().toString();
    7070    HostInformation* host = m_hosts.get(hostName);
    7171    if (!host && createHostPolicy == CreateIfNotFound) {
  • trunk/Tools/ChangeLog

    r232195 r232198  
     12018-05-25  Alex Christensen  <achristensen@webkit.org>
     2
     3        URL::host should return a StringView to reduce allocations
     4        https://bugs.webkit.org/show_bug.cgi?id=185986
     5
     6        Reviewed by Geoff Garen.
     7
     8        * TestWebKitAPI/Tests/WebCore/URL.cpp:
     9        (TestWebKitAPI::TEST_F):
     10        * TestWebKitAPI/Tests/WebCore/URLParser.cpp:
     11        (TestWebKitAPI::eq):
     12        * TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm:
     13        (TestWebKitAPI::SSLKeyGeneratorTest::TearDown):
     14
    1152018-05-25  Ms2ger  <Ms2ger@igalia.com>
    216
  • trunk/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp

    r229905 r232198  
    6060
    6161    EXPECT_EQ(kurl.protocol() == "http", true);
    62     EXPECT_EQ(String("www.example.com"), kurl.host());
     62    EXPECT_EQ(String("www.example.com"), kurl.host().toString());
    6363    EXPECT_TRUE(!!kurl.port());
    6464    EXPECT_EQ(8080, kurl.port().value());
  • trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp

    r224202 r232198  
    6565};
    6666
    67 static bool eq(const String& s1, const String& s2)
     67template<typename T, typename U>
     68bool eq(T&& s1, U&& s2)
    6869{
    6970    EXPECT_STREQ(s1.utf8().data(), s2.utf8().data());
     
    9192    auto url = URL(URL(), urlString);
    9293   
    93     EXPECT_TRUE(eq(parts.protocol, url.protocol().toString()));
     94    EXPECT_TRUE(eq(parts.protocol, url.protocol()));
    9495    EXPECT_TRUE(eq(parts.user, url.user()));
    9596    EXPECT_TRUE(eq(parts.password, url.pass()));
     
    118119    auto url = URL(URL(URL(), baseURLString), urlString);
    119120   
    120     EXPECT_TRUE(eq(parts.protocol, url.protocol().toString()));
     121    EXPECT_TRUE(eq(parts.protocol, url.protocol()));
    121122    EXPECT_TRUE(eq(parts.user, url.user()));
    122123    EXPECT_TRUE(eq(parts.password, url.pass()));
     
    147148    auto url = URL(URL(), urlString);
    148149   
    149     EXPECT_TRUE(eq(partsNew.protocol, url.protocol().toString()));
     150    EXPECT_TRUE(eq(partsNew.protocol, url.protocol()));
    150151    EXPECT_TRUE(eq(partsNew.user, url.user()));
    151152    EXPECT_TRUE(eq(partsNew.password, url.pass()));
     
    176177    auto url = URL(URL(URL(), baseURLString), urlString);
    177178   
    178     EXPECT_TRUE(eq(partsNew.protocol, url.protocol().toString()));
     179    EXPECT_TRUE(eq(partsNew.protocol, url.protocol()));
    179180    EXPECT_TRUE(eq(partsNew.user, url.user()));
    180181    EXPECT_TRUE(eq(partsNew.password, url.pass()));
     
    214215    URLParser parser(urlString, { }, encoding);
    215216    auto url = parser.result();
    216     EXPECT_TRUE(eq(parts.protocol, url.protocol().toString()));
     217    EXPECT_TRUE(eq(parts.protocol, url.protocol()));
    217218    EXPECT_TRUE(eq(parts.user, url.user()));
    218219    EXPECT_TRUE(eq(parts.password, url.pass()));
     
    240241    URLParser parser(urlString, baseParser.result(), encoding);
    241242    auto url = parser.result();
    242     EXPECT_TRUE(eq(parts.protocol, url.protocol().toString()));
     243    EXPECT_TRUE(eq(parts.protocol, url.protocol()));
    243244    EXPECT_TRUE(eq(parts.user, url.user()));
    244245    EXPECT_TRUE(eq(parts.password, url.pass()));
  • trunk/Tools/TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm

    r231024 r232198  
    8484            (id)kSecClass: (id)kSecClassKey,
    8585            (id)kSecAttrKeyClass: (id)kSecAttrKeyClassPrivate,
    86             (id)kSecAttrLabel: WebCore::keygenKeychainItemName(url.host()),
     86            (id)kSecAttrLabel: WebCore::keygenKeychainItemName(url.host().toString()),
    8787        });
    8888        SecItemDelete((__bridge CFDictionaryRef) @{
    8989            (id)kSecClass: (id)kSecClassKey,
    9090            (id)kSecAttrKeyClass: (id)kSecAttrKeyClassPublic,
    91             (id)kSecAttrLabel: WebCore::keygenKeychainItemName(url.host()),
     91            (id)kSecAttrLabel: WebCore::keygenKeychainItemName(url.host().toString()),
    9292        });
    9393    }
Note: See TracChangeset for help on using the changeset viewer.