logic into a single callsite, taking just a
CachedResourceLoader and a ResourceLoaderOptions.
1. Its 'incremental' parameter is redundant.
2. With 'incremental' removed, the SecurityCheckPolicy is the only
parameter difference between the CachedResource::load() variants.
Making it a part of ResourceLoaderOptions removes yet another random
enum that is passed around individually.
3. We currently have to call setResourceLoaderOptions() before load() on a
new CachedResource, so we should just take the ResourceLoaderOptions in load().
https://bugs.webkit.org/show_bug.cgi?id=67443
Reviewed by Antti Koivisto.
No new tests, refactor only.
* loader/DocumentThreadableLoader.cpp:
* loader/FrameLoaderTypes.h: Move SecurityCheckPolicy to ResourceLoaderOptions.h.
* loader/MainResourceLoader.cpp:
* loader/NetscapePlugInStreamLoader.cpp:
* loader/ResourceLoadScheduler.cpp:
* loader/ResourceLoadScheduler.h:
* loader/ResourceLoader.cpp: Enforce SecurityCheckPolicy here instead of SubresourceLoader.
* loader/ResourceLoaderOptions.h: Store SecurityCheckPolicy on ResourceLoaderOptions.
* loader/SubresourceLoader.cpp:
* loader/SubresourceLoader.h:
* loader/cache/CachedFont.cpp:
* loader/cache/CachedFont.h:
* loader/cache/CachedImage.cpp:
* loader/cache/CachedImage.h:
* loader/cache/CachedResource.cpp:
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::defaultCachedResourceOptions): Define the default ResourceLoaderOptions for
CachedResource loads here instead of as a default parameter on requestResource().
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::didReceiveData): Remove m_incremental, since its purpose
is already enforced in the data() implementation of every CachedResource that doesn't want
incremental loads.
* loader/cache/CachedResourceRequest.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@96060
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-09-26 Nate Chapin <japhet@chromium.org>
+
+ Clean up CachedResource::load(). Collapse its
+ logic into a single callsite, taking just a
+ CachedResourceLoader and a ResourceLoaderOptions.
+
+ 1. Its 'incremental' parameter is redundant.
+ 2. With 'incremental' removed, the SecurityCheckPolicy is the only
+ parameter difference between the CachedResource::load() variants.
+ Making it a part of ResourceLoaderOptions removes yet another random
+ enum that is passed around individually.
+ 3. We currently have to call setResourceLoaderOptions() before load() on a
+ new CachedResource, so we should just take the ResourceLoaderOptions in load().
+
+ https://bugs.webkit.org/show_bug.cgi?id=67443
+
+ Reviewed by Antti Koivisto.
+
+ No new tests, refactor only.
+
+ * loader/DocumentThreadableLoader.cpp:
+ * loader/FrameLoaderTypes.h: Move SecurityCheckPolicy to ResourceLoaderOptions.h.
+ * loader/MainResourceLoader.cpp:
+ * loader/NetscapePlugInStreamLoader.cpp:
+ * loader/ResourceLoadScheduler.cpp:
+ * loader/ResourceLoadScheduler.h:
+ * loader/ResourceLoader.cpp: Enforce SecurityCheckPolicy here instead of SubresourceLoader.
+ * loader/ResourceLoaderOptions.h: Store SecurityCheckPolicy on ResourceLoaderOptions.
+ * loader/SubresourceLoader.cpp:
+ * loader/SubresourceLoader.h:
+ * loader/cache/CachedFont.cpp:
+ * loader/cache/CachedFont.h:
+ * loader/cache/CachedImage.cpp:
+ * loader/cache/CachedImage.h:
+ * loader/cache/CachedResource.cpp:
+ * loader/cache/CachedResource.h:
+ * loader/cache/CachedResourceLoader.cpp:
+ (WebCore::defaultCachedResourceOptions): Define the default ResourceLoaderOptions for
+ CachedResource loads here instead of as a default parameter on requestResource().
+ * loader/cache/CachedResourceLoader.h:
+ * loader/cache/CachedResourceRequest.cpp:
+ (WebCore::CachedResourceRequest::didReceiveData): Remove m_incremental, since its purpose
+ is already enforced in the data() implementation of every CachedResource that doesn't want
+ incremental loads.
+ * loader/cache/CachedResourceRequest.h:
+
2011-09-26 Joshua Bell <jsbell@chromium.org>
IndexedDB: Second half of IDBFactory.getDatabaseNames implementation
{
// Any credential should have been removed from the cross-site requests.
const KURL& requestURL = request.url();
+ m_options.securityCheck = securityCheck;
ASSERT(m_sameOriginRequest || requestURL.user().isEmpty());
ASSERT(m_sameOriginRequest || requestURL.pass().isEmpty());
// Clear the loader so that any callbacks from SubresourceLoader::create will not have the old loader.
m_loader = 0;
- m_loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_document->frame(), this, request, ResourceLoadPriorityMedium, securityCheck, options);
+ m_loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_document->frame(), this, request, ResourceLoadPriorityMedium, options);
return;
}
SandboxAll = -1 // Mask with all bits set to 1.
};
- enum SecurityCheckPolicy {
- SkipSecurityCheck,
- DoSecurityCheck
- };
-
// Passed to FrameLoader::urlSelected() and ScriptController::executeIfJavaScriptURL()
// to control whether, in the case of a JavaScript URL, executeIfJavaScriptURL() should
// replace the document. It is a FIXME to eliminate this extra parameter from
namespace WebCore {
MainResourceLoader::MainResourceLoader(Frame* frame)
- : ResourceLoader(frame, ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials))
+ : ResourceLoader(frame, ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials, SkipSecurityCheck))
, m_dataLoadTimer(this, &MainResourceLoader::handleDataLoadNow)
, m_loadingMultipartContent(false)
, m_waitingForContentPolicy(false)
namespace WebCore {
NetscapePlugInStreamLoader::NetscapePlugInStreamLoader(Frame* frame, NetscapePlugInStreamLoaderClient* client)
- : ResourceLoader(frame, ResourceLoaderOptions(SendCallbacks, SniffContent, DoNotBufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials))
+ : ResourceLoader(frame, ResourceLoaderOptions(SendCallbacks, SniffContent, DoNotBufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials, SkipSecurityCheck))
, m_client(client)
{
}
#endif
}
-PassRefPtr<SubresourceLoader> ResourceLoadScheduler::scheduleSubresourceLoad(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, ResourceLoadPriority priority, SecurityCheckPolicy securityCheck, const ResourceLoaderOptions& options)
+PassRefPtr<SubresourceLoader> ResourceLoadScheduler::scheduleSubresourceLoad(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, ResourceLoadPriority priority, const ResourceLoaderOptions& options)
{
- RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, client, request, securityCheck, options);
+ RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, client, request, options);
if (loader)
scheduleLoad(loader.get(), priority);
return loader.release();
public:
friend ResourceLoadScheduler* resourceLoadScheduler();
- PassRefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, SubresourceLoaderClient*, const ResourceRequest&, ResourceLoadPriority, SecurityCheckPolicy, const ResourceLoaderOptions&);
+ PassRefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, SubresourceLoaderClient*, const ResourceRequest&, ResourceLoadPriority, const ResourceLoaderOptions&);
PassRefPtr<NetscapePlugInStreamLoader> schedulePluginStreamLoad(Frame*, NetscapePlugInStreamLoaderClient*, const ResourceRequest&);
void addMainResourceLoad(ResourceLoader*);
void remove(ResourceLoader*);
ResourceRequest clientRequest(r);
+ FrameLoader* frameLoader = m_frame->loader();
+ if (m_options.securityCheck == DoSecurityCheck && (frameLoader->state() == FrameStateProvisional || !frameLoader->activeDocumentLoader() || frameLoader->activeDocumentLoader()->isStopping())) {
+ releaseResources();
+ return false;
+ }
+
+ if (m_options.securityCheck == DoSecurityCheck && !m_frame->document()->securityOrigin()->canDisplay(clientRequest.url())) {
+ FrameLoader::reportLocalLoadFailed(m_frame.get(), clientRequest.url().string());
+ releaseResources();
+ return false;
+ }
+
// https://bugs.webkit.org/show_bug.cgi?id=26391
// The various plug-in implementations call directly to ResourceLoader::load() instead of piping requests
// through FrameLoader. As a result, they miss the FrameLoader::addExtraFieldsToRequest() step which sets
BufferData,
DoNotBufferData
};
-
+
enum ClientCrossOriginCredentialPolicy {
AskClientForCrossOriginCredentials,
DoNotAskClientForCrossOriginCredentials
};
+enum SecurityCheckPolicy {
+ SkipSecurityCheck,
+ DoSecurityCheck
+};
+
struct ResourceLoaderOptions {
- ResourceLoaderOptions() : sendLoadCallbacks(DoNotSendCallbacks), sniffContent(DoNotSniffContent), shouldBufferData(BufferData), allowCredentials(DoNotAllowStoredCredentials), crossOriginCredentialPolicy(DoNotAskClientForCrossOriginCredentials) { }
- ResourceLoaderOptions(SendCallbackPolicy sendLoadCallbacks, ContentSniffingPolicy sniffContent, DataBufferingPolicy shouldBufferData, StoredCredentials allowCredentials, ClientCrossOriginCredentialPolicy crossOriginCredentialPolicy)
+ ResourceLoaderOptions() : sendLoadCallbacks(DoNotSendCallbacks), sniffContent(DoNotSniffContent), shouldBufferData(BufferData), allowCredentials(DoNotAllowStoredCredentials), crossOriginCredentialPolicy(DoNotAskClientForCrossOriginCredentials), securityCheck(DoSecurityCheck) { }
+ ResourceLoaderOptions(SendCallbackPolicy sendLoadCallbacks, ContentSniffingPolicy sniffContent, DataBufferingPolicy shouldBufferData, StoredCredentials allowCredentials, ClientCrossOriginCredentialPolicy crossOriginCredentialPolicy, SecurityCheckPolicy securityCheck)
: sendLoadCallbacks(sendLoadCallbacks)
, sniffContent(sniffContent)
, shouldBufferData(shouldBufferData)
, allowCredentials(allowCredentials)
, crossOriginCredentialPolicy(crossOriginCredentialPolicy)
+ , securityCheck(securityCheck)
{
}
SendCallbackPolicy sendLoadCallbacks;
DataBufferingPolicy shouldBufferData;
StoredCredentials allowCredentials; // Whether HTTP credentials and cookies are sent with the request.
ClientCrossOriginCredentialPolicy crossOriginCredentialPolicy; // Whether we will ask the client for credentials (if we allow credentials at all).
+ SecurityCheckPolicy securityCheck;
};
} // namespace WebCore
#endif
}
-PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, const ResourceLoaderOptions& options)
+PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, const ResourceLoaderOptions& options)
{
if (!frame)
return 0;
FrameLoader* fl = frame->loader();
- if (securityCheck == DoSecurityCheck && (fl->state() == FrameStateProvisional || !fl->activeDocumentLoader() || fl->activeDocumentLoader()->isStopping()))
- return 0;
-
ResourceRequest newRequest = request;
- if (securityCheck == DoSecurityCheck && !frame->document()->securityOrigin()->canDisplay(request.url())) {
- FrameLoader::reportLocalLoadFailed(frame, request.url().string());
- return 0;
- }
-
// Note: We skip the Content-Security-Policy check here because we check
// the Content-Security-Policy at the CachedResourceLoader layer so we can
// handle different resource types differently.
fl->addExtraFieldsToSubresourceRequest(newRequest);
RefPtr<SubresourceLoader> subloader(adoptRef(new SubresourceLoader(frame, client, options)));
- subloader->documentLoader()->addSubresourceLoader(subloader.get());
if (!subloader->init(newRequest))
return 0;
+ subloader->documentLoader()->addSubresourceLoader(subloader.get());
return subloader.release();
}
class SubresourceLoader : public ResourceLoader {
public:
- static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, SecurityCheckPolicy, const ResourceLoaderOptions&);
+ static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, const ResourceLoaderOptions&);
void clearClient() { m_client = 0; }
#endif
}
-void CachedFont::load(CachedResourceLoader*)
+void CachedFont::load(CachedResourceLoader*, const ResourceLoaderOptions& options)
{
// Don't load the file yet. Wait for an access before triggering the load.
setLoading(true);
+ m_options = options;
}
void CachedFont::didAddClient(CachedResourceClient* c)
{
if (!m_loadInitiated) {
m_loadInitiated = true;
- CachedResource::load(dl);
+ CachedResource::load(dl, m_options);
}
}
CachedFont(const ResourceRequest&);
virtual ~CachedFont();
- virtual void load(CachedResourceLoader* cachedResourceLoader);
+ virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
virtual void didAddClient(CachedResourceClient*);
virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
destroyDecodedData();
}
-void CachedImage::load(CachedResourceLoader* cachedResourceLoader)
+void CachedImage::load(CachedResourceLoader* cachedResourceLoader, const ResourceLoaderOptions& options)
{
if (!cachedResourceLoader || cachedResourceLoader->autoLoadImages())
- CachedResource::load(cachedResourceLoader, true, DoSecurityCheck);
+ CachedResource::load(cachedResourceLoader, options);
else
setLoading(false);
}
CachedImage(Image*);
virtual ~CachedImage();
- virtual void load(CachedResourceLoader* cachedResourceLoader);
+ virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
Image* image() const; // Returns the nullImage() if the image is not available yet.
bool hasImage() const { return m_image.get(); }
, m_loading(false)
, m_type(type)
, m_status(Pending)
- , m_options(SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials)
#ifndef NDEBUG
, m_deleted(false)
, m_lruIndex(0)
m_owningCachedResourceLoader->removeCachedResource(this);
}
-void CachedResource::load(CachedResourceLoader* cachedResourceLoader, bool incremental, SecurityCheckPolicy securityCheck)
+void CachedResource::load(CachedResourceLoader* cachedResourceLoader, const ResourceLoaderOptions& options)
{
+ m_options = options;
m_loading = true;
- m_request = CachedResourceRequest::load(cachedResourceLoader, this, incremental, securityCheck, m_options);
+ m_request = CachedResourceRequest::load(cachedResourceLoader, this, options);
if (m_request) {
m_status = Pending;
cachedResourceLoader->incrementRequestCount(this);
CachedResource(const ResourceRequest&, Type);
virtual ~CachedResource();
-
- virtual void load(CachedResourceLoader* cachedResourceLoader) { load(cachedResourceLoader, false, DoSecurityCheck); }
- void load(CachedResourceLoader*, bool incremental, SecurityCheckPolicy);
+
+ virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
virtual void setEncoding(const String&) { }
virtual String encoding() const { return String(); }
bool wasCanceled() const { return m_status == Canceled; }
bool errorOccurred() const { return (m_status == LoadError || m_status == DecodeError); }
-
- void setResourceLoaderOptions(const ResourceLoaderOptions& options) { m_options = options; }
+
bool sendResourceLoadCallbacks() const { return m_options.sendLoadCallbacks == SendCallbacks; }
virtual void destroyDecodedData() { }
ResourceRequest m_resourceRequest;
String m_accept;
OwnPtr<CachedResourceRequest> m_request;
+ ResourceLoaderOptions m_options;
ResourceLoadPriority m_loadPriority;
ResourceResponse m_response;
unsigned m_type : 3; // Type
unsigned m_status : 3; // Status
- ResourceLoaderOptions m_options;
-
#ifndef NDEBUG
bool m_deleted;
unsigned m_lruIndex;
return 0;
}
+static const ResourceLoaderOptions& defaultCachedResourceOptions()
+{
+ static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials, DoSecurityCheck);
+ return options;
+}
+
CachedResourceLoader::CachedResourceLoader(Document* document)
: m_document(document)
, m_requestCount(0)
return 0;
}
}
- CachedImage* resource = static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, request, String()));
+ CachedImage* resource = static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, request, String(), defaultCachedResourceOptions()));
if (autoLoadImages() && resource && resource->stillNeedsLoad())
- resource->load(this);
+ resource->load(this, defaultCachedResourceOptions());
return resource;
}
CachedFont* CachedResourceLoader::requestFont(ResourceRequest& request)
{
- return static_cast<CachedFont*>(requestResource(CachedResource::FontResource, request, String()));
+ return static_cast<CachedFont*>(requestResource(CachedResource::FontResource, request, String(), defaultCachedResourceOptions()));
}
CachedCSSStyleSheet* CachedResourceLoader::requestCSSStyleSheet(ResourceRequest& request, const String& charset, ResourceLoadPriority priority)
{
- return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request, charset, priority));
+ return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request, charset, defaultCachedResourceOptions(), priority));
}
CachedCSSStyleSheet* CachedResourceLoader::requestUserCSSStyleSheet(ResourceRequest& request, const String& charset)
if (!inCache)
userSheet->setInCache(true);
- userSheet->setResourceLoaderOptions(ResourceLoaderOptions(DoNotSendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials));
- userSheet->load(this, /*incremental*/ false, SkipSecurityCheck);
+ userSheet->load(this, ResourceLoaderOptions(DoNotSendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials, SkipSecurityCheck));
if (!inCache)
userSheet->setInCache(false);
CachedScript* CachedResourceLoader::requestScript(ResourceRequest& request, const String& charset)
{
- return static_cast<CachedScript*>(requestResource(CachedResource::Script, request, charset));
+ return static_cast<CachedScript*>(requestResource(CachedResource::Script, request, charset, defaultCachedResourceOptions()));
}
#if ENABLE(XSLT)
CachedXSLStyleSheet* CachedResourceLoader::requestXSLStyleSheet(ResourceRequest& request)
{
- return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, request, String()));
+ return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, request, String(), defaultCachedResourceOptions()));
}
#endif
{
ASSERT(frame());
ASSERT(type == CachedResource::LinkPrefetch || type == CachedResource::LinkPrerender || type == CachedResource::LinkSubresource);
- return requestResource(type, request, String(), priority);
+ return requestResource(type, request, String(), defaultCachedResourceOptions(), priority);
}
#endif
return true;
}
-CachedResource* CachedResourceLoader::requestResource(CachedResource::Type type, ResourceRequest& request, const String& charset, ResourceLoadPriority priority, bool forPreload, const ResourceLoaderOptions& options)
+CachedResource* CachedResourceLoader::requestResource(CachedResource::Type type, ResourceRequest& request, const String& charset, const ResourceLoaderOptions& options, ResourceLoadPriority priority, bool forPreload)
{
KURL url = request.url();
resource = loadResource(type, request, charset, priority, options);
break;
case Revalidate:
- resource = revalidateResource(resource, priority);
+ resource = revalidateResource(resource, priority, options);
break;
case Use:
memoryCache()->resourceAccessed(resource);
return resource;
}
-CachedResource* CachedResourceLoader::revalidateResource(CachedResource* resource, ResourceLoadPriority priority)
+CachedResource* CachedResourceLoader::revalidateResource(CachedResource* resource, ResourceLoadPriority priority, const ResourceLoaderOptions& options)
{
ASSERT(resource);
ASSERT(resource->inCache());
memoryCache()->add(newResource);
newResource->setLoadPriority(priority);
- newResource->load(this);
+ newResource->load(this, options);
if (!urlProtocolIsData)
m_validatedURLs.add(url);
resource->setInCache(true);
resource->setLoadPriority(priority);
- resource->setResourceLoaderOptions(options);
- resource->load(this);
+ resource->load(this, options);
if (!inCache) {
resource->setOwningCachedResourceLoader(this);
CachedImage* image = const_cast<CachedImage*>(static_cast<const CachedImage*>(resource));
if (image->stillNeedsLoad())
- image->load(this);
+ image->load(this, defaultCachedResourceOptions());
}
}
}
if (type == CachedResource::Script || type == CachedResource::CSSStyleSheet)
encoding = charset.isEmpty() ? m_document->charset() : charset;
- CachedResource* resource = requestResource(type, request, encoding, ResourceLoadPriorityUnresolved, true);
+ CachedResource* resource = requestResource(type, request, encoding, defaultCachedResourceOptions(), ResourceLoadPriorityUnresolved, true);
if (!resource || (m_preloads && m_preloads->contains(resource)))
return;
resource->increasePreloadCount();
private:
// FIXME: The default value for ResourceLoaderOptions will always be used currently.
// It is plumbed for http://bugs.webkit.org/show_bug.cgi?id=61225 .
- CachedResource* requestResource(CachedResource::Type, ResourceRequest&, const String& charset, ResourceLoadPriority = ResourceLoadPriorityUnresolved, bool isPreload = false, const ResourceLoaderOptions& = ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForCrossOriginCredentials));
- CachedResource* revalidateResource(CachedResource*, ResourceLoadPriority);
+ CachedResource* requestResource(CachedResource::Type, ResourceRequest&, const String& charset, const ResourceLoaderOptions&, ResourceLoadPriority = ResourceLoadPriorityUnresolved, bool isPreload = false);
+ CachedResource* revalidateResource(CachedResource*, ResourceLoadPriority, const ResourceLoaderOptions&);
CachedResource* loadResource(CachedResource::Type, ResourceRequest&, const String& charset, ResourceLoadPriority, const ResourceLoaderOptions&);
void requestPreload(CachedResource::Type, ResourceRequest&, const String& charset);
}
#endif
-CachedResourceRequest::CachedResourceRequest(CachedResourceLoader* cachedResourceLoader, CachedResource* resource, bool incremental)
+CachedResourceRequest::CachedResourceRequest(CachedResourceLoader* cachedResourceLoader, CachedResource* resource)
: m_cachedResourceLoader(cachedResourceLoader)
, m_resource(resource)
- , m_incremental(incremental)
, m_multipart(false)
, m_finishing(false)
{
{
}
-PassOwnPtr<CachedResourceRequest> CachedResourceRequest::load(CachedResourceLoader* cachedResourceLoader, CachedResource* resource, bool incremental, SecurityCheckPolicy securityCheck, const ResourceLoaderOptions& options)
+PassOwnPtr<CachedResourceRequest> CachedResourceRequest::load(CachedResourceLoader* cachedResourceLoader, CachedResource* resource, const ResourceLoaderOptions& options)
{
- OwnPtr<CachedResourceRequest> request = adoptPtr(new CachedResourceRequest(cachedResourceLoader, resource, incremental));
+ OwnPtr<CachedResourceRequest> request = adoptPtr(new CachedResourceRequest(cachedResourceLoader, resource));
ResourceRequest resourceRequest = resource->resourceRequest();
#if PLATFORM(CHROMIUM)
ResourceLoadPriority priority = resource->loadPriority();
resourceRequest.setPriority(priority);
- RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(cachedResourceLoader->document()->frame(), request.get(), resourceRequest, priority, securityCheck, options);
+ RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(cachedResourceLoader->document()->frame(), request.get(), resourceRequest, priority, options);
if (!loader || loader->reachedTerminalState()) {
// FIXME: What if resources in other frames were waiting for this revalidation?
LOG(ResourceLoading, "Cannot start loading '%s'", resource->url().string().latin1().data());
// The resource data will change as the next part is loaded, so we need to make a copy.
RefPtr<SharedBuffer> copiedData = SharedBuffer::create(data, size);
m_resource->data(copiedData.release(), true);
- } else if (m_incremental)
+ } else
m_resource->data(loader->resourceData(), false);
}
class CachedResourceRequest : private SubresourceLoaderClient {
public:
- static PassOwnPtr<CachedResourceRequest> load(CachedResourceLoader*, CachedResource*, bool incremental, SecurityCheckPolicy, const ResourceLoaderOptions&);
+ static PassOwnPtr<CachedResourceRequest> load(CachedResourceLoader*, CachedResource*, const ResourceLoaderOptions&);
~CachedResourceRequest();
CachedResourceLoader* cachedResourceLoader() const { return m_cachedResourceLoader; }
private:
- CachedResourceRequest(CachedResourceLoader*, CachedResource*, bool incremental);
+ CachedResourceRequest(CachedResourceLoader*, CachedResource*);
virtual void willSendRequest(SubresourceLoader*, ResourceRequest&, const ResourceResponse&);
virtual void didReceiveResponse(SubresourceLoader*, const ResourceResponse&);
virtual void didReceiveData(SubresourceLoader*, const char*, int);
RefPtr<SubresourceLoader> m_loader;
CachedResourceLoader* m_cachedResourceLoader;
CachedResource* m_resource;
- bool m_incremental;
bool m_multipart;
bool m_finishing;
};
ResourceRequest resourceRequest(m_frame->loader()->icon()->url());
resourceRequest.setPriority(ResourceLoadPriorityLow);
- RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_frame, this, resourceRequest, ResourceLoadPriorityLow, DoSecurityCheck, ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials));
+ RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_frame, this, resourceRequest, ResourceLoadPriorityLow, ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck));
if (!loader)
LOG_ERROR("Failed to start load for icon at url %s", m_frame->loader()->icon()->url().string().ascii().data());