| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/crx_installer.h" | 5 #include "chrome/browser/extensions/crx_installer.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/files/file_util.h" | 12 #include "base/files/file_util.h" |
| 13 #include "base/files/scoped_temp_dir.h" | 13 #include "base/files/scoped_temp_dir.h" |
| 14 #include "base/lazy_instance.h" | 14 #include "base/lazy_instance.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/memory/ptr_util.h" |
| 16 #include "base/metrics/histogram.h" | 17 #include "base/metrics/histogram.h" |
| 17 #include "base/sequenced_task_runner.h" | 18 #include "base/sequenced_task_runner.h" |
| 18 #include "base/strings/string_util.h" | 19 #include "base/strings/string_util.h" |
| 19 #include "base/strings/stringprintf.h" | 20 #include "base/strings/stringprintf.h" |
| 20 #include "base/strings/utf_string_conversions.h" | 21 #include "base/strings/utf_string_conversions.h" |
| 21 #include "base/threading/sequenced_worker_pool.h" | 22 #include "base/threading/sequenced_worker_pool.h" |
| 22 #include "base/threading/thread_restrictions.h" | 23 #include "base/threading/thread_restrictions.h" |
| 23 #include "base/time/time.h" | 24 #include "base/time/time.h" |
| 24 #include "base/version.h" | 25 #include "base/version.h" |
| 25 #include "build/build_config.h" | 26 #include "build/build_config.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 OffStoreInstallDisallowed, | 83 OffStoreInstallDisallowed, |
| 83 NumOffStoreInstallDecision | 84 NumOffStoreInstallDecision |
| 84 }; | 85 }; |
| 85 | 86 |
| 86 } // namespace | 87 } // namespace |
| 87 | 88 |
| 88 // static | 89 // static |
| 89 scoped_refptr<CrxInstaller> CrxInstaller::CreateSilent( | 90 scoped_refptr<CrxInstaller> CrxInstaller::CreateSilent( |
| 90 ExtensionService* frontend) { | 91 ExtensionService* frontend) { |
| 91 return new CrxInstaller(frontend->AsWeakPtr(), | 92 return new CrxInstaller(frontend->AsWeakPtr(), |
| 92 scoped_ptr<ExtensionInstallPrompt>(), | 93 std::unique_ptr<ExtensionInstallPrompt>(), NULL); |
| 93 NULL); | |
| 94 } | 94 } |
| 95 | 95 |
| 96 // static | 96 // static |
| 97 scoped_refptr<CrxInstaller> CrxInstaller::Create( | 97 scoped_refptr<CrxInstaller> CrxInstaller::Create( |
| 98 ExtensionService* frontend, | 98 ExtensionService* frontend, |
| 99 scoped_ptr<ExtensionInstallPrompt> client) { | 99 std::unique_ptr<ExtensionInstallPrompt> client) { |
| 100 return new CrxInstaller(frontend->AsWeakPtr(), std::move(client), NULL); | 100 return new CrxInstaller(frontend->AsWeakPtr(), std::move(client), NULL); |
| 101 } | 101 } |
| 102 | 102 |
| 103 // static | 103 // static |
| 104 scoped_refptr<CrxInstaller> CrxInstaller::Create( | 104 scoped_refptr<CrxInstaller> CrxInstaller::Create( |
| 105 ExtensionService* service, | 105 ExtensionService* service, |
| 106 scoped_ptr<ExtensionInstallPrompt> client, | 106 std::unique_ptr<ExtensionInstallPrompt> client, |
| 107 const WebstoreInstaller::Approval* approval) { | 107 const WebstoreInstaller::Approval* approval) { |
| 108 return new CrxInstaller(service->AsWeakPtr(), std::move(client), approval); | 108 return new CrxInstaller(service->AsWeakPtr(), std::move(client), approval); |
| 109 } | 109 } |
| 110 | 110 |
| 111 CrxInstaller::CrxInstaller(base::WeakPtr<ExtensionService> service_weak, | 111 CrxInstaller::CrxInstaller(base::WeakPtr<ExtensionService> service_weak, |
| 112 scoped_ptr<ExtensionInstallPrompt> client, | 112 std::unique_ptr<ExtensionInstallPrompt> client, |
| 113 const WebstoreInstaller::Approval* approval) | 113 const WebstoreInstaller::Approval* approval) |
| 114 : install_directory_(service_weak->install_directory()), | 114 : install_directory_(service_weak->install_directory()), |
| 115 install_source_(Manifest::INTERNAL), | 115 install_source_(Manifest::INTERNAL), |
| 116 approved_(false), | 116 approved_(false), |
| 117 hash_check_failed_(false), | 117 hash_check_failed_(false), |
| 118 expected_manifest_check_level_( | 118 expected_manifest_check_level_( |
| 119 WebstoreInstaller::MANIFEST_CHECK_LEVEL_STRICT), | 119 WebstoreInstaller::MANIFEST_CHECK_LEVEL_STRICT), |
| 120 fail_install_if_unexpected_version_(false), | 120 fail_install_if_unexpected_version_(false), |
| 121 extensions_enabled_(service_weak->extensions_enabled()), | 121 extensions_enabled_(service_weak->extensions_enabled()), |
| 122 delete_source_(false), | 122 delete_source_(false), |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 extension_misc::NUM_INSTALL_CAUSES); | 441 extension_misc::NUM_INSTALL_CAUSES); |
| 442 | 442 |
| 443 install_checker_.set_extension(extension); | 443 install_checker_.set_extension(extension); |
| 444 temp_dir_ = temp_dir; | 444 temp_dir_ = temp_dir; |
| 445 if (!install_icon.empty()) | 445 if (!install_icon.empty()) |
| 446 install_icon_.reset(new SkBitmap(install_icon)); | 446 install_icon_.reset(new SkBitmap(install_icon)); |
| 447 | 447 |
| 448 if (original_manifest) | 448 if (original_manifest) |
| 449 original_manifest_.reset(new Manifest( | 449 original_manifest_.reset(new Manifest( |
| 450 Manifest::INVALID_LOCATION, | 450 Manifest::INVALID_LOCATION, |
| 451 scoped_ptr<base::DictionaryValue>(original_manifest->DeepCopy()))); | 451 std::unique_ptr<base::DictionaryValue>(original_manifest->DeepCopy()))); |
| 452 | 452 |
| 453 // We don't have to delete the unpack dir explicity since it is a child of | 453 // We don't have to delete the unpack dir explicity since it is a child of |
| 454 // the temp dir. | 454 // the temp dir. |
| 455 unpacked_extension_root_ = extension_dir; | 455 unpacked_extension_root_ = extension_dir; |
| 456 | 456 |
| 457 CrxInstallError error = AllowInstall(extension); | 457 CrxInstallError error = AllowInstall(extension); |
| 458 if (error.type() != CrxInstallError::ERROR_NONE) { | 458 if (error.type() != CrxInstallError::ERROR_NONE) { |
| 459 ReportFailureFromFileThread(error); | 459 ReportFailureFromFileThread(error); |
| 460 return; | 460 return; |
| 461 } | 461 } |
| (...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) | 911 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) |
| 912 return; | 912 return; |
| 913 | 913 |
| 914 if (client_) { | 914 if (client_) { |
| 915 AddRef(); // Balanced in OnInstallPromptDone(). | 915 AddRef(); // Balanced in OnInstallPromptDone(). |
| 916 ExtensionInstallPrompt::PromptType type = | 916 ExtensionInstallPrompt::PromptType type = |
| 917 ExtensionInstallPrompt::GetReEnablePromptTypeForExtension( | 917 ExtensionInstallPrompt::GetReEnablePromptTypeForExtension( |
| 918 service->profile(), extension()); | 918 service->profile(), extension()); |
| 919 client_->ShowDialog( | 919 client_->ShowDialog( |
| 920 base::Bind(&CrxInstaller::OnInstallPromptDone, this), extension(), | 920 base::Bind(&CrxInstaller::OnInstallPromptDone, this), extension(), |
| 921 nullptr, make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)), | 921 nullptr, base::WrapUnique(new ExtensionInstallPrompt::Prompt(type)), |
| 922 ExtensionInstallPrompt::GetDefaultShowDialogCallback()); | 922 ExtensionInstallPrompt::GetDefaultShowDialogCallback()); |
| 923 } | 923 } |
| 924 } | 924 } |
| 925 | 925 |
| 926 } // namespace extensions | 926 } // namespace extensions |
| OLD | NEW |