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/external_provider_impl.h" | 5 #include "chrome/browser/extensions/external_provider_impl.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "chrome/browser/profiles/profile.h" | 27 #include "chrome/browser/profiles/profile.h" |
28 #include "chrome/common/chrome_paths.h" | 28 #include "chrome/common/chrome_paths.h" |
29 #include "chrome/common/chrome_switches.h" | 29 #include "chrome/common/chrome_switches.h" |
30 #include "chrome/common/extensions/extension.h" | 30 #include "chrome/common/extensions/extension.h" |
31 #include "chrome/common/pref_names.h" | 31 #include "chrome/common/pref_names.h" |
32 #include "content/public/browser/browser_thread.h" | 32 #include "content/public/browser/browser_thread.h" |
33 #include "extensions/common/manifest.h" | 33 #include "extensions/common/manifest.h" |
34 #include "ui/base/l10n/l10n_util.h" | 34 #include "ui/base/l10n/l10n_util.h" |
35 | 35 |
36 #if defined(OS_CHROMEOS) | 36 #if defined(OS_CHROMEOS) |
37 #include "chrome/browser/chromeos/extensions/device_local_account_external_polic
y_loader.h" | |
38 #include "chrome/browser/chromeos/extensions/external_pref_cache_loader.h" | 37 #include "chrome/browser/chromeos/extensions/external_pref_cache_loader.h" |
39 #include "chrome/browser/chromeos/login/user.h" | |
40 #include "chrome/browser/chromeos/login/user_manager.h" | 38 #include "chrome/browser/chromeos/login/user_manager.h" |
41 #include "chrome/browser/chromeos/policy/app_pack_updater.h" | 39 #include "chrome/browser/chromeos/policy/app_pack_updater.h" |
42 #include "chrome/browser/chromeos/policy/device_local_account.h" | |
43 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" | |
44 #include "chrome/browser/policy/browser_policy_connector.h" | 40 #include "chrome/browser/policy/browser_policy_connector.h" |
45 #else | 41 #else |
46 #include "chrome/browser/extensions/default_apps.h" | 42 #include "chrome/browser/extensions/default_apps.h" |
47 #endif | 43 #endif |
48 | 44 |
49 #if defined(OS_WIN) | 45 #if defined(OS_WIN) |
50 #include "chrome/browser/extensions/external_registry_loader_win.h" | 46 #include "chrome/browser/extensions/external_registry_loader_win.h" |
51 #endif | 47 #endif |
52 | 48 |
53 using content::BrowserThread; | 49 using content::BrowserThread; |
54 | 50 |
55 namespace extensions { | 51 namespace extensions { |
56 | 52 |
57 // Constants for keeping track of extension preferences in a dictionary. | 53 // Constants for keeping track of extension preferences in a dictionary. |
58 const char ExternalProviderImpl::kExternalCrx[] = "external_crx"; | 54 const char ExternalProviderImpl::kExternalCrx[] = "external_crx"; |
59 const char ExternalProviderImpl::kExternalVersion[] = "external_version"; | 55 const char ExternalProviderImpl::kExternalVersion[] = "external_version"; |
60 const char ExternalProviderImpl::kExternalUpdateUrl[] = "external_update_url"; | 56 const char ExternalProviderImpl::kExternalUpdateUrl[] = "external_update_url"; |
61 const char ExternalProviderImpl::kSupportedLocales[] = "supported_locales"; | 57 const char ExternalProviderImpl::kSupportedLocales[] = "supported_locales"; |
62 const char ExternalProviderImpl::kIsBookmarkApp[] = "is_bookmark_app"; | 58 const char ExternalProviderImpl::kIsBookmarkApp[] = "is_bookmark_app"; |
63 const char ExternalProviderImpl::kIsFromWebstore[] = "is_from_webstore"; | 59 const char ExternalProviderImpl::kIsFromWebstore[] = "is_from_webstore"; |
64 const char ExternalProviderImpl::kKeepIfPresent[] = "keep_if_present"; | 60 const char ExternalProviderImpl::kKeepIfPresent[] = "keep_if_present"; |
65 const char ExternalProviderImpl::kRequirePermissionsConsent[] = | 61 const char ExternalProviderImpl::kRequirePermissionsConsent[] = |
66 "require_permissions_consent"; | 62 "require_permissions_consent"; |
67 | 63 |
68 ExternalProviderImpl::ExternalProviderImpl( | 64 ExternalProviderImpl::ExternalProviderImpl(VisitorInterface* service, |
69 VisitorInterface* service, | 65 ExternalLoader* loader, |
70 const scoped_refptr<ExternalLoader>& loader, | 66 Profile* profile, |
71 Profile* profile, | 67 Manifest::Location crx_location, |
72 Manifest::Location crx_location, | 68 Manifest::Location download_location, |
73 Manifest::Location download_location, | 69 int creation_flags) |
74 int creation_flags) | |
75 : crx_location_(crx_location), | 70 : crx_location_(crx_location), |
76 download_location_(download_location), | 71 download_location_(download_location), |
77 service_(service), | 72 service_(service), |
78 ready_(false), | 73 ready_(false), |
79 loader_(loader), | 74 loader_(loader), |
80 profile_(profile), | 75 profile_(profile), |
81 creation_flags_(creation_flags), | 76 creation_flags_(creation_flags), |
82 auto_acknowledge_(false) { | 77 auto_acknowledge_(false) { |
83 loader_->Init(this); | 78 loader_->Init(this); |
84 } | 79 } |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 *location = loc; | 339 *location = loc; |
345 | 340 |
346 return true; | 341 return true; |
347 } | 342 } |
348 | 343 |
349 // static | 344 // static |
350 void ExternalProviderImpl::CreateExternalProviders( | 345 void ExternalProviderImpl::CreateExternalProviders( |
351 VisitorInterface* service, | 346 VisitorInterface* service, |
352 Profile* profile, | 347 Profile* profile, |
353 ProviderCollection* provider_list) { | 348 ProviderCollection* provider_list) { |
354 scoped_refptr<ExternalLoader> external_loader; | |
355 extensions::Manifest::Location crx_location = Manifest::INVALID_LOCATION; | |
356 #if defined(OS_CHROMEOS) | |
357 const chromeos::User* user = | |
358 chromeos::UserManager::Get()->GetUserByProfile(profile); | |
359 if (user && policy::IsDeviceLocalAccountUser(user->email(), NULL)) { | |
360 policy::DeviceLocalAccountPolicyBroker* broker = | |
361 g_browser_process->browser_policy_connector()-> | |
362 GetDeviceLocalAccountPolicyService()-> | |
363 GetBrokerForUser(user->email()); | |
364 if (broker) { | |
365 external_loader = broker->extension_loader(); | |
366 crx_location = Manifest::EXTERNAL_POLICY; | |
367 } else { | |
368 NOTREACHED(); | |
369 } | |
370 } else { | |
371 external_loader = new ExternalPolicyLoader(profile); | |
372 } | |
373 #else | |
374 external_loader = new ExternalPolicyLoader(profile); | |
375 #endif | |
376 | |
377 // Policies are mandatory so they can't be skipped with command line flag. | 349 // Policies are mandatory so they can't be skipped with command line flag. |
378 if (external_loader) { | 350 provider_list->push_back( |
379 provider_list->push_back( | 351 linked_ptr<ExternalProviderInterface>( |
380 linked_ptr<ExternalProviderInterface>( | 352 new ExternalProviderImpl( |
381 new ExternalProviderImpl( | 353 service, |
382 service, | 354 new ExternalPolicyLoader(profile), |
383 external_loader, | 355 profile, |
384 profile, | 356 Manifest::INVALID_LOCATION, |
385 crx_location, | 357 Manifest::EXTERNAL_POLICY_DOWNLOAD, |
386 Manifest::EXTERNAL_POLICY_DOWNLOAD, | 358 Extension::NO_FLAGS))); |
387 Extension::NO_FLAGS))); | |
388 } | |
389 | 359 |
390 // In tests don't install extensions from default external sources. | 360 // In tests don't install extensions from default external sources. |
391 // It would only slowdown tests and make them flaky. | 361 // It would only slowdown tests and make them flaky. |
392 if (CommandLine::ForCurrentProcess()->HasSwitch( | 362 if (CommandLine::ForCurrentProcess()->HasSwitch( |
393 switches::kDisableDefaultApps)) | 363 switches::kDisableDefaultApps)) |
394 return; | 364 return; |
395 | 365 |
396 // No external app install in app mode. | 366 // No external app install in app mode. |
397 if (chrome::IsRunningInForcedAppMode()) | 367 if (chrome::IsRunningInForcedAppMode()) |
398 return; | 368 return; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 service, | 498 service, |
529 new ExternalComponentLoader(), | 499 new ExternalComponentLoader(), |
530 profile, | 500 profile, |
531 Manifest::INVALID_LOCATION, | 501 Manifest::INVALID_LOCATION, |
532 Manifest::EXTERNAL_COMPONENT, | 502 Manifest::EXTERNAL_COMPONENT, |
533 Extension::FROM_WEBSTORE | Extension::WAS_INSTALLED_BY_DEFAULT))); | 503 Extension::FROM_WEBSTORE | Extension::WAS_INSTALLED_BY_DEFAULT))); |
534 } | 504 } |
535 } | 505 } |
536 | 506 |
537 } // namespace extensions | 507 } // namespace extensions |
OLD | NEW |