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

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: 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/common/chrome_paths.h » ('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"
(...skipping 23 matching lines...) Expand all
34 #endif 34 #endif
35 35
36 #if !defined(OS_CHROMEOS) 36 #if !defined(OS_CHROMEOS)
37 #include "chrome/browser/extensions/default_apps.h" 37 #include "chrome/browser/extensions/default_apps.h"
38 #endif 38 #endif
39 39
40 #if defined(OS_WIN) 40 #if defined(OS_WIN)
41 #include "chrome/browser/extensions/external_registry_loader_win.h" 41 #include "chrome/browser/extensions/external_registry_loader_win.h"
42 #endif 42 #endif
43 43
44 #if defined(ENABLE_MANAGED_USERS)
Bernhard Bauer 2013/02/08 13:38:18 Nit: Could you move this before the OS_* #ifdefs,
Dmitry Polukhin 2013/02/11 07:55:22 Done.
45 #include "chrome/browser/managed_mode/managed_user_service.h"
46 #include "chrome/browser/managed_mode/managed_user_service_factory.h"
47 #endif
48
44 using content::BrowserThread; 49 using content::BrowserThread;
45 50
46 namespace extensions { 51 namespace extensions {
47 52
48 // Constants for keeping track of extension preferences in a dictionary. 53 // Constants for keeping track of extension preferences in a dictionary.
49 const char ExternalProviderImpl::kExternalCrx[] = "external_crx"; 54 const char ExternalProviderImpl::kExternalCrx[] = "external_crx";
50 const char ExternalProviderImpl::kExternalVersion[] = "external_version"; 55 const char ExternalProviderImpl::kExternalVersion[] = "external_version";
51 const char ExternalProviderImpl::kExternalUpdateUrl[] = "external_update_url"; 56 const char ExternalProviderImpl::kExternalUpdateUrl[] = "external_update_url";
52 const char ExternalProviderImpl::kSupportedLocales[] = "supported_locales"; 57 const char ExternalProviderImpl::kSupportedLocales[] = "supported_locales";
53 const char ExternalProviderImpl::kIsBookmarkApp[] = "is_bookmark_app"; 58 const char ExternalProviderImpl::kIsBookmarkApp[] = "is_bookmark_app";
(...skipping 295 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
359 if (!is_chromeos_demo_session) { 364 bool is_managed_profile = false;
365 #if defined(ENABLE_MANAGED_USERS)
366 ManagedUserService* managed_user_service =
367 ManagedUserServiceFactory::GetForProfile(profile);
368 is_managed_profile = managed_user_service->ProfileIsManaged();
369
370 if (is_managed_profile) {
360 provider_list->push_back( 371 provider_list->push_back(
361 linked_ptr<ExternalProviderInterface>( 372 linked_ptr<ExternalProviderInterface>(
362 new ExternalProviderImpl( 373 new ExternalProviderImpl(
374 service,
375 new ExternalPrefLoader(chrome::DIR_MANAGED_USERS_DEFAULT_APPS,
376 check_admin_permissions_on_mac),
Bernhard Bauer 2013/02/08 13:38:18 Nit: alignment.
Dmitry Polukhin 2013/02/11 07:55:22 Done.
377 Manifest::EXTERNAL_PREF,
378 Manifest::EXTERNAL_PREF_DOWNLOAD,
379 bundled_extension_creation_flags)));
380 }
381 #endif
382
383 if (!is_chromeos_demo_session && !is_managed_profile) {
384 provider_list->push_back(
385 linked_ptr<ExternalProviderInterface>(
386 new ExternalProviderImpl(
363 service, 387 service,
364 new ExternalPrefLoader(chrome::DIR_EXTERNAL_EXTENSIONS, 388 new ExternalPrefLoader(chrome::DIR_EXTERNAL_EXTENSIONS,
365 check_admin_permissions_on_mac), 389 check_admin_permissions_on_mac),
366 Manifest::EXTERNAL_PREF, 390 Manifest::EXTERNAL_PREF,
367 Manifest::EXTERNAL_PREF_DOWNLOAD, 391 Manifest::EXTERNAL_PREF_DOWNLOAD,
368 bundled_extension_creation_flags))); 392 bundled_extension_creation_flags)));
369 } 393 }
370 394
371 #if defined(OS_CHROMEOS) || defined (OS_MACOSX) 395 #if defined(OS_CHROMEOS) || defined (OS_MACOSX)
372 // Define a per-user source of external extensions. 396 if (!is_managed_profile) {
373 // On Chrome OS, this serves as a source for OEM customization. 397 // Define a per-user source of external extensions.
374 provider_list->push_back( 398 // On Chrome OS, this serves as a source for OEM customization.
375 linked_ptr<ExternalProviderInterface>( 399 provider_list->push_back(
376 new ExternalProviderImpl( 400 linked_ptr<ExternalProviderInterface>(
377 service, 401 new ExternalProviderImpl(
378 new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, 402 service,
379 ExternalPrefLoader::NONE), 403 new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS,
380 Manifest::EXTERNAL_PREF, 404 ExternalPrefLoader::NONE),
381 Manifest::EXTERNAL_PREF_DOWNLOAD, 405 Manifest::EXTERNAL_PREF,
382 Extension::NO_FLAGS))); 406 Manifest::EXTERNAL_PREF_DOWNLOAD,
407 Extension::NO_FLAGS)));
408 }
383 #endif 409 #endif
410
384 #if defined(OS_WIN) 411 #if defined(OS_WIN)
385 provider_list->push_back( 412 if (!is_managed_profile) {
386 linked_ptr<ExternalProviderInterface>( 413 provider_list->push_back(
387 new ExternalProviderImpl( 414 linked_ptr<ExternalProviderInterface>(
388 service, 415 new ExternalProviderImpl(
389 new ExternalRegistryLoader, 416 service,
390 Manifest::EXTERNAL_REGISTRY, 417 new ExternalRegistryLoader,
391 Manifest::INVALID_LOCATION, 418 Manifest::EXTERNAL_REGISTRY,
392 Extension::NO_FLAGS))); 419 Manifest::INVALID_LOCATION,
420 Extension::NO_FLAGS)));
421 }
393 #endif 422 #endif
394 423
395 #if defined(OS_LINUX) 424 #if defined(OS_LINUX)
396 provider_list->push_back( 425 if (!is_managed_profile) {
397 linked_ptr<ExternalProviderInterface>( 426 provider_list->push_back(
398 new ExternalProviderImpl( 427 linked_ptr<ExternalProviderInterface>(
399 service, 428 new ExternalProviderImpl(
400 new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS, 429 service,
401 ExternalPrefLoader::NONE), 430 new ExternalPrefLoader(
402 Manifest::EXTERNAL_PREF, 431 chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS,
403 Manifest::EXTERNAL_PREF_DOWNLOAD, 432 ExternalPrefLoader::NONE),
404 bundled_extension_creation_flags))); 433 Manifest::EXTERNAL_PREF,
434 Manifest::EXTERNAL_PREF_DOWNLOAD,
435 bundled_extension_creation_flags)));
436 }
405 #endif 437 #endif
406 438
407 #if !defined(OS_CHROMEOS) 439 #if !defined(OS_CHROMEOS)
408 // The default apps are installed as INTERNAL but use the external 440 if (!is_managed_profile) {
409 // extension installer codeflow. 441 // The default apps are installed as INTERNAL but use the external
410 provider_list->push_back( 442 // extension installer codeflow.
411 linked_ptr<ExternalProviderInterface>( 443 provider_list->push_back(
412 new default_apps::Provider( 444 linked_ptr<ExternalProviderInterface>(
413 profile, 445 new default_apps::Provider(
414 service, 446 profile,
415 new ExternalPrefLoader(chrome::DIR_DEFAULT_APPS, 447 service,
416 ExternalPrefLoader::NONE), 448 new ExternalPrefLoader(chrome::DIR_DEFAULT_APPS,
417 Manifest::INTERNAL, 449 ExternalPrefLoader::NONE),
418 Manifest::INVALID_LOCATION, 450 Manifest::INTERNAL,
419 Extension::FROM_WEBSTORE | 451 Manifest::INVALID_LOCATION,
420 Extension::WAS_INSTALLED_BY_DEFAULT))); 452 Extension::FROM_WEBSTORE |
453 Extension::WAS_INSTALLED_BY_DEFAULT)));
454 }
421 #endif 455 #endif
422 456
423 #if defined(OS_CHROMEOS) 457 #if defined(OS_CHROMEOS)
424 policy::BrowserPolicyConnector* connector = 458 policy::BrowserPolicyConnector* connector =
425 g_browser_process->browser_policy_connector(); 459 g_browser_process->browser_policy_connector();
426 if (is_chromeos_demo_session && connector->GetAppPackUpdater()) { 460 if (!is_managed_profile &&
461 is_chromeos_demo_session && connector->GetAppPackUpdater()) {
427 provider_list->push_back( 462 provider_list->push_back(
428 linked_ptr<ExternalProviderInterface>( 463 linked_ptr<ExternalProviderInterface>(
429 new ExternalProviderImpl( 464 new ExternalProviderImpl(
430 service, 465 service,
431 connector->GetAppPackUpdater()->CreateExternalLoader(), 466 connector->GetAppPackUpdater()->CreateExternalLoader(),
432 Manifest::EXTERNAL_PREF, 467 Manifest::EXTERNAL_PREF,
433 Manifest::INVALID_LOCATION, 468 Manifest::INVALID_LOCATION,
434 Extension::NO_FLAGS))); 469 Extension::NO_FLAGS)));
435 } 470 }
436 #endif 471 #endif
437 } 472 }
438 473
439 } // namespace extensions 474 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/common/chrome_paths.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698