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

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

Issue 15947007: Move application restart and relaunch code out of ExtensionService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pafooey Created 7 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/unpacked_installer.h" 5 #include "chrome/browser/extensions/unpacked_installer.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 scoped_refptr<UnpackedInstaller> UnpackedInstaller::Create( 88 scoped_refptr<UnpackedInstaller> UnpackedInstaller::Create(
89 ExtensionService* extension_service) { 89 ExtensionService* extension_service) {
90 return scoped_refptr<UnpackedInstaller>( 90 return scoped_refptr<UnpackedInstaller>(
91 new UnpackedInstaller(extension_service)); 91 new UnpackedInstaller(extension_service));
92 } 92 }
93 93
94 UnpackedInstaller::UnpackedInstaller(ExtensionService* extension_service) 94 UnpackedInstaller::UnpackedInstaller(ExtensionService* extension_service)
95 : service_weak_(extension_service->AsWeakPtr()), 95 : service_weak_(extension_service->AsWeakPtr()),
96 prompt_for_plugins_(true), 96 prompt_for_plugins_(true),
97 require_modern_manifest_version_(true), 97 require_modern_manifest_version_(true),
98 launch_on_load_(false),
99 installer_(extension_service->profile()) { 98 installer_(extension_service->profile()) {
100 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 99 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
101 } 100 }
102 101
103 UnpackedInstaller::~UnpackedInstaller() { 102 UnpackedInstaller::~UnpackedInstaller() {
104 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || 103 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
105 BrowserThread::CurrentlyOn(BrowserThread::FILE)); 104 BrowserThread::CurrentlyOn(BrowserThread::FILE));
106 } 105 }
107 106
108 void UnpackedInstaller::Load(const base::FilePath& path_in) { 107 void UnpackedInstaller::Load(const base::FilePath& path_in) {
109 DCHECK(extension_path_.empty()); 108 DCHECK(extension_path_.empty());
110 extension_path_ = path_in; 109 extension_path_ = path_in;
111 BrowserThread::PostTask( 110 BrowserThread::PostTask(
112 BrowserThread::FILE, 111 BrowserThread::FILE,
113 FROM_HERE, 112 FROM_HERE,
114 base::Bind(&UnpackedInstaller::GetAbsolutePath, this)); 113 base::Bind(&UnpackedInstaller::GetAbsolutePath, this));
115 } 114 }
116 115
117 void UnpackedInstaller::LoadFromCommandLine(const base::FilePath& path_in, 116 bool UnpackedInstaller::LoadFromCommandLine(const base::FilePath& path_in,
118 bool launch_on_load) { 117 std::string* extension_id) {
119 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 118 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
120 DCHECK(extension_path_.empty()); 119 DCHECK(extension_path_.empty());
121 120
122 if (!service_weak_) 121 if (!service_weak_)
123 return; 122 return false;
124 // Load extensions from the command line synchronously to avoid a race 123 // Load extensions from the command line synchronously to avoid a race
125 // between extension loading and loading an URL from the command line. 124 // between extension loading and loading an URL from the command line.
126 base::ThreadRestrictions::ScopedAllowIO allow_io; 125 base::ThreadRestrictions::ScopedAllowIO allow_io;
127 126
128 extension_path_ = base::MakeAbsoluteFilePath(path_in); 127 extension_path_ = base::MakeAbsoluteFilePath(path_in);
129 128
130 if (!IsLoadingUnpackedAllowed()) { 129 if (!IsLoadingUnpackedAllowed()) {
131 ReportExtensionLoadError(kUnpackedExtensionsBlacklistedError); 130 ReportExtensionLoadError(kUnpackedExtensionsBlacklistedError);
132 return; 131 return false;
133 } 132 }
134 133
135 std::string error; 134 std::string error;
136 installer_.set_extension(extension_file_util::LoadExtension( 135 installer_.set_extension(extension_file_util::LoadExtension(
137 extension_path_, 136 extension_path_,
138 Manifest::COMMAND_LINE, 137 Manifest::COMMAND_LINE,
139 GetFlags(), 138 GetFlags(),
140 &error)); 139 &error));
141 140
142 if (!installer_.extension()) { 141 if (!installer_.extension()) {
143 ReportExtensionLoadError(error); 142 ReportExtensionLoadError(error);
144 return; 143 return false;
145 } 144 }
146 145
147 launch_on_load_ = launch_on_load; 146 ShowInstallPrompt();
148 147
149 ShowInstallPrompt(); 148 *extension_id = installer_.extension()->id();
149 return true;
150 } 150 }
151 151
152 void UnpackedInstaller::ShowInstallPrompt() { 152 void UnpackedInstaller::ShowInstallPrompt() {
153 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 153 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
154 if (!service_weak_) 154 if (!service_weak_)
155 return; 155 return;
156 156
157 const ExtensionSet* disabled_extensions = 157 const ExtensionSet* disabled_extensions =
158 service_weak_->disabled_extensions(); 158 service_weak_->disabled_extensions();
159 if (service_weak_->show_extensions_prompts() && 159 if (service_weak_->show_extensions_prompts() &&
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
275 string16 error = installer_.CheckManagementPolicy(); 275 string16 error = installer_.CheckManagementPolicy();
276 if (!error.empty()) { 276 if (!error.empty()) {
277 ReportExtensionLoadError(UTF16ToUTF8(error)); 277 ReportExtensionLoadError(UTF16ToUTF8(error));
278 return; 278 return;
279 } 279 }
280 280
281 PermissionsUpdater perms_updater(service_weak_->profile()); 281 PermissionsUpdater perms_updater(service_weak_->profile());
282 perms_updater.GrantActivePermissions(installer_.extension()); 282 perms_updater.GrantActivePermissions(installer_.extension());
283 283
284 if (launch_on_load_)
285 service_weak_->ScheduleLaunchOnLoad(installer_.extension()->id());
286
287 service_weak_->OnExtensionInstalled( 284 service_weak_->OnExtensionInstalled(
288 installer_.extension(), 285 installer_.extension(),
289 syncer::StringOrdinal(), 286 syncer::StringOrdinal(),
290 false /* no requirement errors */, 287 false /* no requirement errors */,
291 false /* don't wait for idle */); 288 false /* don't wait for idle */);
292 } 289 }
293 290
294 } // namespace extensions 291 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/unpacked_installer.h ('k') | chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698