| Index: content/browser/shared_worker/shared_worker_host.cc
|
| diff --git a/content/browser/shared_worker/shared_worker_host.cc b/content/browser/shared_worker/shared_worker_host.cc
|
| index 869291bcfe2a81b22f6f23c8022fda9c427efa18..9fc9d67ec3af8af663c2b3d2ec769767fb18c384 100644
|
| --- a/content/browser/shared_worker/shared_worker_host.cc
|
| +++ b/content/browser/shared_worker/shared_worker_host.cc
|
| @@ -31,14 +31,27 @@ void WorkerCrashCallback(int render_process_unique_id, int render_frame_id) {
|
| host->delegate()->WorkerCrashed(host);
|
| }
|
|
|
| -void NotifyWorkerScriptLoadedOnUI(int worker_process_id, int worker_route_id) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| +void NotifyWorkerContextStarted(int worker_process_id, int worker_route_id) {
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI,
|
| + FROM_HERE,
|
| + base::Bind(
|
| + NotifyWorkerContextStarted, worker_process_id, worker_route_id));
|
| + return;
|
| + }
|
| EmbeddedWorkerDevToolsManager::GetInstance()->WorkerContextStarted(
|
| worker_process_id, worker_route_id);
|
| }
|
|
|
| -void NotifyWorkerDestroyedOnUI(int worker_process_id, int worker_route_id) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| +void NotifyWorkerDestroyed(int worker_process_id, int worker_route_id) {
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI,
|
| + FROM_HERE,
|
| + base::Bind(NotifyWorkerDestroyed, worker_process_id, worker_route_id));
|
| + return;
|
| + }
|
| EmbeddedWorkerDevToolsManager::GetInstance()->WorkerDestroyed(
|
| worker_process_id, worker_route_id);
|
| }
|
| @@ -78,11 +91,8 @@ SharedWorkerHost::~SharedWorkerHost() {
|
| parent_iter->render_frame_id()));
|
| }
|
| }
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &NotifyWorkerDestroyedOnUI, worker_process_id_, worker_route_id_));
|
| + if (!closed_)
|
| + NotifyWorkerDestroyed(worker_process_id_, worker_route_id_);
|
| SharedWorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed(
|
| worker_process_id_, worker_route_id_);
|
| }
|
| @@ -154,6 +164,7 @@ void SharedWorkerHost::WorkerContextClosed() {
|
| // being sent to the worker (messages can still be sent from the worker,
|
| // for exception reporting, etc).
|
| closed_ = true;
|
| + NotifyWorkerDestroyed(worker_process_id_, worker_route_id_);
|
| }
|
|
|
| void SharedWorkerHost::WorkerContextDestroyed() {
|
| @@ -166,11 +177,7 @@ void SharedWorkerHost::WorkerContextDestroyed() {
|
| void SharedWorkerHost::WorkerScriptLoaded() {
|
| UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoaded",
|
| base::TimeTicks::Now() - creation_time_);
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &NotifyWorkerScriptLoadedOnUI, worker_process_id_, worker_route_id_));
|
| + NotifyWorkerContextStarted(worker_process_id_, worker_route_id_);
|
| }
|
|
|
| void SharedWorkerHost::WorkerScriptLoadFailed() {
|
|
|