1 // Copyright (c) 2012 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.
5 #ifndef PPAPI_PROXY_PPB_NETWORK_MONITOR_PRIVATE_PROXY_H_
6 #define PPAPI_PROXY_PPB_NETWORK_MONITOR_PRIVATE_PROXY_H_
10 #include "base/observer_list_threadsafe.h"
11 #include "ppapi/proxy/interface_proxy.h"
12 #include "ppapi/shared_impl/ppb_network_list_private_shared.h"
13 #include "ppapi/shared_impl/scoped_pp_resource.h"
14 #include "ppapi/thunk/ppb_network_monitor_private_api.h"
17 class MessageLoopProxy
;
23 class PPB_NetworkMonitor_Private_Proxy
: public InterfaceProxy
{
25 explicit PPB_NetworkMonitor_Private_Proxy(Dispatcher
* dispatcher
);
26 virtual ~PPB_NetworkMonitor_Private_Proxy();
28 // Creates n NetworkManager object in the plugin process.
29 static PP_Resource
CreateProxyResource(PP_Instance instance
,
30 PPB_NetworkMonitor_Callback callback
,
33 // InterfaceProxy implementation.
34 virtual bool OnMessageReceived(const IPC::Message
& msg
);
36 static const ApiID kApiID
= API_ID_PPB_NETWORKMANAGER_PRIVATE
;
40 friend class NetworkMonitor
;
42 // IPC message handler for the messages received from the browser.
43 void OnPluginMsgNetworkList(uint32 plugin_dispatcher_id
,
44 const ppapi::NetworkList
& list
);
46 // Called by NetworkMonitor destructor.
47 void OnNetworkMonitorDeleted(NetworkMonitor
* monitor
,
48 PP_Instance instance
);
50 // We use ObserverListThreadSafe because we want to send notifications to the
51 // same thread that created the NetworkMonitor.
52 scoped_refptr
<ObserverListThreadSafe
<NetworkMonitor
> > monitors_
;
55 scoped_refptr
<NetworkListStorage
> current_list_
;
57 DISALLOW_COPY_AND_ASSIGN(PPB_NetworkMonitor_Private_Proxy
);
63 #endif // PPAPI_PROXY_PPB_NETWORK_MONITOR_PRIVATE_PROXY_H_