OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All Rights Reserved. | 2 * Copyright (C) 2011 Google Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 13 matching lines...) Expand all Loading... |
24 */ | 24 */ |
25 | 25 |
26 #include "config.h" | 26 #include "config.h" |
27 #include "core/fetch/RawResource.h" | 27 #include "core/fetch/RawResource.h" |
28 | 28 |
29 #include "core/fetch/FetchRequest.h" | 29 #include "core/fetch/FetchRequest.h" |
30 #include "core/fetch/MemoryCache.h" | 30 #include "core/fetch/MemoryCache.h" |
31 #include "core/fetch/ResourceClientWalker.h" | 31 #include "core/fetch/ResourceClientWalker.h" |
32 #include "core/fetch/ResourceFetcher.h" | 32 #include "core/fetch/ResourceFetcher.h" |
33 #include "core/fetch/ResourceLoader.h" | 33 #include "core/fetch/ResourceLoader.h" |
34 #include "core/fetch/SubstituteData.h" | |
35 #include "platform/SharedBuffer.h" | |
36 | 34 |
37 namespace blink { | 35 namespace blink { |
38 | 36 |
39 void RawResource::preCacheSubstituteDataForMainResource(const FetchRequest& requ
est, ResourceFetcher* fetcher, const SubstituteData& substituteData) | |
40 { | |
41 const String cacheIdentifier = fetcher->getCacheIdentifier(); | |
42 const KURL& url = request.url(); | |
43 if (Resource* oldResource = memoryCache()->resourceForURL(url, cacheIdentifi
er)) | |
44 memoryCache()->remove(oldResource); | |
45 | |
46 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | |
47 ResourcePtr<Resource> resource = new RawResource(request.resourceRequest(),
Resource::MainResource); | |
48 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | |
49 resource->setOptions(request.options()); | |
50 resource->setDataBufferingPolicy(BufferData); | |
51 resource->responseReceived(response, nullptr); | |
52 if (substituteData.content()->size()) | |
53 resource->setResourceBuffer(substituteData.content()); | |
54 resource->setCacheIdentifier(cacheIdentifier); | |
55 resource->finish(); | |
56 memoryCache()->add(resource.get()); | |
57 } | |
58 | |
59 ResourcePtr<Resource> RawResource::fetchSynchronously(FetchRequest& request, Res
ourceFetcher* fetcher) | 37 ResourcePtr<Resource> RawResource::fetchSynchronously(FetchRequest& request, Res
ourceFetcher* fetcher) |
60 { | 38 { |
61 request.mutableResourceRequest().setTimeoutInterval(10); | 39 request.mutableResourceRequest().setTimeoutInterval(10); |
62 ResourceLoaderOptions options(request.options()); | 40 ResourceLoaderOptions options(request.options()); |
63 options.synchronousPolicy = RequestSynchronously; | 41 options.synchronousPolicy = RequestSynchronously; |
64 request.setOptions(options); | 42 request.setOptions(options); |
65 return fetcher->requestResource(request, RawResourceFactory(Resource::Raw)); | 43 return fetcher->requestResource(request, RawResourceFactory(Resource::Raw)); |
66 } | 44 } |
67 | 45 |
68 ResourcePtr<RawResource> RawResource::fetchImport(FetchRequest& request, Resourc
eFetcher* fetcher) | 46 ResourcePtr<RawResource> RawResource::fetchImport(FetchRequest& request, Resourc
eFetcher* fetcher) |
69 { | 47 { |
70 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); | 48 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
71 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textImport); | 49 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textImport); |
72 RawResourceFactory factory(Resource::ImportResource); | 50 RawResourceFactory factory(Resource::ImportResource); |
73 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::ImportResource))); | 51 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::ImportResource))); |
74 } | 52 } |
75 | 53 |
76 ResourcePtr<RawResource> RawResource::fetch(FetchRequest& request, ResourceFetch
er* fetcher) | 54 ResourcePtr<RawResource> RawResource::fetch(FetchRequest& request, ResourceFetch
er* fetcher) |
77 { | 55 { |
78 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); | 56 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
79 ASSERT(request.resourceRequest().requestContext() != WebURLRequest::RequestC
ontextUnspecified); | 57 ASSERT(request.resourceRequest().requestContext() != WebURLRequest::RequestC
ontextUnspecified); |
80 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::Raw))); | 58 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::Raw))); |
81 } | 59 } |
82 | 60 |
83 ResourcePtr<RawResource> RawResource::fetchMainResource(FetchRequest& request, R
esourceFetcher* fetcher, const SubstituteData& substituteData) | 61 ResourcePtr<RawResource> RawResource::fetchMainResource(FetchRequest& request, R
esourceFetcher* fetcher, const SubstituteData& substituteData) |
84 { | 62 { |
85 ASSERT(request.resourceRequest().frameType() != WebURLRequest::FrameTypeNone
); | 63 ASSERT(request.resourceRequest().frameType() != WebURLRequest::FrameTypeNone
); |
86 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC
ontextForm || request.resourceRequest().requestContext() == WebURLRequest::Reque
stContextFrame || request.resourceRequest().requestContext() == WebURLRequest::R
equestContextHyperlink || request.resourceRequest().requestContext() == WebURLRe
quest::RequestContextIframe || request.resourceRequest().requestContext() == Web
URLRequest::RequestContextInternal || request.resourceRequest().requestContext()
== WebURLRequest::RequestContextLocation); | 64 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC
ontextForm || request.resourceRequest().requestContext() == WebURLRequest::Reque
stContextFrame || request.resourceRequest().requestContext() == WebURLRequest::R
equestContextHyperlink || request.resourceRequest().requestContext() == WebURLRe
quest::RequestContextIframe || request.resourceRequest().requestContext() == Web
URLRequest::RequestContextInternal || request.resourceRequest().requestContext()
== WebURLRequest::RequestContextLocation); |
87 | 65 |
88 if (substituteData.isValid()) | 66 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::MainResource), substituteData)); |
89 preCacheSubstituteDataForMainResource(request, fetcher, substituteData); | |
90 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::MainResource))); | |
91 } | 67 } |
92 | 68 |
93 ResourcePtr<RawResource> RawResource::fetchMedia(FetchRequest& request, Resource
Fetcher* fetcher) | 69 ResourcePtr<RawResource> RawResource::fetchMedia(FetchRequest& request, Resource
Fetcher* fetcher) |
94 { | 70 { |
95 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); | 71 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
96 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC
ontextAudio || request.resourceRequest().requestContext() == WebURLRequest::Requ
estContextVideo); | 72 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC
ontextAudio || request.resourceRequest().requestContext() == WebURLRequest::Requ
estContextVideo); |
97 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::Media))); | 73 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re
source::Media))); |
98 } | 74 } |
99 | 75 |
100 ResourcePtr<RawResource> RawResource::fetchTextTrack(FetchRequest& request, Reso
urceFetcher* fetcher) | 76 ResourcePtr<RawResource> RawResource::fetchTextTrack(FetchRequest& request, Reso
urceFetcher* fetcher) |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 for (const auto& header : oldHeaders) { | 247 for (const auto& header : oldHeaders) { |
272 AtomicString headerName = header.key; | 248 AtomicString headerName = header.key; |
273 if (!shouldIgnoreHeaderForCacheReuse(headerName) && header.value != newH
eaders.get(headerName)) | 249 if (!shouldIgnoreHeaderForCacheReuse(headerName) && header.value != newH
eaders.get(headerName)) |
274 return false; | 250 return false; |
275 } | 251 } |
276 | 252 |
277 return true; | 253 return true; |
278 } | 254 } |
279 | 255 |
280 } // namespace blink | 256 } // namespace blink |
OLD | NEW |