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

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

Issue 223583002: Revert of Make DevTools support for the embedded SharedWorker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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
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/shared_worker_devtools_manager.h"
9 #include "content/browser/frame_host/render_frame_host_delegate.h" 8 #include "content/browser/frame_host/render_frame_host_delegate.h"
10 #include "content/browser/frame_host/render_frame_host_impl.h" 9 #include "content/browser/frame_host/render_frame_host_impl.h"
11 #include "content/browser/message_port_service.h" 10 #include "content/browser/message_port_service.h"
12 #include "content/browser/shared_worker/shared_worker_instance.h" 11 #include "content/browser/shared_worker/shared_worker_instance.h"
13 #include "content/browser/shared_worker/shared_worker_message_filter.h" 12 #include "content/browser/shared_worker/shared_worker_message_filter.h"
14 #include "content/browser/shared_worker/shared_worker_service_impl.h"
15 #include "content/browser/worker_host/worker_document_set.h" 13 #include "content/browser/worker_host/worker_document_set.h"
16 #include "content/common/view_messages.h" 14 #include "content/common/view_messages.h"
17 #include "content/common/worker_messages.h" 15 #include "content/common/worker_messages.h"
18 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
19 #include "content/public/browser/content_browser_client.h" 17 #include "content/public/browser/content_browser_client.h"
20 #include "content/public/browser/render_process_host.h"
21 #include "content/public/common/content_client.h" 18 #include "content/public/common/content_client.h"
22 19
23 namespace content { 20 namespace content {
24 namespace { 21 namespace {
25 22
26 // Notifies RenderViewHost that one or more worker objects crashed. 23 // Notifies RenderViewHost that one or more worker objects crashed.
27 void WorkerCrashCallback(int render_process_unique_id, int render_frame_id) { 24 void WorkerCrashCallback(int render_process_unique_id, int render_frame_id) {
28 RenderFrameHostImpl* host = 25 RenderFrameHostImpl* host =
29 RenderFrameHostImpl::FromID(render_process_unique_id, render_frame_id); 26 RenderFrameHostImpl::FromID(render_process_unique_id, render_frame_id);
30 if (host) 27 if (host)
31 host->delegate()->WorkerCrashed(host); 28 host->delegate()->WorkerCrashed(host);
32 } 29 }
33 30
34 void NotifyWorkerScriptLoadedOnUI(int worker_process_id, int worker_route_id) {
35 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
36 SharedWorkerDevToolsManager::GetInstance()->WorkerContextStarted(
37 worker_process_id, worker_route_id);
38 }
39
40 void NotifyWorkerDestroyedOnUI(int worker_process_id, int worker_route_id) {
41 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
42 SharedWorkerDevToolsManager::GetInstance()->WorkerDestroyed(worker_process_id,
43 worker_route_id);
44 }
45
46 } // namespace 31 } // namespace
47 32
48 SharedWorkerHost::SharedWorkerHost(SharedWorkerInstance* instance, 33 SharedWorkerHost::SharedWorkerHost(SharedWorkerInstance* instance)
49 SharedWorkerMessageFilter* filter)
50 : instance_(instance), 34 : instance_(instance),
51 worker_document_set_(new WorkerDocumentSet()), 35 worker_document_set_(new WorkerDocumentSet()),
52 container_render_filter_(filter), 36 container_render_filter_(NULL),
53 worker_process_id_(filter->render_process_id()), 37 worker_route_id_(MSG_ROUTING_NONE),
54 worker_route_id_(filter->GetNextRoutingID()),
55 load_failed_(false), 38 load_failed_(false),
56 closed_(false), 39 closed_(false),
57 creation_time_(base::TimeTicks::Now()) { 40 creation_time_(base::TimeTicks::Now()) {
58 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 41 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
59 } 42 }
60 43
61 SharedWorkerHost::~SharedWorkerHost() { 44 SharedWorkerHost::~SharedWorkerHost() {
62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
63 UMA_HISTOGRAM_LONG_TIMES("SharedWorker.TimeToDeleted", 46 UMA_HISTOGRAM_LONG_TIMES("SharedWorker.TimeToDeleted",
64 base::TimeTicks::Now() - creation_time_); 47 base::TimeTicks::Now() - creation_time_);
65 // If we crashed, tell the RenderViewHosts. 48 // If we crashed, tell the RenderViewHosts.
66 if (instance_ && !load_failed_) { 49 if (instance_ && !load_failed_) {
67 const WorkerDocumentSet::DocumentInfoSet& parents = 50 const WorkerDocumentSet::DocumentInfoSet& parents =
68 worker_document_set_->documents(); 51 worker_document_set_->documents();
69 for (WorkerDocumentSet::DocumentInfoSet::const_iterator parent_iter = 52 for (WorkerDocumentSet::DocumentInfoSet::const_iterator parent_iter =
70 parents.begin(); 53 parents.begin();
71 parent_iter != parents.end(); 54 parent_iter != parents.end();
72 ++parent_iter) { 55 ++parent_iter) {
73 BrowserThread::PostTask(BrowserThread::UI, 56 BrowserThread::PostTask(BrowserThread::UI,
74 FROM_HERE, 57 FROM_HERE,
75 base::Bind(&WorkerCrashCallback, 58 base::Bind(&WorkerCrashCallback,
76 parent_iter->render_process_id(), 59 parent_iter->render_process_id(),
77 parent_iter->render_frame_id())); 60 parent_iter->render_frame_id()));
78 } 61 }
79 } 62 }
80 BrowserThread::PostTask(
81 BrowserThread::UI,
82 FROM_HERE,
83 base::Bind(
84 &NotifyWorkerDestroyedOnUI, worker_process_id_, worker_route_id_));
85 SharedWorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed(
86 worker_process_id_, worker_route_id_);
87 } 63 }
88 64
89 bool SharedWorkerHost::Send(IPC::Message* message) { 65 bool SharedWorkerHost::Send(IPC::Message* message) {
90 if (!container_render_filter_) { 66 if (!container_render_filter_) {
91 delete message; 67 delete message;
92 return false; 68 return false;
93 } 69 }
94 return container_render_filter_->Send(message); 70 return container_render_filter_->Send(message);
95 } 71 }
96 72
97 void SharedWorkerHost::Start(bool pause_on_start) { 73 void SharedWorkerHost::Init(SharedWorkerMessageFilter* filter) {
74 CHECK(instance_);
75 DCHECK(worker_route_id_ == MSG_ROUTING_NONE);
76 container_render_filter_ = filter;
77 worker_route_id_ = filter->GetNextRoutingID();
78
98 WorkerProcessMsg_CreateWorker_Params params; 79 WorkerProcessMsg_CreateWorker_Params params;
99 params.url = instance_->url(); 80 params.url = instance_->url();
100 params.name = instance_->name(); 81 params.name = instance_->name();
101 params.content_security_policy = instance_->content_security_policy(); 82 params.content_security_policy = instance_->content_security_policy();
102 params.security_policy_type = instance_->security_policy_type(); 83 params.security_policy_type = instance_->security_policy_type();
103 params.pause_on_start = pause_on_start;
104 params.route_id = worker_route_id_; 84 params.route_id = worker_route_id_;
105 Send(new WorkerProcessMsg_CreateWorker(params)); 85 Send(new WorkerProcessMsg_CreateWorker(params));
106 86
107 for (FilterList::const_iterator i = filters_.begin(); i != filters_.end(); 87 for (FilterList::const_iterator i = filters_.begin(); i != filters_.end();
108 ++i) { 88 ++i) {
109 i->filter()->Send(new ViewMsg_WorkerCreated(i->route_id())); 89 i->filter()->Send(new ViewMsg_WorkerCreated(i->route_id()));
110 } 90 }
111 } 91 }
112 92
113 bool SharedWorkerHost::FilterMessage(const IPC::Message& message, 93 bool SharedWorkerHost::FilterMessage(const IPC::Message& message,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 } 136 }
157 137
158 void SharedWorkerHost::WorkerContextDestroyed() { 138 void SharedWorkerHost::WorkerContextDestroyed() {
159 if (!instance_) 139 if (!instance_)
160 return; 140 return;
161 instance_.reset(); 141 instance_.reset();
162 worker_document_set_ = NULL; 142 worker_document_set_ = NULL;
163 } 143 }
164 144
165 void SharedWorkerHost::WorkerScriptLoaded() { 145 void SharedWorkerHost::WorkerScriptLoaded() {
146 // TODO(horo): implement this.
166 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoaded", 147 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoaded",
167 base::TimeTicks::Now() - creation_time_); 148 base::TimeTicks::Now() - creation_time_);
168 BrowserThread::PostTask(
169 BrowserThread::UI,
170 FROM_HERE,
171 base::Bind(
172 &NotifyWorkerScriptLoadedOnUI, worker_process_id_, worker_route_id_));
173 } 149 }
174 150
175 void SharedWorkerHost::WorkerScriptLoadFailed() { 151 void SharedWorkerHost::WorkerScriptLoadFailed() {
176 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoadFailed", 152 UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoadFailed",
177 base::TimeTicks::Now() - creation_time_); 153 base::TimeTicks::Now() - creation_time_);
178 if (!instance_) 154 if (!instance_)
179 return; 155 return;
180 load_failed_ = true; 156 load_failed_ = true;
181 for (FilterList::const_iterator i = filters_.begin(); i != filters_.end(); 157 for (FilterList::const_iterator i = filters_.begin(); i != filters_.end();
182 ++i) { 158 ++i) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 int message_port_id) { 295 int message_port_id) {
320 for (FilterList::iterator i = filters_.begin(); i != filters_.end(); ++i) { 296 for (FilterList::iterator i = filters_.begin(); i != filters_.end(); ++i) {
321 if (i->filter() == filter && i->route_id() == route_id) { 297 if (i->filter() == filter && i->route_id() == route_id) {
322 i->set_message_port_id(message_port_id); 298 i->set_message_port_id(message_port_id);
323 return; 299 return;
324 } 300 }
325 } 301 }
326 } 302 }
327 303
328 } // namespace content 304 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/shared_worker/shared_worker_host.h ('k') | content/browser/shared_worker/shared_worker_instance.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698