Changeset 183563 in webkit


Ignore:
Timestamp:
Apr 29, 2015 11:51:23 AM (9 years ago)
Author:
Antti Koivisto
Message:

ResourceLoadPriority should be enum class
https://bugs.webkit.org/show_bug.cgi?id=144326

Reviewed by Darin Adler.

Source/WebCore:

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::loadLink):

  • loader/ResourceLoadScheduler.cpp:

(WebCore::ResourceLoadScheduler::scheduleLoad):
(WebCore::ResourceLoadScheduler::servePendingRequests):
(WebCore::ResourceLoadScheduler::HostInformation::~HostInformation):
(WebCore::ResourceLoadScheduler::HostInformation::priorityToIndex):
(WebCore::ResourceLoadScheduler::HostInformation::schedule):
(WebCore::ResourceLoadScheduler::HostInformation::remove):
(WebCore::ResourceLoadScheduler::HostInformation::hasRequests):
(WebCore::ResourceLoadScheduler::HostInformation::limitRequests):

  • loader/ResourceLoadScheduler.h:

(WebCore::ResourceLoadScheduler::HostInformation::requestsPending):

Modernize ResourceLoadScheduler code a bit while switching to enum class.

  • loader/cache/CachedResource.cpp:

(WebCore::defaultPriorityForResourceType):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::startLoading):

  • platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:

(WebCore::WebCoreAVFResourceLoader::startLoading):

  • platform/network/ResourceLoadPriority.h:

(WebCore::operator++):
(WebCore::operator--):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::adopt):
(WebCore::ResourceRequestBase::copyData):
(WebCore::ResourceRequestBase::cachePolicy):
(WebCore::ResourceRequestBase::priority):
(WebCore::ResourceRequestBase::setPriority):

  • platform/network/ResourceRequestBase.h:

Remove bitfields. ResourceRequests are not present in large enough numbers to require this kind of optimization.
Use modern initialization syntax.

(WebCore::ResourceRequestBase::ResourceRequestBase):
(WebCore::CrossThreadResourceRequestDataBase::CrossThreadResourceRequestDataBase): Deleted.

  • platform/network/cf/ResourceRequestCFNet.cpp:

(WebCore::initializeMaximumHTTPConnectionCountPerHost):
(WebCore::initializeHTTPConnectionSettingsOnStartup):

  • platform/network/cf/ResourceRequestCFNet.h:

(WebCore::toResourceLoadPriority):
(WebCore::toPlatformRequestPriority):

  • platform/network/soup/ResourceRequest.h:

(WebCore::toSoupMessagePriority):

  • testing/Internals.cpp:

(WebCore::stringToResourceLoadPriority):

Source/WebKit2:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::servePendingRequests): Deleted.

Remove this unused message.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::retrieve):

  • NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm:

(WebKit::NetworkResourceLoadScheduler::platformInitializeNetworkSettings):

  • WebProcess/Network/WebResourceLoadScheduler.cpp:

(WebKit::WebResourceLoadScheduler::servePendingRequests):

  • WebProcess/Network/WebResourceLoadScheduler.h:
Location:
trunk/Source
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r183562 r183563  
     12015-04-29  Antti Koivisto  <antti@apple.com>
     2
     3        ResourceLoadPriority should be enum class
     4        https://bugs.webkit.org/show_bug.cgi?id=144326
     5
     6        Reviewed by Darin Adler.
     7
     8        * html/HTMLLinkElement.cpp:
     9        (WebCore::HTMLLinkElement::process):
     10        * loader/LinkLoader.cpp:
     11        (WebCore::LinkLoader::loadLink):
     12        * loader/ResourceLoadScheduler.cpp:
     13        (WebCore::ResourceLoadScheduler::scheduleLoad):
     14        (WebCore::ResourceLoadScheduler::servePendingRequests):
     15        (WebCore::ResourceLoadScheduler::HostInformation::~HostInformation):
     16        (WebCore::ResourceLoadScheduler::HostInformation::priorityToIndex):
     17        (WebCore::ResourceLoadScheduler::HostInformation::schedule):
     18        (WebCore::ResourceLoadScheduler::HostInformation::remove):
     19        (WebCore::ResourceLoadScheduler::HostInformation::hasRequests):
     20        (WebCore::ResourceLoadScheduler::HostInformation::limitRequests):
     21        * loader/ResourceLoadScheduler.h:
     22        (WebCore::ResourceLoadScheduler::HostInformation::requestsPending):
     23
     24            Modernize ResourceLoadScheduler code a bit while switching to enum class.
     25
     26        * loader/cache/CachedResource.cpp:
     27        (WebCore::defaultPriorityForResourceType):
     28        * loader/cache/CachedResourceLoader.cpp:
     29        (WebCore::CachedResourceLoader::requestResource):
     30        * loader/icon/IconLoader.cpp:
     31        (WebCore::IconLoader::startLoading):
     32        * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
     33        (WebCore::WebCoreAVFResourceLoader::startLoading):
     34        * platform/network/ResourceLoadPriority.h:
     35        (WebCore::operator++):
     36        (WebCore::operator--):
     37        * platform/network/ResourceRequestBase.cpp:
     38        (WebCore::ResourceRequestBase::adopt):
     39        (WebCore::ResourceRequestBase::copyData):
     40        (WebCore::ResourceRequestBase::cachePolicy):
     41        (WebCore::ResourceRequestBase::priority):
     42        (WebCore::ResourceRequestBase::setPriority):
     43        * platform/network/ResourceRequestBase.h:
     44
     45            Remove bitfields. ResourceRequests are not present in large enough numbers to require this kind of optimization.
     46            Use modern initialization syntax.
     47
     48        (WebCore::ResourceRequestBase::ResourceRequestBase):
     49        (WebCore::CrossThreadResourceRequestDataBase::CrossThreadResourceRequestDataBase): Deleted.
     50        * platform/network/cf/ResourceRequestCFNet.cpp:
     51        (WebCore::initializeMaximumHTTPConnectionCountPerHost):
     52        (WebCore::initializeHTTPConnectionSettingsOnStartup):
     53        * platform/network/cf/ResourceRequestCFNet.h:
     54        (WebCore::toResourceLoadPriority):
     55        (WebCore::toPlatformRequestPriority):
     56        * platform/network/soup/ResourceRequest.h:
     57        (WebCore::toSoupMessagePriority):
     58        * testing/Internals.cpp:
     59        (WebCore::stringToResourceLoadPriority):
     60
    1612015-04-29  Myles C. Maxfield  <mmaxfield@apple.com>
    262
  • trunk/Source/WebCore/html/HTMLLinkElement.cpp

    r182877 r183563  
    241241        Optional<ResourceLoadPriority> priority;
    242242        if (!isActive)
    243             priority = ResourceLoadPriorityVeryLow;
     243            priority = ResourceLoadPriority::VeryLow;
    244244        CachedResourceRequest request(ResourceRequest(document().completeURL(url)), charset, priority);
    245245        request.setInitiator(this);
  • trunk/Source/WebCore/loader/LinkLoader.cpp

    r182351 r183563  
    113113            // We only make one request to the cached resource loader if multiple rel types are specified;
    114114            // this is the higher priority, which should overwrite the lower priority.
    115             priority = ResourceLoadPriorityLow;
     115            priority = ResourceLoadPriority::Low;
    116116            type = CachedResource::LinkSubresource;
    117117        }
  • trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp

    r179584 r183563  
    172172        // Serve all requests at once to keep the pipeline full at the network layer.
    173173        // FIXME: Does this code do anything useful, given that we also set maxRequestsInFlightPerHost to effectively unlimited on these platforms?
    174         servePendingRequests(host, ResourceLoadPriorityVeryLow);
    175         return;
    176     }
    177 #endif
    178 
    179 #if PLATFORM(IOS)
    180     if ((priority > ResourceLoadPriorityLow || !resourceLoader->iOSOriginalRequest().url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriorityLow && !hadRequests)) && !isSuspendingPendingRequests()) {
     174        servePendingRequests(host, ResourceLoadPriority::VeryLow);
     175        return;
     176    }
     177#endif
     178
     179#if PLATFORM(IOS)
     180    if ((priority > ResourceLoadPriority::Low || !resourceLoader->iOSOriginalRequest().url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriority::Low && !hadRequests)) && !isSuspendingPendingRequests()) {
    181181        // Try to request important resources immediately.
    182182        servePendingRequests(host, priority);
     
    184184    }
    185185#else
    186     if (priority > ResourceLoadPriorityLow || !resourceLoader->url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriorityLow && !hadRequests)) {
     186    if (priority > ResourceLoadPriority::Low || !resourceLoader->url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriority::Low && !hadRequests)) {
    187187        // Try to request important resources immediately.
    188188        servePendingRequests(host, priority);
     
    257257
    258258    Vector<HostInformation*> hostsToServe;
    259     m_hosts.checkConsistency();
    260     HostMap::iterator end = m_hosts.end();
    261     for (HostMap::iterator iter = m_hosts.begin(); iter != end; ++iter)
    262         hostsToServe.append(iter->value);
    263 
    264     int size = hostsToServe.size();
    265     for (int i = 0; i < size; ++i) {
    266         HostInformation* host = hostsToServe[i];
     259    copyValuesToVector(m_hosts, hostsToServe);
     260
     261    for (auto* host : hostsToServe) {
    267262        if (host->hasRequests())
    268263            servePendingRequests(host, minimumPriority);
     
    276271    LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests HostInformation.m_name='%s'", host->name().latin1().data());
    277272
    278     for (int priority = ResourceLoadPriorityHighest; priority >= minimumPriority; --priority) {
    279         HostInformation::RequestQueue& requestsPending = host->requestsPending(ResourceLoadPriority(priority));
    280 
     273    auto priority = ResourceLoadPriority::Highest;
     274    while (true) {
     275        auto& requestsPending = host->requestsPending(priority);
    281276        while (!requestsPending.isEmpty()) {
    282277            RefPtr<ResourceLoader> resourceLoader = requestsPending.first();
     
    287282            Document* document = resourceLoader->frameLoader() ? resourceLoader->frameLoader()->frame().document() : 0;
    288283            bool shouldLimitRequests = !host->name().isNull() || (document && (document->parsing() || !document->haveStylesheetsLoaded()));
    289             if (shouldLimitRequests && host->limitRequests(ResourceLoadPriority(priority)))
     284            if (shouldLimitRequests && host->limitRequests(priority))
    290285                return;
    291286
     
    300295            resourceLoader->start();
    301296        }
     297        if (priority == minimumPriority)
     298            return;
     299        --priority;
    302300    }
    303301}
     
    339337ResourceLoadScheduler::HostInformation::~HostInformation()
    340338{
    341     ASSERT(m_requestsLoading.isEmpty());
    342     for (unsigned p = 0; p <= ResourceLoadPriorityHighest; p++)
    343         ASSERT(m_requestsPending[p].isEmpty());
    344 }
    345    
     339    ASSERT(!hasRequests());
     340}
     341
     342unsigned ResourceLoadScheduler::HostInformation::priorityToIndex(ResourceLoadPriority priority)
     343{
     344    switch (priority) {
     345    case ResourceLoadPriority::VeryLow:
     346        return 0;
     347    case ResourceLoadPriority::Low:
     348        return 1;
     349    case ResourceLoadPriority::Medium:
     350        return 2;
     351    case ResourceLoadPriority::High:
     352        return 3;
     353    case ResourceLoadPriority::VeryHigh:
     354        return 4;
     355    }
     356    ASSERT_NOT_REACHED();
     357    return 0;
     358}
     359
    346360void ResourceLoadScheduler::HostInformation::schedule(ResourceLoader* resourceLoader, ResourceLoadPriority priority)
    347361{
    348     m_requestsPending[priority].append(resourceLoader);
     362    m_requestsPending[priorityToIndex(priority)].append(resourceLoader);
    349363}
    350364   
     
    360374        return;
    361375   
    362     for (int priority = ResourceLoadPriorityHighest; priority >= ResourceLoadPriorityLowest; --priority) { 
    363         RequestQueue::iterator end = m_requestsPending[priority].end();
    364         for (RequestQueue::iterator it = m_requestsPending[priority].begin(); it != end; ++it) {
     376    for (auto& requestQueue : m_requestsPending) {
     377        for (auto it = requestQueue.begin(), end = requestQueue.end(); it != end; ++it) {
    365378            if (*it == resourceLoader) {
    366                 m_requestsPending[priority].remove(it);
     379                requestQueue.remove(it);
    367380                return;
    368381            }
     
    375388    if (!m_requestsLoading.isEmpty())
    376389        return true;
    377     for (unsigned p = 0; p <= ResourceLoadPriorityHighest; p++) {
    378         if (!m_requestsPending[p].isEmpty())
     390    for (auto& requestQueue : m_requestsPending) {
     391        if (!requestQueue.isEmpty())
    379392            return true;
    380393    }
     
    384397bool ResourceLoadScheduler::HostInformation::limitRequests(ResourceLoadPriority priority) const
    385398{
    386     if (priority == ResourceLoadPriorityVeryLow && !m_requestsLoading.isEmpty())
     399    if (priority == ResourceLoadPriority::VeryLow && !m_requestsLoading.isEmpty())
    387400        return true;
    388401    return m_requestsLoading.size() >= (resourceLoadScheduler()->isSerialLoadingEnabled() ? 1 : m_maxRequestsInFlight);
  • trunk/Source/WebCore/loader/ResourceLoadScheduler.h

    r181348 r183563  
    2828#include "ResourceLoadPriority.h"
    2929#include "Timer.h"
     30#include <array>
    3031#include <wtf/Deque.h>
    3132#include <wtf/HashMap.h>
     
    5758    virtual void crossOriginRedirectReceived(ResourceLoader*, const URL& redirectURL);
    5859   
    59     WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriorityVeryLow);
     60    WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority::VeryLow);
    6061    WEBCORE_EXPORT virtual void suspendPendingRequests();
    6162    WEBCORE_EXPORT virtual void resumePendingRequests();
     
    9495       
    9596        const String& name() const { return m_name; }
    96         void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriorityVeryLow);
     97        void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriority::VeryLow);
    9798        void addLoadInProgress(ResourceLoader*);
    9899        void remove(ResourceLoader*);
     
    101102
    102103        typedef Deque<RefPtr<ResourceLoader>> RequestQueue;
    103         RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priority]; }
     104        RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priorityToIndex(priority)]; }
    104105
    105     private:                   
    106         RequestQueue m_requestsPending[ResourceLoadPriorityHighest + 1];
     106    private:
     107        static unsigned priorityToIndex(ResourceLoadPriority);
     108
     109        std::array<RequestQueue, resourceLoadPriorityCount> m_requestsPending;
    107110        typedef HashSet<RefPtr<ResourceLoader>> RequestMap;
    108111        RequestMap m_requestsLoading;
  • trunk/Source/WebCore/loader/cache/CachedResource.cpp

    r183261 r183563  
    6969    switch (type) {
    7070    case CachedResource::MainResource:
    71         return ResourceLoadPriorityVeryHigh;
     71        return ResourceLoadPriority::VeryHigh;
    7272    case CachedResource::CSSStyleSheet:
    73         return ResourceLoadPriorityHigh;
     73        return ResourceLoadPriority::High;
    7474    case CachedResource::Script:
    7575#if ENABLE(SVG_FONTS)
     
    7878    case CachedResource::FontResource:
    7979    case CachedResource::RawResource:
    80         return ResourceLoadPriorityMedium;
     80        return ResourceLoadPriority::Medium;
    8181    case CachedResource::ImageResource:
    82         return ResourceLoadPriorityLow;
     82        return ResourceLoadPriority::Low;
    8383#if ENABLE(XSLT)
    8484    case CachedResource::XSLStyleSheet:
    85         return ResourceLoadPriorityHigh;
     85        return ResourceLoadPriority::High;
    8686#endif
    8787    case CachedResource::SVGDocumentResource:
    88         return ResourceLoadPriorityLow;
     88        return ResourceLoadPriority::Low;
    8989#if ENABLE(LINK_PREFETCH)
    9090    case CachedResource::LinkPrefetch:
    91         return ResourceLoadPriorityVeryLow;
     91        return ResourceLoadPriority::VeryLow;
    9292    case CachedResource::LinkSubresource:
    93         return ResourceLoadPriorityVeryLow;
     93        return ResourceLoadPriority::VeryLow;
    9494#endif
    9595#if ENABLE(VIDEO_TRACK)
    9696    case CachedResource::TextTrackResource:
    97         return ResourceLoadPriorityLow;
     97        return ResourceLoadPriority::Low;
    9898#endif
    9999    }
    100100    ASSERT_NOT_REACHED();
    101     return ResourceLoadPriorityLow;
     101    return ResourceLoadPriority::Low;
    102102}
    103103
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r182266 r183563  
    497497    URL url = request.resourceRequest().url();
    498498   
    499     LOG(ResourceLoading, "CachedResourceLoader::requestResource '%s', charset '%s', priority=%d, forPreload=%u", url.stringCenterEllipsizedToLength().latin1().data(), request.charset().latin1().data(), request.priority() ? request.priority().value() : -1, request.forPreload());
     499    LOG(ResourceLoading, "CachedResourceLoader::requestResource '%s', charset '%s', priority=%d, forPreload=%u", url.stringCenterEllipsizedToLength().latin1().data(), request.charset().latin1().data(), request.priority() ? static_cast<int>(request.priority().value()) : -1, request.forPreload());
    500500   
    501501    // If only the fragment identifiers differ, it is the same resource.
  • trunk/Source/WebCore/loader/icon/IconLoader.cpp

    r179242 r183563  
    6161    CachedResourceRequest request(ResourceRequest(m_frame.loader().icon().url()), ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForAnyCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo));
    6262
    63     request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
     63    request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low);
    6464    request.setInitiator(cachedResourceRequestInitiators().icon);
    6565
  • trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp

    r175549 r183563  
    7474    CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo));
    7575
    76     request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
     76    request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low);
    7777    CachedResourceLoader* loader = m_parent->player()->cachedResourceLoader();
    7878    m_resource = loader ? loader->requestRawResource(request) : 0;
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm

    r175549 r183563  
    7070    CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo));
    7171
    72     request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
     72    request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low);
    7373    CachedResourceLoader* loader = m_parent->player()->cachedResourceLoader();
    7474    m_resource = loader ? loader->requestRawResource(request) : 0;
  • trunk/Source/WebCore/platform/network/ResourceLoadPriority.h

    r179584 r183563  
    2929namespace WebCore {
    3030
    31 enum ResourceLoadPriority {
    32     ResourceLoadPriorityVeryLow,
    33     ResourceLoadPriorityLow,
    34     ResourceLoadPriorityMedium,
    35     ResourceLoadPriorityHigh,
    36     ResourceLoadPriorityVeryHigh,
    37     ResourceLoadPriorityLowest = ResourceLoadPriorityVeryLow,
    38     ResourceLoadPriorityHighest = ResourceLoadPriorityVeryHigh,
     31enum class ResourceLoadPriority {
     32    VeryLow,
     33    Low,
     34    Medium,
     35    High,
     36    VeryHigh,
     37    Lowest = VeryLow,
     38    Highest = VeryHigh,
    3939};
     40
     41static const unsigned resourceLoadPriorityCount { static_cast<unsigned>(ResourceLoadPriority::Highest) + 1 };
     42
     43inline ResourceLoadPriority& operator++(ResourceLoadPriority& priority)
     44{
     45    ASSERT(priority != ResourceLoadPriority::Highest);
     46    return priority = static_cast<ResourceLoadPriority>(static_cast<int>(priority) + 1);
     47}
     48
     49inline ResourceLoadPriority& operator--(ResourceLoadPriority& priority)
     50{
     51    ASSERT(priority != ResourceLoadPriority::Lowest);
     52    return priority = static_cast<ResourceLoadPriority>(static_cast<int>(priority) - 1);
     53}
    4054
    4155}
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp

    r183467 r183563  
    5252{
    5353    auto request = std::make_unique<ResourceRequest>();
    54     request->setURL(data->m_url);
    55     request->setCachePolicy(data->m_cachePolicy);
    56     request->setTimeoutInterval(data->m_timeoutInterval);
    57     request->setFirstPartyForCookies(data->m_firstPartyForCookies);
    58     request->setHTTPMethod(data->m_httpMethod);
    59     request->setPriority(data->m_priority);
    60     request->setRequester(data->m_requester);
     54    request->setURL(data->url);
     55    request->setCachePolicy(data->cachePolicy);
     56    request->setTimeoutInterval(data->timeoutInterval);
     57    request->setFirstPartyForCookies(data->firstPartyForCookies);
     58    request->setHTTPMethod(data->httpMethod);
     59    request->setPriority(data->priority);
     60    request->setRequester(data->requester);
    6161
    6262    request->updateResourceRequest();
    63     request->m_httpHeaderFields.adopt(WTF::move(data->m_httpHeaders));
    64 
    65     size_t encodingCount = data->m_responseContentDispositionEncodingFallbackArray.size();
     63    request->m_httpHeaderFields.adopt(WTF::move(data->httpHeaders));
     64
     65    size_t encodingCount = data->responseContentDispositionEncodingFallbackArray.size();
    6666    if (encodingCount > 0) {
    67         String encoding1 = data->m_responseContentDispositionEncodingFallbackArray[0];
     67        String encoding1 = data->responseContentDispositionEncodingFallbackArray[0];
    6868        String encoding2;
    6969        String encoding3;
    7070        if (encodingCount > 1) {
    71             encoding2 = data->m_responseContentDispositionEncodingFallbackArray[1];
     71            encoding2 = data->responseContentDispositionEncodingFallbackArray[1];
    7272            if (encodingCount > 2)
    73                 encoding3 = data->m_responseContentDispositionEncodingFallbackArray[2];
     73                encoding3 = data->responseContentDispositionEncodingFallbackArray[2];
    7474        }
    7575        ASSERT(encodingCount <= 3);
    7676        request->setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3);
    7777    }
    78     request->setHTTPBody(data->m_httpBody);
    79     request->setAllowCookies(data->m_allowCookies);
     78    request->setHTTPBody(data->httpBody);
     79    request->setAllowCookies(data->allowCookies);
    8080    request->doPlatformAdopt(WTF::move(data));
    8181    return request;
     
    8585{
    8686    auto data = std::make_unique<CrossThreadResourceRequestData>();
    87     data->m_url = url().copy();
    88     data->m_cachePolicy = cachePolicy();
    89     data->m_timeoutInterval = timeoutInterval();
    90     data->m_firstPartyForCookies = firstPartyForCookies().copy();
    91     data->m_httpMethod = httpMethod().isolatedCopy();
    92     data->m_httpHeaders = httpHeaderFields().copyData();
    93     data->m_priority = priority();
    94     data->m_requester = m_requester;
    95 
    96     data->m_responseContentDispositionEncodingFallbackArray.reserveInitialCapacity(m_responseContentDispositionEncodingFallbackArray.size());
     87    data->url = url().copy();
     88    data->cachePolicy = m_cachePolicy;
     89    data->timeoutInterval = timeoutInterval();
     90    data->firstPartyForCookies = firstPartyForCookies().copy();
     91    data->httpMethod = httpMethod().isolatedCopy();
     92    data->httpHeaders = httpHeaderFields().copyData();
     93    data->priority = m_priority;
     94    data->requester = m_requester;
     95
     96    data->responseContentDispositionEncodingFallbackArray.reserveInitialCapacity(m_responseContentDispositionEncodingFallbackArray.size());
    9797    size_t encodingArraySize = m_responseContentDispositionEncodingFallbackArray.size();
    9898    for (size_t index = 0; index < encodingArraySize; ++index) {
    99         data->m_responseContentDispositionEncodingFallbackArray.append(m_responseContentDispositionEncodingFallbackArray[index].isolatedCopy());
     99        data->responseContentDispositionEncodingFallbackArray.append(m_responseContentDispositionEncodingFallbackArray[index].isolatedCopy());
    100100    }
    101101    if (m_httpBody)
    102         data->m_httpBody = m_httpBody->deepCopy();
    103     data->m_allowCookies = m_allowCookies;
     102        data->httpBody = m_httpBody->deepCopy();
     103    data->allowCookies = m_allowCookies;
    104104    return asResourceRequest().doPlatformCopyData(WTF::move(data));
    105105}
     
    152152    updateResourceRequest();
    153153   
    154     return static_cast<ResourceRequestCachePolicy>(m_cachePolicy);
     154    return m_cachePolicy;
    155155}
    156156
     
    439439    updateResourceRequest();
    440440
    441     return static_cast<ResourceLoadPriority>(m_priority);
     441    return m_priority;
    442442}
    443443
     
    450450
    451451    m_priority = priority;
    452     ASSERT(static_cast<ResourceLoadPriority>(m_priority) == priority); // Make sure it fits in the bitfield.
    453452
    454453    if (url().protocolIsInHTTPFamily())
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r183478 r183563  
    171171        // Used when ResourceRequest is initialized from a platform representation of the request
    172172        ResourceRequestBase()
    173             : m_resourceRequestUpdated(false)
    174             , m_platformRequestUpdated(true)
    175             , m_resourceRequestBodyUpdated(false)
     173            : m_platformRequestUpdated(true)
    176174            , m_platformRequestBodyUpdated(true)
    177             , m_reportUploadProgress(false)
    178             , m_reportLoadTiming(false)
    179             , m_reportRawHeaders(false)
    180             , m_hiddenFromInspector(false)
    181             , m_priority(ResourceLoadPriorityLow)
    182175        {
    183176        }
     
    194187#endif
    195188            , m_resourceRequestUpdated(true)
    196             , m_platformRequestUpdated(false)
    197189            , m_resourceRequestBodyUpdated(true)
    198             , m_platformRequestBodyUpdated(false)
    199             , m_reportUploadProgress(false)
    200             , m_reportLoadTiming(false)
    201             , m_reportRawHeaders(false)
    202             , m_hiddenFromInspector(false)
    203             , m_priority(ResourceLoadPriorityLow)
    204190        {
    205191        }
     
    218204        Vector<String> m_responseContentDispositionEncodingFallbackArray;
    219205        RefPtr<FormData> m_httpBody;
    220         unsigned m_cachePolicy : 3;
    221         unsigned m_allowCookies : 1;
    222         mutable unsigned m_resourceRequestUpdated : 1;
    223         mutable unsigned m_platformRequestUpdated : 1;
    224         mutable unsigned m_resourceRequestBodyUpdated : 1;
    225         mutable unsigned m_platformRequestBodyUpdated : 1;
    226         unsigned m_reportUploadProgress : 1;
    227         unsigned m_reportLoadTiming : 1;
    228         unsigned m_reportRawHeaders : 1;
    229         unsigned m_hiddenFromInspector : 1;
    230         unsigned m_priority : 4;
     206        ResourceRequestCachePolicy m_cachePolicy { UseProtocolCachePolicy };
     207        bool m_allowCookies { false };
     208        mutable bool m_resourceRequestUpdated { false };
     209        mutable bool m_platformRequestUpdated { false };
     210        mutable bool m_resourceRequestBodyUpdated { false };
     211        mutable bool m_platformRequestBodyUpdated { false };
     212        bool m_reportUploadProgress { false };
     213        bool m_reportLoadTiming { false };
     214        bool m_reportRawHeaders { false };
     215        bool m_hiddenFromInspector { false };
     216        ResourceLoadPriority m_priority { ResourceLoadPriority::Low };
    231217        Requester m_requester { Requester::Unspecified };
    232218
     
    246232
    247233    struct CrossThreadResourceRequestDataBase {
    248         WTF_MAKE_NONCOPYABLE(CrossThreadResourceRequestDataBase); WTF_MAKE_FAST_ALLOCATED;
    249     public:
    250         CrossThreadResourceRequestDataBase() { }
    251         URL m_url;
    252 
    253         ResourceRequestCachePolicy m_cachePolicy;
    254         double m_timeoutInterval;
    255         URL m_firstPartyForCookies;
    256 
    257         String m_httpMethod;
    258         std::unique_ptr<CrossThreadHTTPHeaderMapData> m_httpHeaders;
    259         Vector<String> m_responseContentDispositionEncodingFallbackArray;
    260         RefPtr<FormData> m_httpBody;
    261         bool m_allowCookies;
    262         ResourceLoadPriority m_priority;
    263         ResourceRequestBase::Requester m_requester;
     234        URL url;
     235        ResourceRequestCachePolicy cachePolicy;
     236        double timeoutInterval;
     237        URL firstPartyForCookies;
     238        String httpMethod;
     239        std::unique_ptr<CrossThreadHTTPHeaderMapData> httpHeaders;
     240        Vector<String> responseContentDispositionEncodingFallbackArray;
     241        RefPtr<FormData> httpBody;
     242        bool allowCookies;
     243        ResourceLoadPriority priority;
     244        ResourceRequestBase::Requester requester;
    264245    };
    265246   
  • trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp

    r181136 r183563  
    400400        return maximumHTTPConnectionCountPerHost;
    401401
    402     wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriorityHighest));
     402    wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest));
    403403#if !PLATFORM(WIN)
    404404    // FIXME: <rdar://problem/9375609> Implement minimum fast lane priority setting on Windows
    405     wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriorityMedium));
     405    wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium));
    406406#endif
    407407
     
    419419    static const unsigned fastLaneConnectionCount = 1;
    420420    wkInitializeMaximumHTTPConnectionCountPerHost(preferredConnectionCount);
    421     wkSetHTTPRequestMaximumPriority(ResourceLoadPriorityHighest);
    422     wkSetHTTPRequestMinimumFastLanePriority(ResourceLoadPriorityMedium);
     421    wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest));
     422    wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium));
    423423    _CFNetworkHTTPConnectionCacheSetLimit(kHTTPNumFastLanes, fastLaneConnectionCount);
    424424}
  • trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h

    r179593 r183563  
    4747    case -1:
    4848    case 0:
    49         return ResourceLoadPriorityVeryLow;
     49        return ResourceLoadPriority::VeryLow;
    5050    case 1:
    51         return ResourceLoadPriorityLow;
     51        return ResourceLoadPriority::Low;
    5252    case 2:
    53         return ResourceLoadPriorityMedium;
     53        return ResourceLoadPriority::Medium;
    5454    case 3:
    55         return ResourceLoadPriorityHigh;
     55        return ResourceLoadPriority::High;
    5656    case 4:
    57         return ResourceLoadPriorityVeryHigh;
     57        return ResourceLoadPriority::VeryHigh;
    5858    default:
    5959        ASSERT_NOT_REACHED();
    60         return ResourceLoadPriorityLowest;
     60        return ResourceLoadPriority::Lowest;
    6161    }
    6262}
     
    6565{
    6666    switch (priority) {
    67     case ResourceLoadPriorityVeryLow:
     67    case ResourceLoadPriority::VeryLow:
    6868        return 0;
    69     case ResourceLoadPriorityLow:
     69    case ResourceLoadPriority::Low:
    7070        return 1;
    71     case ResourceLoadPriorityMedium:
     71    case ResourceLoadPriority::Medium:
    7272        return 2;
    73     case ResourceLoadPriorityHigh:
     73    case ResourceLoadPriority::High:
    7474        return 3;
    75     case ResourceLoadPriorityVeryHigh:
     75    case ResourceLoadPriority::VeryHigh:
    7676        return 4;
    7777    }
  • trunk/Source/WebCore/platform/network/soup/ResourceRequest.h

    r181136 r183563  
    132132{
    133133    switch (priority) {
    134     case ResourceLoadPriorityVeryLow:
     134    case ResourceLoadPriority::VeryLow:
    135135        return SOUP_MESSAGE_PRIORITY_VERY_LOW;
    136     case ResourceLoadPriorityLow:
     136    case ResourceLoadPriority::Low:
    137137        return SOUP_MESSAGE_PRIORITY_LOW;
    138     case ResourceLoadPriorityMedium:
     138    case ResourceLoadPriority::Medium:
    139139        return SOUP_MESSAGE_PRIORITY_NORMAL;
    140     case ResourceLoadPriorityHigh:
     140    case ResourceLoadPriority::High:
    141141        return SOUP_MESSAGE_PRIORITY_HIGH;
    142     case ResourceLoadPriorityVeryHigh:
     142    case ResourceLoadPriority::VeryHigh:
    143143        return SOUP_MESSAGE_PRIORITY_VERY_HIGH;
    144144    }
  • trunk/Source/WebCore/testing/Internals.cpp

    r183428 r183563  
    462462{
    463463    if (policy == "ResourceLoadPriorityVeryLow")
    464         return ResourceLoadPriorityVeryLow;
     464        return ResourceLoadPriority::VeryLow;
    465465    if (policy == "ResourceLoadPriorityLow")
    466         return ResourceLoadPriorityLow;
     466        return ResourceLoadPriority::Low;
    467467    if (policy == "ResourceLoadPriorityMedium")
    468         return ResourceLoadPriorityMedium;
     468        return ResourceLoadPriority::Medium;
    469469    if (policy == "ResourceLoadPriorityHigh")
    470         return ResourceLoadPriorityHigh;
     470        return ResourceLoadPriority::High;
    471471    if (policy == "ResourceLoadPriorityVeryHigh")
    472         return ResourceLoadPriorityVeryHigh;
     472        return ResourceLoadPriority::VeryHigh;
    473473    ASSERT_NOT_REACHED();
    474     return ResourceLoadPriorityLow;
     474    return ResourceLoadPriority::Low;
    475475}
    476476
  • trunk/Source/WebKit2/ChangeLog

    r183562 r183563  
     12015-04-29  Antti Koivisto  <antti@apple.com>
     2
     3        ResourceLoadPriority should be enum class
     4        https://bugs.webkit.org/show_bug.cgi?id=144326
     5
     6        Reviewed by Darin Adler.
     7
     8        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
     9        (WebKit::NetworkConnectionToWebProcess::servePendingRequests): Deleted.
     10
     11            Remove this unused message.
     12
     13        * NetworkProcess/NetworkConnectionToWebProcess.h:
     14        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
     15        * NetworkProcess/cache/NetworkCache.cpp:
     16        (WebKit::NetworkCache::makeStoreDecision):
     17        (WebKit::NetworkCache::Cache::retrieve):
     18        * NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm:
     19        (WebKit::NetworkResourceLoadScheduler::platformInitializeNetworkSettings):
     20        * WebProcess/Network/WebResourceLoadScheduler.cpp:
     21        (WebKit::WebResourceLoadScheduler::servePendingRequests):
     22        * WebProcess/Network/WebResourceLoadScheduler.h:
     23
    1242015-04-29  Myles C. Maxfield  <mmaxfield@apple.com>
    225
  • trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp

    r179409 r183563  
    152152}
    153153
    154 void NetworkConnectionToWebProcess::servePendingRequests(uint32_t)
    155 {
    156 }
    157 
    158154void NetworkConnectionToWebProcess::setSerialLoadingEnabled(bool enabled)
    159155{
  • trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h

    r179363 r183563  
    7979    void setDefersLoading(ResourceLoadIdentifier, bool);
    8080    void crossOriginRedirectReceived(ResourceLoadIdentifier, const WebCore::URL& redirectURL);
    81     void servePendingRequests(uint32_t resourceLoadPriority);
    8281    void setSerialLoadingEnabled(bool);
    8382    void startDownload(WebCore::SessionID, uint64_t downloadID, const WebCore::ResourceRequest&);
  • trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in

    r169380 r183563  
    2929    RemoveLoadIdentifier(uint64_t resourceLoadIdentifier)
    3030    SetDefersLoading(uint64_t resourceLoadIdentifier, bool defers)
    31    
    32     ServePendingRequests(uint32_t resourceLoadPriority)
    33    
    3431    SetSerialLoadingEnabled(bool enabled) -> ()
    3532
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp

    r183467 r183563  
    301301
    302302    bool isMainResource = originalRequest.requester() == WebCore::ResourceRequest::Requester::Main;
    303     bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriorityVeryHigh;
     303    bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriority::VeryHigh;
    304304    if (!storeUnconditionallyForHistoryNavigation) {
    305305        auto now = std::chrono::system_clock::now();
     
    343343
    344344    auto startTime = std::chrono::system_clock::now();
    345     unsigned priority = originalRequest.priority();
     345    auto priority = static_cast<unsigned>(originalRequest.priority());
    346346
    347347    m_storage->retrieve(storageKey, priority, [this, originalRequest, completionHandler, startTime, storageKey, webPageID](std::unique_ptr<Storage::Record> record) {
  • trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm

    r172927 r183563  
    5050
    5151    if (ResourceRequest::resourcePrioritiesEnabled()) {
    52         WKSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriorityHighest));
    53         WKSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriorityMedium));
     52        WKSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest));
     53        WKSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium));
    5454    }
    5555}
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp

    r182565 r183563  
    638638void InjectedBundle::dispatchPendingLoadRequests()
    639639{
    640     resourceLoadScheduler()->servePendingRequests();
     640    // FIXME: This should be removed along with the bundle API.
    641641}
    642642
  • trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp

    r183467 r183563  
    245245}
    246246
    247 void WebResourceLoadScheduler::servePendingRequests(ResourceLoadPriority minimumPriority)
    248 {
    249     LOG(NetworkScheduling, "(WebProcess) WebResourceLoadScheduler::servePendingRequests");
    250    
    251     // The NetworkProcess scheduler is good at making sure loads are serviced until there are no more pending requests.
    252     // If this WebProcess isn't expecting requests to be served then we can ignore messaging the NetworkProcess right now.
    253     if (m_suspendPendingRequestsCount)
    254         return;
    255 
    256     WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::ServePendingRequests(minimumPriority), 0);
     247void WebResourceLoadScheduler::servePendingRequests(ResourceLoadPriority)
     248{
     249    // This overrides the base class version.
     250    // We don't need to do anything as this is handled by the network process.
    257251}
    258252
  • trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h

    r172946 r183563  
    5353    virtual void crossOriginRedirectReceived(WebCore::ResourceLoader*, const WebCore::URL& redirectURL) override;
    5454   
    55     virtual void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority = WebCore::ResourceLoadPriorityVeryLow) override;
     55    virtual void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority) override;
    5656
    5757    virtual void suspendPendingRequests() override;
Note: See TracChangeset for help on using the changeset viewer.