- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / proxy / network_monitor_resource.h
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_