Index: content/browser/service_worker/service_worker_context_core.cc |
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc |
index fef7bcdc0faefc95bd60590b58183a94d321aeb0..c9057b9acb83a496dc7f17e4fdc586a76c98ad22 100644 |
--- a/content/browser/service_worker/service_worker_context_core.cc |
+++ b/content/browser/service_worker/service_worker_context_core.cc |
@@ -24,6 +24,7 @@ |
#include "content/browser/service_worker/service_worker_registration.h" |
#include "content/browser/service_worker/service_worker_storage.h" |
#include "content/public/browser/browser_thread.h" |
+#include "ipc/ipc_message.h" |
#include "net/http/http_response_headers.h" |
#include "net/http/http_response_info.h" |
#include "storage/browser/quota/quota_manager_proxy.h" |
@@ -464,13 +465,9 @@ ServiceWorkerContextCore::TransferProviderHostOut( |
int process_id, int provider_id) { |
ProviderMap* map = GetProviderMapForProcess(process_id); |
ServiceWorkerProviderHost* transferee = map->Lookup(provider_id); |
- ServiceWorkerProviderHost* replacement = |
- new ServiceWorkerProviderHost(process_id, |
- transferee->frame_id(), |
- provider_id, |
- transferee->provider_type(), |
- AsWeakPtr(), |
- transferee->dispatcher_host()); |
+ ServiceWorkerProviderHost* replacement = new ServiceWorkerProviderHost( |
+ process_id, transferee->frame_id(), transferee->shared_worker_route_id(), |
+ provider_id, AsWeakPtr(), transferee->dispatcher_host()); |
map->Replace(provider_id, replacement); |
transferee->PrepareForCrossSiteTransfer(); |
return make_scoped_ptr(transferee); |
@@ -556,6 +553,28 @@ void ServiceWorkerContextCore::OnReportConsoleMessage( |
source_identifier, message_level, message, line_number, source_url)); |
} |
+void ServiceWorkerContextCore::OnControlleeAdded( |
+ ServiceWorkerVersion* version, |
+ ServiceWorkerProviderHost* provider_host) { |
+ if (!observer_list_.get()) |
+ return; |
+ observer_list_->Notify(FROM_HERE, |
+ &ServiceWorkerContextObserver::OnControlleeAdded, |
+ version->version_id(), provider_host->client_uuid(), |
+ provider_host->process_id(), provider_host->frame_id(), |
+ provider_host->shared_worker_route_id()); |
+} |
+ |
+void ServiceWorkerContextCore::OnControlleeRemoved( |
+ ServiceWorkerVersion* version, |
+ ServiceWorkerProviderHost* provider_host) { |
+ if (!observer_list_.get()) |
+ return; |
+ observer_list_->Notify(FROM_HERE, |
+ &ServiceWorkerContextObserver::OnControlleeRemoved, |
+ version->version_id(), provider_host->client_uuid()); |
+} |
+ |
ServiceWorkerProcessManager* ServiceWorkerContextCore::process_manager() { |
return wrapper_->process_manager(); |
} |