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 "remoting/host/in_memory_host_config.h" 6 7#include "base/logging.h" 8#include "base/values.h" 9 10namespace remoting { 11 12InMemoryHostConfig::InMemoryHostConfig() 13 : values_(new base::DictionaryValue()) { 14} 15 16InMemoryHostConfig::~InMemoryHostConfig() {} 17 18bool InMemoryHostConfig::GetString(const std::string& path, 19 std::string* out_value) const { 20 DCHECK(CalledOnValidThread()); 21 return values_->GetString(path, out_value); 22} 23 24bool InMemoryHostConfig::GetBoolean(const std::string& path, 25 bool* out_value) const { 26 DCHECK(CalledOnValidThread()); 27 return values_->GetBoolean(path, out_value); 28} 29 30bool InMemoryHostConfig::Save() { 31 // Saving in-memory host config is not supported. 32 NOTREACHED(); 33 return false; 34} 35 36void InMemoryHostConfig::SetString(const std::string& path, 37 const std::string& in_value) { 38 DCHECK(CalledOnValidThread()); 39 values_->SetString(path, in_value); 40} 41 42void InMemoryHostConfig::SetBoolean(const std::string& path, bool in_value) { 43 DCHECK(CalledOnValidThread()); 44 values_->SetBoolean(path, in_value); 45} 46 47bool InMemoryHostConfig::CopyFrom(const base::DictionaryValue* dictionary) { 48 bool result = true; 49 50 for (base::DictionaryValue::Iterator it(*dictionary); !it.IsAtEnd(); 51 it.Advance()) { 52 std::string str_value; 53 bool bool_value; 54 if (it.value().GetAsString(&str_value)) { 55 SetString(it.key(), str_value); 56 } else if (it.value().GetAsBoolean(&bool_value)) { 57 SetBoolean(it.key(), bool_value); 58 } else { 59 result = false; 60 } 61 } 62 63 return result; 64} 65 66} // namespace remoting 67