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

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

Issue 1708583003: Pass data saver pref value into embedded worker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 <utility> 7 #include <utility>
8 8
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/metrics/histogram_macros.h" 11 #include "base/metrics/histogram_macros.h"
12 #include "base/threading/non_thread_safe.h" 12 #include "base/threading/non_thread_safe.h"
13 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
14 #include "content/browser/devtools/service_worker_devtools_manager.h" 14 #include "content/browser/devtools/service_worker_devtools_manager.h"
15 #include "content/browser/service_worker/embedded_worker_registry.h" 15 #include "content/browser/service_worker/embedded_worker_registry.h"
16 #include "content/browser/service_worker/service_worker_context_core.h" 16 #include "content/browser/service_worker/service_worker_context_core.h"
17 #include "content/common/content_switches_internal.h" 17 #include "content/common/content_switches_internal.h"
18 #include "content/common/mojo/service_registry_impl.h" 18 #include "content/common/mojo/service_registry_impl.h"
19 #include "content/common/service_worker/embedded_worker_messages.h" 19 #include "content/common/service_worker/embedded_worker_messages.h"
20 #include "content/common/service_worker/embedded_worker_settings.h"
20 #include "content/common/service_worker/embedded_worker_setup.mojom.h" 21 #include "content/common/service_worker/embedded_worker_setup.mojom.h"
21 #include "content/common/service_worker/service_worker_types.h" 22 #include "content/common/service_worker/service_worker_types.h"
22 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
23 #include "content/public/browser/render_process_host.h" 24 #include "content/public/browser/render_process_host.h"
24 #include "content/public/common/child_process_host.h" 25 #include "content/public/common/child_process_host.h"
25 #include "ipc/ipc_message.h" 26 #include "ipc/ipc_message.h"
26 #include "url/gurl.h" 27 #include "url/gurl.h"
27 28
28 namespace content { 29 namespace content {
29 30
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 task->start_callback_.Reset(); 243 task->start_callback_.Reset();
243 callback.Run(status); 244 callback.Run(status);
244 // |task| may be destroyed. 245 // |task| may be destroyed.
245 } 246 }
246 247
247 private: 248 private:
248 void OnProcessAllocated( 249 void OnProcessAllocated(
249 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, 250 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
250 ServiceWorkerStatusCode status, 251 ServiceWorkerStatusCode status,
251 int process_id, 252 int process_id,
252 bool is_new_process) { 253 bool is_new_process,
254 const EmbeddedWorkerSettings& settings) {
253 DCHECK_CURRENTLY_ON(BrowserThread::IO); 255 DCHECK_CURRENTLY_ON(BrowserThread::IO);
254 TRACE_EVENT_ASYNC_END1("ServiceWorker", 256 TRACE_EVENT_ASYNC_END1("ServiceWorker",
255 "EmbeddedWorkerInstance::ProcessAllocate", 257 "EmbeddedWorkerInstance::ProcessAllocate",
256 params.get(), "Status", status); 258 params.get(), "Status", status);
257 259
258 if (status != SERVICE_WORKER_OK) { 260 if (status != SERVICE_WORKER_OK) {
259 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, process_id); 261 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, process_id);
260 StatusCallback callback = start_callback_; 262 StatusCallback callback = start_callback_;
261 start_callback_.Reset(); 263 start_callback_.Reset();
262 instance_->OnStartFailed(callback, status); 264 instance_->OnStartFailed(callback, status);
263 // |this| may be destroyed. 265 // |this| may be destroyed.
264 return; 266 return;
265 } 267 }
266 268
267 // Notify the instance that a process is allocated. 269 // Notify the instance that a process is allocated.
268 state_ = ProcessAllocationState::ALLOCATED; 270 state_ = ProcessAllocationState::ALLOCATED;
269 instance_->OnProcessAllocated(make_scoped_ptr(new WorkerProcessHandle( 271 instance_->OnProcessAllocated(make_scoped_ptr(new WorkerProcessHandle(
270 instance_->context_, instance_->embedded_worker_id(), process_id))); 272 instance_->context_, instance_->embedded_worker_id(), process_id)));
271 273
274 // TODO(bengr): Support changes to this setting while the worker
275 // is running.
276 params->settings.data_saver_enabled = settings.data_saver_enabled;
277
272 // Register the instance to DevToolsManager on UI thread. 278 // Register the instance to DevToolsManager on UI thread.
273 const int64_t service_worker_version_id = params->service_worker_version_id; 279 const int64_t service_worker_version_id = params->service_worker_version_id;
274 GURL script_url(params->script_url); 280 GURL script_url(params->script_url);
275 BrowserThread::PostTask( 281 BrowserThread::PostTask(
276 BrowserThread::UI, FROM_HERE, 282 BrowserThread::UI, FROM_HERE,
277 base::Bind(RegisterToWorkerDevToolsManagerOnUI, process_id, 283 base::Bind(RegisterToWorkerDevToolsManagerOnUI, process_id,
278 instance_->context_.get(), instance_->context_, 284 instance_->context_.get(), instance_->context_,
279 service_worker_version_id, script_url, 285 service_worker_version_id, script_url,
280 base::Bind(&StartTask::OnRegisteredToDevToolsManager, 286 base::Bind(&StartTask::OnRegisteredToDevToolsManager,
281 weak_factory_.GetWeakPtr(), base::Passed(&params), 287 weak_factory_.GetWeakPtr(), base::Passed(&params),
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting()); 363 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting());
358 364
359 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params( 365 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
360 new EmbeddedWorkerMsg_StartWorker_Params()); 366 new EmbeddedWorkerMsg_StartWorker_Params());
361 params->embedded_worker_id = embedded_worker_id_; 367 params->embedded_worker_id = embedded_worker_id_;
362 params->service_worker_version_id = service_worker_version_id; 368 params->service_worker_version_id = service_worker_version_id;
363 params->scope = scope; 369 params->scope = scope;
364 params->script_url = script_url; 370 params->script_url = script_url;
365 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; 371 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE;
366 params->wait_for_debugger = false; 372 params->wait_for_debugger = false;
367 params->v8_cache_options = GetV8CacheOptions(); 373 params->settings.v8_cache_options = GetV8CacheOptions();
368 374
369 inflight_start_task_.reset(new StartTask(this)); 375 inflight_start_task_.reset(new StartTask(this));
370 inflight_start_task_->Start(std::move(params), callback); 376 inflight_start_task_->Start(std::move(params), callback);
371 } 377 }
372 378
373 ServiceWorkerStatusCode EmbeddedWorkerInstance::Stop() { 379 ServiceWorkerStatusCode EmbeddedWorkerInstance::Stop() {
374 DCHECK(status_ == STARTING || status_ == RUNNING) << status_; 380 DCHECK(status_ == STARTING || status_ == RUNNING) << status_;
375 381
376 // Abort an inflight start task. 382 // Abort an inflight start task.
377 inflight_start_task_.reset(); 383 inflight_start_task_.reset();
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 case SCRIPT_READ_FINISHED: 704 case SCRIPT_READ_FINISHED:
699 return "Script read finished"; 705 return "Script read finished";
700 case STARTING_PHASE_MAX_VALUE: 706 case STARTING_PHASE_MAX_VALUE:
701 NOTREACHED(); 707 NOTREACHED();
702 } 708 }
703 NOTREACHED() << phase; 709 NOTREACHED() << phase;
704 return std::string(); 710 return std::string();
705 } 711 }
706 712
707 } // namespace content 713 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698