OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/android/webapk/webapk_installer.h" | 5 #include "chrome/browser/android/webapk/webapk_installer.h" |
6 | 6 |
7 #include "base/android/build_info.h" | 7 #include "base/android/build_info.h" |
8 #include "base/android/jni_android.h" | 8 #include "base/android/jni_android.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/android/path_utils.h" | 10 #include "base/android/path_utils.h" |
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 base::StringToInt(response->version(), &version); | 443 base::StringToInt(response->version(), &version); |
444 InstallOrUpdateWebApkFromGooglePlay(response->package_name(), version, | 444 InstallOrUpdateWebApkFromGooglePlay(response->package_name(), version, |
445 response->token()); | 445 response->token()); |
446 return; | 446 return; |
447 } | 447 } |
448 | 448 |
449 OnGotWebApkDownloadUrl(signed_download_url, response->package_name()); | 449 OnGotWebApkDownloadUrl(signed_download_url, response->package_name()); |
450 } | 450 } |
451 | 451 |
452 void WebApkInstaller::DownloadAppIconAndComputeMurmur2Hash() { | 452 void WebApkInstaller::DownloadAppIconAndComputeMurmur2Hash() { |
453 // Safeguard. WebApkIconHasher crashes if asked to fetch an invalid URL. | 453 icon_hasher_.reset(new WebApkIconHasher( |
454 if (!shortcut_info_.best_primary_icon_url.is_valid()) { | |
455 OnResult(WebApkInstallResult::FAILURE); | |
456 return; | |
457 } | |
458 | |
459 timer_.Start( | |
460 FROM_HERE, base::TimeDelta::FromMilliseconds(download_timeout_ms_), | |
461 base::Bind(&WebApkInstaller::OnResult, weak_ptr_factory_.GetWeakPtr(), | |
462 WebApkInstallResult::FAILURE)); | |
463 | |
464 icon_hasher_.reset(new WebApkIconHasher()); | |
465 icon_hasher_->DownloadAndComputeMurmur2Hash( | |
466 request_context_getter_, shortcut_info_.best_primary_icon_url, | 454 request_context_getter_, shortcut_info_.best_primary_icon_url, |
467 base::Bind(&WebApkInstaller::OnGotIconMurmur2Hash, | 455 base::Bind(&WebApkInstaller::OnGotIconMurmur2Hash, |
468 weak_ptr_factory_.GetWeakPtr())); | 456 weak_ptr_factory_.GetWeakPtr()))); |
| 457 icon_hasher_->DownloadAndComputeMurmur2Hash(); |
469 } | 458 } |
470 | 459 |
471 void WebApkInstaller::OnGotIconMurmur2Hash( | 460 void WebApkInstaller::OnGotIconMurmur2Hash( |
472 const std::string& icon_murmur2_hash) { | 461 const std::string& icon_murmur2_hash) { |
473 timer_.Stop(); | |
474 icon_hasher_.reset(); | 462 icon_hasher_.reset(); |
475 | 463 |
476 // An empty hash indicates that |icon_hasher_| encountered an error. | 464 // An empty hash indicates that |icon_hasher_| encountered an error. |
477 if (icon_murmur2_hash.empty()) { | 465 if (icon_murmur2_hash.empty()) { |
478 OnResult(WebApkInstallResult::FAILURE); | 466 OnResult(WebApkInstallResult::FAILURE); |
479 return; | 467 return; |
480 } | 468 } |
481 | 469 |
482 std::map<std::string, std::string> icon_url_to_murmur2_hash; | 470 std::map<std::string, std::string> icon_url_to_murmur2_hash; |
483 for (const std::string& icon_url : shortcut_info_.icon_urls) { | 471 for (const std::string& icon_url : shortcut_info_.icon_urls) { |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 base::android::ScopedJavaLocalRef<jstring> java_file_path = | 600 base::android::ScopedJavaLocalRef<jstring> java_file_path = |
613 base::android::ConvertUTF8ToJavaString(env, file_path.value()); | 601 base::android::ConvertUTF8ToJavaString(env, file_path.value()); |
614 if (task_type_ == INSTALL) { | 602 if (task_type_ == INSTALL) { |
615 base::android::ScopedJavaLocalRef<jstring> java_package_name = | 603 base::android::ScopedJavaLocalRef<jstring> java_package_name = |
616 base::android::ConvertUTF8ToJavaString(env, webapk_package_); | 604 base::android::ConvertUTF8ToJavaString(env, webapk_package_); |
617 InstallDownloadedWebApk(env, java_file_path, java_package_name); | 605 InstallDownloadedWebApk(env, java_file_path, java_package_name); |
618 } else if (task_type_ == UPDATE) { | 606 } else if (task_type_ == UPDATE) { |
619 UpdateUsingDownloadedWebApk(env, java_file_path); | 607 UpdateUsingDownloadedWebApk(env, java_file_path); |
620 } | 608 } |
621 } | 609 } |
OLD | NEW |