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

Side by Side Diff: chrome/browser/extensions/crx_installer.cc

Issue 273193006: Install Chrome OS apps to shared location (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment fixed Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
11 #include "base/file_util.h" 11 #include "base/file_util.h"
12 #include "base/files/scoped_temp_dir.h" 12 #include "base/files/scoped_temp_dir.h"
13 #include "base/lazy_instance.h" 13 #include "base/lazy_instance.h"
14 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
15 #include "base/path_service.h" 15 #include "base/path_service.h"
16 #include "base/sequenced_task_runner.h" 16 #include "base/sequenced_task_runner.h"
17 #include "base/strings/string_util.h" 17 #include "base/strings/string_util.h"
18 #include "base/strings/stringprintf.h" 18 #include "base/strings/stringprintf.h"
19 #include "base/strings/utf_string_conversions.h" 19 #include "base/strings/utf_string_conversions.h"
20 #include "base/threading/sequenced_worker_pool.h" 20 #include "base/threading/sequenced_worker_pool.h"
21 #include "base/threading/thread_restrictions.h" 21 #include "base/threading/thread_restrictions.h"
22 #include "base/time/time.h" 22 #include "base/time/time.h"
23 #include "base/version.h" 23 #include "base/version.h"
24 #include "chrome/browser/chrome_notification_types.h" 24 #include "chrome/browser/chrome_notification_types.h"
25 #include "chrome/browser/extensions/convert_user_script.h" 25 #include "chrome/browser/extensions/convert_user_script.h"
26 #include "chrome/browser/extensions/convert_web_app.h" 26 #include "chrome/browser/extensions/convert_web_app.h"
27 #include "chrome/browser/extensions/crx_installer_error.h" 27 #include "chrome/browser/extensions/crx_installer_error.h"
28 #include "chrome/browser/extensions/extension_assets_manager.h"
28 #include "chrome/browser/extensions/extension_error_reporter.h" 29 #include "chrome/browser/extensions/extension_error_reporter.h"
29 #include "chrome/browser/extensions/extension_install_ui.h" 30 #include "chrome/browser/extensions/extension_install_ui.h"
30 #include "chrome/browser/extensions/extension_service.h" 31 #include "chrome/browser/extensions/extension_service.h"
31 #include "chrome/browser/extensions/install_tracker.h" 32 #include "chrome/browser/extensions/install_tracker.h"
32 #include "chrome/browser/extensions/install_tracker_factory.h" 33 #include "chrome/browser/extensions/install_tracker_factory.h"
33 #include "chrome/browser/extensions/permissions_updater.h" 34 #include "chrome/browser/extensions/permissions_updater.h"
34 #include "chrome/browser/extensions/webstore_installer.h" 35 #include "chrome/browser/extensions/webstore_installer.h"
35 #include "chrome/browser/profiles/profile.h" 36 #include "chrome/browser/profiles/profile.h"
36 #include "chrome/browser/web_applications/web_app.h" 37 #include "chrome/browser/web_applications/web_app.h"
37 #include "chrome/common/chrome_paths.h" 38 #include "chrome/common/chrome_paths.h"
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 } 688 }
688 } 689 }
689 690
690 // See how long extension install paths are. This is important on 691 // See how long extension install paths are. This is important on
691 // windows, because file operations may fail if the path to a file 692 // windows, because file operations may fail if the path to a file
692 // exceeds a small constant. See crbug.com/69693 . 693 // exceeds a small constant. See crbug.com/69693 .
693 UMA_HISTOGRAM_CUSTOM_COUNTS( 694 UMA_HISTOGRAM_CUSTOM_COUNTS(
694 "Extensions.CrxInstallDirPathLength", 695 "Extensions.CrxInstallDirPathLength",
695 install_directory_.value().length(), 0, 500, 100); 696 install_directory_.value().length(), 0, 500, 100);
696 697
697 base::FilePath version_dir = 698 ExtensionAssetsManager* assets_manager =
698 file_util::InstallExtension(unpacked_extension_root_, 699 ExtensionAssetsManager::GetInstance();
699 extension()->id(), 700 assets_manager->InstallExtension(
700 extension()->VersionString(), 701 extension(),
701 install_directory_); 702 unpacked_extension_root_,
703 install_directory_,
704 profile(),
705 base::Bind(&CrxInstaller::ReloadExtensionAfterInstall, this));
706 }
707
708 void CrxInstaller::ReloadExtensionAfterInstall(
709 const base::FilePath& version_dir) {
710 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread());
711
702 if (version_dir.empty()) { 712 if (version_dir.empty()) {
703 ReportFailureFromFileThread( 713 ReportFailureFromFileThread(
704 CrxInstallerError( 714 CrxInstallerError(
705 l10n_util::GetStringUTF16( 715 l10n_util::GetStringUTF16(
706 IDS_EXTENSION_MOVE_DIRECTORY_TO_PROFILE_FAILED))); 716 IDS_EXTENSION_MOVE_DIRECTORY_TO_PROFILE_FAILED)));
707 return; 717 return;
708 } 718 }
709 719
710 // This is lame, but we must reload the extension because absolute paths 720 // This is lame, but we must reload the extension because absolute paths
711 // inside the content scripts are established inside InitFromValue() and we 721 // inside the content scripts are established inside InitFromValue() and we
(...skipping 10 matching lines...) Expand all
722 install_source_, 732 install_source_,
723 extension()->creation_flags() | Extension::REQUIRE_KEY, 733 extension()->creation_flags() | Extension::REQUIRE_KEY,
724 &error).get()); 734 &error).get());
725 735
726 if (extension()) { 736 if (extension()) {
727 ReportSuccessFromFileThread(); 737 ReportSuccessFromFileThread();
728 } else { 738 } else {
729 LOG(ERROR) << error << " " << extension_id << " " << download_url_; 739 LOG(ERROR) << error << " " << extension_id << " " << download_url_;
730 ReportFailureFromFileThread(CrxInstallerError(base::UTF8ToUTF16(error))); 740 ReportFailureFromFileThread(CrxInstallerError(base::UTF8ToUTF16(error)));
731 } 741 }
732
733 } 742 }
734 743
735 void CrxInstaller::ReportFailureFromFileThread(const CrxInstallerError& error) { 744 void CrxInstaller::ReportFailureFromFileThread(const CrxInstallerError& error) {
736 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread()); 745 DCHECK(installer_task_runner_->RunsTasksOnCurrentThread());
737 if (!BrowserThread::PostTask( 746 if (!BrowserThread::PostTask(
738 BrowserThread::UI, FROM_HERE, 747 BrowserThread::UI, FROM_HERE,
739 base::Bind(&CrxInstaller::ReportFailureFromUIThread, this, error))) { 748 base::Bind(&CrxInstaller::ReportFailureFromUIThread, this, error))) {
740 NOTREACHED(); 749 NOTREACHED();
741 } 750 }
742 } 751 }
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 if (!prefs->DidExtensionEscalatePermissions(extension()->id())) 906 if (!prefs->DidExtensionEscalatePermissions(extension()->id()))
898 return; 907 return;
899 908
900 if (client_) { 909 if (client_) {
901 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort(). 910 AddRef(); // Balanced in InstallUIProceed() and InstallUIAbort().
902 client_->ConfirmReEnable(this, extension()); 911 client_->ConfirmReEnable(this, extension());
903 } 912 }
904 } 913 }
905 914
906 } // namespace extensions 915 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/crx_installer.h ('k') | chrome/browser/extensions/crx_installer_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698