Diff
Modified: trunk/Source/WebCore/ChangeLog (183562 => 183563)
--- trunk/Source/WebCore/ChangeLog 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/ChangeLog 2015-04-29 18:51:23 UTC (rev 183563)
@@ -1,3 +1,63 @@
+2015-04-29 Antti Koivisto <[email protected]>
+
+ ResourceLoadPriority should be enum class
+ https://bugs.webkit.org/show_bug.cgi?id=144326
+
+ Reviewed by Darin Adler.
+
+ * 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):
+
2015-04-29 Myles C. Maxfield <[email protected]>
[OS X] Use CTFontCreateForCSS instead of doing font search ourselves
Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (183562 => 183563)
--- trunk/Source/WebCore/html/HTMLLinkElement.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -240,7 +240,7 @@
// Load stylesheets that are not needed for the rendering immediately with low priority.
Optional<ResourceLoadPriority> priority;
if (!isActive)
- priority = ResourceLoadPriorityVeryLow;
+ priority = ResourceLoadPriority::VeryLow;
CachedResourceRequest request(ResourceRequest(document().completeURL(url)), charset, priority);
request.setInitiator(this);
m_cachedSheet = document().cachedResourceLoader().requestCSSStyleSheet(request);
Modified: trunk/Source/WebCore/loader/LinkLoader.cpp (183562 => 183563)
--- trunk/Source/WebCore/loader/LinkLoader.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/loader/LinkLoader.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -112,7 +112,7 @@
if (relAttribute.isLinkSubresource) {
// We only make one request to the cached resource loader if multiple rel types are specified;
// this is the higher priority, which should overwrite the lower priority.
- priority = ResourceLoadPriorityLow;
+ priority = ResourceLoadPriority::Low;
type = CachedResource::LinkSubresource;
}
CachedResourceRequest linkRequest(ResourceRequest(document.completeURL(href)), priority);
Modified: trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp (183562 => 183563)
--- trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -171,19 +171,19 @@
if (ResourceRequest::resourcePrioritiesEnabled() && !isSuspendingPendingRequests()) {
// Serve all requests at once to keep the pipeline full at the network layer.
// FIXME: Does this code do anything useful, given that we also set maxRequestsInFlightPerHost to effectively unlimited on these platforms?
- servePendingRequests(host, ResourceLoadPriorityVeryLow);
+ servePendingRequests(host, ResourceLoadPriority::VeryLow);
return;
}
#endif
#if PLATFORM(IOS)
- if ((priority > ResourceLoadPriorityLow || !resourceLoader->iOSOriginalRequest().url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriorityLow && !hadRequests)) && !isSuspendingPendingRequests()) {
+ if ((priority > ResourceLoadPriority::Low || !resourceLoader->iOSOriginalRequest().url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriority::Low && !hadRequests)) && !isSuspendingPendingRequests()) {
// Try to request important resources immediately.
servePendingRequests(host, priority);
return;
}
#else
- if (priority > ResourceLoadPriorityLow || !resourceLoader->url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriorityLow && !hadRequests)) {
+ if (priority > ResourceLoadPriority::Low || !resourceLoader->url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriority::Low && !hadRequests)) {
// Try to request important resources immediately.
servePendingRequests(host, priority);
return;
@@ -256,14 +256,9 @@
servePendingRequests(m_nonHTTPProtocolHost, minimumPriority);
Vector<HostInformation*> hostsToServe;
- m_hosts.checkConsistency();
- HostMap::iterator end = m_hosts.end();
- for (HostMap::iterator iter = m_hosts.begin(); iter != end; ++iter)
- hostsToServe.append(iter->value);
+ copyValuesToVector(m_hosts, hostsToServe);
- int size = hostsToServe.size();
- for (int i = 0; i < size; ++i) {
- HostInformation* host = hostsToServe[i];
+ for (auto* host : hostsToServe) {
if (host->hasRequests())
servePendingRequests(host, minimumPriority);
else
@@ -275,9 +270,9 @@
{
LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests HostInformation.m_name='%s'", host->name().latin1().data());
- for (int priority = ResourceLoadPriorityHighest; priority >= minimumPriority; --priority) {
- HostInformation::RequestQueue& requestsPending = host->requestsPending(ResourceLoadPriority(priority));
-
+ auto priority = ResourceLoadPriority::Highest;
+ while (true) {
+ auto& requestsPending = host->requestsPending(priority);
while (!requestsPending.isEmpty()) {
RefPtr<ResourceLoader> resourceLoader = requestsPending.first();
@@ -286,7 +281,7 @@
// and we don't know all stylesheets yet.
Document* document = resourceLoader->frameLoader() ? resourceLoader->frameLoader()->frame().document() : 0;
bool shouldLimitRequests = !host->name().isNull() || (document && (document->parsing() || !document->haveStylesheetsLoaded()));
- if (shouldLimitRequests && host->limitRequests(ResourceLoadPriority(priority)))
+ if (shouldLimitRequests && host->limitRequests(priority))
return;
requestsPending.removeFirst();
@@ -299,6 +294,9 @@
#endif
resourceLoader->start();
}
+ if (priority == minimumPriority)
+ return;
+ --priority;
}
}
@@ -338,14 +336,30 @@
ResourceLoadScheduler::HostInformation::~HostInformation()
{
- ASSERT(m_requestsLoading.isEmpty());
- for (unsigned p = 0; p <= ResourceLoadPriorityHighest; p++)
- ASSERT(m_requestsPending[p].isEmpty());
+ ASSERT(!hasRequests());
}
-
+
+unsigned ResourceLoadScheduler::HostInformation::priorityToIndex(ResourceLoadPriority priority)
+{
+ switch (priority) {
+ case ResourceLoadPriority::VeryLow:
+ return 0;
+ case ResourceLoadPriority::Low:
+ return 1;
+ case ResourceLoadPriority::Medium:
+ return 2;
+ case ResourceLoadPriority::High:
+ return 3;
+ case ResourceLoadPriority::VeryHigh:
+ return 4;
+ }
+ ASSERT_NOT_REACHED();
+ return 0;
+}
+
void ResourceLoadScheduler::HostInformation::schedule(ResourceLoader* resourceLoader, ResourceLoadPriority priority)
{
- m_requestsPending[priority].append(resourceLoader);
+ m_requestsPending[priorityToIndex(priority)].append(resourceLoader);
}
void ResourceLoadScheduler::HostInformation::addLoadInProgress(ResourceLoader* resourceLoader)
@@ -359,11 +373,10 @@
if (m_requestsLoading.remove(resourceLoader))
return;
- for (int priority = ResourceLoadPriorityHighest; priority >= ResourceLoadPriorityLowest; --priority) {
- RequestQueue::iterator end = m_requestsPending[priority].end();
- for (RequestQueue::iterator it = m_requestsPending[priority].begin(); it != end; ++it) {
+ for (auto& requestQueue : m_requestsPending) {
+ for (auto it = requestQueue.begin(), end = requestQueue.end(); it != end; ++it) {
if (*it == resourceLoader) {
- m_requestsPending[priority].remove(it);
+ requestQueue.remove(it);
return;
}
}
@@ -374,8 +387,8 @@
{
if (!m_requestsLoading.isEmpty())
return true;
- for (unsigned p = 0; p <= ResourceLoadPriorityHighest; p++) {
- if (!m_requestsPending[p].isEmpty())
+ for (auto& requestQueue : m_requestsPending) {
+ if (!requestQueue.isEmpty())
return true;
}
return false;
@@ -383,7 +396,7 @@
bool ResourceLoadScheduler::HostInformation::limitRequests(ResourceLoadPriority priority) const
{
- if (priority == ResourceLoadPriorityVeryLow && !m_requestsLoading.isEmpty())
+ if (priority == ResourceLoadPriority::VeryLow && !m_requestsLoading.isEmpty())
return true;
return m_requestsLoading.size() >= (resourceLoadScheduler()->isSerialLoadingEnabled() ? 1 : m_maxRequestsInFlight);
}
Modified: trunk/Source/WebCore/loader/ResourceLoadScheduler.h (183562 => 183563)
--- trunk/Source/WebCore/loader/ResourceLoadScheduler.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/loader/ResourceLoadScheduler.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -27,6 +27,7 @@
#include "ResourceLoaderOptions.h"
#include "ResourceLoadPriority.h"
#include "Timer.h"
+#include <array>
#include <wtf/Deque.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
@@ -56,7 +57,7 @@
virtual void setDefersLoading(ResourceLoader*, bool);
virtual void crossOriginRedirectReceived(ResourceLoader*, const URL& redirectURL);
- WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriorityVeryLow);
+ WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority::VeryLow);
WEBCORE_EXPORT virtual void suspendPendingRequests();
WEBCORE_EXPORT virtual void resumePendingRequests();
@@ -93,17 +94,19 @@
~HostInformation();
const String& name() const { return m_name; }
- void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriorityVeryLow);
+ void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriority::VeryLow);
void addLoadInProgress(ResourceLoader*);
void remove(ResourceLoader*);
bool hasRequests() const;
bool limitRequests(ResourceLoadPriority) const;
typedef Deque<RefPtr<ResourceLoader>> RequestQueue;
- RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priority]; }
+ RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priorityToIndex(priority)]; }
- private:
- RequestQueue m_requestsPending[ResourceLoadPriorityHighest + 1];
+ private:
+ static unsigned priorityToIndex(ResourceLoadPriority);
+
+ std::array<RequestQueue, resourceLoadPriorityCount> m_requestsPending;
typedef HashSet<RefPtr<ResourceLoader>> RequestMap;
RequestMap m_requestsLoading;
const String m_name;
Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (183562 => 183563)
--- trunk/Source/WebCore/loader/cache/CachedResource.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -68,37 +68,37 @@
{
switch (type) {
case CachedResource::MainResource:
- return ResourceLoadPriorityVeryHigh;
+ return ResourceLoadPriority::VeryHigh;
case CachedResource::CSSStyleSheet:
- return ResourceLoadPriorityHigh;
+ return ResourceLoadPriority::High;
case CachedResource::Script:
#if ENABLE(SVG_FONTS)
case CachedResource::SVGFontResource:
#endif
case CachedResource::FontResource:
case CachedResource::RawResource:
- return ResourceLoadPriorityMedium;
+ return ResourceLoadPriority::Medium;
case CachedResource::ImageResource:
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
#if ENABLE(XSLT)
case CachedResource::XSLStyleSheet:
- return ResourceLoadPriorityHigh;
+ return ResourceLoadPriority::High;
#endif
case CachedResource::SVGDocumentResource:
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
#if ENABLE(LINK_PREFETCH)
case CachedResource::LinkPrefetch:
- return ResourceLoadPriorityVeryLow;
+ return ResourceLoadPriority::VeryLow;
case CachedResource::LinkSubresource:
- return ResourceLoadPriorityVeryLow;
+ return ResourceLoadPriority::VeryLow;
#endif
#if ENABLE(VIDEO_TRACK)
case CachedResource::TextTrackResource:
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
#endif
}
ASSERT_NOT_REACHED();
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
}
static std::chrono::milliseconds deadDecodedDataDeletionIntervalForResourceType(CachedResource::Type type)
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (183562 => 183563)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -496,7 +496,7 @@
{
URL url = ""
- 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());
+ 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());
// If only the fragment identifiers differ, it is the same resource.
url = ""
Modified: trunk/Source/WebCore/loader/icon/IconLoader.cpp (183562 => 183563)
--- trunk/Source/WebCore/loader/icon/IconLoader.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/loader/icon/IconLoader.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -60,7 +60,7 @@
CachedResourceRequest request(ResourceRequest(m_frame.loader().icon().url()), ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForAnyCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo));
- request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
+ request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low);
request.setInitiator(cachedResourceRequestInitiators().icon);
m_resource = m_frame.document()->cachedResourceLoader().requestRawResource(request);
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp (183562 => 183563)
--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -73,7 +73,7 @@
CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo));
- request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
+ request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low);
CachedResourceLoader* loader = m_parent->player()->cachedResourceLoader();
m_resource = loader ? loader->requestRawResource(request) : 0;
if (m_resource)
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm (183562 => 183563)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm 2015-04-29 18:51:23 UTC (rev 183563)
@@ -69,7 +69,7 @@
CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo));
- request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
+ request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low);
CachedResourceLoader* loader = m_parent->player()->cachedResourceLoader();
m_resource = loader ? loader->requestRawResource(request) : 0;
if (m_resource)
Modified: trunk/Source/WebCore/platform/network/ResourceLoadPriority.h (183562 => 183563)
--- trunk/Source/WebCore/platform/network/ResourceLoadPriority.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/network/ResourceLoadPriority.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -28,17 +28,31 @@
namespace WebCore {
-enum ResourceLoadPriority {
- ResourceLoadPriorityVeryLow,
- ResourceLoadPriorityLow,
- ResourceLoadPriorityMedium,
- ResourceLoadPriorityHigh,
- ResourceLoadPriorityVeryHigh,
- ResourceLoadPriorityLowest = ResourceLoadPriorityVeryLow,
- ResourceLoadPriorityHighest = ResourceLoadPriorityVeryHigh,
+enum class ResourceLoadPriority {
+ VeryLow,
+ Low,
+ Medium,
+ High,
+ VeryHigh,
+ Lowest = VeryLow,
+ Highest = VeryHigh,
};
+static const unsigned resourceLoadPriorityCount { static_cast<unsigned>(ResourceLoadPriority::Highest) + 1 };
+
+inline ResourceLoadPriority& operator++(ResourceLoadPriority& priority)
+{
+ ASSERT(priority != ResourceLoadPriority::Highest);
+ return priority = static_cast<ResourceLoadPriority>(static_cast<int>(priority) + 1);
}
+inline ResourceLoadPriority& operator--(ResourceLoadPriority& priority)
+{
+ ASSERT(priority != ResourceLoadPriority::Lowest);
+ return priority = static_cast<ResourceLoadPriority>(static_cast<int>(priority) - 1);
+}
+
+}
+
#endif
Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp (183562 => 183563)
--- trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -51,32 +51,32 @@
std::unique_ptr<ResourceRequest> ResourceRequestBase::adopt(std::unique_ptr<CrossThreadResourceRequestData> data)
{
auto request = std::make_unique<ResourceRequest>();
- request->setURL(data->m_url);
- request->setCachePolicy(data->m_cachePolicy);
- request->setTimeoutInterval(data->m_timeoutInterval);
- request->setFirstPartyForCookies(data->m_firstPartyForCookies);
- request->setHTTPMethod(data->m_httpMethod);
- request->setPriority(data->m_priority);
- request->setRequester(data->m_requester);
+ request->setURL(data->url);
+ request->setCachePolicy(data->cachePolicy);
+ request->setTimeoutInterval(data->timeoutInterval);
+ request->setFirstPartyForCookies(data->firstPartyForCookies);
+ request->setHTTPMethod(data->httpMethod);
+ request->setPriority(data->priority);
+ request->setRequester(data->requester);
request->updateResourceRequest();
- request->m_httpHeaderFields.adopt(WTF::move(data->m_httpHeaders));
+ request->m_httpHeaderFields.adopt(WTF::move(data->httpHeaders));
- size_t encodingCount = data->m_responseContentDispositionEncodingFallbackArray.size();
+ size_t encodingCount = data->responseContentDispositionEncodingFallbackArray.size();
if (encodingCount > 0) {
- String encoding1 = data->m_responseContentDispositionEncodingFallbackArray[0];
+ String encoding1 = data->responseContentDispositionEncodingFallbackArray[0];
String encoding2;
String encoding3;
if (encodingCount > 1) {
- encoding2 = data->m_responseContentDispositionEncodingFallbackArray[1];
+ encoding2 = data->responseContentDispositionEncodingFallbackArray[1];
if (encodingCount > 2)
- encoding3 = data->m_responseContentDispositionEncodingFallbackArray[2];
+ encoding3 = data->responseContentDispositionEncodingFallbackArray[2];
}
ASSERT(encodingCount <= 3);
request->setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3);
}
- request->setHTTPBody(data->m_httpBody);
- request->setAllowCookies(data->m_allowCookies);
+ request->setHTTPBody(data->httpBody);
+ request->setAllowCookies(data->allowCookies);
request->doPlatformAdopt(WTF::move(data));
return request;
}
@@ -84,23 +84,23 @@
std::unique_ptr<CrossThreadResourceRequestData> ResourceRequestBase::copyData() const
{
auto data = ""
- data->m_url = url().copy();
- data->m_cachePolicy = cachePolicy();
- data->m_timeoutInterval = timeoutInterval();
- data->m_firstPartyForCookies = firstPartyForCookies().copy();
- data->m_httpMethod = httpMethod().isolatedCopy();
- data->m_httpHeaders = httpHeaderFields().copyData();
- data->m_priority = priority();
- data->m_requester = m_requester;
+ data->url = ""
+ data->cachePolicy = m_cachePolicy;
+ data->timeoutInterval = timeoutInterval();
+ data->firstPartyForCookies = firstPartyForCookies().copy();
+ data->httpMethod = httpMethod().isolatedCopy();
+ data->httpHeaders = httpHeaderFields().copyData();
+ data->priority = m_priority;
+ data->requester = m_requester;
- data->m_responseContentDispositionEncodingFallbackArray.reserveInitialCapacity(m_responseContentDispositionEncodingFallbackArray.size());
+ data->responseContentDispositionEncodingFallbackArray.reserveInitialCapacity(m_responseContentDispositionEncodingFallbackArray.size());
size_t encodingArraySize = m_responseContentDispositionEncodingFallbackArray.size();
for (size_t index = 0; index < encodingArraySize; ++index) {
- data->m_responseContentDispositionEncodingFallbackArray.append(m_responseContentDispositionEncodingFallbackArray[index].isolatedCopy());
+ data->responseContentDispositionEncodingFallbackArray.append(m_responseContentDispositionEncodingFallbackArray[index].isolatedCopy());
}
if (m_httpBody)
- data->m_httpBody = m_httpBody->deepCopy();
- data->m_allowCookies = m_allowCookies;
+ data->httpBody = m_httpBody->deepCopy();
+ data->allowCookies = m_allowCookies;
return asResourceRequest().doPlatformCopyData(WTF::move(data));
}
@@ -151,7 +151,7 @@
{
updateResourceRequest();
- return static_cast<ResourceRequestCachePolicy>(m_cachePolicy);
+ return m_cachePolicy;
}
void ResourceRequestBase::setCachePolicy(ResourceRequestCachePolicy cachePolicy)
@@ -438,7 +438,7 @@
{
updateResourceRequest();
- return static_cast<ResourceLoadPriority>(m_priority);
+ return m_priority;
}
void ResourceRequestBase::setPriority(ResourceLoadPriority priority)
@@ -449,7 +449,6 @@
return;
m_priority = priority;
- ASSERT(static_cast<ResourceLoadPriority>(m_priority) == priority); // Make sure it fits in the bitfield.
if (url().protocolIsInHTTPFamily())
m_platformRequestUpdated = false;
Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.h (183562 => 183563)
--- trunk/Source/WebCore/platform/network/ResourceRequestBase.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -170,15 +170,8 @@
protected:
// Used when ResourceRequest is initialized from a platform representation of the request
ResourceRequestBase()
- : m_resourceRequestUpdated(false)
- , m_platformRequestUpdated(true)
- , m_resourceRequestBodyUpdated(false)
+ : m_platformRequestUpdated(true)
, m_platformRequestBodyUpdated(true)
- , m_reportUploadProgress(false)
- , m_reportLoadTiming(false)
- , m_reportRawHeaders(false)
- , m_hiddenFromInspector(false)
- , m_priority(ResourceLoadPriorityLow)
{
}
@@ -193,14 +186,7 @@
, m_allowCookies(ResourceRequestBase::defaultAllowCookies())
#endif
, m_resourceRequestUpdated(true)
- , m_platformRequestUpdated(false)
, m_resourceRequestBodyUpdated(true)
- , m_platformRequestBodyUpdated(false)
- , m_reportUploadProgress(false)
- , m_reportLoadTiming(false)
- , m_reportRawHeaders(false)
- , m_hiddenFromInspector(false)
- , m_priority(ResourceLoadPriorityLow)
{
}
@@ -217,17 +203,17 @@
HTTPHeaderMap m_httpHeaderFields;
Vector<String> m_responseContentDispositionEncodingFallbackArray;
RefPtr<FormData> m_httpBody;
- unsigned m_cachePolicy : 3;
- unsigned m_allowCookies : 1;
- mutable unsigned m_resourceRequestUpdated : 1;
- mutable unsigned m_platformRequestUpdated : 1;
- mutable unsigned m_resourceRequestBodyUpdated : 1;
- mutable unsigned m_platformRequestBodyUpdated : 1;
- unsigned m_reportUploadProgress : 1;
- unsigned m_reportLoadTiming : 1;
- unsigned m_reportRawHeaders : 1;
- unsigned m_hiddenFromInspector : 1;
- unsigned m_priority : 4;
+ ResourceRequestCachePolicy m_cachePolicy { UseProtocolCachePolicy };
+ bool m_allowCookies { false };
+ mutable bool m_resourceRequestUpdated { false };
+ mutable bool m_platformRequestUpdated { false };
+ mutable bool m_resourceRequestBodyUpdated { false };
+ mutable bool m_platformRequestBodyUpdated { false };
+ bool m_reportUploadProgress { false };
+ bool m_reportLoadTiming { false };
+ bool m_reportRawHeaders { false };
+ bool m_hiddenFromInspector { false };
+ ResourceLoadPriority m_priority { ResourceLoadPriority::Low };
Requester m_requester { Requester::Unspecified };
private:
@@ -245,22 +231,17 @@
inline bool operator!=(ResourceRequest& a, const ResourceRequest& b) { return !(a == b); }
struct CrossThreadResourceRequestDataBase {
- WTF_MAKE_NONCOPYABLE(CrossThreadResourceRequestDataBase); WTF_MAKE_FAST_ALLOCATED;
- public:
- CrossThreadResourceRequestDataBase() { }
- URL m_url;
-
- ResourceRequestCachePolicy m_cachePolicy;
- double m_timeoutInterval;
- URL m_firstPartyForCookies;
-
- String m_httpMethod;
- std::unique_ptr<CrossThreadHTTPHeaderMapData> m_httpHeaders;
- Vector<String> m_responseContentDispositionEncodingFallbackArray;
- RefPtr<FormData> m_httpBody;
- bool m_allowCookies;
- ResourceLoadPriority m_priority;
- ResourceRequestBase::Requester m_requester;
+ URL url;
+ ResourceRequestCachePolicy cachePolicy;
+ double timeoutInterval;
+ URL firstPartyForCookies;
+ String httpMethod;
+ std::unique_ptr<CrossThreadHTTPHeaderMapData> httpHeaders;
+ Vector<String> responseContentDispositionEncodingFallbackArray;
+ RefPtr<FormData> httpBody;
+ bool allowCookies;
+ ResourceLoadPriority priority;
+ ResourceRequestBase::Requester requester;
};
unsigned initializeMaximumHTTPConnectionCountPerHost();
Modified: trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp (183562 => 183563)
--- trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -399,10 +399,10 @@
if (!ResourceRequest::resourcePrioritiesEnabled())
return maximumHTTPConnectionCountPerHost;
- wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriorityHighest));
+ wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest));
#if !PLATFORM(WIN)
// FIXME: <rdar://problem/9375609> Implement minimum fast lane priority setting on Windows
- wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriorityMedium));
+ wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium));
#endif
return unlimitedRequestCount;
@@ -418,8 +418,8 @@
static const unsigned preferredConnectionCount = 6;
static const unsigned fastLaneConnectionCount = 1;
wkInitializeMaximumHTTPConnectionCountPerHost(preferredConnectionCount);
- wkSetHTTPRequestMaximumPriority(ResourceLoadPriorityHighest);
- wkSetHTTPRequestMinimumFastLanePriority(ResourceLoadPriorityMedium);
+ wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest));
+ wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium));
_CFNetworkHTTPConnectionCacheSetLimit(kHTTPNumFastLanes, fastLaneConnectionCount);
}
#endif
Modified: trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h (183562 => 183563)
--- trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -46,33 +46,33 @@
switch (priority) {
case -1:
case 0:
- return ResourceLoadPriorityVeryLow;
+ return ResourceLoadPriority::VeryLow;
case 1:
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
case 2:
- return ResourceLoadPriorityMedium;
+ return ResourceLoadPriority::Medium;
case 3:
- return ResourceLoadPriorityHigh;
+ return ResourceLoadPriority::High;
case 4:
- return ResourceLoadPriorityVeryHigh;
+ return ResourceLoadPriority::VeryHigh;
default:
ASSERT_NOT_REACHED();
- return ResourceLoadPriorityLowest;
+ return ResourceLoadPriority::Lowest;
}
}
inline int toPlatformRequestPriority(ResourceLoadPriority priority)
{
switch (priority) {
- case ResourceLoadPriorityVeryLow:
+ case ResourceLoadPriority::VeryLow:
return 0;
- case ResourceLoadPriorityLow:
+ case ResourceLoadPriority::Low:
return 1;
- case ResourceLoadPriorityMedium:
+ case ResourceLoadPriority::Medium:
return 2;
- case ResourceLoadPriorityHigh:
+ case ResourceLoadPriority::High:
return 3;
- case ResourceLoadPriorityVeryHigh:
+ case ResourceLoadPriority::VeryHigh:
return 4;
}
Modified: trunk/Source/WebCore/platform/network/soup/ResourceRequest.h (183562 => 183563)
--- trunk/Source/WebCore/platform/network/soup/ResourceRequest.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/platform/network/soup/ResourceRequest.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -131,15 +131,15 @@
inline SoupMessagePriority toSoupMessagePriority(ResourceLoadPriority priority)
{
switch (priority) {
- case ResourceLoadPriorityVeryLow:
+ case ResourceLoadPriority::VeryLow:
return SOUP_MESSAGE_PRIORITY_VERY_LOW;
- case ResourceLoadPriorityLow:
+ case ResourceLoadPriority::Low:
return SOUP_MESSAGE_PRIORITY_LOW;
- case ResourceLoadPriorityMedium:
+ case ResourceLoadPriority::Medium:
return SOUP_MESSAGE_PRIORITY_NORMAL;
- case ResourceLoadPriorityHigh:
+ case ResourceLoadPriority::High:
return SOUP_MESSAGE_PRIORITY_HIGH;
- case ResourceLoadPriorityVeryHigh:
+ case ResourceLoadPriority::VeryHigh:
return SOUP_MESSAGE_PRIORITY_VERY_HIGH;
}
Modified: trunk/Source/WebCore/testing/Internals.cpp (183562 => 183563)
--- trunk/Source/WebCore/testing/Internals.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebCore/testing/Internals.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -461,17 +461,17 @@
static ResourceLoadPriority stringToResourceLoadPriority(const String& policy)
{
if (policy == "ResourceLoadPriorityVeryLow")
- return ResourceLoadPriorityVeryLow;
+ return ResourceLoadPriority::VeryLow;
if (policy == "ResourceLoadPriorityLow")
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
if (policy == "ResourceLoadPriorityMedium")
- return ResourceLoadPriorityMedium;
+ return ResourceLoadPriority::Medium;
if (policy == "ResourceLoadPriorityHigh")
- return ResourceLoadPriorityHigh;
+ return ResourceLoadPriority::High;
if (policy == "ResourceLoadPriorityVeryHigh")
- return ResourceLoadPriorityVeryHigh;
+ return ResourceLoadPriority::VeryHigh;
ASSERT_NOT_REACHED();
- return ResourceLoadPriorityLow;
+ return ResourceLoadPriority::Low;
}
void Internals::setOverrideResourceLoadPriority(const String& priority)
Modified: trunk/Source/WebKit2/ChangeLog (183562 => 183563)
--- trunk/Source/WebKit2/ChangeLog 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/ChangeLog 2015-04-29 18:51:23 UTC (rev 183563)
@@ -1,3 +1,26 @@
+2015-04-29 Antti Koivisto <[email protected]>
+
+ ResourceLoadPriority should be enum class
+ https://bugs.webkit.org/show_bug.cgi?id=144326
+
+ Reviewed by Darin Adler.
+
+ * 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:
+
2015-04-29 Myles C. Maxfield <[email protected]>
[OS X] Use CTFontCreateForCSS instead of doing font search ourselves
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp (183562 => 183563)
--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -151,10 +151,6 @@
loader->setDefersLoading(defers);
}
-void NetworkConnectionToWebProcess::servePendingRequests(uint32_t)
-{
-}
-
void NetworkConnectionToWebProcess::setSerialLoadingEnabled(bool enabled)
{
m_serialLoadingEnabled = enabled;
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h (183562 => 183563)
--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -78,7 +78,6 @@
void removeLoadIdentifier(ResourceLoadIdentifier);
void setDefersLoading(ResourceLoadIdentifier, bool);
void crossOriginRedirectReceived(ResourceLoadIdentifier, const WebCore::URL& redirectURL);
- void servePendingRequests(uint32_t resourceLoadPriority);
void setSerialLoadingEnabled(bool);
void startDownload(WebCore::SessionID, uint64_t downloadID, const WebCore::ResourceRequest&);
void convertMainResourceLoadToDownload(uint64_t mainResourceLoadIdentifier, uint64_t downloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in (183562 => 183563)
--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2015-04-29 18:51:23 UTC (rev 183563)
@@ -28,9 +28,6 @@
PerformSynchronousLoad(WebKit::NetworkResourceLoadParameters resourceLoadParameters) -> (WebCore::ResourceError error, WebCore::ResourceResponse response, Vector<char> data) Delayed
RemoveLoadIdentifier(uint64_t resourceLoadIdentifier)
SetDefersLoading(uint64_t resourceLoadIdentifier, bool defers)
-
- ServePendingRequests(uint32_t resourceLoadPriority)
-
SetSerialLoadingEnabled(bool enabled) -> ()
StartDownload(WebCore::SessionID sessionID, uint64_t downloadID, WebCore::ResourceRequest request)
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp (183562 => 183563)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -300,7 +300,7 @@
}
bool isMainResource = originalRequest.requester() == WebCore::ResourceRequest::Requester::Main;
- bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriorityVeryHigh;
+ bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriority::VeryHigh;
if (!storeUnconditionallyForHistoryNavigation) {
auto now = std::chrono::system_clock::now();
bool hasNonZeroLifetime = !response.cacheControlContainsNoCache() && WebCore::computeFreshnessLifetimeForHTTPFamily(response, now) > 0_ms;
@@ -342,7 +342,7 @@
}
auto startTime = std::chrono::system_clock::now();
- unsigned priority = originalRequest.priority();
+ auto priority = static_cast<unsigned>(originalRequest.priority());
m_storage->retrieve(storageKey, priority, [this, originalRequest, completionHandler, startTime, storageKey, webPageID](std::unique_ptr<Storage::Record> record) {
if (!record) {
Modified: trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm (183562 => 183563)
--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm 2015-04-29 18:51:23 UTC (rev 183563)
@@ -49,8 +49,8 @@
ResourceRequest::setHTTPPipeliningEnabled(prefValue);
if (ResourceRequest::resourcePrioritiesEnabled()) {
- WKSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriorityHighest));
- WKSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriorityMedium));
+ WKSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest));
+ WKSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium));
}
}
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (183562 => 183563)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -637,7 +637,7 @@
void InjectedBundle::dispatchPendingLoadRequests()
{
- resourceLoadScheduler()->servePendingRequests();
+ // FIXME: This should be removed along with the bundle API.
}
} // namespace WebKit
Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp (183562 => 183563)
--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp 2015-04-29 18:51:23 UTC (rev 183563)
@@ -244,16 +244,10 @@
// We override this call in the WebProcess to make it a no-op.
}
-void WebResourceLoadScheduler::servePendingRequests(ResourceLoadPriority minimumPriority)
+void WebResourceLoadScheduler::servePendingRequests(ResourceLoadPriority)
{
- LOG(NetworkScheduling, "(WebProcess) WebResourceLoadScheduler::servePendingRequests");
-
- // The NetworkProcess scheduler is good at making sure loads are serviced until there are no more pending requests.
- // If this WebProcess isn't expecting requests to be served then we can ignore messaging the NetworkProcess right now.
- if (m_suspendPendingRequestsCount)
- return;
-
- WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::ServePendingRequests(minimumPriority), 0);
+ // This overrides the base class version.
+ // We don't need to do anything as this is handled by the network process.
}
void WebResourceLoadScheduler::suspendPendingRequests()
Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h (183562 => 183563)
--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h 2015-04-29 18:31:35 UTC (rev 183562)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h 2015-04-29 18:51:23 UTC (rev 183563)
@@ -52,7 +52,7 @@
virtual void setDefersLoading(WebCore::ResourceLoader*, bool) override;
virtual void crossOriginRedirectReceived(WebCore::ResourceLoader*, const WebCore::URL& redirectURL) override;
- virtual void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority = WebCore::ResourceLoadPriorityVeryLow) override;
+ virtual void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority) override;
virtual void suspendPendingRequests() override;
virtual void resumePendingRequests() override;