| Index: content/browser/appcache/appcache_request_handler.cc
|
| diff --git a/content/browser/appcache/appcache_request_handler.cc b/content/browser/appcache/appcache_request_handler.cc
|
| index 46344aecb7bc215ea2f9396af78a27e002f5d2cd..bcfbe35cfb041746f3ced16afd9829268a4dadaf 100644
|
| --- a/content/browser/appcache/appcache_request_handler.cc
|
| +++ b/content/browser/appcache/appcache_request_handler.cc
|
| @@ -25,7 +25,9 @@ AppCacheRequestHandler::AppCacheRequestHandler(AppCacheHost* host,
|
| found_cache_id_(0),
|
| found_network_namespace_(false),
|
| cache_entry_not_found_(false),
|
| - maybe_load_resource_executed_(false) {
|
| + maybe_load_resource_executed_(false),
|
| + old_process_id_(0),
|
| + old_host_id_(kAppCacheNoHostId) {
|
| DCHECK(host_);
|
| host_->AddObserver(this);
|
| }
|
| @@ -185,6 +187,8 @@ void AppCacheRequestHandler::PrepareForCrossSiteTransfer(int old_process_id) {
|
| if (!host_)
|
| return;
|
| AppCacheBackendImpl* backend = host_->service()->GetBackend(old_process_id);
|
| + old_process_id_ = old_process_id;
|
| + old_host_id_ = host_->host_id();
|
| host_for_cross_site_transfer_ = backend->TransferHostOut(host_->host_id());
|
| DCHECK_EQ(host_, host_for_cross_site_transfer_.get());
|
| }
|
| @@ -198,6 +202,15 @@ void AppCacheRequestHandler::CompleteCrossSiteTransfer(
|
| backend->TransferHostIn(new_host_id, host_for_cross_site_transfer_.Pass());
|
| }
|
|
|
| +void AppCacheRequestHandler::MaybeCompleteCrossSiteTransferInOldProcess(
|
| + int old_process_id) {
|
| + if (!host_ || !host_for_cross_site_transfer_.get() ||
|
| + old_process_id != old_process_id_) {
|
| + return;
|
| + }
|
| + CompleteCrossSiteTransfer(old_process_id_, old_host_id_);
|
| +}
|
| +
|
| void AppCacheRequestHandler::OnDestructionImminent(AppCacheHost* host) {
|
| storage()->CancelDelegateCallbacks(this);
|
| host_ = NULL; // no need to RemoveObserver, the host is being deleted
|
|
|