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

Side by Side Diff: content/browser/service_worker/embedded_worker_instance.cc

Issue 1221643014: Service Worker: Migrate to version_uuid and surface ServiceWorker.id. (Chromium 2/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/service_worker/embedded_worker_instance.h" 5 #include "content/browser/service_worker/embedded_worker_instance.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 void NotifyWorkerStopIgnoredOnUI(int worker_process_id, int worker_route_id) { 50 void NotifyWorkerStopIgnoredOnUI(int worker_process_id, int worker_route_id) {
51 DCHECK_CURRENTLY_ON(BrowserThread::UI); 51 DCHECK_CURRENTLY_ON(BrowserThread::UI);
52 ServiceWorkerDevToolsManager::GetInstance()->WorkerStopIgnored( 52 ServiceWorkerDevToolsManager::GetInstance()->WorkerStopIgnored(
53 worker_process_id, worker_route_id); 53 worker_process_id, worker_route_id);
54 } 54 }
55 55
56 void RegisterToWorkerDevToolsManagerOnUI( 56 void RegisterToWorkerDevToolsManagerOnUI(
57 int process_id, 57 int process_id,
58 const ServiceWorkerContextCore* service_worker_context, 58 const ServiceWorkerContextCore* service_worker_context,
59 const base::WeakPtr<ServiceWorkerContextCore>& service_worker_context_weak, 59 const base::WeakPtr<ServiceWorkerContextCore>& service_worker_context_weak,
60 int64 service_worker_version_id, 60 std::string service_worker_version_uuid,
61 const GURL& url, 61 const GURL& url,
62 const base::Callback<void(int worker_devtools_agent_route_id, 62 const base::Callback<void(int worker_devtools_agent_route_id,
63 bool wait_for_debugger)>& callback) { 63 bool wait_for_debugger)>& callback) {
64 DCHECK_CURRENTLY_ON(BrowserThread::UI); 64 DCHECK_CURRENTLY_ON(BrowserThread::UI);
65 int worker_devtools_agent_route_id = MSG_ROUTING_NONE; 65 int worker_devtools_agent_route_id = MSG_ROUTING_NONE;
66 bool wait_for_debugger = false; 66 bool wait_for_debugger = false;
67 if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) { 67 if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) {
68 // |rph| may be NULL in unit tests. 68 // |rph| may be NULL in unit tests.
69 worker_devtools_agent_route_id = rph->GetNextRoutingID(); 69 worker_devtools_agent_route_id = rph->GetNextRoutingID();
70 wait_for_debugger = 70 wait_for_debugger =
71 ServiceWorkerDevToolsManager::GetInstance()->WorkerCreated( 71 ServiceWorkerDevToolsManager::GetInstance()->WorkerCreated(
72 process_id, 72 process_id, worker_devtools_agent_route_id,
73 worker_devtools_agent_route_id,
74 ServiceWorkerDevToolsManager::ServiceWorkerIdentifier( 73 ServiceWorkerDevToolsManager::ServiceWorkerIdentifier(
75 service_worker_context, 74 service_worker_context, service_worker_context_weak,
76 service_worker_context_weak, 75 service_worker_version_uuid, url));
77 service_worker_version_id,
78 url));
79 } 76 }
80 BrowserThread::PostTask( 77 BrowserThread::PostTask(
81 BrowserThread::IO, 78 BrowserThread::IO,
82 FROM_HERE, 79 FROM_HERE,
83 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger)); 80 base::Bind(callback, worker_devtools_agent_route_id, wait_for_debugger));
84 } 81 }
85 82
86 } // namespace 83 } // namespace
87 84
88 // Lives on IO thread, proxies notifications to DevToolsManager that lives on 85 // Lives on IO thread, proxies notifications to DevToolsManager that lives on
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 }; 122 };
126 123
127 EmbeddedWorkerInstance::~EmbeddedWorkerInstance() { 124 EmbeddedWorkerInstance::~EmbeddedWorkerInstance() {
128 DCHECK(status_ == STOPPING || status_ == STOPPED); 125 DCHECK(status_ == STOPPING || status_ == STOPPED);
129 devtools_proxy_.reset(); 126 devtools_proxy_.reset();
130 if (context_ && process_id_ != -1) 127 if (context_ && process_id_ != -1)
131 context_->process_manager()->ReleaseWorkerProcess(embedded_worker_id_); 128 context_->process_manager()->ReleaseWorkerProcess(embedded_worker_id_);
132 registry_->RemoveWorker(process_id_, embedded_worker_id_); 129 registry_->RemoveWorker(process_id_, embedded_worker_id_);
133 } 130 }
134 131
135 void EmbeddedWorkerInstance::Start(int64 service_worker_version_id, 132 void EmbeddedWorkerInstance::Start(std::string service_worker_version_uuid,
136 const GURL& scope, 133 const GURL& scope,
137 const GURL& script_url, 134 const GURL& script_url,
138 bool pause_after_download, 135 bool pause_after_download,
139 const StatusCallback& callback) { 136 const StatusCallback& callback) {
140 if (!context_) { 137 if (!context_) {
141 callback.Run(SERVICE_WORKER_ERROR_ABORT); 138 callback.Run(SERVICE_WORKER_ERROR_ABORT);
142 return; 139 return;
143 } 140 }
144 DCHECK(status_ == STOPPED); 141 DCHECK(status_ == STOPPED);
145 start_timing_ = base::TimeTicks::Now(); 142 start_timing_ = base::TimeTicks::Now();
146 status_ = STARTING; 143 status_ = STARTING;
147 starting_phase_ = ALLOCATING_PROCESS; 144 starting_phase_ = ALLOCATING_PROCESS;
148 network_accessed_for_script_ = false; 145 network_accessed_for_script_ = false;
149 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting()); 146 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting());
150 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params( 147 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
151 new EmbeddedWorkerMsg_StartWorker_Params()); 148 new EmbeddedWorkerMsg_StartWorker_Params());
152 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", 149 TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker",
153 "EmbeddedWorkerInstance::ProcessAllocate", 150 "EmbeddedWorkerInstance::ProcessAllocate",
154 params.get(), 151 params.get(),
155 "Scope", scope.spec(), 152 "Scope", scope.spec(),
156 "Script URL", script_url.spec()); 153 "Script URL", script_url.spec());
157 params->embedded_worker_id = embedded_worker_id_; 154 params->embedded_worker_id = embedded_worker_id_;
158 params->service_worker_version_id = service_worker_version_id; 155 params->service_worker_version_uuid = service_worker_version_uuid;
159 params->scope = scope; 156 params->scope = scope;
160 params->script_url = script_url; 157 params->script_url = script_url;
161 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; 158 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE;
162 params->pause_after_download = pause_after_download; 159 params->pause_after_download = pause_after_download;
163 params->wait_for_debugger = false; 160 params->wait_for_debugger = false;
164 params->v8_cache_options = GetV8CacheOptions(); 161 params->v8_cache_options = GetV8CacheOptions();
165 context_->process_manager()->AllocateWorkerProcess( 162 context_->process_manager()->AllocateWorkerProcess(
166 embedded_worker_id_, 163 embedded_worker_id_,
167 scope, 164 scope,
168 script_url, 165 script_url,
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 "EmbeddedWorkerInstance::ProcessAllocate", 260 "EmbeddedWorkerInstance::ProcessAllocate",
264 params.get(), 261 params.get(),
265 "Status", status); 262 "Status", status);
266 if (status != SERVICE_WORKER_OK) { 263 if (status != SERVICE_WORKER_OK) {
267 Status old_status = status_; 264 Status old_status = status_;
268 status_ = STOPPED; 265 status_ = STOPPED;
269 callback.Run(status); 266 callback.Run(status);
270 FOR_EACH_OBSERVER(Listener, listener_list_, OnStopped(old_status)); 267 FOR_EACH_OBSERVER(Listener, listener_list_, OnStopped(old_status));
271 return; 268 return;
272 } 269 }
273 const int64 service_worker_version_id = params->service_worker_version_id; 270 const std::string service_worker_version_uuid =
271 params->service_worker_version_uuid;
274 process_id_ = process_id; 272 process_id_ = process_id;
275 GURL script_url(params->script_url); 273 GURL script_url(params->script_url);
276 274
277 // Register this worker to DevToolsManager on UI thread, then continue to 275 // Register this worker to DevToolsManager on UI thread, then continue to
278 // call SendStartWorker on IO thread. 276 // call SendStartWorker on IO thread.
279 starting_phase_ = REGISTERING_TO_DEVTOOLS; 277 starting_phase_ = REGISTERING_TO_DEVTOOLS;
280 BrowserThread::PostTask( 278 BrowserThread::PostTask(
281 BrowserThread::UI, FROM_HERE, 279 BrowserThread::UI, FROM_HERE,
282 base::Bind(RegisterToWorkerDevToolsManagerOnUI, process_id_, 280 base::Bind(RegisterToWorkerDevToolsManagerOnUI, process_id_,
283 context_.get(), context_, service_worker_version_id, 281 context_.get(), context_, service_worker_version_uuid,
284 script_url, 282 script_url,
285 base::Bind(&EmbeddedWorkerInstance::SendStartWorker, 283 base::Bind(&EmbeddedWorkerInstance::SendStartWorker,
286 weak_factory_.GetWeakPtr(), base::Passed(&params), 284 weak_factory_.GetWeakPtr(), base::Passed(&params),
287 callback, is_new_process))); 285 callback, is_new_process)));
288 } 286 }
289 287
290 void EmbeddedWorkerInstance::SendStartWorker( 288 void EmbeddedWorkerInstance::SendStartWorker(
291 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, 289 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
292 const StatusCallback& callback, 290 const StatusCallback& callback,
293 bool is_new_process, 291 bool is_new_process,
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 case SCRIPT_EVALUATED: 491 case SCRIPT_EVALUATED:
494 return "Script evaluated"; 492 return "Script evaluated";
495 case STARTING_PHASE_MAX_VALUE: 493 case STARTING_PHASE_MAX_VALUE:
496 NOTREACHED(); 494 NOTREACHED();
497 } 495 }
498 NOTREACHED() << phase; 496 NOTREACHED() << phase;
499 return std::string(); 497 return std::string();
500 } 498 }
501 499
502 } // namespace content 500 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698