kiosk_mode_settings_unittest.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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/device_settings_service.h"
13#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
14#include "chromeos/settings/cros_settings_names.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      : 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  base::MessageLoopForUI message_loop_;
73  content::TestBrowserThread ui_thread_;
74  content::TestBrowserThread file_thread_;
75
76  ScopedTestDeviceSettingsService test_device_settings_service_;
77  ScopedTestCrosSettings test_cros_settings_;
78
79  CrosSettingsProvider* device_settings_provider_;
80  StubCrosSettingsProvider stub_settings_provider_;
81};
82
83TEST_F(KioskModeSettingsTest, DisabledByDefault) {
84  EXPECT_FALSE(KioskModeSettings::Get()->IsKioskModeEnabled());
85}
86
87TEST_F(KioskModeSettingsTest, InstanceAvailable) {
88  EXPECT_TRUE(KioskModeSettings::Get() != NULL);
89  EXPECT_TRUE(KioskModeSettings::Get()->is_initialized());
90}
91
92TEST_F(KioskModeSettingsTest, CheckLogoutTimeoutBounds) {
93  chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
94
95  // Check if we go over max.
96  cros_settings->SetInteger(
97      kIdleLogoutTimeout,
98      KioskModeSettings::kMaxIdleLogoutTimeout + kFudgeInt);
99  ReInitialize();
100  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
101            base::TimeDelta::FromMilliseconds(
102                KioskModeSettings::kMaxIdleLogoutTimeout));
103
104  // Check if we go under min.
105  cros_settings->SetInteger(
106      kIdleLogoutTimeout,
107      KioskModeSettings::kMinIdleLogoutTimeout - kFudgeInt);
108  ReInitialize();
109  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
110            base::TimeDelta::FromMilliseconds(
111                KioskModeSettings::kMinIdleLogoutTimeout));
112
113  // Check if we are between max and min.
114  cros_settings->SetInteger(
115      kIdleLogoutTimeout,
116      KioskModeSettings::kMaxIdleLogoutTimeout - kFudgeInt);
117  ReInitialize();
118  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
119            base::TimeDelta::FromMilliseconds(
120                KioskModeSettings::kMaxIdleLogoutTimeout - kFudgeInt));
121}
122
123TEST_F(KioskModeSettingsTest, CheckLogoutWarningDurationBounds) {
124  chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
125
126  // Check if we go over max.
127  cros_settings->SetInteger(
128      kIdleLogoutWarningDuration,
129      KioskModeSettings::kMaxIdleLogoutWarningDuration + kFudgeInt);
130  ReInitialize();
131  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
132            base::TimeDelta::FromMilliseconds(
133                KioskModeSettings::kMaxIdleLogoutWarningDuration));
134
135  // Check if we go under min.
136  cros_settings->SetInteger(
137      kIdleLogoutWarningDuration,
138      KioskModeSettings::kMinIdleLogoutWarningDuration - kFudgeInt);
139  ReInitialize();
140  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
141            base::TimeDelta::FromMilliseconds(
142                KioskModeSettings::kMinIdleLogoutWarningDuration));
143
144  // Check if we are between max and min.
145  cros_settings->SetInteger(
146      kIdleLogoutWarningDuration,
147      KioskModeSettings::kMaxIdleLogoutWarningDuration - kFudgeInt);
148  ReInitialize();
149  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
150            base::TimeDelta::FromMilliseconds(
151                KioskModeSettings::kMaxIdleLogoutWarningDuration - kFudgeInt));
152}
153
154TEST_F(KioskModeSettingsTest, UnitializedValues) {
155  DisableKioskModeSettings();
156
157  // Time delta initializes to '0' microseconds.
158  EXPECT_LT(KioskModeSettings::Get()->GetScreensaverTimeout(),
159            base::TimeDelta());
160  EXPECT_LT(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
161            base::TimeDelta());
162  EXPECT_LT(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
163            base::TimeDelta());
164}
165
166}  // namespace chromeos
167