diff options
Diffstat (limited to 'webkit/appcache/appcache_request_handler.cc')
-rw-r--r-- | webkit/appcache/appcache_request_handler.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/webkit/appcache/appcache_request_handler.cc b/webkit/appcache/appcache_request_handler.cc index a514517..064b378 100644 --- a/webkit/appcache/appcache_request_handler.cc +++ b/webkit/appcache/appcache_request_handler.cc @@ -188,11 +188,19 @@ void AppCacheRequestHandler::DeliverNetworkResponse() { void AppCacheRequestHandler::MaybeLoadMainResource(net::URLRequest* request) { DCHECK(!job_); + DCHECK(host_); + + const AppCacheHost* spawning_host = + ResourceType::IsSharedWorker(resource_type_) ? + host_ : host_->GetSpawningHost(); + GURL preferred_manifest_url = spawning_host ? + spawning_host->preferred_manifest_url() : GURL(); // We may have to wait for our storage query to complete, but // this query can also complete syncrhonously. job_ = new AppCacheURLRequestJob(request, storage()); - storage()->FindResponseForMainRequest(request->url(), this); + storage()->FindResponseForMainRequest( + request->url(), preferred_manifest_url, this); } void AppCacheRequestHandler::OnMainResponseFound( @@ -216,6 +224,7 @@ void AppCacheRequestHandler::OnMainResponseFound( // in advance of subresource loads happening, secondly to prevent the // AppCache from falling out of the working set on frame navigations. host_->LoadMainResourceCache(cache_id); + host_->set_preferred_manifest_url(manifest_url); } } else { DCHECK(ResourceType::IsSharedWorker(resource_type_)); |