1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string> 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/magnifier/magnifier_constants.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/bind.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/bind_helpers.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/command_line.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/compiler_specific.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/location.h" 149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/prefs/pref_change_registrar.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/prefs/pref_service.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/run_loop.h" 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/values.h" 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/chromeos/accessibility/magnification_manager.h" 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/chromeos/policy/device_policy_builder.h" 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/chromeos/profiles/profile_helper.h" 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/lifetime/application_lifetime.h" 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/profiles/profile.h" 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/profiles/profile_manager.h" 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/common/pref_names.h" 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chromeos/chromeos_switches.h" 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace em = enterprise_management; 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace policy { 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace { 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst em::AccessibilitySettingsProto_ScreenMagnifierType kFullScreenMagnifier = 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::AccessibilitySettingsProto_ScreenMagnifierType_SCREEN_MAGNIFIER_TYPE_FULL; 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Spins the loop until a notification is received from |prefs| that the value 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// of |pref_name| has changed. If the notification is received before Wait() 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// has been called, Wait() returns immediately and no loop is spun. 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass PrefChangeWatcher { 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefChangeWatcher(const char* pref_name, PrefService* prefs); 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void Wait(); 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnPrefChange(); 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool pref_changed_; 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::RunLoop run_loop_; 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefChangeRegistrar registrar_; 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(PrefChangeWatcher); 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPrefChangeWatcher::PrefChangeWatcher(const char* pref_name, 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefService* prefs) 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : pref_changed_(false) { 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch registrar_.Init(prefs); 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch registrar_.Add(pref_name, base::Bind(&PrefChangeWatcher::OnPrefChange, 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::Unretained(this))); 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid PrefChangeWatcher::Wait() { 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!pref_changed_) 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch run_loop_.Run(); 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid PrefChangeWatcher::OnPrefChange() { 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pref_changed_ = true; 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch run_loop_.Quit(); 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass LoginScreenDefaultPolicyBrowsertestBase 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : public DevicePolicyCrosBrowserTest { 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyBrowsertestBase(); 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~LoginScreenDefaultPolicyBrowsertestBase(); 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // DevicePolicyCrosBrowserTest: 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpOnMainThread() OVERRIDE; 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void RefreshDevicePolicyAndWaitForPrefChange(const char* pref_name); 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Profile* login_profile_; 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(LoginScreenDefaultPolicyBrowsertestBase); 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass LoginScreenDefaultPolicyLoginScreenBrowsertest 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : public LoginScreenDefaultPolicyBrowsertestBase { 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyLoginScreenBrowsertest(); 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~LoginScreenDefaultPolicyLoginScreenBrowsertest(); 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // LoginScreenDefaultPolicyBrowsertestBase: 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpOnMainThread() OVERRIDE; 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void TearDownOnMainThread() OVERRIDE; 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void VerifyPrefFollowsRecommendation(const char* pref_name, 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Value& recommended_value); 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(LoginScreenDefaultPolicyLoginScreenBrowsertest); 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass LoginScreenDefaultPolicyInSessionBrowsertest 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : public LoginScreenDefaultPolicyBrowsertestBase { 119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyInSessionBrowsertest(); 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~LoginScreenDefaultPolicyInSessionBrowsertest(); 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // LoginScreenDefaultPolicyBrowsertestBase: 124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUpOnMainThread() OVERRIDE; 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void VerifyPrefFollowsDefault(const char* pref_name); 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(LoginScreenDefaultPolicyInSessionBrowsertest); 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLoginScreenDefaultPolicyBrowsertestBase:: 133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyBrowsertestBase() : login_profile_(NULL) { 134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLoginScreenDefaultPolicyBrowsertestBase:: 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ~LoginScreenDefaultPolicyBrowsertestBase() { 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyBrowsertestBase:: 141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetUpInProcessBrowserTestFixture() { 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch InstallOwnerKey(); 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch MarkAsEnterpriseOwned(); 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture(); 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyBrowsertestBase::SetUpOnMainThread() { 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DevicePolicyCrosBrowserTest::SetUpOnMainThread(); 149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch login_profile_ = chromeos::ProfileHelper::GetSigninProfile(); 150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(login_profile_); 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyBrowsertestBase:: 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RefreshDevicePolicyAndWaitForPrefChange(const char* pref_name) { 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefChangeWatcher watcher(pref_name, login_profile_->GetPrefs()); 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RefreshDevicePolicy(); 157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch watcher.Wait(); 158eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLoginScreenDefaultPolicyLoginScreenBrowsertest:: 161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyLoginScreenBrowsertest() { 162eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 164eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLoginScreenDefaultPolicyLoginScreenBrowsertest:: 165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ~LoginScreenDefaultPolicyLoginScreenBrowsertest() { 166eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 168eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyLoginScreenBrowsertest::SetUpCommandLine( 169eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CommandLine* command_line) { 170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyBrowsertestBase::SetUpCommandLine(command_line); 171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch command_line->AppendSwitch(chromeos::switches::kLoginManager); 172eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests); 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyLoginScreenBrowsertest::SetUpOnMainThread() { 176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyBrowsertestBase::SetUpOnMainThread(); 177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Set the login screen profile. 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch accessibility_manager->SetProfileForTest( 183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::ProfileHelper::GetSigninProfile()); 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::MagnificationManager* magnification_manager = 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::MagnificationManager::Get(); 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(magnification_manager); 188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch magnification_manager->SetProfileForTest( 189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::ProfileHelper::GetSigninProfile()); 190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void LoginScreenDefaultPolicyLoginScreenBrowsertest::TearDownOnMainThread() { 193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::MessageLoop::current()->PostTask(FROM_HERE, 194eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::Bind(&chrome::AttemptExit)); 195eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::RunLoop().RunUntilIdle(); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) LoginScreenDefaultPolicyBrowsertestBase::TearDownOnMainThread(); 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyLoginScreenBrowsertest:: 200eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VerifyPrefFollowsRecommendation(const char* pref_name, 201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Value& recommended_value) { 202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const PrefService::Preference* pref = 203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch login_profile_->GetPrefs()->FindPreference(pref_name); 204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(pref); 205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(pref->IsManaged()); 206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(pref->IsDefaultValue()); 207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(base::Value::Equals(&recommended_value, pref->GetValue())); 208eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(base::Value::Equals(&recommended_value, 209eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pref->GetRecommendedValue())); 210eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 212eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLoginScreenDefaultPolicyInSessionBrowsertest:: 213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyInSessionBrowsertest() { 214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 215eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLoginScreenDefaultPolicyInSessionBrowsertest:: 217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ~LoginScreenDefaultPolicyInSessionBrowsertest() { 218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 219eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyInSessionBrowsertest::SetUpOnMainThread() { 221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LoginScreenDefaultPolicyBrowsertestBase::SetUpOnMainThread(); 222eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 223eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 224eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LoginScreenDefaultPolicyInSessionBrowsertest::VerifyPrefFollowsDefault( 225eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const char* pref_name) { 226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Profile* profile = ProfileManager::GetActiveUserProfile(); 227eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(profile); 228eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const PrefService::Preference* pref = 229eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch profile->GetPrefs()->FindPreference(pref_name); 230eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(pref); 231eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(pref->IsManaged()); 232eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(pref->IsDefaultValue()); 233eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(pref->GetRecommendedValue()); 234eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 235eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 236eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest, 237eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultLargeCursorEnabled) { 238eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that the default state of the large cursor accessibility feature 239eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // on the login screen can be controlled through device policy. 240eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 241eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Enable the large cursor through device policy and wait for the change to 242eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // take effect. 243eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 244eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 245eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_large_cursor_enabled(true); 246f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 247f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityLargeCursorEnabled); 248eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 249eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the pref which controls the large cursor in the login profile 250eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // has changed to the policy-supplied default. 251f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsRecommendation(prefs::kAccessibilityLargeCursorEnabled, 252eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FundamentalValue(true)); 253eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 254eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the large cursor is enabled. 255eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 256eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 257eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 258eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(accessibility_manager->IsLargeCursorEnabled()); 259eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 260eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 261eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest, 262eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultSpokenFeedbackEnabled) { 263eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that the default state of the spoken feedback accessibility 264eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // feature on the login screen can be controlled through device policy. 265eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 266eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Enable spoken feedback through device policy and wait for the change to 267eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // take effect. 268eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 269eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 270eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_spoken_feedback_enabled(true); 271f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 272f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilitySpokenFeedbackEnabled); 273eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 274eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the pref which controls spoken feedback in the login profile 275eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // has changed to the policy-supplied default. 276f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsRecommendation(prefs::kAccessibilitySpokenFeedbackEnabled, 277eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FundamentalValue(true)); 278eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 279eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that spoken feedback is enabled. 280eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 281eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 282eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 283eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(accessibility_manager->IsSpokenFeedbackEnabled()); 284eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 285eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 286eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest, 287eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultHighContrastEnabled) { 288eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that the default state of the high contrast mode accessibility 289eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // feature on the login screen can be controlled through device policy. 290eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 291eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Enable high contrast mode through device policy and wait for the change to 292eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // take effect. 293eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 294eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 295eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_high_contrast_enabled(true); 296f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 297f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityHighContrastEnabled); 298eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 299eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the pref which controls high contrast mode in the login profile 300eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // has changed to the policy-supplied default. 301f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsRecommendation(prefs::kAccessibilityHighContrastEnabled, 302eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FundamentalValue(true)); 303eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 304eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that high contrast mode is enabled. 305eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 306eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 307eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(accessibility_manager->IsHighContrastEnabled()); 309eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 310eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 311eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest, 312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultScreenMagnifierType) { 313eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that the default screen magnifier type enabled on the login screen 314eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // can be controlled through device policy. 315eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 316eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Set the screen magnifier type through device policy and wait for the change 317eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // to take effect. 318eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 319eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 320eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_screen_magnifier_type(kFullScreenMagnifier); 321f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 322f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityScreenMagnifierType); 323eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 324eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the prefs which control the screen magnifier type have changed 325eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // to the policy-supplied default. 326f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsRecommendation(prefs::kAccessibilityScreenMagnifierEnabled, 327eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FundamentalValue(true)); 328f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsRecommendation(prefs::kAccessibilityScreenMagnifierType, 329eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::FundamentalValue(ash::MAGNIFIER_FULL)); 330eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 331eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the full-screen magnifier is enabled. 332eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::MagnificationManager* magnification_manager = 333eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::MagnificationManager::Get(); 334eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(magnification_manager); 335eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(magnification_manager->IsMagnifierEnabled()); 336eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ash::MAGNIFIER_FULL, magnification_manager->GetMagnifierType()); 337eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 338eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 339eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest, 340eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultLargeCursorEnabled) { 341eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that changing the default state of the large cursor accessibility 342eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // feature on the login screen through policy does not affect its state in a 343eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // session. 344eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 345eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Enable the large cursor through device policy and wait for the change to 346eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // take effect. 347eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 348eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 349eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_large_cursor_enabled(true); 350f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 351f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityLargeCursorEnabled); 352eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 353eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the pref which controls the large cursor in the session is 354eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // unchanged. 355f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsDefault(prefs::kAccessibilityLargeCursorEnabled); 356eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 357eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the large cursor is disabled. 358eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 359eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 360eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 361eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(accessibility_manager->IsLargeCursorEnabled()); 362eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 363eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 364eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest, 365eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultSpokenFeedbackEnabled) { 366eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that changing the default state of the spoken feedback 367eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // accessibility feature on the login screen through policy does not affect 368eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // its state in a session. 369eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 370eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Enable spoken feedback through device policy and wait for the change to 371eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // take effect. 372eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 373eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 374eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_spoken_feedback_enabled(true); 375f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 376f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilitySpokenFeedbackEnabled); 377eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 378eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the pref which controls the spoken feedback in the session is 379eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // unchanged. 380f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsDefault(prefs::kAccessibilitySpokenFeedbackEnabled); 381eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 382eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that spoken feedback is disabled. 383eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 384eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 385eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 386eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(accessibility_manager->IsSpokenFeedbackEnabled()); 387eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 388eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 389eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest, 390eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultHighContrastEnabled) { 391eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that changing the default state of the high contrast mode 392eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // accessibility feature on the login screen through policy does not affect 393eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // its state in a session. 394eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 395eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Enable high contrast mode through device policy and wait for the change to 396eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // take effect. 397eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 398eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 399eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_high_contrast_enabled(true); 400f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 401f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityHighContrastEnabled); 402eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 403eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the pref which controls high contrast mode in the session is 404eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // unchanged. 405f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsDefault(prefs::kAccessibilityHighContrastEnabled); 406eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 407eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that high contrast mode is disabled. 408eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager* accessibility_manager = 409eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::AccessibilityManager::Get(); 410eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(accessibility_manager); 411eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(accessibility_manager->IsHighContrastEnabled()); 412eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 413eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 414eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyInSessionBrowsertest, 415eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DeviceLoginScreenDefaultScreenMagnifierType) { 416eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verifies that changing the default screen magnifier type enabled on the 417eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // login screen through policy does not affect its state in a session. 418eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 419eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Set the screen magnifier type through device policy and wait for the change 420eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // to take effect. 421eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 422eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch proto.mutable_accessibility_settings()-> 423eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch set_login_screen_default_screen_magnifier_type(kFullScreenMagnifier); 424f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 425f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityScreenMagnifierType); 426eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 427eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the prefs which control the screen magnifier in the session are 428eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // unchanged. 429f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsDefault(prefs::kAccessibilityScreenMagnifierEnabled); 430f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsDefault(prefs::kAccessibilityScreenMagnifierType); 431eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 432eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Verify that the screen magnifier is disabled. 433eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::MagnificationManager* magnification_manager = 434eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch chromeos::MagnificationManager::Get(); 435eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ASSERT_TRUE(magnification_manager); 436eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(magnification_manager->IsMagnifierEnabled()); 437eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(ash::kDefaultMagnifierType, 438eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch magnification_manager->GetMagnifierType()); 439eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 440eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 4415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(LoginScreenDefaultPolicyLoginScreenBrowsertest, 4425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DeviceLoginScreenDefaultVirtualKeyboardEnabled) { 4435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Verifies that the default state of the on-screen keyboard accessibility 4445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // feature on the login screen can be controlled through device policy. 4455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Enable the on-screen keyboard through device policy and wait for the change 4475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // to take effect. 4485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 4495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) proto.mutable_accessibility_settings()-> 4505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) set_login_screen_default_virtual_keyboard_enabled(true); 451f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RefreshDevicePolicyAndWaitForPrefChange( 452f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kAccessibilityVirtualKeyboardEnabled); 4535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Verify that the pref which controls the on-screen keyboard in the login 4555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // profile has changed to the policy-supplied default. 456f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) VerifyPrefFollowsRecommendation(prefs::kAccessibilityVirtualKeyboardEnabled, 4575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FundamentalValue(true)); 4585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Verify that the on-screen keyboard is enabled. 4605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) chromeos::AccessibilityManager* accessibility_manager = 4615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) chromeos::AccessibilityManager::Get(); 4625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(accessibility_manager); 4635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(accessibility_manager->IsVirtualKeyboardEnabled()); 4645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 4655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 466eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace policy 467