Index: webkit/browser/appcache/appcache_request_handler.cc |
diff --git a/webkit/browser/appcache/appcache_request_handler.cc b/webkit/browser/appcache/appcache_request_handler.cc |
index 957cf207b1f3f3c90351ba08d9e199824b13fc8e..102c1843e6051ad5b5f0c92c0ce59e808993924b 100644 |
--- a/webkit/browser/appcache/appcache_request_handler.cc |
+++ b/webkit/browser/appcache/appcache_request_handler.cc |
@@ -7,6 +7,7 @@ |
#include "net/url_request/url_request.h" |
#include "net/url_request/url_request_job.h" |
#include "webkit/browser/appcache/appcache.h" |
+#include "webkit/browser/appcache/appcache_backend_impl.h" |
#include "webkit/browser/appcache/appcache_policy.h" |
#include "webkit/browser/appcache/appcache_url_request_job.h" |
@@ -34,14 +35,6 @@ AppCacheStorage* AppCacheRequestHandler::storage() const { |
return host_->storage(); |
} |
-void AppCacheRequestHandler::GetExtraResponseInfo( |
- int64* cache_id, GURL* manifest_url) { |
- if (job_.get() && job_->is_delivering_appcache_response()) { |
- *cache_id = job_->cache_id(); |
- *manifest_url = job_->manifest_url(); |
- } |
-} |
- |
AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource( |
net::URLRequest* request, net::NetworkDelegate* network_delegate) { |
maybe_load_resource_executed_ = true; |
@@ -170,6 +163,31 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForResponse( |
return job_.get(); |
} |
+void AppCacheRequestHandler::GetExtraResponseInfo( |
+ int64* cache_id, GURL* manifest_url) { |
+ if (job_.get() && job_->is_delivering_appcache_response()) { |
+ *cache_id = job_->cache_id(); |
+ *manifest_url = job_->manifest_url(); |
+ } |
+} |
+ |
+void AppCacheRequestHandler::PrepareForCrossSiteTransfer(int old_process_id) { |
+ if (!host_) |
+ return; |
+ AppCacheBackendImpl* backend = host_->service()->GetBackend(old_process_id); |
+ host_for_cross_site_transfer_ = backend->TransferHostOut(host_->host_id()); |
+ DCHECK_EQ(host_, host_for_cross_site_transfer_.get()); |
+} |
+ |
+void AppCacheRequestHandler::CompleteCrossSiteTransfer( |
+ int new_process_id, int new_host_id) { |
+ if (!host_for_cross_site_transfer_.get()) |
+ return; |
+ DCHECK_EQ(host_, host_for_cross_site_transfer_.get()); |
+ AppCacheBackendImpl* backend = host_->service()->GetBackend(new_process_id); |
+ backend->TransferHostIn(new_host_id, host_for_cross_site_transfer_.Pass()); |
+} |
+ |
void AppCacheRequestHandler::OnDestructionImminent(AppCacheHost* host) { |
storage()->CancelDelegateCallbacks(this); |
host_ = NULL; // no need to RemoveObserver, the host is being deleted |