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

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

Issue 12221065: Disable normal default extensions in case of managed users (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed tests Created 7 years, 10 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
« no previous file with comments | « no previous file | chrome/browser/managed_mode/managed_user_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/external_provider_impl.h" 5 #include "chrome/browser/extensions/external_provider_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/linked_ptr.h" 10 #include "base/memory/linked_ptr.h"
11 #include "base/metrics/field_trial.h" 11 #include "base/metrics/field_trial.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "base/version.h" 15 #include "base/version.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/extensions/extension_service.h" 17 #include "chrome/browser/extensions/extension_service.h"
18 #include "chrome/browser/extensions/external_policy_loader.h" 18 #include "chrome/browser/extensions/external_policy_loader.h"
19 #include "chrome/browser/extensions/external_pref_loader.h" 19 #include "chrome/browser/extensions/external_pref_loader.h"
20 #include "chrome/browser/extensions/external_provider_interface.h" 20 #include "chrome/browser/extensions/external_provider_interface.h"
21 #include "chrome/browser/profiles/profile.h" 21 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/common/chrome_paths.h" 22 #include "chrome/common/chrome_paths.h"
23 #include "chrome/common/chrome_switches.h" 23 #include "chrome/common/chrome_switches.h"
24 #include "chrome/common/extensions/extension.h" 24 #include "chrome/common/extensions/extension.h"
25 #include "chrome/common/extensions/manifest.h" 25 #include "chrome/common/extensions/manifest.h"
26 #include "chrome/common/pref_names.h" 26 #include "chrome/common/pref_names.h"
27 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
28 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
29 29
30 #if defined(ENABLE_MANAGED_USERS)
31 #include "chrome/browser/managed_mode/managed_user_service.h"
32 #include "chrome/browser/managed_mode/managed_user_service_factory.h"
33 #endif
34
30 #if defined(OS_CHROMEOS) 35 #if defined(OS_CHROMEOS)
31 #include "chrome/browser/chromeos/login/user_manager.h" 36 #include "chrome/browser/chromeos/login/user_manager.h"
32 #include "chrome/browser/policy/app_pack_updater.h" 37 #include "chrome/browser/policy/app_pack_updater.h"
33 #include "chrome/browser/policy/browser_policy_connector.h" 38 #include "chrome/browser/policy/browser_policy_connector.h"
34 #endif 39 #endif
35 40
36 #if !defined(OS_CHROMEOS) 41 #if !defined(OS_CHROMEOS)
37 #include "chrome/browser/extensions/default_apps.h" 42 #include "chrome/browser/extensions/default_apps.h"
38 #endif 43 #endif
39 44
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 #if defined(OS_CHROMEOS) 354 #if defined(OS_CHROMEOS)
350 chromeos::UserManager* user_manager = chromeos::UserManager::Get(); 355 chromeos::UserManager* user_manager = chromeos::UserManager::Get();
351 is_chromeos_demo_session = 356 is_chromeos_demo_session =
352 user_manager && user_manager->IsLoggedInAsDemoUser() && 357 user_manager && user_manager->IsLoggedInAsDemoUser() &&
353 g_browser_process->browser_policy_connector()->GetDeviceMode() == 358 g_browser_process->browser_policy_connector()->GetDeviceMode() ==
354 policy::DEVICE_MODE_KIOSK; 359 policy::DEVICE_MODE_KIOSK;
355 bundled_extension_creation_flags = Extension::FROM_WEBSTORE | 360 bundled_extension_creation_flags = Extension::FROM_WEBSTORE |
356 Extension::WAS_INSTALLED_BY_DEFAULT; 361 Extension::WAS_INSTALLED_BY_DEFAULT;
357 #endif 362 #endif
358 363
364 bool is_managed_profile = false;
365 int external_apps_path_id = chrome::DIR_EXTERNAL_EXTENSIONS;
366 #if defined(ENABLE_MANAGED_USERS)
367 ManagedUserService* managed_user_service =
368 ManagedUserServiceFactory::GetForProfile(profile);
369 is_managed_profile = managed_user_service->ProfileIsManaged();
370 if (is_managed_profile)
371 external_apps_path_id = chrome::DIR_MANAGED_USERS_DEFAULT_APPS;
372 #endif
373
359 if (!is_chromeos_demo_session) { 374 if (!is_chromeos_demo_session) {
360 provider_list->push_back( 375 provider_list->push_back(
361 linked_ptr<ExternalProviderInterface>( 376 linked_ptr<ExternalProviderInterface>(
362 new ExternalProviderImpl( 377 new ExternalProviderImpl(
363 service, 378 service,
364 new ExternalPrefLoader(chrome::DIR_EXTERNAL_EXTENSIONS, 379 new ExternalPrefLoader(external_apps_path_id,
365 check_admin_permissions_on_mac), 380 check_admin_permissions_on_mac),
366 Manifest::EXTERNAL_PREF, 381 Manifest::EXTERNAL_PREF,
367 Manifest::EXTERNAL_PREF_DOWNLOAD, 382 Manifest::EXTERNAL_PREF_DOWNLOAD,
368 bundled_extension_creation_flags))); 383 bundled_extension_creation_flags)));
369 } 384 }
370 385
386 if (!is_managed_profile) {
371 #if defined(OS_CHROMEOS) || defined (OS_MACOSX) 387 #if defined(OS_CHROMEOS) || defined (OS_MACOSX)
372 // Define a per-user source of external extensions. 388 // Define a per-user source of external extensions.
373 // On Chrome OS, this serves as a source for OEM customization. 389 // On Chrome OS, this serves as a source for OEM customization.
374 provider_list->push_back( 390 provider_list->push_back(
375 linked_ptr<ExternalProviderInterface>( 391 linked_ptr<ExternalProviderInterface>(
376 new ExternalProviderImpl( 392 new ExternalProviderImpl(
377 service, 393 service,
378 new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, 394 new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS,
379 ExternalPrefLoader::NONE), 395 ExternalPrefLoader::NONE),
380 Manifest::EXTERNAL_PREF, 396 Manifest::EXTERNAL_PREF,
381 Manifest::EXTERNAL_PREF_DOWNLOAD, 397 Manifest::EXTERNAL_PREF_DOWNLOAD,
382 Extension::NO_FLAGS))); 398 Extension::NO_FLAGS)));
383 #endif 399 #endif
400
384 #if defined(OS_WIN) 401 #if defined(OS_WIN)
385 provider_list->push_back( 402 provider_list->push_back(
386 linked_ptr<ExternalProviderInterface>( 403 linked_ptr<ExternalProviderInterface>(
387 new ExternalProviderImpl( 404 new ExternalProviderImpl(
388 service, 405 service,
389 new ExternalRegistryLoader, 406 new ExternalRegistryLoader,
390 Manifest::EXTERNAL_REGISTRY, 407 Manifest::EXTERNAL_REGISTRY,
391 Manifest::INVALID_LOCATION, 408 Manifest::INVALID_LOCATION,
392 Extension::NO_FLAGS))); 409 Extension::NO_FLAGS)));
393 #endif 410 #endif
394 411
395 #if defined(OS_LINUX) 412 #if defined(OS_LINUX)
396 provider_list->push_back( 413 provider_list->push_back(
397 linked_ptr<ExternalProviderInterface>( 414 linked_ptr<ExternalProviderInterface>(
398 new ExternalProviderImpl( 415 new ExternalProviderImpl(
399 service, 416 service,
400 new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS, 417 new ExternalPrefLoader(
401 ExternalPrefLoader::NONE), 418 chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS,
402 Manifest::EXTERNAL_PREF, 419 ExternalPrefLoader::NONE),
403 Manifest::EXTERNAL_PREF_DOWNLOAD, 420 Manifest::EXTERNAL_PREF,
404 bundled_extension_creation_flags))); 421 Manifest::EXTERNAL_PREF_DOWNLOAD,
422 bundled_extension_creation_flags)));
405 #endif 423 #endif
406 424
407 #if !defined(OS_CHROMEOS) 425 #if !defined(OS_CHROMEOS)
408 // The default apps are installed as INTERNAL but use the external 426 // The default apps are installed as INTERNAL but use the external
409 // extension installer codeflow. 427 // extension installer codeflow.
410 provider_list->push_back( 428 provider_list->push_back(
411 linked_ptr<ExternalProviderInterface>( 429 linked_ptr<ExternalProviderInterface>(
412 new default_apps::Provider( 430 new default_apps::Provider(
413 profile, 431 profile,
414 service, 432 service,
415 new ExternalPrefLoader(chrome::DIR_DEFAULT_APPS, 433 new ExternalPrefLoader(chrome::DIR_DEFAULT_APPS,
416 ExternalPrefLoader::NONE), 434 ExternalPrefLoader::NONE),
417 Manifest::INTERNAL, 435 Manifest::INTERNAL,
418 Manifest::INVALID_LOCATION, 436 Manifest::INVALID_LOCATION,
419 Extension::FROM_WEBSTORE | 437 Extension::FROM_WEBSTORE |
420 Extension::WAS_INSTALLED_BY_DEFAULT))); 438 Extension::WAS_INSTALLED_BY_DEFAULT)));
421 #endif 439 #endif
422 440
423 #if defined(OS_CHROMEOS) 441 #if defined(OS_CHROMEOS)
424 policy::BrowserPolicyConnector* connector = 442 policy::BrowserPolicyConnector* connector =
425 g_browser_process->browser_policy_connector(); 443 g_browser_process->browser_policy_connector();
426 if (is_chromeos_demo_session && connector->GetAppPackUpdater()) { 444 if (is_chromeos_demo_session && connector->GetAppPackUpdater()) {
427 provider_list->push_back( 445 provider_list->push_back(
428 linked_ptr<ExternalProviderInterface>( 446 linked_ptr<ExternalProviderInterface>(
429 new ExternalProviderImpl( 447 new ExternalProviderImpl(
430 service, 448 service,
431 connector->GetAppPackUpdater()->CreateExternalLoader(), 449 connector->GetAppPackUpdater()->CreateExternalLoader(),
432 Manifest::EXTERNAL_PREF, 450 Manifest::EXTERNAL_PREF,
433 Manifest::INVALID_LOCATION, 451 Manifest::INVALID_LOCATION,
434 Extension::NO_FLAGS))); 452 Extension::NO_FLAGS)));
453 }
454 #endif
435 } 455 }
436 #endif
437 } 456 }
438 457
439 } // namespace extensions 458 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/managed_mode/managed_user_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698