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
10 namespace remoting {
11
InMemoryHostConfig()12 InMemoryHostConfig::InMemoryHostConfig()
13 : values_(new base::DictionaryValue()) {
14 }
15
~InMemoryHostConfig()16 InMemoryHostConfig::~InMemoryHostConfig() {}
17
GetString(const std::string & path,std::string * out_value) const18 bool InMemoryHostConfig::GetString(const std::string& path,
19 std::string* out_value) const {
20 DCHECK(CalledOnValidThread());
21 return values_->GetString(path, out_value);
22 }
23
GetBoolean(const std::string & path,bool * out_value) const24 bool InMemoryHostConfig::GetBoolean(const std::string& path,
25 bool* out_value) const {
26 DCHECK(CalledOnValidThread());
27 return values_->GetBoolean(path, out_value);
28 }
29
Save()30 bool InMemoryHostConfig::Save() {
31 // Saving in-memory host config is not supported.
32 NOTREACHED();
33 return false;
34 }
35
SetString(const std::string & path,const std::string & in_value)36 void InMemoryHostConfig::SetString(const std::string& path,
37 const std::string& in_value) {
38 DCHECK(CalledOnValidThread());
39 values_->SetString(path, in_value);
40 }
41
SetBoolean(const std::string & path,bool in_value)42 void InMemoryHostConfig::SetBoolean(const std::string& path, bool in_value) {
43 DCHECK(CalledOnValidThread());
44 values_->SetBoolean(path, in_value);
45 }
46
CopyFrom(const base::DictionaryValue * dictionary)47 bool 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