OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/extension_system_impl.h" | 5 #include "chrome/browser/extensions/extension_system_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/base_switches.h" | 9 #include "base/base_switches.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 policy::DeviceLocalAccount::Type device_local_account_type; | 123 policy::DeviceLocalAccount::Type device_local_account_type; |
124 if (user && policy::IsDeviceLocalAccountUser(user->email(), | 124 if (user && policy::IsDeviceLocalAccountUser(user->email(), |
125 &device_local_account_type)) { | 125 &device_local_account_type)) { |
126 device_local_account_management_policy_provider_.reset( | 126 device_local_account_management_policy_provider_.reset( |
127 new chromeos::DeviceLocalAccountManagementPolicyProvider( | 127 new chromeos::DeviceLocalAccountManagementPolicyProvider( |
128 device_local_account_type)); | 128 device_local_account_type)); |
129 } | 129 } |
130 #endif // defined(OS_CHROMEOS) | 130 #endif // defined(OS_CHROMEOS) |
131 } | 131 } |
132 | 132 |
133 void ExtensionSystemImpl::Shared::LoadExtensionsFromCommandLineFlag( | |
134 const base::CommandLine* command_line, | |
135 const char* switch_name) { | |
136 if (command_line->HasSwitch(switch_name)) { | |
137 base::CommandLine::StringType path_list = | |
138 command_line->GetSwitchValueNative(switch_name); | |
139 base::StringTokenizerT<base::CommandLine::StringType, | |
140 base::CommandLine::StringType::const_iterator> | |
141 t(path_list, FILE_PATH_LITERAL(",")); | |
142 while (t.GetNext()) { | |
143 std::string extension_id; | |
144 UnpackedInstaller::Create(extension_service_.get()) | |
145 ->LoadFromCommandLine(base::FilePath(t.token()), &extension_id); | |
146 if (std::strcmp(switch_name, switches::kDisableExtensionsExcept) == 0) { | |
147 extension_service_->AddExtensionToWhitelist(extension_id); | |
148 } | |
149 } | |
150 } | |
151 } | |
152 | |
133 void ExtensionSystemImpl::Shared::RegisterManagementPolicyProviders() { | 153 void ExtensionSystemImpl::Shared::RegisterManagementPolicyProviders() { |
134 management_policy_->RegisterProviders( | 154 management_policy_->RegisterProviders( |
135 ExtensionManagementFactory::GetForBrowserContext(profile_) | 155 ExtensionManagementFactory::GetForBrowserContext(profile_) |
136 ->GetProviders()); | 156 ->GetProviders()); |
137 | 157 |
138 #if defined(OS_CHROMEOS) | 158 #if defined(OS_CHROMEOS) |
139 if (device_local_account_management_policy_provider_) { | 159 if (device_local_account_management_policy_provider_) { |
140 management_policy_->RegisterProvider( | 160 management_policy_->RegisterProvider( |
141 device_local_account_management_policy_provider_.get()); | 161 device_local_account_management_policy_provider_.get()); |
142 } | 162 } |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
256 extension_service_->Init(); | 276 extension_service_->Init(); |
257 | 277 |
258 // Make sure ExtensionSyncService is created. | 278 // Make sure ExtensionSyncService is created. |
259 ExtensionSyncService::Get(profile_); | 279 ExtensionSyncService::Get(profile_); |
260 | 280 |
261 // Make the chrome://extension-icon/ resource available. | 281 // Make the chrome://extension-icon/ resource available. |
262 content::URLDataSource::Add(profile_, new ExtensionIconSource(profile_)); | 282 content::URLDataSource::Add(profile_, new ExtensionIconSource(profile_)); |
263 | 283 |
264 quota_service_.reset(new QuotaService); | 284 quota_service_.reset(new QuotaService); |
265 | 285 |
286 LoadExtensionsFromCommandLineFlag(command_line, | |
287 switches::kDisableExtensionsExcept); | |
288 | |
266 if (extensions_enabled) { | 289 if (extensions_enabled) { |
267 // Load any extensions specified with --load-extension. | 290 // Load any extensions specified with --load-extension. |
268 // TODO(yoz): Seems like this should move into ExtensionService::Init. | 291 // TODO(yoz): Seems like this should move into ExtensionService::Init. |
Devlin
2016/07/27 17:01:00
I agree with this fairly-ancient TODO. Can we mov
catmullings
2016/08/04 22:59:31
Done.
| |
269 // But maybe it's no longer important. | 292 // But maybe it's no longer important. |
270 if (command_line->HasSwitch(switches::kLoadExtension)) { | 293 LoadExtensionsFromCommandLineFlag(command_line, switches::kLoadExtension); |
271 base::CommandLine::StringType path_list = | |
272 command_line->GetSwitchValueNative(switches::kLoadExtension); | |
273 base::StringTokenizerT<base::CommandLine::StringType, | |
274 base::CommandLine::StringType::const_iterator> | |
275 t(path_list, FILE_PATH_LITERAL(",")); | |
276 while (t.GetNext()) { | |
277 std::string extension_id; | |
278 UnpackedInstaller::Create(extension_service_.get())-> | |
279 LoadFromCommandLine(base::FilePath(t.token()), &extension_id); | |
280 } | |
281 } | |
282 } | 294 } |
283 } | 295 } |
284 | 296 |
285 void ExtensionSystemImpl::Shared::Shutdown() { | 297 void ExtensionSystemImpl::Shared::Shutdown() { |
286 if (content_verifier_.get()) | 298 if (content_verifier_.get()) |
287 content_verifier_->Shutdown(); | 299 content_verifier_->Shutdown(); |
288 if (extension_service_) | 300 if (extension_service_) |
289 extension_service_->Shutdown(); | 301 extension_service_->Shutdown(); |
290 } | 302 } |
291 | 303 |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
466 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( | 478 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( |
467 const std::string& extension_id, | 479 const std::string& extension_id, |
468 const UnloadedExtensionInfo::Reason reason) { | 480 const UnloadedExtensionInfo::Reason reason) { |
469 BrowserThread::PostTask( | 481 BrowserThread::PostTask( |
470 BrowserThread::IO, | 482 BrowserThread::IO, |
471 FROM_HERE, | 483 FROM_HERE, |
472 base::Bind(&InfoMap::RemoveExtension, info_map(), extension_id, reason)); | 484 base::Bind(&InfoMap::RemoveExtension, info_map(), extension_id, reason)); |
473 } | 485 } |
474 | 486 |
475 } // namespace extensions | 487 } // namespace extensions |
OLD | NEW |