Commit 4400c82d authored by Alan Cutter's avatar Alan Cutter Committed by Commit Bot

WebApps: Refactor WebAppInstallManager task queuing into helper methods

This CL is a simple refactor that moves WebAppInstallManager code for
enqueuing tasks that use a WebContents into a helper method. This is in
preparation for adding an update task to the queue:
https://chromium-review.googlesource.com/c/chromium/src/+/1811402

Bug: 926083
Change-Id: If66cebcbefe6ce931340c8d3c149fd42c9b36168
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1832131
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarAlexey Baskakov <loyso@chromium.org>
Cr-Commit-Position: refs/heads/master@{#705444}
parent 01e2f2ba
......@@ -116,26 +116,18 @@ void WebAppInstallManager::InstallOrUpdateWebAppFromSync(
is_locally_installed = true;
#endif
CreateWebContentsIfNecessary();
DCHECK(web_contents_);
auto task = std::make_unique<WebAppInstallTask>(
profile(), finalizer(), data_retriever_factory_.Run());
base::OnceClosure task_closure = base::BindOnce(
base::OnceClosure start_task = base::BindOnce(
&WebAppInstallTask::InstallWebAppFromInfoRetrieveIcons,
base::Unretained(task.get()), web_contents_.get(),
base::Unretained(task.get()), EnsureWebContentsCreated(),
std::move(web_application_info), is_locally_installed,
WebappInstallSource::SYNC,
base::BindOnce(&WebAppInstallManager::OnQueuedTaskCompleted,
base::Unretained(this), task.get(), std::move(callback)));
task_queue_.push(std::move(task_closure));
tasks_.insert(std::move(task));
if (web_contents_ready_)
MaybeStartQueuedTask();
EnqueueTask(std::move(task), std::move(start_task));
}
void WebAppInstallManager::UpdateWebAppFromManifest(
......@@ -172,6 +164,17 @@ void WebAppInstallManager::SetUrlLoaderForTesting(
url_loader_ = std::move(url_loader);
}
void WebAppInstallManager::EnqueueTask(std::unique_ptr<WebAppInstallTask> task,
base::OnceClosure start_task) {
DCHECK(web_contents_);
tasks_.insert(std::move(task));
task_queue_.push(std::move(start_task));
if (web_contents_ready_)
MaybeStartQueuedTask();
}
void WebAppInstallManager::MaybeStartQueuedTask() {
DCHECK(web_contents_ready_);
DCHECK(!task_queue_.empty());
......@@ -220,9 +223,9 @@ void WebAppInstallManager::OnQueuedTaskCompleted(WebAppInstallTask* task,
}
}
void WebAppInstallManager::CreateWebContentsIfNecessary() {
content::WebContents* WebAppInstallManager::EnsureWebContentsCreated() {
if (web_contents_)
return;
return web_contents_.get();
DCHECK(!web_contents_ready_);
......@@ -233,6 +236,8 @@ void WebAppInstallManager::CreateWebContentsIfNecessary() {
url_loader_->LoadUrl(GURL("about:blank"), web_contents_.get(),
base::BindOnce(&WebAppInstallManager::OnWebContentsReady,
weak_ptr_factory_.GetWeakPtr()));
return web_contents_.get();
}
void WebAppInstallManager::OnWebContentsReady(WebAppUrlLoader::Result result) {
......
......@@ -80,6 +80,8 @@ class WebAppInstallManager final : public InstallManager,
bool has_web_contents_for_testing() const { return web_contents_ != nullptr; }
private:
void EnqueueTask(std::unique_ptr<WebAppInstallTask> task,
base::OnceClosure start_task);
void MaybeStartQueuedTask();
void OnTaskCompleted(WebAppInstallTask* task,
OnceInstallCallback callback,
......@@ -90,7 +92,7 @@ class WebAppInstallManager final : public InstallManager,
const AppId& app_id,
InstallResultCode code);
void CreateWebContentsIfNecessary();
content::WebContents* EnsureWebContentsCreated();
void OnWebContentsReady(WebAppUrlLoader::Result result);
DataRetrieverFactory data_retriever_factory_;
......
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