Home | History | Annotate | Download | only in settings
      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 
     15 CrosSettingsProvider::CrosSettingsProvider(
     16     const NotifyObserversCallback& notify_cb)
     17   : notify_cb_(notify_cb) {
     18 }
     19 
     20 CrosSettingsProvider::~CrosSettingsProvider() {
     21 }
     22 
     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 
     36 void CrosSettingsProvider::NotifyObservers(const std::string& path) {
     37   if (!notify_cb_.is_null())
     38     notify_cb_.Run(path);
     39 }
     40 
     41 void CrosSettingsProvider::SetNotifyObserversCallback(
     42     const NotifyObserversCallback& notify_cb) {
     43   notify_cb_ = notify_cb;
     44 }
     45 
     46 };  // namespace chromeos
     47