| Index: webkit/appcache/appcache_request_handler.cc
 | 
| ===================================================================
 | 
| --- webkit/appcache/appcache_request_handler.cc	(revision 81647)
 | 
| +++ webkit/appcache/appcache_request_handler.cc	(working copy)
 | 
| @@ -188,11 +188,19 @@
 | 
|  
 | 
|  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 @@
 | 
|        // 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_));
 | 
| 
 |