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

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

Issue 23868042: Mark supervised profiles as such immediately when they're created. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 7 years, 2 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/extension_service_unittest.h" 5 #include "chrome/browser/extensions/extension_service_unittest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 int expected_creation_flags_; 442 int expected_creation_flags_;
443 scoped_ptr<extensions::ExternalProviderImpl> provider_; 443 scoped_ptr<extensions::ExternalProviderImpl> provider_;
444 scoped_ptr<DictionaryValue> prefs_; 444 scoped_ptr<DictionaryValue> prefs_;
445 scoped_ptr<TestingProfile> profile_; 445 scoped_ptr<TestingProfile> profile_;
446 446
447 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor); 447 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor);
448 }; 448 };
449 449
450 ExtensionServiceTestBase::ExtensionServiceInitParams:: 450 ExtensionServiceTestBase::ExtensionServiceInitParams::
451 ExtensionServiceInitParams() 451 ExtensionServiceInitParams()
452 : autoupdate_enabled(false), is_first_run(true) { 452 : autoupdate_enabled(false), is_first_run(true), profile_is_managed(false) {
453 } 453 }
454 454
455 // Our message loop may be used in tests which require it to be an IO loop. 455 // Our message loop may be used in tests which require it to be an IO loop.
456 ExtensionServiceTestBase::ExtensionServiceTestBase() 456 ExtensionServiceTestBase::ExtensionServiceTestBase()
457 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 457 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
458 service_(NULL), 458 service_(NULL),
459 management_policy_(NULL), 459 management_policy_(NULL),
460 expected_extensions_count_(0) { 460 expected_extensions_count_(0) {
461 base::FilePath test_data_dir; 461 base::FilePath test_data_dir;
462 if (!PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)) { 462 if (!PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)) {
(...skipping 17 matching lines...) Expand all
480 if (!params.pref_file.empty()) { 480 if (!params.pref_file.empty()) {
481 builder.WithUserFilePrefs(params.pref_file, 481 builder.WithUserFilePrefs(params.pref_file,
482 base::MessageLoopProxy::current().get()); 482 base::MessageLoopProxy::current().get());
483 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( 483 scoped_refptr<user_prefs::PrefRegistrySyncable> registry(
484 new user_prefs::PrefRegistrySyncable); 484 new user_prefs::PrefRegistrySyncable);
485 scoped_ptr<PrefServiceSyncable> prefs( 485 scoped_ptr<PrefServiceSyncable> prefs(
486 builder.CreateSyncable(registry.get())); 486 builder.CreateSyncable(registry.get()));
487 chrome::RegisterUserProfilePrefs(registry.get()); 487 chrome::RegisterUserProfilePrefs(registry.get());
488 profile_builder.SetPrefService(prefs.Pass()); 488 profile_builder.SetPrefService(prefs.Pass());
489 } 489 }
490
491 if (params.profile_is_managed)
492 profile_builder.SetManagedUserId("asdf");
493
490 profile_builder.SetPath(params.profile_path); 494 profile_builder.SetPath(params.profile_path);
491 profile_ = profile_builder.Build(); 495 profile_ = profile_builder.Build();
492 496
493 TestExtensionSystem* system = static_cast<TestExtensionSystem*>( 497 TestExtensionSystem* system = static_cast<TestExtensionSystem*>(
494 ExtensionSystem::Get(profile_.get())); 498 ExtensionSystem::Get(profile_.get()));
495 if (!params.is_first_run) { 499 if (!params.is_first_run) {
496 ExtensionPrefs* prefs = system->CreateExtensionPrefs( 500 ExtensionPrefs* prefs = system->CreateExtensionPrefs(
497 CommandLine::ForCurrentProcess(), 501 CommandLine::ForCurrentProcess(),
498 params.extensions_install_dir); 502 params.extensions_install_dir);
499 prefs->SetAlertSystemFirstRun(); 503 prefs->SetAlertSystemFirstRun();
500 } 504 }
501 505
502 service_ = system->CreateExtensionService( 506 service_ = system->CreateExtensionService(
503 CommandLine::ForCurrentProcess(), 507 CommandLine::ForCurrentProcess(),
504 params.extensions_install_dir, 508 params.extensions_install_dir,
505 params.autoupdate_enabled); 509 params.autoupdate_enabled);
506 service_->SetFileTaskRunnerForTesting( 510 service_->SetFileTaskRunnerForTesting(
507 base::MessageLoopProxy::current().get()); 511 base::MessageLoopProxy::current().get());
508 service_->set_extensions_enabled(true); 512 service_->set_extensions_enabled(true);
509 service_->set_show_extensions_prompts(false); 513 service_->set_show_extensions_prompts(false);
510 service_->set_install_updates_when_idle_for_test(false); 514 service_->set_install_updates_when_idle_for_test(false);
511 515
512 management_policy_ = 516 management_policy_ =
513 ExtensionSystem::Get(profile_.get())->management_policy(); 517 ExtensionSystem::Get(profile_.get())->management_policy();
514 518
519 extensions_install_dir_ = params.extensions_install_dir;
520
515 // When we start up, we want to make sure there is no external provider, 521 // When we start up, we want to make sure there is no external provider,
516 // since the ExtensionService on Windows will use the Registry as a default 522 // since the ExtensionService on Windows will use the Registry as a default
517 // provider and if there is something already registered there then it will 523 // provider and if there is something already registered there then it will
518 // interfere with the tests. Those tests that need an external provider 524 // interfere with the tests. Those tests that need an external provider
519 // will register one specifically. 525 // will register one specifically.
520 service_->ClearProvidersForTesting(); 526 service_->ClearProvidersForTesting();
521 527
522 #if defined(OS_CHROMEOS) 528 #if defined(OS_CHROMEOS)
523 extensions::InstallLimiter::Get(profile_.get())->DisableForTest(); 529 extensions::InstallLimiter::Get(profile_.get())->DisableForTest();
524 #endif 530 #endif
525 531
526 expected_extensions_count_ = 0; 532 expected_extensions_count_ = 0;
527 } 533 }
528 534
529 void ExtensionServiceTestBase::InitializeInstalledExtensionService( 535 void ExtensionServiceTestBase::InitializeInstalledExtensionService(
530 const base::FilePath& prefs_file, 536 const base::FilePath& prefs_file,
531 const base::FilePath& source_install_dir) { 537 const base::FilePath& source_install_dir) {
532 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 538 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
533 base::FilePath path = temp_dir_.path(); 539 base::FilePath path = temp_dir_.path();
534 path = path.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); 540 path = path.Append(FILE_PATH_LITERAL("TestingExtensionsPath"));
535 base::DeleteFile(path, true); 541 EXPECT_TRUE(base::DeleteFile(path, true));
536 file_util::CreateDirectory(path); 542 base::PlatformFileError error = base::PLATFORM_FILE_OK;
543 EXPECT_TRUE(file_util::CreateDirectoryAndGetError(path, &error)) << error;
537 base::FilePath temp_prefs = path.Append(FILE_PATH_LITERAL("Preferences")); 544 base::FilePath temp_prefs = path.Append(FILE_PATH_LITERAL("Preferences"));
538 base::CopyFile(prefs_file, temp_prefs); 545 EXPECT_TRUE(base::CopyFile(prefs_file, temp_prefs));
539 546
540 extensions_install_dir_ = path.Append(FILE_PATH_LITERAL("Extensions")); 547 base::FilePath extensions_install_dir =
541 base::DeleteFile(extensions_install_dir_, true); 548 path.Append(FILE_PATH_LITERAL("Extensions"));
542 base::CopyDirectory(source_install_dir, extensions_install_dir_, true); 549 EXPECT_TRUE(base::DeleteFile(extensions_install_dir, true));
550 EXPECT_TRUE(
551 base::CopyDirectory(source_install_dir, extensions_install_dir, true));
543 552
544 ExtensionServiceInitParams params; 553 ExtensionServiceInitParams params;
545 params.profile_path = path; 554 params.profile_path = path;
546 params.pref_file = temp_prefs; 555 params.pref_file = temp_prefs;
547 params.extensions_install_dir = extensions_install_dir_; 556 params.extensions_install_dir = extensions_install_dir;
548 InitializeExtensionService(params); 557 InitializeExtensionService(params);
549 } 558 }
550 559
551 void ExtensionServiceTestBase::InitializeGoodInstalledExtensionService() { 560 void ExtensionServiceTestBase::InitializeGoodInstalledExtensionService() {
552 base::FilePath source_install_dir = data_dir_ 561 base::FilePath source_install_dir = data_dir_
553 .AppendASCII("good") 562 .AppendASCII("good")
554 .AppendASCII("Extensions"); 563 .AppendASCII("Extensions");
555 base::FilePath pref_path = source_install_dir 564 base::FilePath pref_path = source_install_dir
556 .DirName() 565 .DirName()
557 .AppendASCII("Preferences"); 566 .AppendASCII("Preferences");
558 InitializeInstalledExtensionService(pref_path, source_install_dir); 567 InitializeInstalledExtensionService(pref_path, source_install_dir);
559 } 568 }
560 569
561 void ExtensionServiceTestBase::InitializeEmptyExtensionService() { 570 void ExtensionServiceTestBase::InitializeEmptyExtensionService() {
562 InitializeExtensionServiceHelper(false, true); 571 InitializeExtensionService(CreateDefaultInitParams());
563 } 572 }
564 573
565 void ExtensionServiceTestBase::InitializeExtensionProcessManager() { 574 void ExtensionServiceTestBase::InitializeExtensionProcessManager() {
566 static_cast<extensions::TestExtensionSystem*>( 575 static_cast<extensions::TestExtensionSystem*>(
567 ExtensionSystem::Get(profile_.get()))-> 576 ExtensionSystem::Get(profile_.get()))->
568 CreateExtensionProcessManager(); 577 CreateExtensionProcessManager();
569 } 578 }
570 579
571 void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() { 580 void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() {
572 InitializeExtensionServiceHelper(true, true); 581 ExtensionServiceInitParams params = CreateDefaultInitParams();
582 params.autoupdate_enabled = true;
583 InitializeExtensionService(params);
573 service_->updater()->Start(); 584 service_->updater()->Start();
574 } 585 }
575 586
576 void ExtensionServiceTestBase::InitializeExtensionServiceHelper( 587 ExtensionServiceTestBase::ExtensionServiceInitParams
577 bool autoupdate_enabled, bool is_first_run) { 588 ExtensionServiceTestBase::CreateDefaultInitParams() {
578 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 589 ExtensionServiceInitParams params;
590 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
579 base::FilePath path = temp_dir_.path(); 591 base::FilePath path = temp_dir_.path();
580 path = path.Append(FILE_PATH_LITERAL("TestingExtensionsPath")); 592 path = path.Append(FILE_PATH_LITERAL("TestingExtensionsPath"));
581 base::DeleteFile(path, true); 593 EXPECT_TRUE(base::DeleteFile(path, true));
582 file_util::CreateDirectory(path); 594 base::PlatformFileError error = base::PLATFORM_FILE_OK;
595 EXPECT_TRUE(file_util::CreateDirectoryAndGetError(path, &error)) << error;
583 base::FilePath prefs_filename = 596 base::FilePath prefs_filename =
584 path.Append(FILE_PATH_LITERAL("TestPreferences")); 597 path.Append(FILE_PATH_LITERAL("TestPreferences"));
585 extensions_install_dir_ = path.Append(FILE_PATH_LITERAL("Extensions")); 598 base::FilePath extensions_install_dir =
586 base::DeleteFile(extensions_install_dir_, true); 599 path.Append(FILE_PATH_LITERAL("Extensions"));
587 file_util::CreateDirectory(extensions_install_dir_); 600 EXPECT_TRUE(base::DeleteFile(extensions_install_dir, true));
601 EXPECT_TRUE(file_util::CreateDirectoryAndGetError(extensions_install_dir,
602 &error)) << error;
588 603
589 ExtensionServiceInitParams params;
590 params.profile_path = path; 604 params.profile_path = path;
591 params.pref_file = prefs_filename; 605 params.pref_file = prefs_filename;
592 params.extensions_install_dir = extensions_install_dir_; 606 params.extensions_install_dir = extensions_install_dir;
593 params.autoupdate_enabled = autoupdate_enabled; 607 return params;
594 params.is_first_run = is_first_run;
595 InitializeExtensionService(params);
596 } 608 }
597 609
598 // static 610 // static
599 void ExtensionServiceTestBase::SetUpTestCase() { 611 void ExtensionServiceTestBase::SetUpTestCase() {
600 ExtensionErrorReporter::Init(false); // no noisy errors 612 ExtensionErrorReporter::Init(false); // no noisy errors
601 } 613 }
602 614
603 void ExtensionServiceTestBase::SetUp() { 615 void ExtensionServiceTestBase::SetUp() {
604 ExtensionErrorReporter::GetInstance()->ClearErrors(); 616 ExtensionErrorReporter::GetInstance()->ClearErrors();
605 content::RenderProcessHost::SetRunRendererInProcess(true); 617 content::RenderProcessHost::SetRunRendererInProcess(true);
(...skipping 5862 matching lines...) Expand 10 before | Expand all | Expand 10 after
6468 } 6480 }
6469 6481
6470 // Test that there is a bubble for external extensions that update 6482 // Test that there is a bubble for external extensions that update
6471 // from the webstore if the profile is not new. 6483 // from the webstore if the profile is not new.
6472 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) { 6484 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) {
6473 FeatureSwitch::ScopedOverride prompt( 6485 FeatureSwitch::ScopedOverride prompt(
6474 FeatureSwitch::prompt_for_external_extensions(), true); 6486 FeatureSwitch::prompt_for_external_extensions(), true);
6475 6487
6476 // This sets up the ExtensionPrefs used by our ExtensionService to be 6488 // This sets up the ExtensionPrefs used by our ExtensionService to be
6477 // post-first run. 6489 // post-first run.
6478 InitializeExtensionServiceHelper(false, false); 6490 ExtensionServiceInitParams params = CreateDefaultInitParams();
6491 params.is_first_run = false;
6492 InitializeExtensionService(params);
6479 6493
6480 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx"); 6494 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6481 PackCRX(data_dir_.AppendASCII("update_from_webstore"), 6495 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6482 data_dir_.AppendASCII("update_from_webstore.pem"), 6496 data_dir_.AppendASCII("update_from_webstore.pem"),
6483 crx_path); 6497 crx_path);
6484 6498
6485 MockExtensionProvider* provider = 6499 MockExtensionProvider* provider =
6486 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6500 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6487 AddMockExternalProvider(provider); 6501 AddMockExternalProvider(provider);
6488 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); 6502 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
6616 // ReconcileKnownDisabled(). 6630 // ReconcileKnownDisabled().
6617 service_->EnableExtension(good2); 6631 service_->EnableExtension(good2);
6618 service_->ReconcileKnownDisabled(); 6632 service_->ReconcileKnownDisabled();
6619 expected_extensions.insert(good2); 6633 expected_extensions.insert(good2);
6620 expected_disabled_extensions.erase(good2); 6634 expected_disabled_extensions.erase(good2);
6621 6635
6622 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs()); 6636 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs());
6623 EXPECT_EQ(expected_disabled_extensions, 6637 EXPECT_EQ(expected_disabled_extensions,
6624 service_->disabled_extensions()->GetIDs()); 6638 service_->disabled_extensions()->GetIDs());
6625 } 6639 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698