Chromium Code Reviews| Index: chrome/browser/policy/policy_browsertest.cc |
| diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc |
| index eb72c63681024fce592adc0c92e910fcfe98d23d..d5b167f7c8b4723b189cd7b340834768295b3610 100644 |
| --- a/chrome/browser/policy/policy_browsertest.cc |
| +++ b/chrome/browser/policy/policy_browsertest.cc |
| @@ -191,9 +191,20 @@ |
| #include "ash/shell.h" |
| #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" |
| #include "chrome/browser/chromeos/accessibility/magnification_manager.h" |
| +#include "chrome/browser/chromeos/arc/arc_auth_service.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/ui/ash/chrome_screenshot_grabber.h" |
| +#include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
| #include "chromeos/audio/cras_audio_handler.h" |
| +#include "chromeos/chromeos_switches.h" |
|
bartfab (slow)
2016/04/01 10:41:18
Nit: No longer used.
Polina Bondarenko
2016/04/01 11:05:10
Done.
|
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| +#include "chromeos/dbus/fake_session_manager_client.h" |
| +#include "chromeos/dbus/session_manager_client.h" |
| +#include "components/arc/arc_bridge_service.h" |
| +#include "components/arc/arc_bridge_service_impl.h" |
| +#include "components/arc/arc_service_manager.h" |
| +#include "components/arc/test/fake_arc_bridge_bootstrap.h" |
| +#include "components/arc/test/fake_arc_bridge_instance.h" |
| #include "ui/chromeos/accessibility_types.h" |
| #include "ui/keyboard/keyboard_util.h" |
| #include "ui/snapshot/screenshot_grabber.h" |
| @@ -3991,6 +4002,86 @@ IN_PROC_BROWSER_TEST_F(PolicyTest, UnifiedDesktopEnabledByDefault) { |
| UpdateProviderPolicy(policies); |
| EXPECT_FALSE(display_manager->unified_desktop_enabled()); |
| } |
| + |
| +class ArcPolicyTest : public PolicyTest { |
| + public: |
| + ArcPolicyTest() {} |
| + ~ArcPolicyTest() override {} |
| + |
| + protected: |
| + void SetUpTest() { |
| + arc::ArcAuthService::DisableUIForTesting(); |
| + |
| + browser()->profile()->GetPrefs()->SetBoolean(prefs::kArcSignedIn, true); |
| + arc::ArcServiceManager::Get()->OnPrimaryUserProfilePrepared( |
| + multi_user_util::GetAccountIdFromProfile(browser()->profile())); |
| + arc::ArcAuthService::Get()->OnPrimaryUserProfilePrepared( |
| + browser()->profile()); |
| + } |
| + |
| + void TearDownTest() { |
| + arc::ArcAuthService::Get()->Shutdown(); |
| + } |
| + |
| + void SetUpInProcessBrowserTestFixture() override { |
| + PolicyTest::SetUpInProcessBrowserTestFixture(); |
| + fake_session_manager_client_ = new chromeos::FakeSessionManagerClient; |
| + fake_session_manager_client_->set_arc_available(true); |
| + chromeos::DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient( |
| + scoped_ptr<chromeos::SessionManagerClient>( |
| + fake_session_manager_client_)); |
| + |
| + fake_arc_bridge_instance_.reset(new arc::FakeArcBridgeInstance); |
| + arc::ArcServiceManager::SetArcBridgeServiceForTesting(make_scoped_ptr( |
| + new arc::ArcBridgeServiceImpl(make_scoped_ptr( |
| + new arc::FakeArcBridgeBootstrap( |
| + fake_arc_bridge_instance_.get()))))); |
| + } |
| + |
| + private: |
| + chromeos::FakeSessionManagerClient *fake_session_manager_client_; |
| + scoped_ptr<arc::FakeArcBridgeInstance> fake_arc_bridge_instance_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ArcPolicyTest); |
| +}; |
| + |
| +// Test ArcEnabled policy. |
| +IN_PROC_BROWSER_TEST_F(ArcPolicyTest, ArcEnabled) { |
| + SetUpTest(); |
| + |
| + const PrefService* const pref = browser()->profile()->GetPrefs(); |
| + const arc::ArcBridgeService* const arc_bridge_service |
| + = arc::ArcBridgeService::Get(); |
| + |
| + // ARC is switched off by default. |
| + EXPECT_EQ(arc::ArcBridgeService::State::STOPPED, arc_bridge_service->state()); |
| + EXPECT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); |
| + |
| + // Enable ARC. |
| + PolicyMap policies; |
| + policies.Set(key::kArcEnabled, |
| + POLICY_LEVEL_MANDATORY, |
| + POLICY_SCOPE_USER, |
| + POLICY_SOURCE_CLOUD, |
| + new base::FundamentalValue(true), |
| + nullptr); |
| + UpdateProviderPolicy(policies); |
| + EXPECT_TRUE(pref->GetBoolean(prefs::kArcEnabled)); |
| + EXPECT_EQ(arc::ArcBridgeService::State::READY, arc_bridge_service->state()); |
| + |
| + // Disable ARC. |
| + policies.Set(key::kArcEnabled, |
| + POLICY_LEVEL_MANDATORY, |
| + POLICY_SCOPE_USER, |
| + POLICY_SOURCE_CLOUD, |
| + new base::FundamentalValue(false), |
| + nullptr); |
| + UpdateProviderPolicy(policies); |
| + EXPECT_FALSE(pref->GetBoolean(prefs::kArcEnabled)); |
| + EXPECT_EQ(arc::ArcBridgeService::State::STOPPED, arc_bridge_service->state()); |
| + |
| + TearDownTest(); |
| +} |
| #endif // defined(OS_CHROMEOS) |
| } // namespace policy |