| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
| 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
| 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. |
| 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ | 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
| 7 | 7 |
| 8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
| 9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
| 10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 #include "platform/weborigin/SecurityPolicy.h" | 66 #include "platform/weborigin/SecurityPolicy.h" |
| 67 #include "public/platform/Platform.h" | 67 #include "public/platform/Platform.h" |
| 68 #include "public/platform/WebURL.h" | 68 #include "public/platform/WebURL.h" |
| 69 #include "wtf/text/CString.h" | 69 #include "wtf/text/CString.h" |
| 70 #include "wtf/text/WTFString.h" | 70 #include "wtf/text/WTFString.h" |
| 71 | 71 |
| 72 #define PRELOAD_DEBUG 0 | 72 #define PRELOAD_DEBUG 0 |
| 73 | 73 |
| 74 namespace WebCore { | 74 namespace WebCore { |
| 75 | 75 |
| 76 static Resource* createResource(Resource::Type type, const ResourceRequest& requ
est, const String& charset) | 76 static Resource* createResource(Resource::Type type, const ResourceRequest& requ
est, const String& charset, Document* document) |
| 77 { | 77 { |
| 78 switch (type) { | 78 switch (type) { |
| 79 case Resource::Image: | 79 case Resource::Image: |
| 80 return new ImageResource(request); | 80 return new ImageResource(request); |
| 81 case Resource::CSSStyleSheet: | 81 case Resource::CSSStyleSheet: |
| 82 return new CSSStyleSheetResource(request, charset); | 82 return new CSSStyleSheetResource(request, charset, document); |
| 83 case Resource::Script: | 83 case Resource::Script: |
| 84 return new ScriptResource(request, charset); | 84 return new ScriptResource(request, charset); |
| 85 case Resource::SVGDocument: | 85 case Resource::SVGDocument: |
| 86 return new DocumentResource(request, Resource::SVGDocument); | 86 return new DocumentResource(request, Resource::SVGDocument); |
| 87 case Resource::Font: | 87 case Resource::Font: |
| 88 return new FontResource(request); | 88 return new FontResource(request); |
| 89 case Resource::MainResource: | 89 case Resource::MainResource: |
| 90 case Resource::Raw: | 90 case Resource::Raw: |
| 91 case Resource::TextTrack: | 91 case Resource::TextTrack: |
| 92 return new RawResource(request, type); | 92 return new RawResource(request, type); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 const KURL& url = request.url(); | 149 const KURL& url = request.url(); |
| 150 ASSERT(url.protocolIsData()); | 150 ASSERT(url.protocolIsData()); |
| 151 | 151 |
| 152 blink::WebString mimetype; | 152 blink::WebString mimetype; |
| 153 blink::WebString charset; | 153 blink::WebString charset; |
| 154 RefPtr<SharedBuffer> data = PassRefPtr<SharedBuffer>(blink::Platform::curren
t()->parseDataURL(url, mimetype, charset)); | 154 RefPtr<SharedBuffer> data = PassRefPtr<SharedBuffer>(blink::Platform::curren
t()->parseDataURL(url, mimetype, charset)); |
| 155 if (!data) | 155 if (!data) |
| 156 return 0; | 156 return 0; |
| 157 ResourceResponse response(url, mimetype, data->size(), charset, String()); | 157 ResourceResponse response(url, mimetype, data->size(), charset, String()); |
| 158 | 158 |
| 159 Resource* resource = createResource(Resource::Image, request, charset); | 159 Resource* resource = createResource(Resource::Image, request, charset, 0); |
| 160 resource->setOptions(resourceOptions); | 160 resource->setOptions(resourceOptions); |
| 161 resource->responseReceived(response); | 161 resource->responseReceived(response); |
| 162 if (data->size()) | 162 if (data->size()) |
| 163 resource->setResourceBuffer(data); | 163 resource->setResourceBuffer(data); |
| 164 resource->finish(); | 164 resource->finish(); |
| 165 return resource; | 165 return resource; |
| 166 } | 166 } |
| 167 | 167 |
| 168 static void populateResourceTiming(ResourceTimingInfo* info, Resource* resource,
bool clearLoadTimings) | 168 static void populateResourceTiming(ResourceTimingInfo* info, Resource* resource,
bool clearLoadTimings) |
| 169 { | 169 { |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 return toRawResource(requestResource(Resource::MainResource, request)); | 376 return toRawResource(requestResource(Resource::MainResource, request)); |
| 377 } | 377 } |
| 378 | 378 |
| 379 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) | 379 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) |
| 380 { | 380 { |
| 381 const KURL& url = request.url(); | 381 const KURL& url = request.url(); |
| 382 if (Resource* oldResource = memoryCache()->resourceForURL(url)) | 382 if (Resource* oldResource = memoryCache()->resourceForURL(url)) |
| 383 memoryCache()->remove(oldResource); | 383 memoryCache()->remove(oldResource); |
| 384 | 384 |
| 385 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | 385 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); |
| 386 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); | 386 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding(), document()); |
| 387 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | 387 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; |
| 388 resource->setOptions(request.options()); | 388 resource->setOptions(request.options()); |
| 389 resource->setDataBufferingPolicy(BufferData); | 389 resource->setDataBufferingPolicy(BufferData); |
| 390 resource->responseReceived(response); | 390 resource->responseReceived(response); |
| 391 if (substituteData.content()->size()) | 391 if (substituteData.content()->size()) |
| 392 resource->setResourceBuffer(substituteData.content()); | 392 resource->setResourceBuffer(substituteData.content()); |
| 393 resource->finish(); | 393 resource->finish(); |
| 394 memoryCache()->add(resource.get()); | 394 memoryCache()->add(resource.get()); |
| 395 } | 395 } |
| 396 | 396 |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 789 if (!lastModified.isEmpty() || !eTag.isEmpty()) { | 789 if (!lastModified.isEmpty() || !eTag.isEmpty()) { |
| 790 ASSERT(context().cachePolicy(document()) != CachePolicyReload); | 790 ASSERT(context().cachePolicy(document()) != CachePolicyReload); |
| 791 if (context().cachePolicy(document()) == CachePolicyRevalidate) | 791 if (context().cachePolicy(document()) == CachePolicyRevalidate) |
| 792 revalidatingRequest.setHTTPHeaderField("Cache-Control", "max-age=0")
; | 792 revalidatingRequest.setHTTPHeaderField("Cache-Control", "max-age=0")
; |
| 793 if (!lastModified.isEmpty()) | 793 if (!lastModified.isEmpty()) |
| 794 revalidatingRequest.setHTTPHeaderField("If-Modified-Since", lastModi
fied); | 794 revalidatingRequest.setHTTPHeaderField("If-Modified-Since", lastModi
fied); |
| 795 if (!eTag.isEmpty()) | 795 if (!eTag.isEmpty()) |
| 796 revalidatingRequest.setHTTPHeaderField("If-None-Match", eTag); | 796 revalidatingRequest.setHTTPHeaderField("If-None-Match", eTag); |
| 797 } | 797 } |
| 798 | 798 |
| 799 ResourcePtr<Resource> newResource = createResource(resource->type(), revalid
atingRequest, resource->encoding()); | 799 ResourcePtr<Resource> newResource = createResource(resource->type(), revalid
atingRequest, resource->encoding(), document()); |
| 800 | 800 |
| 801 WTF_LOG(ResourceLoading, "Resource %p created to revalidate %p", newResource
.get(), resource); | 801 WTF_LOG(ResourceLoading, "Resource %p created to revalidate %p", newResource
.get(), resource); |
| 802 newResource->setResourceToRevalidate(resource); | 802 newResource->setResourceToRevalidate(resource); |
| 803 | 803 |
| 804 memoryCache()->remove(resource); | 804 memoryCache()->remove(resource); |
| 805 memoryCache()->add(newResource.get()); | 805 memoryCache()->add(newResource.get()); |
| 806 storeResourceTimingInitiatorInformation(newResource, request); | 806 storeResourceTimingInitiatorInformation(newResource, request); |
| 807 TRACE_EVENT_ASYNC_BEGIN2("net", "Resource", newResource.get(), "url", newRes
ource->url().string().ascii(), "priority", newResource->resourceRequest().priori
ty()); | 807 TRACE_EVENT_ASYNC_BEGIN2("net", "Resource", newResource.get(), "url", newRes
ource->url().string().ascii(), "priority", newResource->resourceRequest().priori
ty()); |
| 808 return newResource; | 808 return newResource; |
| 809 } | 809 } |
| 810 | 810 |
| 811 ResourcePtr<Resource> ResourceFetcher::loadResource(Resource::Type type, FetchRe
quest& request, const String& charset) | 811 ResourcePtr<Resource> ResourceFetcher::loadResource(Resource::Type type, FetchRe
quest& request, const String& charset) |
| 812 { | 812 { |
| 813 ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url())); | 813 ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url())); |
| 814 | 814 |
| 815 WTF_LOG(ResourceLoading, "Loading Resource for '%s'.", request.resourceReque
st().url().elidedString().latin1().data()); | 815 WTF_LOG(ResourceLoading, "Loading Resource for '%s'.", request.resourceReque
st().url().elidedString().latin1().data()); |
| 816 | 816 |
| 817 addAdditionalRequestHeaders(request.mutableResourceRequest(), type); | 817 addAdditionalRequestHeaders(request.mutableResourceRequest(), type); |
| 818 ResourcePtr<Resource> resource = createResource(type, request.mutableResourc
eRequest(), charset); | 818 ResourcePtr<Resource> resource = createResource(type, request.mutableResourc
eRequest(), charset, document()); |
| 819 | 819 |
| 820 memoryCache()->add(resource.get()); | 820 memoryCache()->add(resource.get()); |
| 821 storeResourceTimingInitiatorInformation(resource, request); | 821 storeResourceTimingInitiatorInformation(resource, request); |
| 822 TRACE_EVENT_ASYNC_BEGIN2("net", "Resource", resource.get(), "url", resource-
>url().string().ascii(), "priority", resource->resourceRequest().priority()); | 822 TRACE_EVENT_ASYNC_BEGIN2("net", "Resource", resource.get(), "url", resource-
>url().string().ascii(), "priority", resource->resourceRequest().priority()); |
| 823 return resource; | 823 return resource; |
| 824 } | 824 } |
| 825 | 825 |
| 826 void ResourceFetcher::storeResourceTimingInitiatorInformation(const ResourcePtr<
Resource>& resource, const FetchRequest& request) | 826 void ResourceFetcher::storeResourceTimingInitiatorInformation(const ResourcePtr<
Resource>& resource, const FetchRequest& request) |
| 827 { | 827 { |
| 828 if (request.options().requestInitiatorContext != DocumentContext) | 828 if (request.options().requestInitiatorContext != DocumentContext) |
| (...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1401 case Revalidate: | 1401 case Revalidate: |
| 1402 ++m_revalidateCount; | 1402 ++m_revalidateCount; |
| 1403 return; | 1403 return; |
| 1404 case Use: | 1404 case Use: |
| 1405 ++m_useCount; | 1405 ++m_useCount; |
| 1406 return; | 1406 return; |
| 1407 } | 1407 } |
| 1408 } | 1408 } |
| 1409 | 1409 |
| 1410 } | 1410 } |
| OLD | NEW |