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

Unified Diff: chrome/browser/android/webapk/webapk_installer.cc

Issue 2373713003: Retry WebAPK download if fails for the first time. (Closed)
Patch Set: Created 4 years, 3 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/webapk/webapk_installer.cc
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc
index 37df154bd8a3115e4a5972973c4ac9b6b9766e7b..52dc9965a840a4ef8ce3ad7835d393c91e8132ad 100644
--- a/chrome/browser/android/webapk/webapk_installer.cc
+++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -17,6 +17,7 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task_runner_util.h"
+#include "base/threading/platform_thread.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/android/shortcut_helper.h"
#include "chrome/browser/android/webapk/webapk.pb.h"
@@ -355,23 +356,38 @@ void WebApkInstaller::OnGotWebApkDownloadUrl(const GURL& download_url,
// directory.
// TODO(pkotwicz): Figure out when downloaded WebAPK should be deleted.
+ StartDownloadingWebApk(
+ output_dir.AppendASCII(webapk_package_), download_url, true);
+}
+
+void WebApkInstaller::StartDownloadingWebApk(const base::FilePath& output_path,
pkotwicz 2016/09/27 19:47:28 Nit: Rename this function to DownloadWebApk() I t
Xi Han 2016/09/27 20:53:31 Done.
+ const GURL& download_url,
+ bool retry_if_fails) {
timer_.Start(
FROM_HERE, base::TimeDelta::FromMilliseconds(download_timeout_ms_),
base::Bind(&WebApkInstaller::OnTimeout, weak_ptr_factory_.GetWeakPtr()));
- base::FilePath output_path = output_dir.AppendASCII(webapk_package_);
downloader_.reset(new FileDownloader(
download_url, output_path, true, request_context_getter_,
base::Bind(&WebApkInstaller::OnWebApkDownloaded,
- weak_ptr_factory_.GetWeakPtr(), output_path)));
+ weak_ptr_factory_.GetWeakPtr(),
+ output_path, download_url, retry_if_fails)));
}
void WebApkInstaller::OnWebApkDownloaded(const base::FilePath& file_path,
+ const GURL& download_url,
+ bool retry_if_fails,
FileDownloader::Result result) {
timer_.Stop();
pkotwicz 2016/09/27 19:47:28 Nit: Maybe reset |downloader_| for clarity
Xi Han 2016/09/27 20:53:31 Done.
if (result != FileDownloader::DOWNLOADED) {
- OnFailure();
+ if (!retry_if_fails) {
+ OnFailure();
+ return;
+ }
+
+ base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(2));
pkotwicz 2016/09/27 19:47:28 Use BrowserThread::PostDelayedTask() instead
Xi Han 2016/09/27 20:53:31 Done.
+ StartDownloadingWebApk(file_path, download_url, false);
return;
}

Powered by Google App Engine
This is Rietveld 408576698