- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / kiosk_mode / kiosk_mode_settings_unittest.cc
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
18 namespace {
19
20 const int kFudgeInt = 100;
21
22 }
23
24 namespace chromeos {
25
26 class 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
84 TEST_F(KioskModeSettingsTest, DisabledByDefault) {
85   EXPECT_FALSE(KioskModeSettings::Get()->IsKioskModeEnabled());
86 }
87
88 TEST_F(KioskModeSettingsTest, InstanceAvailable) {
89   EXPECT_TRUE(KioskModeSettings::Get() != NULL);
90   EXPECT_TRUE(KioskModeSettings::Get()->is_initialized());
91 }
92
93 TEST_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
124 TEST_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
155 TEST_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