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( ...@@ -116,26 +116,18 @@ void WebAppInstallManager::InstallOrUpdateWebAppFromSync(
is_locally_installed = true; is_locally_installed = true;
#endif #endif
CreateWebContentsIfNecessary();
DCHECK(web_contents_);
auto task = std::make_unique<WebAppInstallTask>( auto task = std::make_unique<WebAppInstallTask>(
profile(), finalizer(), data_retriever_factory_.Run()); profile(), finalizer(), data_retriever_factory_.Run());
base::OnceClosure task_closure = base::BindOnce( base::OnceClosure start_task = base::BindOnce(
&WebAppInstallTask::InstallWebAppFromInfoRetrieveIcons, &WebAppInstallTask::InstallWebAppFromInfoRetrieveIcons,
base::Unretained(task.get()), web_contents_.get(), base::Unretained(task.get()), EnsureWebContentsCreated(),
std::move(web_application_info), is_locally_installed, std::move(web_application_info), is_locally_installed,
WebappInstallSource::SYNC, WebappInstallSource::SYNC,
base::BindOnce(&WebAppInstallManager::OnQueuedTaskCompleted, base::BindOnce(&WebAppInstallManager::OnQueuedTaskCompleted,
base::Unretained(this), task.get(), std::move(callback))); base::Unretained(this), task.get(), std::move(callback)));
task_queue_.push(std::move(task_closure)); EnqueueTask(std::move(task), std::move(start_task));
tasks_.insert(std::move(task));
if (web_contents_ready_)
MaybeStartQueuedTask();
} }
void WebAppInstallManager::UpdateWebAppFromManifest( void WebAppInstallManager::UpdateWebAppFromManifest(
...@@ -172,6 +164,17 @@ void WebAppInstallManager::SetUrlLoaderForTesting( ...@@ -172,6 +164,17 @@ void WebAppInstallManager::SetUrlLoaderForTesting(
url_loader_ = std::move(url_loader); 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() { void WebAppInstallManager::MaybeStartQueuedTask() {
DCHECK(web_contents_ready_); DCHECK(web_contents_ready_);
DCHECK(!task_queue_.empty()); DCHECK(!task_queue_.empty());
...@@ -220,9 +223,9 @@ void WebAppInstallManager::OnQueuedTaskCompleted(WebAppInstallTask* task, ...@@ -220,9 +223,9 @@ void WebAppInstallManager::OnQueuedTaskCompleted(WebAppInstallTask* task,
} }
} }
void WebAppInstallManager::CreateWebContentsIfNecessary() { content::WebContents* WebAppInstallManager::EnsureWebContentsCreated() {
if (web_contents_) if (web_contents_)
return; return web_contents_.get();
DCHECK(!web_contents_ready_); DCHECK(!web_contents_ready_);
...@@ -233,6 +236,8 @@ void WebAppInstallManager::CreateWebContentsIfNecessary() { ...@@ -233,6 +236,8 @@ void WebAppInstallManager::CreateWebContentsIfNecessary() {
url_loader_->LoadUrl(GURL("about:blank"), web_contents_.get(), url_loader_->LoadUrl(GURL("about:blank"), web_contents_.get(),
base::BindOnce(&WebAppInstallManager::OnWebContentsReady, base::BindOnce(&WebAppInstallManager::OnWebContentsReady,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
return web_contents_.get();
} }
void WebAppInstallManager::OnWebContentsReady(WebAppUrlLoader::Result result) { void WebAppInstallManager::OnWebContentsReady(WebAppUrlLoader::Result result) {
......
...@@ -80,6 +80,8 @@ class WebAppInstallManager final : public InstallManager, ...@@ -80,6 +80,8 @@ class WebAppInstallManager final : public InstallManager,
bool has_web_contents_for_testing() const { return web_contents_ != nullptr; } bool has_web_contents_for_testing() const { return web_contents_ != nullptr; }
private: private:
void EnqueueTask(std::unique_ptr<WebAppInstallTask> task,
base::OnceClosure start_task);
void MaybeStartQueuedTask(); void MaybeStartQueuedTask();
void OnTaskCompleted(WebAppInstallTask* task, void OnTaskCompleted(WebAppInstallTask* task,
OnceInstallCallback callback, OnceInstallCallback callback,
...@@ -90,7 +92,7 @@ class WebAppInstallManager final : public InstallManager, ...@@ -90,7 +92,7 @@ class WebAppInstallManager final : public InstallManager,
const AppId& app_id, const AppId& app_id,
InstallResultCode code); InstallResultCode code);
void CreateWebContentsIfNecessary(); content::WebContents* EnsureWebContentsCreated();
void OnWebContentsReady(WebAppUrlLoader::Result result); void OnWebContentsReady(WebAppUrlLoader::Result result);
DataRetrieverFactory data_retriever_factory_; 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