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

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

Issue 761923004: Keep alive ServiceWorkers when devtools is attached (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updated comments Created 6 years 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/service_worker/service_worker_internals_ui.h" 5 #include "content/browser/service_worker/service_worker_internals_ui.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 ScopedVector<const Value> args; 288 ScopedVector<const Value> args;
289 args.push_back(GetRegistrationListValue(live_registrations)); 289 args.push_back(GetRegistrationListValue(live_registrations));
290 args.push_back(GetVersionListValue(live_versions)); 290 args.push_back(GetVersionListValue(live_versions));
291 args.push_back(GetRegistrationListValue(stored_registrations)); 291 args.push_back(GetRegistrationListValue(stored_registrations));
292 args.push_back(new FundamentalValue(partition_id)); 292 args.push_back(new FundamentalValue(partition_id));
293 args.push_back(new StringValue(context_path.value())); 293 args.push_back(new StringValue(context_path.value()));
294 internals->web_ui()->CallJavascriptFunction("serviceworker.onPartitionData", 294 internals->web_ui()->CallJavascriptFunction("serviceworker.onPartitionData",
295 args.get()); 295 args.get());
296 } 296 }
297 297
298 void SetKeepAliveMode(
299 ServiceWorkerContextWrapper* wrapper,
300 bool keep_alive_mode) {
301 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
302 if (!wrapper->context())
303 return;
304 wrapper->context()->SetKeepAliveMode(keep_alive_mode);
305 }
306
307 void SetKeepAliveModeForStoragePartition(
308 bool keep_alive_mode,
309 StoragePartition* storage_partition) {
310 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
311 scoped_refptr<ServiceWorkerContextWrapper> wrapper =
312 static_cast<ServiceWorkerContextWrapper*>(
313 storage_partition->GetServiceWorkerContext());
314 BrowserThread::PostTask(
315 BrowserThread::IO,
316 FROM_HERE,
317 base::Bind(&SetKeepAliveMode, wrapper, keep_alive_mode));
318 }
319
298 } // namespace 320 } // namespace
299 321
300 class ServiceWorkerInternalsUI::PartitionObserver 322 class ServiceWorkerInternalsUI::PartitionObserver
301 : public ServiceWorkerContextObserver { 323 : public ServiceWorkerContextObserver {
302 public: 324 public:
303 PartitionObserver(int partition_id, WebUI* web_ui) 325 PartitionObserver(int partition_id, WebUI* web_ui)
304 : partition_id_(partition_id), web_ui_(web_ui) {} 326 : partition_id_(partition_id), web_ui_(web_ui) {}
305 ~PartitionObserver() override {} 327 ~PartitionObserver() override {}
306 // ServiceWorkerContextObserver overrides: 328 // ServiceWorkerContextObserver overrides:
307 void OnWorkerStarted(int64 version_id, 329 void OnWorkerStarted(int64 version_id,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 base::Bind(&ServiceWorkerInternalsUI::RemoveObserverFromStoragePartition, 474 base::Bind(&ServiceWorkerInternalsUI::RemoveObserverFromStoragePartition,
453 base::Unretained(this)); 475 base::Unretained(this));
454 BrowserContext::ForEachStoragePartition(browser_context, remove_observer_cb); 476 BrowserContext::ForEachStoragePartition(browser_context, remove_observer_cb);
455 } 477 }
456 478
457 void ServiceWorkerInternalsUI::GetOptions(const ListValue* args) { 479 void ServiceWorkerInternalsUI::GetOptions(const ListValue* args) {
458 DictionaryValue options; 480 DictionaryValue options;
459 options.SetBoolean("debug_on_start", 481 options.SetBoolean("debug_on_start",
460 EmbeddedWorkerDevToolsManager::GetInstance() 482 EmbeddedWorkerDevToolsManager::GetInstance()
461 ->debug_service_worker_on_start()); 483 ->debug_service_worker_on_start());
484 options.SetBoolean("keep_alive",
485 EmbeddedWorkerDevToolsManager::GetInstance()
486 ->keep_alive_service_workers());
462 web_ui()->CallJavascriptFunction("serviceworker.onOptions", options); 487 web_ui()->CallJavascriptFunction("serviceworker.onOptions", options);
463 } 488 }
464 489
465 void ServiceWorkerInternalsUI::SetOption(const ListValue* args) { 490 void ServiceWorkerInternalsUI::SetOption(const ListValue* args) {
466 std::string option_name; 491 std::string option_name;
467 bool option_boolean; 492 bool option_boolean;
468 if (!args->GetString(0, &option_name) || option_name != "debug_on_start" || 493 if (!args->GetString(0, &option_name) ||
469 !args->GetBoolean(1, &option_boolean)) { 494 !args->GetBoolean(1, &option_boolean)) {
470 return; 495 return;
471 } 496 }
472 EmbeddedWorkerDevToolsManager::GetInstance() 497 if (option_name == "debug_on_start") {
473 ->set_debug_service_worker_on_start(option_boolean); 498 EmbeddedWorkerDevToolsManager::GetInstance()
499 ->set_debug_service_worker_on_start(option_boolean);
500 } else if (option_name == "keep_alive") {
501 EmbeddedWorkerDevToolsManager::GetInstance()
502 ->set_keep_alive_service_workers(option_boolean);
503 BrowserContext::ForEachStoragePartition(
504 web_ui()->GetWebContents()->GetBrowserContext(),
505 base::Bind(&SetKeepAliveModeForStoragePartition, option_boolean));
506 }
474 } 507 }
475 508
476 void ServiceWorkerInternalsUI::GetAllRegistrations(const ListValue* args) { 509 void ServiceWorkerInternalsUI::GetAllRegistrations(const ListValue* args) {
477 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 510 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
478 BrowserContext* browser_context = 511 BrowserContext* browser_context =
479 web_ui()->GetWebContents()->GetBrowserContext(); 512 web_ui()->GetWebContents()->GetBrowserContext();
480 // Safe to use base::Unretained(this) because 513 // Safe to use base::Unretained(this) because
481 // ForEachStoragePartition is synchronous. 514 // ForEachStoragePartition is synchronous.
482 BrowserContext::StoragePartitionCallback add_context_cb = 515 BrowserContext::StoragePartitionCallback add_context_cb =
483 base::Bind(&ServiceWorkerInternalsUI::AddContextFromStoragePartition, 516 base::Bind(&ServiceWorkerInternalsUI::AddContextFromStoragePartition,
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 return; 701 return;
669 } 702 }
670 703
671 base::Callback<void(ServiceWorkerStatusCode)> callback = 704 base::Callback<void(ServiceWorkerStatusCode)> callback =
672 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id); 705 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id);
673 FindRegistrationForPattern( 706 FindRegistrationForPattern(
674 context, GURL(scope_string), base::Bind(StartActiveWorker, callback)); 707 context, GURL(scope_string), base::Bind(StartActiveWorker, callback));
675 } 708 }
676 709
677 } // namespace content 710 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698