- add sources.
[platform/framework/web/crosswalk.git] / src / remoting / host / in_memory_host_config.cc
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
12 InMemoryHostConfig::InMemoryHostConfig()
13     : values_(new base::DictionaryValue()) {
14 }
15
16 InMemoryHostConfig::~InMemoryHostConfig() {}
17
18 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
24 bool InMemoryHostConfig::GetBoolean(const std::string& path,
25                                     bool* out_value) const {
26   DCHECK(CalledOnValidThread());
27   return values_->GetBoolean(path, out_value);
28 }
29
30 bool InMemoryHostConfig::Save() {
31   // Saving in-memory host config is not supported.
32   NOTREACHED();
33   return false;
34 }
35
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
42 void InMemoryHostConfig::SetBoolean(const std::string& path, bool in_value) {
43   DCHECK(CalledOnValidThread());
44   values_->SetBoolean(path, in_value);
45 }
46
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