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 3 // found in the LICENSE file. 4 5 #ifndef PPAPI_PROXY_NETWORK_MONITOR_RESOURCE_H_ 6 #define PPAPI_PROXY_NETWORK_MONITOR_RESOURCE_H_ 7 8 #include <list> 9 10 #include "ppapi/proxy/network_list_resource.h" 11 #include "ppapi/proxy/plugin_resource.h" 12 #include "ppapi/shared_impl/scoped_pp_resource.h" 13 #include "ppapi/thunk/ppb_network_monitor_api.h" 14 15 namespace base { 16 class MessageLoopProxy; 17 } // namespace base 18 19 namespace ppapi { 20 namespace proxy { 21 22 class NetworkMonitorResource : public PluginResource, 23 public thunk::PPB_NetworkMonitor_API { 24 public: 25 explicit NetworkMonitorResource(Connection connection, 26 PP_Instance instance); 27 virtual ~NetworkMonitorResource(); 28 29 // PluginResource overrides. 30 ppapi::thunk::PPB_NetworkMonitor_API* AsPPB_NetworkMonitor_API() OVERRIDE; 31 virtual void OnReplyReceived(const ResourceMessageReplyParams& params, 32 const IPC::Message& msg) OVERRIDE; 33 34 // thunk::PPB_NetworkMonitor_API interface 35 virtual int32_t UpdateNetworkList( 36 PP_Resource* network_list, 37 scoped_refptr<TrackedCallback> callback) OVERRIDE; 38 39 private: 40 // IPC message handlers for the messages received from the browser. 41 void OnPluginMsgNetworkList(const ResourceMessageReplyParams& params, 42 const SerializedNetworkList& list); 43 void OnPluginMsgForbidden(const ResourceMessageReplyParams& params); 44 45 ScopedPPResource current_list_; 46 bool forbidden_; 47 48 // Parameters passed to UpdateNetworkList(). 49 PP_Resource* network_list_; 50 scoped_refptr<TrackedCallback> update_callback_; 51 52 DISALLOW_COPY_AND_ASSIGN(NetworkMonitorResource); 53 }; 54 55 } // namespace proxy 56 } // namespace ppapi 57 58 #endif // PPAPI_PROXY_NETWORK_MONITOR_RESOURCE_H_ 59