Index: chromeos/network/shill_service_observer.cc |
diff --git a/chromeos/network/shill_service_observer.cc b/chromeos/network/shill_service_observer.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ab168b58ee9fb5311c8580bf9debaa3b1eb128d6 |
--- /dev/null |
+++ b/chromeos/network/shill_service_observer.cc |
@@ -0,0 +1,31 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chromeos/network/shill_service_observer.h" |
+ |
+#include "chromeos/dbus/dbus_thread_manager.h" |
+#include "chromeos/dbus/shill_service_client.h" |
+#include "dbus/object_path.h" |
+ |
+namespace chromeos { |
+ |
+ShillServiceObserver::ShillServiceObserver(const std::string& service_path, |
+ const Handler& handler) |
+ : service_path_(service_path), |
+ handler_(handler) { |
+ DBusThreadManager::Get()->GetShillServiceClient()-> |
+ AddPropertyChangedObserver(dbus::ObjectPath(service_path), this); |
+} |
+ |
+ShillServiceObserver::~ShillServiceObserver() { |
+ DBusThreadManager::Get()->GetShillServiceClient()-> |
+ RemovePropertyChangedObserver(dbus::ObjectPath(service_path_), this); |
+} |
+ |
+void ShillServiceObserver::OnPropertyChanged(const std::string& key, |
+ const base::Value& value) { |
+ handler_.Run(service_path_, key, value); |
+} |
+ |
+} // namespace chromeos |