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

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: Addressed nits Created 4 years, 9 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 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 task->start_callback_.Reset(); 242 task->start_callback_.Reset();
242 callback.Run(status); 243 callback.Run(status);
243 // |task| may be destroyed. 244 // |task| may be destroyed.
244 } 245 }
245 246
246 private: 247 private:
247 void OnProcessAllocated( 248 void OnProcessAllocated(
248 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, 249 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
249 ServiceWorkerStatusCode status, 250 ServiceWorkerStatusCode status,
250 int process_id, 251 int process_id,
251 bool is_new_process) { 252 bool is_new_process,
253 const EmbeddedWorkerSettings& settings) {
252 DCHECK_CURRENTLY_ON(BrowserThread::IO); 254 DCHECK_CURRENTLY_ON(BrowserThread::IO);
253 TRACE_EVENT_ASYNC_END1("ServiceWorker", 255 TRACE_EVENT_ASYNC_END1("ServiceWorker",
254 "EmbeddedWorkerInstance::ProcessAllocate", 256 "EmbeddedWorkerInstance::ProcessAllocate",
255 params.get(), "Status", status); 257 params.get(), "Status", status);
256 258
257 if (status != SERVICE_WORKER_OK) { 259 if (status != SERVICE_WORKER_OK) {
258 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, process_id); 260 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, process_id);
259 StatusCallback callback = start_callback_; 261 StatusCallback callback = start_callback_;
260 start_callback_.Reset(); 262 start_callback_.Reset();
261 instance_->OnStartFailed(callback, status); 263 instance_->OnStartFailed(callback, status);
262 // |this| may be destroyed. 264 // |this| may be destroyed.
263 return; 265 return;
264 } 266 }
265 267
266 // Notify the instance that a process is allocated. 268 // Notify the instance that a process is allocated.
267 state_ = ProcessAllocationState::ALLOCATED; 269 state_ = ProcessAllocationState::ALLOCATED;
268 instance_->OnProcessAllocated(make_scoped_ptr(new WorkerProcessHandle( 270 instance_->OnProcessAllocated(make_scoped_ptr(new WorkerProcessHandle(
269 instance_->context_, instance_->embedded_worker_id(), process_id))); 271 instance_->context_, instance_->embedded_worker_id(), process_id)));
270 272
273 // TODO(bengr): Support changes to this setting while the worker
274 // is running.
275 params->settings.data_saver_enabled = settings.data_saver_enabled;
276
271 // Register the instance to DevToolsManager on UI thread. 277 // Register the instance to DevToolsManager on UI thread.
272 const int64_t service_worker_version_id = params->service_worker_version_id; 278 const int64_t service_worker_version_id = params->service_worker_version_id;
273 const GURL& scope = params->scope; 279 const GURL& scope = params->scope;
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, scope, 285 service_worker_version_id, script_url, scope,
280 base::Bind(&StartTask::OnRegisteredToDevToolsManager, 286 base::Bind(&StartTask::OnRegisteredToDevToolsManager,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 370
365 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params( 371 scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
366 new EmbeddedWorkerMsg_StartWorker_Params()); 372 new EmbeddedWorkerMsg_StartWorker_Params());
367 params->embedded_worker_id = embedded_worker_id_; 373 params->embedded_worker_id = embedded_worker_id_;
368 params->service_worker_version_id = service_worker_version_id; 374 params->service_worker_version_id = service_worker_version_id;
369 params->scope = scope; 375 params->scope = scope;
370 params->script_url = script_url; 376 params->script_url = script_url;
371 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; 377 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE;
372 params->wait_for_debugger = false; 378 params->wait_for_debugger = false;
373 params->pause_after_download = pause_after_download; 379 params->pause_after_download = pause_after_download;
374 params->v8_cache_options = GetV8CacheOptions(); 380 params->settings.v8_cache_options = GetV8CacheOptions();
375 381
376 inflight_start_task_.reset(new StartTask(this)); 382 inflight_start_task_.reset(new StartTask(this));
377 inflight_start_task_->Start(std::move(params), callback); 383 inflight_start_task_->Start(std::move(params), callback);
378 } 384 }
379 385
380 ServiceWorkerStatusCode EmbeddedWorkerInstance::Stop() { 386 ServiceWorkerStatusCode EmbeddedWorkerInstance::Stop() {
381 DCHECK(status_ == STARTING || status_ == RUNNING) << status_; 387 DCHECK(status_ == STARTING || status_ == RUNNING) << status_;
382 388
383 // Abort an inflight start task. 389 // Abort an inflight start task.
384 inflight_start_task_.reset(); 390 inflight_start_task_.reset();
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 case SCRIPT_READ_FINISHED: 722 case SCRIPT_READ_FINISHED:
717 return "Script read finished"; 723 return "Script read finished";
718 case STARTING_PHASE_MAX_VALUE: 724 case STARTING_PHASE_MAX_VALUE:
719 NOTREACHED(); 725 NOTREACHED();
720 } 726 }
721 NOTREACHED() << phase; 727 NOTREACHED() << phase;
722 return std::string(); 728 return std::string();
723 } 729 }
724 730
725 } // namespace content 731 } // namespace content
OLDNEW
« no previous file with comments | « chrome/browser/chrome_content_browser_client_unittest.cc ('k') | content/browser/service_worker/service_worker_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698