Changeset 183563 in webkit
- Timestamp:
- Apr 29, 2015, 11:51:23 AM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r183562 r183563 1 2015-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 1 61 2015-04-29 Myles C. Maxfield <mmaxfield@apple.com> 2 62 -
trunk/Source/WebCore/html/HTMLLinkElement.cpp
r182877 r183563 241 241 Optional<ResourceLoadPriority> priority; 242 242 if (!isActive) 243 priority = ResourceLoadPriority VeryLow;243 priority = ResourceLoadPriority::VeryLow; 244 244 CachedResourceRequest request(ResourceRequest(document().completeURL(url)), charset, priority); 245 245 request.setInitiator(this); -
trunk/Source/WebCore/loader/LinkLoader.cpp
r182351 r183563 113 113 // We only make one request to the cached resource loader if multiple rel types are specified; 114 114 // this is the higher priority, which should overwrite the lower priority. 115 priority = ResourceLoadPriority Low;115 priority = ResourceLoadPriority::Low; 116 116 type = CachedResource::LinkSubresource; 117 117 } -
trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp
r179584 r183563 172 172 // Serve all requests at once to keep the pipeline full at the network layer. 173 173 // FIXME: Does this code do anything useful, given that we also set maxRequestsInFlightPerHost to effectively unlimited on these platforms? 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 == 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()) { 181 181 // Try to request important resources immediately. 182 182 servePendingRequests(host, priority); … … 184 184 } 185 185 #else 186 if (priority > ResourceLoadPriority Low || !resourceLoader->url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriorityLow && !hadRequests)) {186 if (priority > ResourceLoadPriority::Low || !resourceLoader->url().protocolIsInHTTPFamily() || (priority == ResourceLoadPriority::Low && !hadRequests)) { 187 187 // Try to request important resources immediately. 188 188 servePendingRequests(host, priority); … … 257 257 258 258 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) { 267 262 if (host->hasRequests()) 268 263 servePendingRequests(host, minimumPriority); … … 276 271 LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests HostInformation.m_name='%s'", host->name().latin1().data()); 277 272 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); 281 276 while (!requestsPending.isEmpty()) { 282 277 RefPtr<ResourceLoader> resourceLoader = requestsPending.first(); … … 287 282 Document* document = resourceLoader->frameLoader() ? resourceLoader->frameLoader()->frame().document() : 0; 288 283 bool shouldLimitRequests = !host->name().isNull() || (document && (document->parsing() || !document->haveStylesheetsLoaded())); 289 if (shouldLimitRequests && host->limitRequests( ResourceLoadPriority(priority)))284 if (shouldLimitRequests && host->limitRequests(priority)) 290 285 return; 291 286 … … 300 295 resourceLoader->start(); 301 296 } 297 if (priority == minimumPriority) 298 return; 299 --priority; 302 300 } 303 301 } … … 339 337 ResourceLoadScheduler::HostInformation::~HostInformation() 340 338 { 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 342 unsigned 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 346 360 void ResourceLoadScheduler::HostInformation::schedule(ResourceLoader* resourceLoader, ResourceLoadPriority priority) 347 361 { 348 m_requestsPending[priority ].append(resourceLoader);362 m_requestsPending[priorityToIndex(priority)].append(resourceLoader); 349 363 } 350 364 … … 360 374 return; 361 375 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) { 365 378 if (*it == resourceLoader) { 366 m_requestsPending[priority].remove(it);379 requestQueue.remove(it); 367 380 return; 368 381 } … … 375 388 if (!m_requestsLoading.isEmpty()) 376 389 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()) 379 392 return true; 380 393 } … … 384 397 bool ResourceLoadScheduler::HostInformation::limitRequests(ResourceLoadPriority priority) const 385 398 { 386 if (priority == ResourceLoadPriority VeryLow && !m_requestsLoading.isEmpty())399 if (priority == ResourceLoadPriority::VeryLow && !m_requestsLoading.isEmpty()) 387 400 return true; 388 401 return m_requestsLoading.size() >= (resourceLoadScheduler()->isSerialLoadingEnabled() ? 1 : m_maxRequestsInFlight); -
trunk/Source/WebCore/loader/ResourceLoadScheduler.h
r181348 r183563 28 28 #include "ResourceLoadPriority.h" 29 29 #include "Timer.h" 30 #include <array> 30 31 #include <wtf/Deque.h> 31 32 #include <wtf/HashMap.h> … … 57 58 virtual void crossOriginRedirectReceived(ResourceLoader*, const URL& redirectURL); 58 59 59 WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority VeryLow);60 WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority::VeryLow); 60 61 WEBCORE_EXPORT virtual void suspendPendingRequests(); 61 62 WEBCORE_EXPORT virtual void resumePendingRequests(); … … 94 95 95 96 const String& name() const { return m_name; } 96 void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriority VeryLow);97 void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriority::VeryLow); 97 98 void addLoadInProgress(ResourceLoader*); 98 99 void remove(ResourceLoader*); … … 101 102 102 103 typedef Deque<RefPtr<ResourceLoader>> RequestQueue; 103 RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priority ]; }104 RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priorityToIndex(priority)]; } 104 105 105 private: 106 RequestQueue m_requestsPending[ResourceLoadPriorityHighest + 1]; 106 private: 107 static unsigned priorityToIndex(ResourceLoadPriority); 108 109 std::array<RequestQueue, resourceLoadPriorityCount> m_requestsPending; 107 110 typedef HashSet<RefPtr<ResourceLoader>> RequestMap; 108 111 RequestMap m_requestsLoading; -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r183261 r183563 69 69 switch (type) { 70 70 case CachedResource::MainResource: 71 return ResourceLoadPriority VeryHigh;71 return ResourceLoadPriority::VeryHigh; 72 72 case CachedResource::CSSStyleSheet: 73 return ResourceLoadPriority High;73 return ResourceLoadPriority::High; 74 74 case CachedResource::Script: 75 75 #if ENABLE(SVG_FONTS) … … 78 78 case CachedResource::FontResource: 79 79 case CachedResource::RawResource: 80 return ResourceLoadPriority Medium;80 return ResourceLoadPriority::Medium; 81 81 case CachedResource::ImageResource: 82 return ResourceLoadPriority Low;82 return ResourceLoadPriority::Low; 83 83 #if ENABLE(XSLT) 84 84 case CachedResource::XSLStyleSheet: 85 return ResourceLoadPriority High;85 return ResourceLoadPriority::High; 86 86 #endif 87 87 case CachedResource::SVGDocumentResource: 88 return ResourceLoadPriority Low;88 return ResourceLoadPriority::Low; 89 89 #if ENABLE(LINK_PREFETCH) 90 90 case CachedResource::LinkPrefetch: 91 return ResourceLoadPriority VeryLow;91 return ResourceLoadPriority::VeryLow; 92 92 case CachedResource::LinkSubresource: 93 return ResourceLoadPriority VeryLow;93 return ResourceLoadPriority::VeryLow; 94 94 #endif 95 95 #if ENABLE(VIDEO_TRACK) 96 96 case CachedResource::TextTrackResource: 97 return ResourceLoadPriority Low;97 return ResourceLoadPriority::Low; 98 98 #endif 99 99 } 100 100 ASSERT_NOT_REACHED(); 101 return ResourceLoadPriority Low;101 return ResourceLoadPriority::Low; 102 102 } 103 103 -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp
r182266 r183563 497 497 URL url = request.resourceRequest().url(); 498 498 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()); 500 500 501 501 // If only the fragment identifiers differ, it is the same resource. -
trunk/Source/WebCore/loader/icon/IconLoader.cpp
r179242 r183563 61 61 CachedResourceRequest request(ResourceRequest(m_frame.loader().icon().url()), ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForAnyCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo)); 62 62 63 request.mutableResourceRequest().setPriority(ResourceLoadPriority Low);63 request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low); 64 64 request.setInitiator(cachedResourceRequestInitiators().icon); 65 65 -
trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp
r175549 r183563 74 74 CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo)); 75 75 76 request.mutableResourceRequest().setPriority(ResourceLoadPriority Low);76 request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low); 77 77 CachedResourceLoader* loader = m_parent->player()->cachedResourceLoader(); 78 78 m_resource = loader ? loader->requestRawResource(request) : 0; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm
r175549 r183563 70 70 CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType, DoNotIncludeCertificateInfo)); 71 71 72 request.mutableResourceRequest().setPriority(ResourceLoadPriority Low);72 request.mutableResourceRequest().setPriority(ResourceLoadPriority::Low); 73 73 CachedResourceLoader* loader = m_parent->player()->cachedResourceLoader(); 74 74 m_resource = loader ? loader->requestRawResource(request) : 0; -
trunk/Source/WebCore/platform/network/ResourceLoadPriority.h
r179584 r183563 29 29 namespace WebCore { 30 30 31 enum ResourceLoadPriority {32 ResourceLoadPriorityVeryLow,33 ResourceLoadPriorityLow,34 ResourceLoadPriorityMedium,35 ResourceLoadPriorityHigh,36 ResourceLoadPriorityVeryHigh,37 ResourceLoadPriorityLowest = ResourceLoadPriorityVeryLow,38 ResourceLoadPriorityHighest = ResourceLoadPriorityVeryHigh,31 enum class ResourceLoadPriority { 32 VeryLow, 33 Low, 34 Medium, 35 High, 36 VeryHigh, 37 Lowest = VeryLow, 38 Highest = VeryHigh, 39 39 }; 40 41 static const unsigned resourceLoadPriorityCount { static_cast<unsigned>(ResourceLoadPriority::Highest) + 1 }; 42 43 inline ResourceLoadPriority& operator++(ResourceLoadPriority& priority) 44 { 45 ASSERT(priority != ResourceLoadPriority::Highest); 46 return priority = static_cast<ResourceLoadPriority>(static_cast<int>(priority) + 1); 47 } 48 49 inline ResourceLoadPriority& operator--(ResourceLoadPriority& priority) 50 { 51 ASSERT(priority != ResourceLoadPriority::Lowest); 52 return priority = static_cast<ResourceLoadPriority>(static_cast<int>(priority) - 1); 53 } 40 54 41 55 } -
trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp
r183467 r183563 52 52 { 53 53 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); 61 61 62 62 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(); 66 66 if (encodingCount > 0) { 67 String encoding1 = data-> m_responseContentDispositionEncodingFallbackArray[0];67 String encoding1 = data->responseContentDispositionEncodingFallbackArray[0]; 68 68 String encoding2; 69 69 String encoding3; 70 70 if (encodingCount > 1) { 71 encoding2 = data-> m_responseContentDispositionEncodingFallbackArray[1];71 encoding2 = data->responseContentDispositionEncodingFallbackArray[1]; 72 72 if (encodingCount > 2) 73 encoding3 = data-> m_responseContentDispositionEncodingFallbackArray[2];73 encoding3 = data->responseContentDispositionEncodingFallbackArray[2]; 74 74 } 75 75 ASSERT(encodingCount <= 3); 76 76 request->setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3); 77 77 } 78 request->setHTTPBody(data-> m_httpBody);79 request->setAllowCookies(data-> m_allowCookies);78 request->setHTTPBody(data->httpBody); 79 request->setAllowCookies(data->allowCookies); 80 80 request->doPlatformAdopt(WTF::move(data)); 81 81 return request; … … 85 85 { 86 86 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()); 97 97 size_t encodingArraySize = m_responseContentDispositionEncodingFallbackArray.size(); 98 98 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()); 100 100 } 101 101 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; 104 104 return asResourceRequest().doPlatformCopyData(WTF::move(data)); 105 105 } … … 152 152 updateResourceRequest(); 153 153 154 return static_cast<ResourceRequestCachePolicy>(m_cachePolicy);154 return m_cachePolicy; 155 155 } 156 156 … … 439 439 updateResourceRequest(); 440 440 441 return static_cast<ResourceLoadPriority>(m_priority);441 return m_priority; 442 442 } 443 443 … … 450 450 451 451 m_priority = priority; 452 ASSERT(static_cast<ResourceLoadPriority>(m_priority) == priority); // Make sure it fits in the bitfield.453 452 454 453 if (url().protocolIsInHTTPFamily()) -
trunk/Source/WebCore/platform/network/ResourceRequestBase.h
r183478 r183563 171 171 // Used when ResourceRequest is initialized from a platform representation of the request 172 172 ResourceRequestBase() 173 : m_resourceRequestUpdated(false) 174 , m_platformRequestUpdated(true) 175 , m_resourceRequestBodyUpdated(false) 173 : m_platformRequestUpdated(true) 176 174 , m_platformRequestBodyUpdated(true) 177 , m_reportUploadProgress(false)178 , m_reportLoadTiming(false)179 , m_reportRawHeaders(false)180 , m_hiddenFromInspector(false)181 , m_priority(ResourceLoadPriorityLow)182 175 { 183 176 } … … 194 187 #endif 195 188 , m_resourceRequestUpdated(true) 196 , m_platformRequestUpdated(false)197 189 , 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)204 190 { 205 191 } … … 218 204 Vector<String> m_responseContentDispositionEncodingFallbackArray; 219 205 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 }; 231 217 Requester m_requester { Requester::Unspecified }; 232 218 … … 246 232 247 233 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; 264 245 }; 265 246 -
trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp
r181136 r183563 400 400 return maximumHTTPConnectionCountPerHost; 401 401 402 wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority Highest));402 wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest)); 403 403 #if !PLATFORM(WIN) 404 404 // FIXME: <rdar://problem/9375609> Implement minimum fast lane priority setting on Windows 405 wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority Medium));405 wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium)); 406 406 #endif 407 407 … … 419 419 static const unsigned fastLaneConnectionCount = 1; 420 420 wkInitializeMaximumHTTPConnectionCountPerHost(preferredConnectionCount); 421 wkSetHTTPRequestMaximumPriority( ResourceLoadPriorityHighest);422 wkSetHTTPRequestMinimumFastLanePriority( ResourceLoadPriorityMedium);421 wkSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest)); 422 wkSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium)); 423 423 _CFNetworkHTTPConnectionCacheSetLimit(kHTTPNumFastLanes, fastLaneConnectionCount); 424 424 } -
trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h
r179593 r183563 47 47 case -1: 48 48 case 0: 49 return ResourceLoadPriority VeryLow;49 return ResourceLoadPriority::VeryLow; 50 50 case 1: 51 return ResourceLoadPriority Low;51 return ResourceLoadPriority::Low; 52 52 case 2: 53 return ResourceLoadPriority Medium;53 return ResourceLoadPriority::Medium; 54 54 case 3: 55 return ResourceLoadPriority High;55 return ResourceLoadPriority::High; 56 56 case 4: 57 return ResourceLoadPriority VeryHigh;57 return ResourceLoadPriority::VeryHigh; 58 58 default: 59 59 ASSERT_NOT_REACHED(); 60 return ResourceLoadPriority Lowest;60 return ResourceLoadPriority::Lowest; 61 61 } 62 62 } … … 65 65 { 66 66 switch (priority) { 67 case ResourceLoadPriority VeryLow:67 case ResourceLoadPriority::VeryLow: 68 68 return 0; 69 case ResourceLoadPriority Low:69 case ResourceLoadPriority::Low: 70 70 return 1; 71 case ResourceLoadPriority Medium:71 case ResourceLoadPriority::Medium: 72 72 return 2; 73 case ResourceLoadPriority High:73 case ResourceLoadPriority::High: 74 74 return 3; 75 case ResourceLoadPriority VeryHigh:75 case ResourceLoadPriority::VeryHigh: 76 76 return 4; 77 77 } -
trunk/Source/WebCore/platform/network/soup/ResourceRequest.h
r181136 r183563 132 132 { 133 133 switch (priority) { 134 case ResourceLoadPriority VeryLow:134 case ResourceLoadPriority::VeryLow: 135 135 return SOUP_MESSAGE_PRIORITY_VERY_LOW; 136 case ResourceLoadPriority Low:136 case ResourceLoadPriority::Low: 137 137 return SOUP_MESSAGE_PRIORITY_LOW; 138 case ResourceLoadPriority Medium:138 case ResourceLoadPriority::Medium: 139 139 return SOUP_MESSAGE_PRIORITY_NORMAL; 140 case ResourceLoadPriority High:140 case ResourceLoadPriority::High: 141 141 return SOUP_MESSAGE_PRIORITY_HIGH; 142 case ResourceLoadPriority VeryHigh:142 case ResourceLoadPriority::VeryHigh: 143 143 return SOUP_MESSAGE_PRIORITY_VERY_HIGH; 144 144 } -
trunk/Source/WebCore/testing/Internals.cpp
r183428 r183563 462 462 { 463 463 if (policy == "ResourceLoadPriorityVeryLow") 464 return ResourceLoadPriority VeryLow;464 return ResourceLoadPriority::VeryLow; 465 465 if (policy == "ResourceLoadPriorityLow") 466 return ResourceLoadPriority Low;466 return ResourceLoadPriority::Low; 467 467 if (policy == "ResourceLoadPriorityMedium") 468 return ResourceLoadPriority Medium;468 return ResourceLoadPriority::Medium; 469 469 if (policy == "ResourceLoadPriorityHigh") 470 return ResourceLoadPriority High;470 return ResourceLoadPriority::High; 471 471 if (policy == "ResourceLoadPriorityVeryHigh") 472 return ResourceLoadPriority VeryHigh;472 return ResourceLoadPriority::VeryHigh; 473 473 ASSERT_NOT_REACHED(); 474 return ResourceLoadPriority Low;474 return ResourceLoadPriority::Low; 475 475 } 476 476 -
trunk/Source/WebKit2/ChangeLog
r183562 r183563 1 2015-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 1 24 2015-04-29 Myles C. Maxfield <mmaxfield@apple.com> 2 25 -
trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp
r179409 r183563 152 152 } 153 153 154 void NetworkConnectionToWebProcess::servePendingRequests(uint32_t)155 {156 }157 158 154 void NetworkConnectionToWebProcess::setSerialLoadingEnabled(bool enabled) 159 155 { -
trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h
r179363 r183563 79 79 void setDefersLoading(ResourceLoadIdentifier, bool); 80 80 void crossOriginRedirectReceived(ResourceLoadIdentifier, const WebCore::URL& redirectURL); 81 void servePendingRequests(uint32_t resourceLoadPriority);82 81 void setSerialLoadingEnabled(bool); 83 82 void startDownload(WebCore::SessionID, uint64_t downloadID, const WebCore::ResourceRequest&); -
trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in
r169380 r183563 29 29 RemoveLoadIdentifier(uint64_t resourceLoadIdentifier) 30 30 SetDefersLoading(uint64_t resourceLoadIdentifier, bool defers) 31 32 ServePendingRequests(uint32_t resourceLoadPriority)33 34 31 SetSerialLoadingEnabled(bool enabled) -> () 35 32 -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp
r183467 r183563 301 301 302 302 bool isMainResource = originalRequest.requester() == WebCore::ResourceRequest::Requester::Main; 303 bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriority VeryHigh;303 bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriority::VeryHigh; 304 304 if (!storeUnconditionallyForHistoryNavigation) { 305 305 auto now = std::chrono::system_clock::now(); … … 343 343 344 344 auto startTime = std::chrono::system_clock::now(); 345 unsigned priority = originalRequest.priority();345 auto priority = static_cast<unsigned>(originalRequest.priority()); 346 346 347 347 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 50 50 51 51 if (ResourceRequest::resourcePrioritiesEnabled()) { 52 WKSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority Highest));53 WKSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority Medium));52 WKSetHTTPRequestMaximumPriority(toPlatformRequestPriority(ResourceLoadPriority::Highest)); 53 WKSetHTTPRequestMinimumFastLanePriority(toPlatformRequestPriority(ResourceLoadPriority::Medium)); 54 54 } 55 55 } -
trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
r182565 r183563 638 638 void InjectedBundle::dispatchPendingLoadRequests() 639 639 { 640 resourceLoadScheduler()->servePendingRequests();640 // FIXME: This should be removed along with the bundle API. 641 641 } 642 642 -
trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp
r183467 r183563 245 245 } 246 246 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); 247 void 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. 257 251 } 258 252 -
trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h
r172946 r183563 53 53 virtual void crossOriginRedirectReceived(WebCore::ResourceLoader*, const WebCore::URL& redirectURL) override; 54 54 55 virtual void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority = WebCore::ResourceLoadPriorityVeryLow) override;55 virtual void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority) override; 56 56 57 57 virtual void suspendPendingRequests() override;
Note:
See TracChangeset
for help on using the changeset viewer.