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 13 matching lines...) Expand all Loading... |
24 pages from the web. It has a memory cache for these objects. | 24 pages from the web. It has a memory cache for these objects. |
25 */ | 25 */ |
26 | 26 |
27 #include "config.h" | 27 #include "config.h" |
28 #include "core/loader/cache/CachedResourceLoader.h" | 28 #include "core/loader/cache/CachedResourceLoader.h" |
29 | 29 |
30 #include "bindings/v8/ScriptController.h" | 30 #include "bindings/v8/ScriptController.h" |
31 #include "core/dom/Document.h" | 31 #include "core/dom/Document.h" |
32 #include "core/html/HTMLElement.h" | 32 #include "core/html/HTMLElement.h" |
33 #include "core/html/HTMLFrameOwnerElement.h" | 33 #include "core/html/HTMLFrameOwnerElement.h" |
| 34 #include "core/html/HTMLImport.h" |
34 #include "core/inspector/InspectorInstrumentation.h" | 35 #include "core/inspector/InspectorInstrumentation.h" |
35 #include "core/loader/DocumentLoader.h" | 36 #include "core/loader/DocumentLoader.h" |
36 #include "core/loader/FrameLoader.h" | 37 #include "core/loader/FrameLoader.h" |
37 #include "core/loader/FrameLoaderClient.h" | 38 #include "core/loader/FrameLoaderClient.h" |
38 #include "core/loader/PingLoader.h" | 39 #include "core/loader/PingLoader.h" |
39 #include "core/loader/UniqueIdentifier.h" | 40 #include "core/loader/UniqueIdentifier.h" |
40 #include "core/loader/appcache/ApplicationCacheHost.h" | 41 #include "core/loader/appcache/ApplicationCacheHost.h" |
41 #include "core/loader/cache/CachedCSSStyleSheet.h" | 42 #include "core/loader/cache/CachedCSSStyleSheet.h" |
42 #include "core/loader/cache/CachedDocument.h" | 43 #include "core/loader/cache/CachedDocument.h" |
43 #include "core/loader/cache/CachedFont.h" | 44 #include "core/loader/cache/CachedFont.h" |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 } | 181 } |
181 | 182 |
182 CachedResource* CachedResourceLoader::cachedResource(const KURL& resourceURL) co
nst | 183 CachedResource* CachedResourceLoader::cachedResource(const KURL& resourceURL) co
nst |
183 { | 184 { |
184 KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(resourceURL); | 185 KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(resourceURL); |
185 return m_documentResources.get(url).get(); | 186 return m_documentResources.get(url).get(); |
186 } | 187 } |
187 | 188 |
188 Frame* CachedResourceLoader::frame() const | 189 Frame* CachedResourceLoader::frame() const |
189 { | 190 { |
190 return m_documentLoader ? m_documentLoader->frame() : 0; | 191 if (m_documentLoader) |
| 192 return m_documentLoader->frame(); |
| 193 if (m_document) { |
| 194 if (HTMLImport* import = m_document->import()) |
| 195 return import->frame(); |
| 196 } |
| 197 |
| 198 return 0; |
191 } | 199 } |
192 | 200 |
193 CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(CachedResou
rceRequest& request) | 201 CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(CachedResou
rceRequest& request) |
194 { | 202 { |
195 if (Frame* f = frame()) { | 203 if (Frame* f = frame()) { |
196 if (f->loader()->pageDismissalEventBeingDispatched() != FrameLoader::NoD
ismissal) { | 204 if (f->loader()->pageDismissalEventBeingDispatched() != FrameLoader::NoD
ismissal) { |
197 KURL requestURL = request.resourceRequest().url(); | 205 KURL requestURL = request.resourceRequest().url(); |
198 if (requestURL.isValid() && canRequest(CachedResource::ImageResource
, requestURL, request.options(), request.forPreload())) | 206 if (requestURL.isValid() && canRequest(CachedResource::ImageResource
, requestURL, request.options(), request.forPreload())) |
199 PingLoader::loadImage(f, requestURL); | 207 PingLoader::loadImage(f, requestURL); |
200 return 0; | 208 return 0; |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 } | 507 } |
500 | 508 |
501 if ((policy != Use || resource->stillNeedsLoad()) && CachedResourceRequest::
NoDefer == request.defer()) { | 509 if ((policy != Use || resource->stillNeedsLoad()) && CachedResourceRequest::
NoDefer == request.defer()) { |
502 if (!frame()) | 510 if (!frame()) |
503 return 0; | 511 return 0; |
504 | 512 |
505 FrameLoader* frameLoader = this->frameLoader(); | 513 FrameLoader* frameLoader = this->frameLoader(); |
506 if (request.options().securityCheck == DoSecurityCheck && (frameLoader->
state() == FrameStateProvisional || !frameLoader->activeDocumentLoader() || fram
eLoader->activeDocumentLoader()->isStopping())) | 514 if (request.options().securityCheck == DoSecurityCheck && (frameLoader->
state() == FrameStateProvisional || !frameLoader->activeDocumentLoader() || fram
eLoader->activeDocumentLoader()->isStopping())) |
507 return 0; | 515 return 0; |
508 | 516 |
509 if (!m_documentLoader->scheduleArchiveLoad(resource.get(), request.resou
rceRequest())) | 517 if (!m_documentLoader || !m_documentLoader->scheduleArchiveLoad(resource
.get(), request.resourceRequest())) |
510 resource->load(this, request.options()); | 518 resource->load(this, request.options()); |
511 | 519 |
512 // We don't support immediate loads, but we do support immediate failure
. | 520 // We don't support immediate loads, but we do support immediate failure
. |
513 if (resource->errorOccurred()) { | 521 if (resource->errorOccurred()) { |
514 if (resource->inCache()) | 522 if (resource->inCache()) |
515 memoryCache()->remove(resource.get()); | 523 memoryCache()->remove(resource.get()); |
516 return 0; | 524 return 0; |
517 } | 525 } |
518 } | 526 } |
519 | 527 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 if (!m_documentLoader->overrideEncoding().isEmpty() || frameLoadType ==
FrameLoadTypeBackForward) | 606 if (!m_documentLoader->overrideEncoding().isEmpty() || frameLoadType ==
FrameLoadTypeBackForward) |
599 return ReturnCacheDataElseLoad; | 607 return ReturnCacheDataElseLoad; |
600 if (isReload || frameLoadType == FrameLoadTypeSame || request.isConditio
nal()) | 608 if (isReload || frameLoadType == FrameLoadTypeSame || request.isConditio
nal()) |
601 return ReloadIgnoringCacheData; | 609 return ReloadIgnoringCacheData; |
602 return UseProtocolCachePolicy; | 610 return UseProtocolCachePolicy; |
603 } | 611 } |
604 | 612 |
605 if (request.isConditional()) | 613 if (request.isConditional()) |
606 return ReloadIgnoringCacheData; | 614 return ReloadIgnoringCacheData; |
607 | 615 |
608 if (m_documentLoader->isLoadingInAPISense()) { | 616 if (m_documentLoader && m_documentLoader->isLoadingInAPISense()) { |
609 // For POST requests, we mutate the main resource's cache policy to avoi
d form resubmission. | 617 // For POST requests, we mutate the main resource's cache policy to avoi
d form resubmission. |
610 // This policy should not be inherited by subresources. | 618 // This policy should not be inherited by subresources. |
611 ResourceRequestCachePolicy mainResourceCachePolicy = m_documentLoader->r
equest().cachePolicy(); | 619 ResourceRequestCachePolicy mainResourceCachePolicy = m_documentLoader->r
equest().cachePolicy(); |
612 if (mainResourceCachePolicy == ReturnCacheDataDontLoad) | 620 if (mainResourceCachePolicy == ReturnCacheDataDontLoad) |
613 return ReturnCacheDataElseLoad; | 621 return ReturnCacheDataElseLoad; |
614 return mainResourceCachePolicy; | 622 return mainResourceCachePolicy; |
615 } | 623 } |
616 return UseProtocolCachePolicy; | 624 return UseProtocolCachePolicy; |
617 } | 625 } |
618 | 626 |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1242 } | 1250 } |
1243 #endif | 1251 #endif |
1244 | 1252 |
1245 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions(
) | 1253 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions(
) |
1246 { | 1254 { |
1247 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffCon
tent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientF
orCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, UseDefaul
tOriginRestrictionsForType, DocumentContext)); | 1255 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffCon
tent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientF
orCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, UseDefaul
tOriginRestrictionsForType, DocumentContext)); |
1248 return options; | 1256 return options; |
1249 } | 1257 } |
1250 | 1258 |
1251 } | 1259 } |
OLD | NEW |