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