| Index: trunk/src/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc (revision 207797)
|
| +++ trunk/src/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc (working copy)
|
| @@ -1,438 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <string>
|
| -
|
| -#include "ash/magnifier/magnifier_constants.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/command_line.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/location.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/prefs/pref_change_registrar.h"
|
| -#include "base/prefs/pref_service.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
|
| -#include "chrome/browser/chromeos/accessibility/magnification_manager.h"
|
| -#include "chrome/browser/chromeos/policy/device_policy_builder.h"
|
| -#include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
|
| -#include "chrome/browser/chromeos/profiles/profile_helper.h"
|
| -#include "chrome/browser/chromeos/settings/device_settings_service.h"
|
| -#include "chrome/browser/lifetime/application_lifetime.h"
|
| -#include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/profiles/profile_manager.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "chromeos/chromeos_switches.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace em = enterprise_management;
|
| -
|
| -namespace policy {
|
| -
|
| -namespace {
|
| -
|
| -const em::AccessibilitySettingsProto_ScreenMagnifierType kFullScreenMagnifier =
|
| - em::AccessibilitySettingsProto_ScreenMagnifierType_SCREEN_MAGNIFIER_TYPE_FULL;
|
| -
|
| -// Spins the loop until a notification is received from |prefs| that the value
|
| -// of |pref_name| has changed. If the notification is received before Wait()
|
| -// has been called, Wait() returns immediately and no loop is spun.
|
| -class PrefChangeWatcher {
|
| - public:
|
| - PrefChangeWatcher(const char* pref_name, PrefService* prefs);
|
| -
|
| - void Wait();
|
| -
|
| - void OnPrefChange();
|
| -
|
| - private:
|
| - bool pref_changed_;
|
| -
|
| - base::RunLoop run_loop_;
|
| - PrefChangeRegistrar registrar_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PrefChangeWatcher);
|
| -};
|
| -
|
| -PrefChangeWatcher::PrefChangeWatcher(const char* pref_name,
|
| - PrefService* prefs)
|
| - : pref_changed_(false) {
|
| - registrar_.Init(prefs);
|
| - registrar_.Add(pref_name, base::Bind(&PrefChangeWatcher::OnPrefChange,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void PrefChangeWatcher::Wait() {
|
| - if (!pref_changed_)
|
| - run_loop_.Run();
|
| -}
|
| -
|
| -void PrefChangeWatcher::OnPrefChange() {
|
| - pref_changed_ = true;
|
| - run_loop_.Quit();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class LoginScreenDefaultPolicyBrowsertestBase
|
| - : public DevicePolicyCrosBrowserTest {
|
| - protected:
|
| - LoginScreenDefaultPolicyBrowsertestBase();
|
| - virtual ~LoginScreenDefaultPolicyBrowsertestBase();
|
| -
|
| - // DevicePolicyCrosBrowserTest:
|
| - virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
|
| - virtual void SetUpOnMainThread() OVERRIDE;
|
| -
|
| - void RefreshDevicePolicyAndWaitForPrefChange(const char* pref_name);
|
| -
|
| - Profile* login_profile_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(LoginScreenDefaultPolicyBrowsertestBase);
|
| -};
|
| -
|
| -class LoginScreenDefaultPolicyLoginScreenBrowsertest
|
| - : public LoginScreenDefaultPolicyBrowsertestBase {
|
| - protected:
|
| - LoginScreenDefaultPolicyLoginScreenBrowsertest();
|
| - virtual ~LoginScreenDefaultPolicyLoginScreenBrowsertest();
|
| -
|
| - // LoginScreenDefaultPolicyBrowsertestBase:
|
| - virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE;
|
| - virtual void SetUpOnMainThread() OVERRIDE;
|
| - virtual void CleanUpOnMainThread() OVERRIDE;
|
| -
|
| - void VerifyPrefFollowsRecommendation(const char* pref_name,
|
| - const base::Value& recommended_value);
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(LoginScreenDefaultPolicyLoginScreenBrowsertest);
|
| -};
|
| -
|
| -class LoginScreenDefaultPolicyInSessionBrowsertest
|
| - : public LoginScreenDefaultPolicyBrowsertestBase {
|
| - protected:
|
| - LoginScreenDefaultPolicyInSessionBrowsertest();
|
| - virtual ~LoginScreenDefaultPolicyInSessionBrowsertest();
|
| -
|
| - // LoginScreenDefaultPolicyBrowsertestBase:
|
| - virtual void SetUpOnMainThread() OVERRIDE;
|
| -
|
| - void VerifyPrefFollowsDefault(const char* pref_name);
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(LoginScreenDefaultPolicyInSessionBrowsertest);
|
| -};
|
| -
|
| -LoginScreenDefaultPolicyBrowsertestBase::
|
| - LoginScreenDefaultPolicyBrowsertestBase() : login_profile_(NULL) {
|
| -}
|
| -
|
| -LoginScreenDefaultPolicyBrowsertestBase::
|
| - ~LoginScreenDefaultPolicyBrowsertestBase() {
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyBrowsertestBase::
|
| - SetUpInProcessBrowserTestFixture() {
|
| - InstallOwnerKey();
|
| - MarkAsEnterpriseOwned(&temp_dir_);
|
| - DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture();
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyBrowsertestBase::SetUpOnMainThread() {
|
| - DevicePolicyCrosBrowserTest::SetUpOnMainThread();
|
| - login_profile_ = chromeos::ProfileHelper::GetSigninProfile();
|
| - ASSERT_TRUE(login_profile_);
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyBrowsertestBase::
|
| - RefreshDevicePolicyAndWaitForPrefChange(const char* pref_name) {
|
| - PrefChangeWatcher watcher(pref_name, login_profile_->GetPrefs());
|
| - RefreshDevicePolicy();
|
| - watcher.Wait();
|
| -}
|
| -
|
| -LoginScreenDefaultPolicyLoginScreenBrowsertest::
|
| - LoginScreenDefaultPolicyLoginScreenBrowsertest() {
|
| -}
|
| -
|
| -LoginScreenDefaultPolicyLoginScreenBrowsertest::
|
| - ~LoginScreenDefaultPolicyLoginScreenBrowsertest() {
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyLoginScreenBrowsertest::SetUpCommandLine(
|
| - CommandLine* command_line) {
|
| - LoginScreenDefaultPolicyBrowsertestBase::SetUpCommandLine(command_line);
|
| - command_line->AppendSwitch(chromeos::switches::kLoginManager);
|
| - command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests);
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyLoginScreenBrowsertest::SetUpOnMainThread() {
|
| - LoginScreenDefaultPolicyBrowsertestBase::SetUpOnMainThread();
|
| -
|
| - // Set the login screen profile.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - accessibility_manager->SetProfileForTest(
|
| - chromeos::ProfileHelper::GetSigninProfile());
|
| -
|
| - chromeos::MagnificationManager* magnification_manager =
|
| - chromeos::MagnificationManager::Get();
|
| - ASSERT_TRUE(magnification_manager);
|
| - magnification_manager->SetProfileForTest(
|
| - chromeos::ProfileHelper::GetSigninProfile());
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyLoginScreenBrowsertest::CleanUpOnMainThread() {
|
| - base::MessageLoop::current()->PostTask(FROM_HERE,
|
| - base::Bind(&chrome::AttemptExit));
|
| - base::RunLoop().RunUntilIdle();
|
| - LoginScreenDefaultPolicyBrowsertestBase::CleanUpOnMainThread();
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyLoginScreenBrowsertest::
|
| - VerifyPrefFollowsRecommendation(const char* pref_name,
|
| - const base::Value& recommended_value) {
|
| - const PrefService::Preference* pref =
|
| - login_profile_->GetPrefs()->FindPreference(pref_name);
|
| - ASSERT_TRUE(pref);
|
| - EXPECT_FALSE(pref->IsManaged());
|
| - EXPECT_FALSE(pref->IsDefaultValue());
|
| - EXPECT_TRUE(base::Value::Equals(&recommended_value, pref->GetValue()));
|
| - EXPECT_TRUE(base::Value::Equals(&recommended_value,
|
| - pref->GetRecommendedValue()));
|
| -}
|
| -
|
| -LoginScreenDefaultPolicyInSessionBrowsertest::
|
| - LoginScreenDefaultPolicyInSessionBrowsertest() {
|
| -}
|
| -
|
| -LoginScreenDefaultPolicyInSessionBrowsertest::
|
| - ~LoginScreenDefaultPolicyInSessionBrowsertest() {
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyInSessionBrowsertest::SetUpOnMainThread() {
|
| - LoginScreenDefaultPolicyBrowsertestBase::SetUpOnMainThread();
|
| -
|
| - // Tell the DeviceSettingsService that there is no local owner.
|
| - chromeos::DeviceSettingsService::Get()->SetUsername(std::string());
|
| -}
|
| -
|
| -void LoginScreenDefaultPolicyInSessionBrowsertest::VerifyPrefFollowsDefault(
|
| - const char* pref_name) {
|
| - Profile* profile = ProfileManager::GetDefaultProfile();
|
| - ASSERT_TRUE(profile);
|
| - const PrefService::Preference* pref =
|
| - profile->GetPrefs()->FindPreference(pref_name);
|
| - ASSERT_TRUE(pref);
|
| - EXPECT_FALSE(pref->IsManaged());
|
| - EXPECT_TRUE(pref->IsDefaultValue());
|
| - EXPECT_FALSE(pref->GetRecommendedValue());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest,
|
| - DeviceLoginScreenDefaultLargeCursorEnabled) {
|
| - // Verifies that the default state of the large cursor accessibility feature
|
| - // on the login screen can be controlled through device policy.
|
| -
|
| - // Enable the large cursor through device policy and wait for the change to
|
| - // take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_large_cursor_enabled(true);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kLargeCursorEnabled);
|
| -
|
| - // Verify that the pref which controls the large cursor in the login profile
|
| - // has changed to the policy-supplied default.
|
| - VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled,
|
| - base::FundamentalValue(true));
|
| -
|
| - // Verify that the large cursor is enabled.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - EXPECT_TRUE(accessibility_manager->IsLargeCursorEnabled());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest,
|
| - DeviceLoginScreenDefaultSpokenFeedbackEnabled) {
|
| - // Verifies that the default state of the spoken feedback accessibility
|
| - // feature on the login screen can be controlled through device policy.
|
| -
|
| - // Enable spoken feedback through device policy and wait for the change to
|
| - // take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_spoken_feedback_enabled(true);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kSpokenFeedbackEnabled);
|
| -
|
| - // Verify that the pref which controls spoken feedback in the login profile
|
| - // has changed to the policy-supplied default.
|
| - VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled,
|
| - base::FundamentalValue(true));
|
| -
|
| - // Verify that spoken feedback is enabled.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - EXPECT_TRUE(accessibility_manager->IsSpokenFeedbackEnabled());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest,
|
| - DeviceLoginScreenDefaultHighContrastEnabled) {
|
| - // Verifies that the default state of the high contrast mode accessibility
|
| - // feature on the login screen can be controlled through device policy.
|
| -
|
| - // Enable high contrast mode through device policy and wait for the change to
|
| - // take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_high_contrast_enabled(true);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kHighContrastEnabled);
|
| -
|
| - // Verify that the pref which controls high contrast mode in the login profile
|
| - // has changed to the policy-supplied default.
|
| - VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled,
|
| - base::FundamentalValue(true));
|
| -
|
| - // Verify that high contrast mode is enabled.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - EXPECT_TRUE(accessibility_manager->IsHighContrastEnabled());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest,
|
| - DeviceLoginScreenDefaultScreenMagnifierType) {
|
| - // Verifies that the default screen magnifier type enabled on the login screen
|
| - // can be controlled through device policy.
|
| -
|
| - // Set the screen magnifier type through device policy and wait for the change
|
| - // to take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_screen_magnifier_type(kFullScreenMagnifier);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kScreenMagnifierType);
|
| -
|
| - // Verify that the prefs which control the screen magnifier type have changed
|
| - // to the policy-supplied default.
|
| - VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled,
|
| - base::FundamentalValue(true));
|
| - VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType,
|
| - base::FundamentalValue(ash::MAGNIFIER_FULL));
|
| -
|
| - // Verify that the full-screen magnifier is enabled.
|
| - chromeos::MagnificationManager* magnification_manager =
|
| - chromeos::MagnificationManager::Get();
|
| - ASSERT_TRUE(magnification_manager);
|
| - EXPECT_TRUE(magnification_manager->IsMagnifierEnabled());
|
| - EXPECT_EQ(ash::MAGNIFIER_FULL, magnification_manager->GetMagnifierType());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest,
|
| - DeviceLoginScreenDefaultLargeCursorEnabled) {
|
| - // Verifies that changing the default state of the large cursor accessibility
|
| - // feature on the login screen through policy does not affect its state in a
|
| - // session.
|
| -
|
| - // Enable the large cursor through device policy and wait for the change to
|
| - // take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_large_cursor_enabled(true);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kLargeCursorEnabled);
|
| -
|
| - // Verify that the pref which controls the large cursor in the session is
|
| - // unchanged.
|
| - VerifyPrefFollowsDefault(prefs::kLargeCursorEnabled);
|
| -
|
| - // Verify that the large cursor is disabled.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - EXPECT_FALSE(accessibility_manager->IsLargeCursorEnabled());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest,
|
| - DeviceLoginScreenDefaultSpokenFeedbackEnabled) {
|
| - // Verifies that changing the default state of the spoken feedback
|
| - // accessibility feature on the login screen through policy does not affect
|
| - // its state in a session.
|
| -
|
| - // Enable spoken feedback through device policy and wait for the change to
|
| - // take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_spoken_feedback_enabled(true);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kSpokenFeedbackEnabled);
|
| -
|
| - // Verify that the pref which controls the spoken feedback in the session is
|
| - // unchanged.
|
| - VerifyPrefFollowsDefault(prefs::kSpokenFeedbackEnabled);
|
| -
|
| - // Verify that spoken feedback is disabled.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - EXPECT_FALSE(accessibility_manager->IsSpokenFeedbackEnabled());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest,
|
| - DeviceLoginScreenDefaultHighContrastEnabled) {
|
| - // Verifies that changing the default state of the high contrast mode
|
| - // accessibility feature on the login screen through policy does not affect
|
| - // its state in a session.
|
| -
|
| - // Enable high contrast mode through device policy and wait for the change to
|
| - // take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_high_contrast_enabled(true);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kHighContrastEnabled);
|
| -
|
| - // Verify that the pref which controls high contrast mode in the session is
|
| - // unchanged.
|
| - VerifyPrefFollowsDefault(prefs::kHighContrastEnabled);
|
| -
|
| - // Verify that high contrast mode is disabled.
|
| - chromeos::AccessibilityManager* accessibility_manager =
|
| - chromeos::AccessibilityManager::Get();
|
| - ASSERT_TRUE(accessibility_manager);
|
| - EXPECT_FALSE(accessibility_manager->IsHighContrastEnabled());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest,
|
| - DeviceLoginScreenDefaultScreenMagnifierType) {
|
| - // Verifies that changing the default screen magnifier type enabled on the
|
| - // login screen through policy does not affect its state in a session.
|
| -
|
| - // Set the screen magnifier type through device policy and wait for the change
|
| - // to take effect.
|
| - em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
|
| - proto.mutable_accessibility_settings()->
|
| - set_login_screen_default_screen_magnifier_type(kFullScreenMagnifier);
|
| - RefreshDevicePolicyAndWaitForPrefChange(prefs::kScreenMagnifierType);
|
| -
|
| - // Verify that the prefs which control the screen magnifier in the session are
|
| - // unchanged.
|
| - VerifyPrefFollowsDefault(prefs::kScreenMagnifierEnabled);
|
| - VerifyPrefFollowsDefault(prefs::kScreenMagnifierType);
|
| -
|
| - // Verify that the screen magnifier is disabled.
|
| - chromeos::MagnificationManager* magnification_manager =
|
| - chromeos::MagnificationManager::Get();
|
| - ASSERT_TRUE(magnification_manager);
|
| - EXPECT_FALSE(magnification_manager->IsMagnifierEnabled());
|
| - EXPECT_EQ(ash::kDefaultMagnifierType,
|
| - magnification_manager->GetMagnifierType());
|
| -}
|
| -
|
| -} // namespace policy
|
|
|