• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 "chromeos/settings/cros_settings_provider.h"
6 
7 #include "base/command_line.h"
8 #include "base/logging.h"
9 #include "base/strings/string_util.h"
10 #include "base/values.h"
11 #include "chromeos/chromeos_switches.h"
12 
13 namespace chromeos {
14 
CrosSettingsProvider(const NotifyObserversCallback & notify_cb)15 CrosSettingsProvider::CrosSettingsProvider(
16     const NotifyObserversCallback& notify_cb)
17   : notify_cb_(notify_cb) {
18 }
19 
~CrosSettingsProvider()20 CrosSettingsProvider::~CrosSettingsProvider() {
21 }
22 
Set(const std::string & path,const base::Value & value)23 void CrosSettingsProvider::Set(const std::string& path,
24                                const base::Value& value) {
25   // We don't allow changing any of the cros settings without prefix
26   // "cros.session." in the guest mode.
27   // It should not reach here from UI in the guest mode, but just in case.
28   if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession) &&
29       !::StartsWithASCII(path, "cros.session.", true)) {
30     LOG(ERROR) << "Ignoring the guest request to change: " << path;
31     return;
32   }
33   DoSet(path, value);
34 }
35 
NotifyObservers(const std::string & path)36 void CrosSettingsProvider::NotifyObservers(const std::string& path) {
37   if (!notify_cb_.is_null())
38     notify_cb_.Run(path);
39 }
40 
SetNotifyObserversCallback(const NotifyObserversCallback & notify_cb)41 void CrosSettingsProvider::SetNotifyObserversCallback(
42     const NotifyObserversCallback& notify_cb) {
43   notify_cb_ = notify_cb;
44 }
45 
46 };  // namespace chromeos
47