Changeset 132520 in webkit
- Timestamp:
- Oct 25, 2012 1:05:17 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r132517 r132520 1 2012-10-25 Nate Chapin <japhet@chromium.org> 2 3 Add a main resource type to the memory cache 4 https://bugs.webkit.org/show_bug.cgi?id=99864 5 6 Reviewed by Adam Barth. 7 8 No new tests, no functionality change. 9 10 * inspector/InspectorPageAgent.cpp: 11 (WebCore::hasTextContent): 12 (WebCore::InspectorPageAgent::cachedResourceType): 13 * loader/SubresourceLoader.cpp: 14 (WebCore::SubresourceLoader::willSendRequest): 15 (WebCore::SubresourceLoader::didReceiveResponse): 16 (WebCore::SubresourceLoader::didFail): 17 * loader/cache/CachedRawResource.cpp: 18 (WebCore::CachedRawResource::CachedRawResource): 19 (WebCore::CachedRawResource::addAdditionalRequestHeaders): 20 (WebCore): 21 (WebCore::CachedRawResource::setShouldBufferData): 22 (WebCore::CachedRawResource::loader): 23 (WebCore::CachedRawResource::clear): 24 * loader/cache/CachedRawResource.h: 25 (WebCore): 26 (CachedRawResource): 27 * loader/cache/CachedResource.cpp: 28 (WebCore::defaultPriorityForResourceType): 29 (WebCore::cachedResourceTypeToTargetType): 30 (WebCore::CachedResource::updateResourceRequest): 31 (WebCore): 32 * loader/cache/CachedResource.h: 33 (WebCore::CachedResource::setResourceError): 34 (WebCore::CachedResource::resourceError): 35 (CachedResource): 36 (WebCore::CachedResource::ignoreForRequestCount): 37 * loader/cache/CachedResourceLoader.cpp: 38 (WebCore::createResource): 39 (WebCore::CachedResourceLoader::requestRawResource): 40 (WebCore::CachedResourceLoader::checkInsecureContent): 41 (WebCore::CachedResourceLoader::canRequest): 42 (WebCore::CachedResourceLoader::determineRevalidationPolicy): 43 * loader/cache/CachedResourceLoader.h: 44 (CachedResourceLoader): 45 * platform/network/ResourceLoadPriority.h: 46 * platform/network/cf/ResourceRequestCFNet.h: 47 (WebCore::toResourceLoadPriority): 48 (WebCore::toHTTPPipeliningPriority): 49 1 50 2012-10-25 Ojan Vafai <ojan@chromium.org> 2 51 -
trunk/Source/WebCore/inspector/InspectorPageAgent.cpp
r132239 r132520 140 140 { 141 141 InspectorPageAgent::ResourceType type = InspectorPageAgent::cachedResourceType(*cachedResource); 142 return type == InspectorPageAgent:: StylesheetResource || type == InspectorPageAgent::ScriptResource || type == InspectorPageAgent::XHRResource;142 return type == InspectorPageAgent::DocumentResource || type == InspectorPageAgent::StylesheetResource || type == InspectorPageAgent::ScriptResource || type == InspectorPageAgent::XHRResource; 143 143 } 144 144 … … 309 309 case CachedResource::RawResource: 310 310 return InspectorPageAgent::XHRResource; 311 case CachedResource::MainResource: 312 return InspectorPageAgent::DocumentResource; 311 313 default: 312 314 break; -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r132287 r132520 148 148 149 149 ResourceLoader::willSendRequest(newRequest, redirectResponse); 150 if (newRequest.isNull()) 151 cancel(); 150 152 } 151 153 … … 184 186 ResourceLoader::didReceiveResponse(response); 185 187 186 if (response.isMultipart()) { 188 // FIXME: Main resources have a different set of rules for multipart than images do. 189 // Hopefully we can merge those 2 paths. 190 if (response.isMultipart() && m_resource->type() != CachedResource::MainResource) { 187 191 m_loadingMultipartContent = true; 188 192 … … 285 289 CachedResourceHandle<CachedResource> protectResource(m_resource); 286 290 m_state = Finishing; 291 m_resource->setResourceError(error); 287 292 if (error.isTimeout()) 288 293 m_resource->error(CachedResource::TimeoutError); -
trunk/Source/WebCore/loader/cache/CachedRawResource.cpp
r131660 r132520 37 37 namespace WebCore { 38 38 39 CachedRawResource::CachedRawResource(ResourceRequest& resourceRequest )40 : CachedResource(resourceRequest, RawResource)39 CachedRawResource::CachedRawResource(ResourceRequest& resourceRequest, Type type) 40 : CachedResource(resourceRequest, type) 41 41 , m_identifier(0) 42 42 { … … 130 130 } 131 131 132 void CachedRawResource::setShouldBufferData(DataBufferingPolicy shouldBufferData) 133 { 134 m_options.shouldBufferData = shouldBufferData; 135 } 136 132 137 static bool shouldIgnoreHeaderForCacheReuse(AtomicString headerName) 133 138 { … … 185 190 } 186 191 192 SubresourceLoader* CachedRawResource::loader() const 193 { 194 return m_loader.get(); 195 } 196 197 void CachedRawResource::clear() 198 { 199 m_data.clear(); 200 setEncodedSize(0); 201 if (m_loader) 202 m_loader->clearResourceData(); 203 } 204 187 205 void CachedRawResource::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 188 206 { -
trunk/Source/WebCore/loader/cache/CachedRawResource.h
r130983 r132520 30 30 class CachedRawResourceCallback; 31 31 class CachedRawResourceClient; 32 class SubresourceLoader; 32 33 33 34 class CachedRawResource : public CachedResource { 34 35 public: 35 CachedRawResource(ResourceRequest& );36 CachedRawResource(ResourceRequest&, Type); 36 37 37 38 // FIXME: AssociatedURLLoader shouldn't be a DocumentThreadableLoader and therefore shouldn't … … 39 40 // This can be fixed by splitting CORS preflighting out of DocumentThreacableLoader. 40 41 virtual void setDefersLoading(bool); 42 43 virtual void setShouldBufferData(DataBufferingPolicy); 41 44 42 45 // FIXME: This is exposed for the InpsectorInstrumentation for preflights in DocumentThreadableLoader. It's also really lame. 43 46 unsigned long identifier() const { return m_identifier; } 47 48 SubresourceLoader* loader() const; 49 void clear(); 44 50 45 51 bool canReuse(const ResourceRequest&) const; -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r132501 r132520 64 64 { 65 65 switch (type) { 66 case CachedResource::CSSStyleSheet: 67 return ResourceLoadPriorityHigh; 68 case CachedResource::Script: 69 case CachedResource::FontResource: 70 case CachedResource::RawResource: 71 return ResourceLoadPriorityMedium; 72 case CachedResource::ImageResource: 73 return ResourceLoadPriorityLow; 66 case CachedResource::MainResource: 67 return ResourceLoadPriorityVeryHigh; 68 case CachedResource::CSSStyleSheet: 69 return ResourceLoadPriorityHigh; 70 case CachedResource::Script: 71 case CachedResource::FontResource: 72 case CachedResource::RawResource: 73 return ResourceLoadPriorityMedium; 74 case CachedResource::ImageResource: 75 return ResourceLoadPriorityLow; 74 76 #if ENABLE(XSLT) 75 76 77 case CachedResource::XSLStyleSheet: 78 return ResourceLoadPriorityHigh; 77 79 #endif 78 80 #if ENABLE(SVG) 79 80 81 case CachedResource::SVGDocumentResource: 82 return ResourceLoadPriorityLow; 81 83 #endif 82 84 #if ENABLE(LINK_PREFETCH) 83 84 85 86 85 case CachedResource::LinkPrefetch: 86 return ResourceLoadPriorityVeryLow; 87 case CachedResource::LinkSubresource: 88 return ResourceLoadPriorityVeryLow; 87 89 #endif 88 90 #if ENABLE(VIDEO_TRACK) 89 90 91 case CachedResource::TextTrackResource: 92 return ResourceLoadPriorityLow; 91 93 #endif 92 94 #if ENABLE(CSS_SHADERS) 93 94 95 case CachedResource::ShaderResource: 96 return ResourceLoadPriorityMedium; 95 97 #endif 96 98 } … … 103 105 { 104 106 switch (type) { 107 case CachedResource::MainResource: 108 return ResourceRequest::TargetIsMainFrame; 105 109 case CachedResource::CSSStyleSheet: 106 110 #if ENABLE(XSLT) … … 278 282 #endif 279 283 m_resourceRequest.setPriority(loadPriority()); 280 addAdditionalRequestHeaders(cachedResourceLoader); 284 285 if (type() != MainResource) 286 addAdditionalRequestHeaders(cachedResourceLoader); 281 287 282 288 #if USE(PLATFORM_STRATEGIES) -
trunk/Source/WebCore/loader/cache/CachedResource.h
r132252 r132520 62 62 public: 63 63 enum Type { 64 MainResource, 64 65 ImageResource, 65 66 CSSStyleSheet, … … 105 106 virtual void error(CachedResource::Status); 106 107 108 void setResourceError(const ResourceError& error) { m_error = error; } 109 const ResourceError& resourceError() const { return m_error; } 110 107 111 virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return false; } 108 112 … … 153 157 bool ignoreForRequestCount() const 154 158 { 155 return false159 return type() == MainResource 156 160 #if ENABLE(LINK_PREFETCH) 157 161 || type() == LinkPrefetch … … 257 261 protected: 258 262 virtual void checkNotify(); 259 260 virtual void addAdditionalRequestHeaders(CachedResourceLoader*);261 263 262 264 void setEncodedSize(unsigned); … … 306 308 double freshnessLifetime() const; 307 309 310 void addAdditionalRequestHeaders(CachedResourceLoader*); 308 311 void failBeforeStarting(); 309 312 310 313 RefPtr<CachedMetadata> m_cachedMetadata; 314 315 ResourceError m_error; 311 316 312 317 double m_lastDecodedAccessTime; // Used as a "thrash guard" in the cache -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp
r132501 r132520 88 88 return new CachedFont(request); 89 89 case CachedResource::RawResource: 90 return new CachedRawResource(request); 90 case CachedResource::MainResource: 91 return new CachedRawResource(request, type); 91 92 #if ENABLE(XSLT) 92 93 case CachedResource::XSLStyleSheet: … … 245 246 { 246 247 return static_cast<CachedRawResource*>(requestResource(CachedResource::RawResource, request).get()); 248 } 249 250 CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestMainResource(CachedResourceRequest& request) 251 { 252 return static_cast<CachedRawResource*>(requestResource(CachedResource::MainResource, request).get()); 247 253 } 248 254 … … 281 287 break; 282 288 } 289 case CachedResource::MainResource: 283 290 #if ENABLE(LINK_PREFETCH) 284 291 case CachedResource::LinkPrefetch: … … 293 300 bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url, bool forPreload) 294 301 { 295 // FIXME: When we can load main resources through CachedResourceLoader, we'll need to allow for null document() here. 296 if (!document()) 297 return false; 298 299 if (!document()->securityOrigin()->canDisplay(url)) { 302 if (document() && !document()->securityOrigin()->canDisplay(url)) { 300 303 if (!forPreload) 301 304 FrameLoader::reportLocalLoadFailed(document()->frame(), url.string()); … … 308 311 // any URL. 309 312 switch (type) { 313 case CachedResource::MainResource: 310 314 case CachedResource::ImageResource: 311 315 case CachedResource::CSSStyleSheet: … … 375 379 break; 376 380 } 381 case CachedResource::MainResource: 377 382 case CachedResource::RawResource: 378 383 #if ENABLE(LINK_PREFETCH) … … 519 524 } 520 525 526 if (existingResource->type() == CachedResource::MainResource) 527 return Reload; 528 521 529 if (existingResource->type() == CachedResource::RawResource && !static_cast<CachedRawResource*>(existingResource)->canReuse(request)) 522 530 return Reload; 523 531 524 532 // Certain requests (e.g., XHRs) might have manually set headers that require revalidation. -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.h
r132157 r132520 80 80 CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&); 81 81 CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceRequest&); 82 CachedResourceHandle<CachedRawResource> requestMainResource(CachedResourceRequest&); 82 83 83 84 #if ENABLE(SVG) -
trunk/Source/WebCore/platform/network/ResourceLoadPriority.h
r95901 r132520 36 36 ResourceLoadPriorityMedium, 37 37 ResourceLoadPriorityHigh, 38 ResourceLoadPriorityVeryHigh, 38 39 ResourceLoadPriorityLowest = ResourceLoadPriorityVeryLow, 39 ResourceLoadPriorityHighest = ResourceLoadPriority High,40 ResourceLoadPriorityHighest = ResourceLoadPriorityVeryHigh, 40 41 }; 41 42 -
trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h
r82900 r132520 55 55 case 3: 56 56 return ResourceLoadPriorityHigh; 57 case 4: 58 return ResourceLoadPriorityVeryHigh; 57 59 default: 58 60 ASSERT_NOT_REACHED(); … … 74 76 case ResourceLoadPriorityHigh: 75 77 return 3; 78 case ResourceLoadPriorityVeryHigh: 79 return 4; 76 80 } 77 81
Note: See TracChangeset
for help on using the changeset viewer.