Temporarily re-enabling SizeAfterPrefChange test with traces (this time for Linux...
[chromium-blink-merge.git] / chrome / browser / extensions / external_provider_impl_chromeos_unittest.cc
blob54b83647d4e0ad04217d20aaa6b357a1521352d4
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/extensions/external_provider_impl.h"
7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/prefs/testing_pref_service.h"
10 #include "base/test/scoped_path_override.h"
11 #include "chrome/browser/chrome_notification_types.h"
12 #include "chrome/browser/chromeos/customization_document.h"
13 #include "chrome/browser/chromeos/login/users/fake_user_manager.h"
14 #include "chrome/browser/extensions/extension_service_unittest.h"
15 #include "chrome/common/chrome_paths.h"
16 #include "chrome/common/chrome_switches.h"
17 #include "chrome/test/base/testing_browser_process.h"
18 #include "chrome/test/base/testing_profile.h"
19 #include "chromeos/system/mock_statistics_provider.h"
20 #include "chromeos/system/statistics_provider.h"
21 #include "content/public/browser/notification_service.h"
22 #include "content/public/test/test_utils.h"
23 #include "testing/gmock/include/gmock/gmock.h"
25 using ::testing::_;
26 using ::testing::NotNull;
27 using ::testing::Return;
29 namespace extensions {
31 namespace {
33 const char kExternalAppId[] = "kekdneafjmhmndejhmbcadfiiofngffo";
35 class ExternalProviderImplChromeOSTest : public ExtensionServiceTestBase {
36 public:
37 ExternalProviderImplChromeOSTest()
38 : fake_user_manager_(new chromeos::FakeUserManager()),
39 scoped_user_manager_(fake_user_manager_) {
42 virtual ~ExternalProviderImplChromeOSTest() {}
44 void InitServiceWithExternalProviders() {
45 InitializeEmptyExtensionService();
46 service_->Init();
48 ProviderCollection providers;
49 extensions::ExternalProviderImpl::CreateExternalProviders(
50 service_, profile_.get(), &providers);
52 for (ProviderCollection::iterator i = providers.begin();
53 i != providers.end();
54 ++i) {
55 service_->AddProviderForTesting(i->release());
59 // ExtensionServiceTestBase overrides:
60 virtual void SetUp() OVERRIDE {
61 ExtensionServiceTestBase::SetUp();
63 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_);
64 chromeos::ServicesCustomizationDocument::RegisterPrefs(
65 local_state_.registry());
67 external_externsions_overrides_.reset(
68 new base::ScopedPathOverride(chrome::DIR_EXTERNAL_EXTENSIONS,
69 data_dir_.Append("external")));
71 chromeos::system::StatisticsProvider::SetTestProvider(
72 &mock_statistics_provider_);
73 EXPECT_CALL(mock_statistics_provider_, GetMachineStatistic(_, NotNull()))
74 .WillRepeatedly(Return(false));
77 virtual void TearDown() OVERRIDE {
78 chromeos::system::StatisticsProvider::SetTestProvider(NULL);
79 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL);
82 private:
83 TestingPrefServiceSimple local_state_;
84 scoped_ptr<base::ScopedPathOverride> external_externsions_overrides_;
85 chromeos::system::MockStatisticsProvider mock_statistics_provider_;
86 chromeos::FakeUserManager* fake_user_manager_;
87 chromeos::ScopedUserManagerEnabler scoped_user_manager_;
89 DISALLOW_COPY_AND_ASSIGN(ExternalProviderImplChromeOSTest);
92 } // namespace
94 // Normal mode, external app should be installed.
95 TEST_F(ExternalProviderImplChromeOSTest, Normal) {
96 InitServiceWithExternalProviders();
98 service_->CheckForExternalUpdates();
99 content::WindowedNotificationObserver(
100 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
101 content::NotificationService::AllSources()).Wait();
103 EXPECT_TRUE(service_->GetInstalledExtension(kExternalAppId));
106 // App mode, no external app should be installed.
107 TEST_F(ExternalProviderImplChromeOSTest, AppMode) {
108 CommandLine* command = CommandLine::ForCurrentProcess();
109 command->AppendSwitchASCII(switches::kForceAppMode, std::string());
110 command->AppendSwitchASCII(switches::kAppId, std::string("app_id"));
112 InitServiceWithExternalProviders();
114 service_->CheckForExternalUpdates();
115 base::RunLoop().RunUntilIdle();
117 EXPECT_FALSE(service_->GetInstalledExtension(kExternalAppId));
120 } // namespace extensions