diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-20 21:39:40 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-20 21:39:40 +0000 |
commit | 40dc3b2ba0937cd6709072139228edc6e7940f4d (patch) | |
tree | eb5343efb247fc47913c91605cd582718e980aec /ppapi/utility | |
parent | 89457c907830db941455f4838ce4a6a3e3a968a7 (diff) | |
download | chromium_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.cc | 34 | ||||
-rw-r--r-- | ppapi/utility/private/network_list_observer_private.h | 42 |
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_ |