| Index: content/browser/service_worker/service_worker_internals_ui.cc
|
| diff --git a/content/browser/service_worker/service_worker_internals_ui.cc b/content/browser/service_worker/service_worker_internals_ui.cc
|
| index a7c8d71681356b90951808a176feef67971efce7..e9fa8463743d814816a58a4f8b31be5ee3000118 100644
|
| --- a/content/browser/service_worker/service_worker_internals_ui.cc
|
| +++ b/content/browser/service_worker/service_worker_internals_ui.cc
|
| @@ -295,6 +295,28 @@ void OnAllRegistrations(
|
| args.get());
|
| }
|
|
|
| +void SetKeepAliveMode(
|
| + ServiceWorkerContextWrapper* wrapper,
|
| + bool keep_alive_mode) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + if (!wrapper->context())
|
| + return;
|
| + wrapper->context()->SetKeepAliveMode(keep_alive_mode);
|
| +}
|
| +
|
| +void SetKeepAliveModeForStoragePartition(
|
| + bool keep_alive_mode,
|
| + StoragePartition* storage_partition) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + scoped_refptr<ServiceWorkerContextWrapper> wrapper =
|
| + static_cast<ServiceWorkerContextWrapper*>(
|
| + storage_partition->GetServiceWorkerContext());
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(&SetKeepAliveMode, wrapper, keep_alive_mode));
|
| +}
|
| +
|
| } // namespace
|
|
|
| class ServiceWorkerInternalsUI::PartitionObserver
|
| @@ -459,18 +481,29 @@ void ServiceWorkerInternalsUI::GetOptions(const ListValue* args) {
|
| options.SetBoolean("debug_on_start",
|
| EmbeddedWorkerDevToolsManager::GetInstance()
|
| ->debug_service_worker_on_start());
|
| + options.SetBoolean("keep_alive",
|
| + EmbeddedWorkerDevToolsManager::GetInstance()
|
| + ->keep_alive_service_workers());
|
| web_ui()->CallJavascriptFunction("serviceworker.onOptions", options);
|
| }
|
|
|
| void ServiceWorkerInternalsUI::SetOption(const ListValue* args) {
|
| std::string option_name;
|
| bool option_boolean;
|
| - if (!args->GetString(0, &option_name) || option_name != "debug_on_start" ||
|
| + if (!args->GetString(0, &option_name) ||
|
| !args->GetBoolean(1, &option_boolean)) {
|
| return;
|
| }
|
| - EmbeddedWorkerDevToolsManager::GetInstance()
|
| - ->set_debug_service_worker_on_start(option_boolean);
|
| + if (option_name == "debug_on_start") {
|
| + EmbeddedWorkerDevToolsManager::GetInstance()
|
| + ->set_debug_service_worker_on_start(option_boolean);
|
| + } else if (option_name == "keep_alive") {
|
| + EmbeddedWorkerDevToolsManager::GetInstance()
|
| + ->set_keep_alive_service_workers(option_boolean);
|
| + BrowserContext::ForEachStoragePartition(
|
| + web_ui()->GetWebContents()->GetBrowserContext(),
|
| + base::Bind(&SetKeepAliveModeForStoragePartition, option_boolean));
|
| + }
|
| }
|
|
|
| void ServiceWorkerInternalsUI::GetAllRegistrations(const ListValue* args) {
|
|
|