kiosk_mode_settings_unittest.cc revision 9ab5563a3196760eb381d102cbb2bc0f7abc6a50
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/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/device_settings_service.h" 14#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" 15#include "content/public/test/test_browser_thread.h" 16#include "testing/gtest/include/gtest/gtest.h" 17 18namespace { 19 20const int kFudgeInt = 100; 21 22} 23 24namespace chromeos { 25 26class KioskModeSettingsTest : public testing::Test { 27 protected: 28 KioskModeSettingsTest() 29 : message_loop_(base::MessageLoop::TYPE_UI), 30 ui_thread_(content::BrowserThread::UI, &message_loop_), 31 file_thread_(content::BrowserThread::FILE, &message_loop_) { 32 CrosSettings* cros_settings = CrosSettings::Get(); 33 34 // Remove the real DeviceSettingsProvider and replace it with a stub. 35 device_settings_provider_ = 36 cros_settings->GetProvider(chromeos::kReportDeviceVersionInfo); 37 EXPECT_TRUE(device_settings_provider_ != NULL); 38 EXPECT_TRUE( 39 cros_settings->RemoveSettingsProvider(device_settings_provider_)); 40 cros_settings->AddSettingsProvider(&stub_settings_provider_); 41 } 42 43 virtual ~KioskModeSettingsTest() { 44 // Restore the real DeviceSettingsProvider. 45 CrosSettings* cros_settings = CrosSettings::Get(); 46 EXPECT_TRUE( 47 cros_settings->RemoveSettingsProvider(&stub_settings_provider_)); 48 cros_settings->AddSettingsProvider(device_settings_provider_); 49 } 50 51 virtual void SetUp() OVERRIDE { 52 if (!KioskModeSettings::Get()->is_initialized()) { 53 KioskModeSettings::Get()->Initialize( 54 base::Bind(&KioskModeSettingsTest::SetUp, 55 base::Unretained(this))); 56 return; 57 } 58 } 59 60 virtual void TearDown() OVERRIDE { 61 KioskModeSettings::Get()->set_initialized(false); 62 } 63 64 void ReInitialize() { 65 KioskModeSettings::Get()->set_initialized(false); 66 KioskModeSettings::Get()->Initialize(base::Bind(&base::DoNothing)); 67 } 68 69 void DisableKioskModeSettings() { 70 KioskModeSettings::Get()->set_initialized(false); 71 } 72 73 base::MessageLoop message_loop_; 74 content::TestBrowserThread ui_thread_; 75 content::TestBrowserThread file_thread_; 76 77 ScopedTestDeviceSettingsService test_device_settings_service_; 78 ScopedTestCrosSettings test_cros_settings_; 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