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 |