Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.cc

Issue 9701084: Integrate Kiosk Mode with enterprise policies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: yacf Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 <algorithm>
8
9 #include "base/bind.h"
10 #include "base/command_line.h"
11 #include "base/lazy_instance.h"
12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/chromeos/cros_settings.h"
14 #include "chrome/browser/chromeos/cros_settings_names.h"
15 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
16 #include "chrome/browser/policy/cloud_policy_constants.h"
17 #include "chrome/browser/policy/browser_policy_connector.h"
18 #include "chrome/common/chrome_switches.h"
19
20 namespace chromeos {
21
22 static base::LazyInstance<KioskModeSettings> g_kiosk_mode_settings =
23 LAZY_INSTANCE_INITIALIZER;
24
25 bool KioskModeSettings::IsKioskModeEnabled() {
26 if (g_browser_process) {
27 policy::BrowserPolicyConnector* bpc =
28 g_browser_process->browser_policy_connector();
29 if (bpc && policy::DEVICE_MODE_KIOSK == bpc->GetDeviceMode())
30 return true;
31 }
32 // In case we've force-enabled kiosk mode.
33 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableKioskMode))
34 return true;
35
36 return false;
37 }
38
39 // static
40 KioskModeSettings* KioskModeSettings::Get() {
41 return g_kiosk_mode_settings.Pointer();
42 }
43
44 void KioskModeSettings::Initialize(const base::Closure& notify_initialized) {
45 CrosSettings* cros_settings = CrosSettings::Get();
46 if (!cros_settings->PrepareTrustedValues(
47 base::Bind(&KioskModeSettings::Initialize,
48 base::Unretained(this),
49 notify_initialized))) {
50 return;
51 }
52
53 // Ignored till we land the code to pull the screensaver path from the app
54 // packs with the screensaver id.
55 cros_settings->GetString(kScreenSaverExtensionId, &screensaver_id_);
56
57 int screensaver_timeout = 0;
58 int idle_logout_timeout = 0;
59 int idle_logout_warning_duration = 0;
60 cros_settings->GetInteger(kScreenSaverTimeout, &screensaver_timeout);
61 cros_settings->GetInteger(kIdleLogoutTimeout, &idle_logout_timeout);
62 cros_settings->GetInteger(kIdleLogoutWarningDuration,
63 &idle_logout_warning_duration);
64
65 // Restrict idle timeouts to safe values to prevent them from being turned off
66 // or otherwise misused.
67 idle_logout_timeout = std::min(idle_logout_timeout, kMaxIdleLogoutTimeout);
68 idle_logout_timeout = std::max(idle_logout_timeout, kMinIdleLogoutTimeout);
69
70 idle_logout_warning_duration =
71 std::min(idle_logout_warning_duration, kMaxIdleLogoutWarningDuration);
72 idle_logout_warning_duration =
73 std::max(idle_logout_warning_duration, kMinIdleLogoutWarningDuration);
74
75 screensaver_timeout_ = base::TimeDelta::FromMilliseconds(
76 screensaver_timeout);
77 idle_logout_timeout_ =
78 base::TimeDelta::FromMilliseconds(idle_logout_timeout);
79 idle_logout_warning_duration_ =
80 base::TimeDelta::FromMilliseconds(idle_logout_warning_duration);
81
82 is_initialized_ = true;
83 notify_initialized.Run();
84 }
85
86 bool KioskModeSettings::is_initialized() const {
87 return is_initialized_;
88 }
89
90 std::string KioskModeSettings::GetScreensaverPath() const {
91 if (!is_initialized_)
92 return std::string();
93
94 return CommandLine::ForCurrentProcess()->
95 GetSwitchValueASCII(switches::kKioskModeScreensaverPath);
96 }
97
98 base::TimeDelta KioskModeSettings::GetScreensaverTimeout() const {
99 if (!is_initialized_)
100 return base::TimeDelta::FromSeconds(-1);
101
102 return screensaver_timeout_;
103 }
104
105 base::TimeDelta KioskModeSettings::GetIdleLogoutTimeout() const {
106 if (!is_initialized_)
107 return base::TimeDelta::FromSeconds(-1);
108
109 return idle_logout_timeout_;
110 }
111
112 base::TimeDelta KioskModeSettings::GetIdleLogoutWarningDuration() const {
113 if (!is_initialized_)
114 return base::TimeDelta::FromSeconds(-1);
115
116 return idle_logout_warning_duration_;
117 }
118
119 KioskModeSettings::KioskModeSettings() : is_initialized_(false) {
120 }
121
122 KioskModeSettings::~KioskModeSettings() {
123 }
124
125 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698