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