Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(541)

Side by Side Diff: content/browser/shared_worker/shared_worker_host.cc

Issue 287303002: Call EmbeddedWorkerDevToolsManager::WorkerDestroyed from SharedWorkerHost::WorkerContextClosed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/shared_worker/shared_worker_host.h" 5 #include "content/browser/shared_worker/shared_worker_host.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "content/browser/devtools/embedded_worker_devtools_manager.h" 8 #include "content/browser/devtools/embedded_worker_devtools_manager.h"
9 #include "content/browser/frame_host/render_frame_host_delegate.h" 9 #include "content/browser/frame_host/render_frame_host_delegate.h"
10 #include "content/browser/frame_host/render_frame_host_impl.h" 10 #include "content/browser/frame_host/render_frame_host_impl.h"
(...skipping 13 matching lines...) Expand all
24 namespace { 24 namespace {
25 25
26 // Notifies RenderViewHost that one or more worker objects crashed. 26 // Notifies RenderViewHost that one or more worker objects crashed.
27 void WorkerCrashCallback(int render_process_unique_id, int render_frame_id) { 27 void WorkerCrashCallback(int render_process_unique_id, int render_frame_id) {
28 RenderFrameHostImpl* host = 28 RenderFrameHostImpl* host =
29 RenderFrameHostImpl::FromID(render_process_unique_id, render_frame_id); 29 RenderFrameHostImpl::FromID(render_process_unique_id, render_frame_id);
30 if (host) 30 if (host)
31 host->delegate()->WorkerCrashed(host); 31 host->delegate()->WorkerCrashed(host);
32 } 32 }
33 33
34 void NotifyWorkerScriptLoadedOnUI(int worker_process_id, int worker_route_id) { 34 void NotifyWorkerContextStarted(int worker_process_id, int worker_route_id) {
35 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 35 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
36 BrowserThread::PostTask(
37 BrowserThread::UI,
38 FROM_HERE,
39 base::Bind(
40 NotifyWorkerContextStarted, worker_process_id, worker_route_id));
41 return;
42 }
36 EmbeddedWorkerDevToolsManager::GetInstance()->WorkerContextStarted( 43 EmbeddedWorkerDevToolsManager::GetInstance()->WorkerContextStarted(
37 worker_process_id, worker_route_id); 44 worker_process_id, worker_route_id);
38 } 45 }
39 46
40 void NotifyWorkerDestroyedOnUI(int worker_process_id, int worker_route_id) { 47 void NotifyWorkerDestroyed(int worker_process_id, int worker_route_id) {
41 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 48 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
49 BrowserThread::PostTask(
50 BrowserThread::UI,
51 FROM_HERE,
52 base::Bind(NotifyWorkerDestroyed, worker_process_id, worker_route_id));
53 return;
54 }
42 EmbeddedWorkerDevToolsManager::GetInstance()->WorkerDestroyed( 55 EmbeddedWorkerDevToolsManager::GetInstance()->WorkerDestroyed(
43 worker_process_id, worker_route_id); 56 worker_process_id, worker_route_id);
44 } 57 }
45 58
46 } // namespace 59 } // namespace
47 60
48 SharedWorkerHost::SharedWorkerHost(SharedWorkerInstance* instance, 61 SharedWorkerHost::SharedWorkerHost(SharedWorkerInstance* instance,
49 SharedWorkerMessageFilter* filter, 62 SharedWorkerMessageFilter* filter,
50 int worker_route_id) 63 int worker_route_id)
51 : instance_(instance), 64 : instance_(instance),
(...skipping 19 matching lines...) Expand all
71 parents.begin(); 84 parents.begin();
72 parent_iter != parents.end(); 85 parent_iter != parents.end();
73 ++parent_iter) { 86 ++parent_iter) {
74 BrowserThread::PostTask(BrowserThread::UI, 87 BrowserThread::PostTask(BrowserThread::UI,
75 FROM_HERE, 88 FROM_HERE,
76 base::Bind(&WorkerCrashCallback, 89 base::Bind(&WorkerCrashCallback,
77 parent_iter->render_process_id(), 90 parent_iter->render_process_id(),
78 parent_iter->render_frame_id())); 91 parent_iter->render_frame_id()));
79 } 92 }
80 } 93 }
81 BrowserThread::PostTask( 94 if (!closed_)
82 BrowserThread::UI, 95 NotifyWorkerDestroyed(worker_process_id_, worker_route_id_);
83 FROM_HERE,
84 base::Bind(
85 &NotifyWorkerDestroyedOnUI, worker_process_id_, worker_route_id_));
86 SharedWorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed( 96 SharedWorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed(
87 worker_process_id_, worker_route_id_); 97 worker_process_id_, worker_route_id_);
88 } 98 }
89 99
90 bool SharedWorkerHost::Send(IPC::Message* message) { 100 bool SharedWorkerHost::Send(IPC::Message* message) {
91 if (!container_render_filter_) { 101 if (!container_render_filter_) {
92 delete message; 102 delete message;
93 return false; 103 return false;
94 } 104 }
95 return container_render_filter_->Send(message); 105 return container_render_filter_->Send(message);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 157 }
148 } 158 }
149 159
150 void SharedWorkerHost::WorkerContextClosed() { 160 void SharedWorkerHost::WorkerContextClosed() {
151 if (!instance_) 161 if (!instance_)
152 return; 162 return;
153 // Set the closed flag - this will stop any further messages from 163 // Set the closed flag - this will stop any further messages from
154 // being sent to the worker (messages can still be sent from the worker, 164 // being sent to the worker (messages can still be sent from the worker,
155 // for exception reporting, etc). 165 // for exception reporting, etc).
156 closed_ = true; 166 closed_ = true;
167 NotifyWorkerDestroyed(worker_process_id_, worker_route_id_);
157 } 168 }
158 169
159 void SharedWorkerHost::WorkerContextDestroyed() { 170 void SharedWorkerHost::WorkerContextDestroyed() {
160 if (!instance_) 171 if (!instance_)
161 return; 172 return;
162 instance_.reset(); 173 instance_.reset();
163 worker_document_set_ = NULL; 174 worker_document_set_ = NULL;
164 } 175 }
165 176
166 void SharedWorkerHost::WorkerScriptLoaded() { 177 void SharedWorkerHost::WorkerScriptLoaded() {
167 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoaded", 178 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoaded",
168 base::TimeTicks::Now() - creation_time_); 179 base::TimeTicks::Now() - creation_time_);
169 BrowserThread::PostTask( 180 NotifyWorkerContextStarted(worker_process_id_, worker_route_id_);
170 BrowserThread::UI,
171 FROM_HERE,
172 base::Bind(
173 &NotifyWorkerScriptLoadedOnUI, worker_process_id_, worker_route_id_));
174 } 181 }
175 182
176 void SharedWorkerHost::WorkerScriptLoadFailed() { 183 void SharedWorkerHost::WorkerScriptLoadFailed() {
177 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoadFailed", 184 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoadFailed",
178 base::TimeTicks::Now() - creation_time_); 185 base::TimeTicks::Now() - creation_time_);
179 if (!instance_) 186 if (!instance_)
180 return; 187 return;
181 load_failed_ = true; 188 load_failed_ = true;
182 for (FilterList::const_iterator i = filters_.begin(); i != filters_.end(); 189 for (FilterList::const_iterator i = filters_.begin(); i != filters_.end();
183 ++i) { 190 ++i) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 int message_port_id) { 327 int message_port_id) {
321 for (FilterList::iterator i = filters_.begin(); i != filters_.end(); ++i) { 328 for (FilterList::iterator i = filters_.begin(); i != filters_.end(); ++i) {
322 if (i->filter() == filter && i->route_id() == route_id) { 329 if (i->filter() == filter && i->route_id() == route_id) {
323 i->set_message_port_id(message_port_id); 330 i->set_message_port_id(message_port_id);
324 return; 331 return;
325 } 332 }
326 } 333 }
327 } 334 }
328 335
329 } // namespace content 336 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698