kiosk_mode_settings_unittest.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 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. 4 5#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" 6 7#include "base/bind.h" 8#include "base/bind_helpers.h" 9#include "base/message_loop.h" 10#include "base/values.h" 11#include "chrome/browser/chromeos/settings/cros_settings.h" 12#include "chrome/browser/chromeos/settings/cros_settings_names.h" 13#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" 14#include "content/public/test/test_browser_thread.h" 15#include "testing/gtest/include/gtest/gtest.h" 16 17namespace { 18 19const int kFudgeInt = 100; 20 21} 22 23namespace chromeos { 24 25class KioskModeSettingsTest : public testing::Test { 26 protected: 27 KioskModeSettingsTest() 28 : message_loop_(MessageLoop::TYPE_UI), 29 ui_thread_(content::BrowserThread::UI, &message_loop_), 30 file_thread_(content::BrowserThread::FILE, &message_loop_) { 31 CrosSettings* cros_settings = CrosSettings::Get(); 32 33 // Remove the real DeviceSettingsProvider and replace it with a stub. 34 device_settings_provider_ = 35 cros_settings->GetProvider(chromeos::kReportDeviceVersionInfo); 36 EXPECT_TRUE(device_settings_provider_ != NULL); 37 EXPECT_TRUE( 38 cros_settings->RemoveSettingsProvider(device_settings_provider_)); 39 cros_settings->AddSettingsProvider(&stub_settings_provider_); 40 } 41 42 virtual ~KioskModeSettingsTest() { 43 // Restore the real DeviceSettingsProvider. 44 CrosSettings* cros_settings = CrosSettings::Get(); 45 EXPECT_TRUE( 46 cros_settings->RemoveSettingsProvider(&stub_settings_provider_)); 47 cros_settings->AddSettingsProvider(device_settings_provider_); 48 } 49 50 virtual void SetUp() OVERRIDE { 51 if (!KioskModeSettings::Get()->is_initialized()) { 52 KioskModeSettings::Get()->Initialize( 53 base::Bind(&KioskModeSettingsTest::SetUp, 54 base::Unretained(this))); 55 return; 56 } 57 } 58 59 virtual void TearDown() OVERRIDE { 60 KioskModeSettings::Get()->set_initialized(false); 61 } 62 63 void ReInitialize() { 64 KioskModeSettings::Get()->set_initialized(false); 65 KioskModeSettings::Get()->Initialize(base::Bind(&base::DoNothing)); 66 } 67 68 void DisableKioskModeSettings() { 69 KioskModeSettings::Get()->set_initialized(false); 70 } 71 72 MessageLoop message_loop_; 73 content::TestBrowserThread ui_thread_; 74 content::TestBrowserThread file_thread_; 75 76 CrosSettingsProvider* device_settings_provider_; 77 StubCrosSettingsProvider stub_settings_provider_; 78}; 79 80TEST_F(KioskModeSettingsTest, DisabledByDefault) { 81 EXPECT_FALSE(KioskModeSettings::Get()->IsKioskModeEnabled()); 82} 83 84TEST_F(KioskModeSettingsTest, InstanceAvailable) { 85 EXPECT_TRUE(KioskModeSettings::Get() != NULL); 86 EXPECT_TRUE(KioskModeSettings::Get()->is_initialized()); 87} 88 89TEST_F(KioskModeSettingsTest, CheckLogoutTimeoutBounds) { 90 chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get(); 91 92 // Check if we go over max. 93 cros_settings->SetInteger( 94 kIdleLogoutTimeout, 95 KioskModeSettings::kMaxIdleLogoutTimeout + kFudgeInt); 96 ReInitialize(); 97 EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(), 98 base::TimeDelta::FromMilliseconds( 99 KioskModeSettings::kMaxIdleLogoutTimeout)); 100 101 // Check if we go under min. 102 cros_settings->SetInteger( 103 kIdleLogoutTimeout, 104 KioskModeSettings::kMinIdleLogoutTimeout - kFudgeInt); 105 ReInitialize(); 106 EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(), 107 base::TimeDelta::FromMilliseconds( 108 KioskModeSettings::kMinIdleLogoutTimeout)); 109 110 // Check if we are between max and min. 111 cros_settings->SetInteger( 112 kIdleLogoutTimeout, 113 KioskModeSettings::kMaxIdleLogoutTimeout - kFudgeInt); 114 ReInitialize(); 115 EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(), 116 base::TimeDelta::FromMilliseconds( 117 KioskModeSettings::kMaxIdleLogoutTimeout - kFudgeInt)); 118} 119 120TEST_F(KioskModeSettingsTest, CheckLogoutWarningDurationBounds) { 121 chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get(); 122 123 // Check if we go over max. 124 cros_settings->SetInteger( 125 kIdleLogoutWarningDuration, 126 KioskModeSettings::kMaxIdleLogoutWarningDuration + kFudgeInt); 127 ReInitialize(); 128 EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(), 129 base::TimeDelta::FromMilliseconds( 130 KioskModeSettings::kMaxIdleLogoutWarningDuration)); 131 132 // Check if we go under min. 133 cros_settings->SetInteger( 134 kIdleLogoutWarningDuration, 135 KioskModeSettings::kMinIdleLogoutWarningDuration - kFudgeInt); 136 ReInitialize(); 137 EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(), 138 base::TimeDelta::FromMilliseconds( 139 KioskModeSettings::kMinIdleLogoutWarningDuration)); 140 141 // Check if we are between max and min. 142 cros_settings->SetInteger( 143 kIdleLogoutWarningDuration, 144 KioskModeSettings::kMaxIdleLogoutWarningDuration - kFudgeInt); 145 ReInitialize(); 146 EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(), 147 base::TimeDelta::FromMilliseconds( 148 KioskModeSettings::kMaxIdleLogoutWarningDuration - kFudgeInt)); 149} 150 151TEST_F(KioskModeSettingsTest, UnitializedValues) { 152 DisableKioskModeSettings(); 153 154 // Time delta initializes to '0' microseconds. 155 EXPECT_LT(KioskModeSettings::Get()->GetScreensaverTimeout(), 156 base::TimeDelta()); 157 EXPECT_LT(KioskModeSettings::Get()->GetIdleLogoutTimeout(), 158 base::TimeDelta()); 159 EXPECT_LT(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(), 160 base::TimeDelta()); 161} 162 163} // namespace chromeos 164