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