Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: chromecast/base/device_capabilities_impl.cc

Issue 1401993002: Refactoring DeviceCapabilities unit test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unregister() does not remove capability. Register() does not take initial value. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromecast/base/device_capabilities_impl.h" 5 #include "chromecast/base/device_capabilities_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "chromecast/base/serializers.h" 9 #include "chromecast/base/serializers.h"
10 10
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 DCHECK(capabilities_str_.get()); 76 DCHECK(capabilities_str_.get());
77 } 77 }
78 78
79 DeviceCapabilitiesImpl::~DeviceCapabilitiesImpl() { 79 DeviceCapabilitiesImpl::~DeviceCapabilitiesImpl() {
80 DCHECK(thread_checker_.CalledOnValidThread()); 80 DCHECK(thread_checker_.CalledOnValidThread());
81 // Make sure that any registered Validators have unregistered at this point 81 // Make sure that any registered Validators have unregistered at this point
82 DCHECK(validator_map_.empty()); 82 DCHECK(validator_map_.empty());
83 } 83 }
84 84
85 void DeviceCapabilitiesImpl::Register(const std::string& key, 85 void DeviceCapabilitiesImpl::Register(const std::string& key,
86 scoped_ptr<base::Value> init_value,
87 Validator* validator) { 86 Validator* validator) {
88 DCHECK(thread_checker_.CalledOnValidThread()); 87 DCHECK(thread_checker_.CalledOnValidThread());
89 DCHECK(IsValidRegisterKey(key)); 88 DCHECK(IsValidRegisterKey(key));
90 DCHECK(init_value.get());
91 DCHECK(validator); 89 DCHECK(validator);
92 90
93 AddValidator(key, validator); 91 bool added = validator_map_.insert(std::make_pair(key, validator)).second;
94 92 // Check that a validator has not already been registered for this key
95 capabilities_->Set(key, init_value.Pass()); 93 DCHECK(added);
96 UpdateStrAndNotifyChanged(key);
97 } 94 }
98 95
99 void DeviceCapabilitiesImpl::Unregister(const std::string& key, 96 void DeviceCapabilitiesImpl::Unregister(const std::string& key,
100 const Validator* validator) { 97 const Validator* validator) {
101 DCHECK(thread_checker_.CalledOnValidThread()); 98 DCHECK(thread_checker_.CalledOnValidThread());
102 auto validator_it = validator_map_.find(key);
103 DCHECK(validator_it != validator_map_.end());
104 // Check that validator being unregistered matches the original for |key|. 99 // Check that validator being unregistered matches the original for |key|.
105 // This prevents managers from accidentally unregistering incorrect 100 // This prevents managers from accidentally unregistering incorrect
106 // validators. 101 // validators.
107 DCHECK_EQ(validator, validator_it->second); 102 DCHECK_EQ(validator, GetValidator(key));
108 validator_map_.erase(validator_it); 103 bool erased = validator_map_.erase(key);
104 DCHECK(erased);
105 }
109 106
110 bool removed = capabilities_->Remove(key, nullptr); 107 DeviceCapabilities::Validator* DeviceCapabilitiesImpl::GetValidator(
111 DCHECK(removed); 108 const std::string& key) const {
112 UpdateStrAndNotifyChanged(key); 109 auto validator_it = validator_map_.find(key);
110 return validator_it == validator_map_.end() ? nullptr : validator_it->second;
113 } 111 }
114 112
115 bool DeviceCapabilitiesImpl::BluetoothSupported() const { 113 bool DeviceCapabilitiesImpl::BluetoothSupported() const {
116 DCHECK(thread_checker_.CalledOnValidThread()); 114 DCHECK(thread_checker_.CalledOnValidThread());
117 bool bluetooth_supported = false; 115 bool bluetooth_supported = false;
118 bool found_key = 116 bool found_key =
119 capabilities_->GetBoolean(kKeyBluetoothSupported, &bluetooth_supported); 117 capabilities_->GetBoolean(kKeyBluetoothSupported, &bluetooth_supported);
120 DCHECK(found_key); 118 DCHECK(found_key);
121 return bluetooth_supported; 119 return bluetooth_supported;
122 } 120 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 GetCapability(path, &cur_value) && cur_value->Equals(new_value.get()); 199 GetCapability(path, &cur_value) && cur_value->Equals(new_value.get());
202 if (capability_unchaged) { 200 if (capability_unchaged) {
203 VLOG(1) << "Ignoring unchanged capability: " << path; 201 VLOG(1) << "Ignoring unchanged capability: " << path;
204 return; 202 return;
205 } 203 }
206 204
207 capabilities_->Set(path, new_value.Pass()); 205 capabilities_->Set(path, new_value.Pass());
208 UpdateStrAndNotifyChanged(path); 206 UpdateStrAndNotifyChanged(path);
209 } 207 }
210 208
211 void DeviceCapabilitiesImpl::AddValidator(const std::string& key,
212 Validator* validator) {
213 DCHECK(validator);
214 bool added = validator_map_.insert(std::make_pair(key, validator)).second;
215 // Check that a validator has not already been registered for this key
216 DCHECK(added);
217 }
218
219 void DeviceCapabilitiesImpl::UpdateStrAndNotifyChanged( 209 void DeviceCapabilitiesImpl::UpdateStrAndNotifyChanged(
220 const std::string& path) { 210 const std::string& path) {
221 // Update capabilities string here since all updates to capabilities must 211 // Update capabilities string here since all updates to capabilities must
222 // ultimately call this method no matter where the update originated from. 212 // ultimately call this method no matter where the update originated from.
223 capabilities_str_ = SerializeToJson(*capabilities_); 213 capabilities_str_ = SerializeToJson(*capabilities_);
224 DCHECK(capabilities_str_.get()); 214 DCHECK(capabilities_str_.get());
225 FOR_EACH_OBSERVER(Observer, observer_list_, OnCapabilitiesChanged(path)); 215 FOR_EACH_OBSERVER(Observer, observer_list_, OnCapabilitiesChanged(path));
226 } 216 }
227 217
228 } // namespace chromecast 218 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/base/device_capabilities_impl.h ('k') | chromecast/base/device_capabilities_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698