Commit c8d1ef19 authored by Patrick Monette's avatar Patrick Monette Committed by Commit Bot

[TaskManager] Create tasks for existing service workers

This was broken in the transition to ProfileManagerObserver and
ProfileObserver in
https://chromium-review.googlesource.com/c/chromium/src/+/1994019.

Bug: 1044969
Change-Id: Ie11331d415f56adbbc817eb3bed7eca139c2ab7b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2015591
Commit-Queue: Patrick Monette <pmonette@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735234}
parent de77d445
......@@ -32,6 +32,14 @@ void WorkerTaskProvider::OnProfileAdded(Profile* profile) {
content::BrowserContext::GetDefaultStoragePartition(profile)
->GetServiceWorkerContext();
scoped_context_observer_.Add(context);
// Create tasks for existing service workers.
for (const auto& kv : context->GetRunningServiceWorkerInfos()) {
const int64_t version_id = kv.first;
const content::ServiceWorkerRunningInfo& running_info = kv.second;
CreateTask(context, version_id, running_info);
}
}
void WorkerTaskProvider::OnOffTheRecordProfileCreated(Profile* off_the_record) {
......@@ -101,22 +109,6 @@ void WorkerTaskProvider::StopUpdating() {
service_worker_task_map_.clear();
}
void WorkerTaskProvider::CreateTasksForProfile(Profile* profile) {
content::ServiceWorkerContext* context =
content::BrowserContext::GetDefaultStoragePartition(profile)
->GetServiceWorkerContext();
if (!scoped_context_observer_.IsObserving(context))
scoped_context_observer_.Add(context);
for (const auto& kv : context->GetRunningServiceWorkerInfos()) {
const int64_t version_id = kv.first;
const content::ServiceWorkerRunningInfo& running_info = kv.second;
CreateTask(context, version_id, running_info);
}
}
void WorkerTaskProvider::CreateTask(
content::ServiceWorkerContext* context,
int64_t version_id,
......
......@@ -64,10 +64,6 @@ class WorkerTaskProvider : public TaskProvider,
void StartUpdating() override;
void StopUpdating() override;
// Creates WorkerTasks for the given |profile| and notifies the observer of
// their additions.
void CreateTasksForProfile(Profile* profile);
// Creates a WorkerTask from the given |running_info| and notifies the
// observer of its addition.
void CreateTask(content::ServiceWorkerContext* context,
......
......@@ -293,4 +293,36 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
CloseBrowserSynchronously(browser_2);
}
IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, CreateExistingTasks) {
EXPECT_TRUE(tasks().empty());
ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL(
"/service_worker/create_service_worker.html"));
EXPECT_EQ("DONE", EvalJs(browser()->tab_strip_model()->GetActiveWebContents(),
"register('respond_with_fetch_worker.js');"));
// No tasks yet as StartUpdating() wasn't called.
EXPECT_TRUE(tasks().empty());
StartUpdating();
ASSERT_EQ(tasks().size(), 1u);
const Task* task = tasks()[0];
EXPECT_EQ(task->GetChildProcessUniqueID(), GetChildProcessID(browser()));
EXPECT_EQ(Task::SERVICE_WORKER, task->GetType());
EXPECT_TRUE(base::StartsWith(
task->title(),
ExpectedTaskTitle(
embedded_test_server()
->GetURL("/service_worker/respond_with_fetch_worker.js")
.spec()),
base::CompareCase::INSENSITIVE_ASCII));
GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url());
WaitUntilTaskCount(0);
StopUpdating();
}
} // namespace task_manager
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment