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 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 ExtensionInstallPrompt* client, | 82 ExtensionInstallPrompt* client, |
83 const WebstoreInstaller::Approval* approval) { | 83 const WebstoreInstaller::Approval* approval) { |
84 return new CrxInstaller(frontend->AsWeakPtr(), client, approval); | 84 return new CrxInstaller(frontend->AsWeakPtr(), client, approval); |
85 } | 85 } |
86 | 86 |
87 CrxInstaller::CrxInstaller( | 87 CrxInstaller::CrxInstaller( |
88 base::WeakPtr<ExtensionService> frontend_weak, | 88 base::WeakPtr<ExtensionService> frontend_weak, |
89 ExtensionInstallPrompt* client, | 89 ExtensionInstallPrompt* client, |
90 const WebstoreInstaller::Approval* approval) | 90 const WebstoreInstaller::Approval* approval) |
91 : install_directory_(frontend_weak->install_directory()), | 91 : install_directory_(frontend_weak->install_directory()), |
92 install_source_(Extension::INTERNAL), | 92 install_source_(Manifest::INTERNAL), |
93 approved_(false), | 93 approved_(false), |
94 extensions_enabled_(frontend_weak->extensions_enabled()), | 94 extensions_enabled_(frontend_weak->extensions_enabled()), |
95 delete_source_(false), | 95 delete_source_(false), |
96 create_app_shortcut_(false), | 96 create_app_shortcut_(false), |
97 frontend_weak_(frontend_weak), | 97 frontend_weak_(frontend_weak), |
98 profile_(frontend_weak->profile()), | 98 profile_(frontend_weak->profile()), |
99 client_(client), | 99 client_(client), |
100 apps_require_extension_mime_type_(false), | 100 apps_require_extension_mime_type_(false), |
101 allow_silent_install_(false), | 101 allow_silent_install_(false), |
102 install_cause_(extension_misc::INSTALL_CAUSE_UNSET), | 102 install_cause_(extension_misc::INSTALL_CAUSE_UNSET), |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 (!expected_manifest_.get() || | 236 (!expected_manifest_.get() || |
237 !expected_manifest_->Equals(original_manifest_.get()))) { | 237 !expected_manifest_->Equals(original_manifest_.get()))) { |
238 return CrxInstallerError( | 238 return CrxInstallerError( |
239 l10n_util::GetStringUTF16(IDS_EXTENSION_MANIFEST_INVALID)); | 239 l10n_util::GetStringUTF16(IDS_EXTENSION_MANIFEST_INVALID)); |
240 } | 240 } |
241 | 241 |
242 // The checks below are skipped for themes and external installs. | 242 // The checks below are skipped for themes and external installs. |
243 // TODO(pamg): After ManagementPolicy refactoring is complete, remove this | 243 // TODO(pamg): After ManagementPolicy refactoring is complete, remove this |
244 // and other uses of install_source_ that are no longer needed now that the | 244 // and other uses of install_source_ that are no longer needed now that the |
245 // SandboxedUnpacker sets extension->location. | 245 // SandboxedUnpacker sets extension->location. |
246 if (extension->is_theme() || Extension::IsExternalLocation(install_source_)) | 246 if (extension->is_theme() || Manifest::IsExternalLocation(install_source_)) |
247 return CrxInstallerError(); | 247 return CrxInstallerError(); |
248 | 248 |
249 if (!extensions_enabled_) { | 249 if (!extensions_enabled_) { |
250 return CrxInstallerError( | 250 return CrxInstallerError( |
251 l10n_util::GetStringUTF16(IDS_EXTENSION_INSTALL_NOT_ENABLED)); | 251 l10n_util::GetStringUTF16(IDS_EXTENSION_INSTALL_NOT_ENABLED)); |
252 } | 252 } |
253 | 253 |
254 if (install_cause_ == extension_misc::INSTALL_CAUSE_USER_DOWNLOAD) { | 254 if (install_cause_ == extension_misc::INSTALL_CAUSE_USER_DOWNLOAD) { |
255 if (FeatureSwitch::easy_off_store_install()->IsEnabled()) { | 255 if (FeatureSwitch::easy_off_store_install()->IsEnabled()) { |
256 const char* kHistogramName = "Extensions.OffStoreInstallDecisionEasy"; | 256 const char* kHistogramName = "Extensions.OffStoreInstallDecisionEasy"; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 } | 335 } |
336 } | 336 } |
337 | 337 |
338 return CrxInstallerError(); | 338 return CrxInstallerError(); |
339 } | 339 } |
340 | 340 |
341 void CrxInstaller::OnUnpackFailure(const string16& error_message) { | 341 void CrxInstaller::OnUnpackFailure(const string16& error_message) { |
342 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread()); | 342 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread()); |
343 | 343 |
344 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackFailureInstallSource", | 344 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackFailureInstallSource", |
345 install_source(), Extension::NUM_LOCATIONS); | 345 install_source(), Manifest::NUM_LOCATIONS); |
346 | 346 |
347 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackFailureInstallCause", | 347 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackFailureInstallCause", |
348 install_cause(), | 348 install_cause(), |
349 extension_misc::NUM_INSTALL_CAUSES); | 349 extension_misc::NUM_INSTALL_CAUSES); |
350 | 350 |
351 ReportFailureFromFileThread(CrxInstallerError(error_message)); | 351 ReportFailureFromFileThread(CrxInstallerError(error_message)); |
352 } | 352 } |
353 | 353 |
354 void CrxInstaller::OnUnpackSuccess(const FilePath& temp_dir, | 354 void CrxInstaller::OnUnpackSuccess(const FilePath& temp_dir, |
355 const FilePath& extension_dir, | 355 const FilePath& extension_dir, |
356 const DictionaryValue* original_manifest, | 356 const DictionaryValue* original_manifest, |
357 const Extension* extension) { | 357 const Extension* extension) { |
358 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread()); | 358 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread()); |
359 | 359 |
360 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackSuccessInstallSource", | 360 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackSuccessInstallSource", |
361 install_source(), Extension::NUM_LOCATIONS); | 361 install_source(), Manifest::NUM_LOCATIONS); |
362 | 362 |
363 | 363 |
364 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackSuccessInstallCause", | 364 UMA_HISTOGRAM_ENUMERATION("Extensions.UnpackSuccessInstallCause", |
365 install_cause(), | 365 install_cause(), |
366 extension_misc::NUM_INSTALL_CAUSES); | 366 extension_misc::NUM_INSTALL_CAUSES); |
367 | 367 |
368 // Note: We take ownership of |extension| and |temp_dir|. | 368 // Note: We take ownership of |extension| and |temp_dir|. |
369 extension_ = extension; | 369 extension_ = extension; |
370 temp_dir_ = temp_dir; | 370 temp_dir_ = temp_dir; |
371 | 371 |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 temp_dir_ = FilePath(); | 668 temp_dir_ = FilePath(); |
669 } | 669 } |
670 | 670 |
671 if (delete_source_ && !source_file_.value().empty()) { | 671 if (delete_source_ && !source_file_.value().empty()) { |
672 extension_file_util::DeleteFile(source_file_, false); | 672 extension_file_util::DeleteFile(source_file_, false); |
673 source_file_ = FilePath(); | 673 source_file_ = FilePath(); |
674 } | 674 } |
675 } | 675 } |
676 | 676 |
677 } // namespace extensions | 677 } // namespace extensions |
OLD | NEW |