| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 "chromeos/dbus/nfc_record_client.h" | 5 #include "chromeos/dbus/nfc_record_client.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
| 9 #include "base/observer_list.h" | 9 #include "base/observer_list.h" |
| 10 #include "chromeos/dbus/nfc_device_client.h" | 10 #include "chromeos/dbus/nfc_device_client.h" |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 // signal for the tags "Records" property, without creating a new object | 179 // signal for the tags "Records" property, without creating a new object |
| 180 // path. Sync the properties of all records here, in case Update objects | 180 // path. Sync the properties of all records here, in case Update objects |
| 181 // doesn't do it. | 181 // doesn't do it. |
| 182 VLOG(1) << "Fetch properties for all records."; | 182 VLOG(1) << "Fetch properties for all records."; |
| 183 object_map->RefreshAllProperties(); | 183 object_map->RefreshAllProperties(); |
| 184 } | 184 } |
| 185 | 185 |
| 186 // nfc_client_helpers::DBusObjectMap::Delegate override. | 186 // nfc_client_helpers::DBusObjectMap::Delegate override. |
| 187 virtual NfcPropertySet* CreateProperties( | 187 virtual NfcPropertySet* CreateProperties( |
| 188 dbus::ObjectProxy* object_proxy) OVERRIDE { | 188 dbus::ObjectProxy* object_proxy) OVERRIDE { |
| 189 return new Properties( | 189 Properties* properties = new Properties( |
| 190 object_proxy, | 190 object_proxy, |
| 191 base::Bind(&NfcRecordClientImpl::OnPropertyChanged, | 191 base::Bind(&NfcRecordClientImpl::OnPropertyChanged, |
| 192 weak_ptr_factory_.GetWeakPtr(), | 192 weak_ptr_factory_.GetWeakPtr(), |
| 193 object_proxy->object_path())); | 193 object_proxy->object_path())); |
| 194 properties->SetAllPropertiesReceivedCallback( |
| 195 base::Bind(&NfcRecordClientImpl::OnPropertiesReceived, |
| 196 weak_ptr_factory_.GetWeakPtr(), |
| 197 object_proxy->object_path())); |
| 198 return properties; |
| 194 } | 199 } |
| 195 | 200 |
| 196 // nfc_client_helpers::DBusObjectMap::Delegate override. | 201 // nfc_client_helpers::DBusObjectMap::Delegate override. |
| 197 virtual void ObjectAdded(const dbus::ObjectPath& object_path) OVERRIDE { | 202 virtual void ObjectAdded(const dbus::ObjectPath& object_path) OVERRIDE { |
| 198 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, | 203 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, |
| 199 RecordAdded(object_path)); | 204 RecordAdded(object_path)); |
| 200 } | 205 } |
| 201 | 206 |
| 202 // nfc_client_helpers::DBusObjectMap::Delegate override. | 207 // nfc_client_helpers::DBusObjectMap::Delegate override. |
| 203 virtual void ObjectRemoved(const dbus::ObjectPath& object_path) OVERRIDE { | 208 virtual void ObjectRemoved(const dbus::ObjectPath& object_path) OVERRIDE { |
| 204 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, | 209 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, |
| 205 RecordRemoved(object_path)); | 210 RecordRemoved(object_path)); |
| 206 } | 211 } |
| 207 | 212 |
| 208 // Called by NfcPropertySet when a property value is changed, either by | 213 // Called by NfcPropertySet when a property value is changed, either by |
| 209 // result of a signal or response to a GetAll() or Get() call. | 214 // result of a signal or response to a GetAll() or Get() call. |
| 210 void OnPropertyChanged(const dbus::ObjectPath& object_path, | 215 void OnPropertyChanged(const dbus::ObjectPath& object_path, |
| 211 const std::string& property_name) { | 216 const std::string& property_name) { |
| 212 VLOG(1) << "Record property changed; Path: " << object_path.value() | 217 VLOG(1) << "Record property changed; Path: " << object_path.value() |
| 213 << " Property: " << property_name; | 218 << " Property: " << property_name; |
| 214 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, | 219 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, |
| 215 RecordPropertyChanged(object_path, property_name)); | 220 RecordPropertyChanged(object_path, property_name)); |
| 216 } | 221 } |
| 217 | 222 |
| 223 // Called by NfcPropertySet when all properties have been processed as a |
| 224 // result of a call to GetAll. |
| 225 void OnPropertiesReceived(const dbus::ObjectPath& object_path) { |
| 226 VLOG(1) << "All record properties received; Path: " << object_path.value(); |
| 227 FOR_EACH_OBSERVER(NfcRecordClient::Observer, observers_, |
| 228 RecordPropertiesReceived(object_path)); |
| 229 } |
| 230 |
| 218 // We maintain a pointer to the bus to be able to request proxies for | 231 // We maintain a pointer to the bus to be able to request proxies for |
| 219 // new NFC records that appear. | 232 // new NFC records that appear. |
| 220 dbus::Bus* bus_; | 233 dbus::Bus* bus_; |
| 221 | 234 |
| 222 // List of observers interested in event notifications. | 235 // List of observers interested in event notifications. |
| 223 ObserverList<NfcRecordClient::Observer> observers_; | 236 ObserverList<NfcRecordClient::Observer> observers_; |
| 224 | 237 |
| 225 // Mapping from object paths to object proxies and properties structures that | 238 // Mapping from object paths to object proxies and properties structures that |
| 226 // were already created by us. Record objects belong to either Tag or Device | 239 // were already created by us. Record objects belong to either Tag or Device |
| 227 // objects. This structure stores a different DBusObjectMap for each known | 240 // objects. This structure stores a different DBusObjectMap for each known |
| (...skipping 17 matching lines...) Expand all Loading... |
| 245 | 258 |
| 246 NfcRecordClient::~NfcRecordClient() { | 259 NfcRecordClient::~NfcRecordClient() { |
| 247 } | 260 } |
| 248 | 261 |
| 249 NfcRecordClient* NfcRecordClient::Create(NfcDeviceClient* device_client, | 262 NfcRecordClient* NfcRecordClient::Create(NfcDeviceClient* device_client, |
| 250 NfcTagClient* tag_client) { | 263 NfcTagClient* tag_client) { |
| 251 return new NfcRecordClientImpl(device_client, tag_client); | 264 return new NfcRecordClientImpl(device_client, tag_client); |
| 252 } | 265 } |
| 253 | 266 |
| 254 } // namespace chromeos | 267 } // namespace chromeos |
| OLD | NEW |