summaryrefslogtreecommitdiffstats
path: root/ppapi/utility
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-20 21:39:40 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-20 21:39:40 +0000
commit40dc3b2ba0937cd6709072139228edc6e7940f4d (patch)
treeeb5343efb247fc47913c91605cd582718e980aec /ppapi/utility
parent89457c907830db941455f4838ce4a6a3e3a968a7 (diff)
downloadchromium_src-40dc3b2ba0937cd6709072139228edc6e7940f4d.zip
chromium_src-40dc3b2ba0937cd6709072139228edc6e7940f4d.tar.gz
chromium_src-40dc3b2ba0937cd6709072139228edc6e7940f4d.tar.bz2
Add NetworkListObserver utility class.
BUG=114808 Review URL: http://codereview.chromium.org/9696051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127797 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/utility')
-rw-r--r--ppapi/utility/private/network_list_observer_private.cc34
-rw-r--r--ppapi/utility/private/network_list_observer_private.h42
2 files changed, 76 insertions, 0 deletions
diff --git a/ppapi/utility/private/network_list_observer_private.cc b/ppapi/utility/private/network_list_observer_private.cc
new file mode 100644
index 0000000..f41e81b
--- /dev/null
+++ b/ppapi/utility/private/network_list_observer_private.cc
@@ -0,0 +1,34 @@
+// 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 "ppapi/utility/private/network_list_observer_private.h"
+
+#include "ppapi/cpp/private/network_list_private.h"
+#include "ppapi/cpp/module.h"
+
+namespace pp {
+
+NetworkListObserverPrivate::NetworkListObserverPrivate(
+ const InstanceHandle& instance)
+ : PP_ALLOW_THIS_IN_INITIALIZER_LIST(
+ monitor_(instance,
+ &NetworkListObserverPrivate::NetworkListCallbackHandler,
+ this)) {
+}
+
+NetworkListObserverPrivate::~NetworkListObserverPrivate() {
+}
+
+// static
+void NetworkListObserverPrivate::NetworkListCallbackHandler(
+ void* user_data,
+ PP_Resource list_resource) {
+ NetworkListObserverPrivate* object =
+ static_cast<NetworkListObserverPrivate*>(user_data);
+ NetworkListPrivate list(list_resource);
+ object->OnNetworkListChanged(list);
+ Module::Get()->core()->ReleaseResource(list_resource);
+}
+
+} // namespace pp
diff --git a/ppapi/utility/private/network_list_observer_private.h b/ppapi/utility/private/network_list_observer_private.h
new file mode 100644
index 0000000..22e1e78
--- /dev/null
+++ b/ppapi/utility/private/network_list_observer_private.h
@@ -0,0 +1,42 @@
+// 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.
+
+#ifndef PPAPI_UTILITY_PRIVATE_NETWORK_LIST_OBSERVER_H_
+#define PPAPI_UTILITY_PRIVATE_NETWORK_LIST_OBSERVER_H_
+
+#include "ppapi/cpp/private/network_monitor_private.h"
+
+namespace pp {
+
+class NetworkListPrivate;
+
+/// <code>NetworkListObserver</code> is a wrapper for
+/// <code>pp::NetworkMonitorPrivate</code> that makes it easier to
+/// handle network list update notifications. A child class must
+/// implement the <code>OnNetworkListChanged()</code> method. That
+/// method will be called once after the object is created and then
+/// every time network configuration changes.
+class NetworkListObserverPrivate {
+ public:
+ explicit NetworkListObserverPrivate(const InstanceHandle& instance);
+ virtual ~NetworkListObserverPrivate();
+
+ protected:
+ /// Called once after this object is created and later every time
+ /// network configuration changes. Child classes must implement this
+ /// method.
+ ///
+ /// @param[in] list The current list of network interfaces.
+ virtual void OnNetworkListChanged(const NetworkListPrivate& list) = 0;
+
+ private:
+ static void NetworkListCallbackHandler(void* user_data,
+ PP_Resource list_resource);
+
+ NetworkMonitorPrivate monitor_;
+};
+
+} // namespace pp
+
+#endif // PPAPI_UTILITY_PRIVATE_NETWORK_LIST_OBSERVER_H_