• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef PPAPI_PROXY_TALK_RESOURCE_H_
6 #define PPAPI_PROXY_TALK_RESOURCE_H_
7 
8 #include "ppapi/proxy/plugin_resource.h"
9 #include "ppapi/proxy/ppapi_proxy_export.h"
10 #include "ppapi/shared_impl/tracked_callback.h"
11 #include "ppapi/thunk/ppb_talk_private_api.h"
12 
13 namespace ppapi {
14 namespace proxy {
15 
16 class PPAPI_PROXY_EXPORT TalkResource
17     : public PluginResource,
18       public NON_EXPORTED_BASE(thunk::PPB_Talk_Private_API) {
19  public:
20   TalkResource(Connection connection, PP_Instance instance);
21   virtual ~TalkResource();
22 
23   // Resource overrides.
24   thunk::PPB_Talk_Private_API* AsPPB_Talk_Private_API();
25 
26  private:
27   // PPB_Talk_API implementation.
28   virtual int32_t RequestPermission(
29       PP_TalkPermission permission,
30       scoped_refptr<TrackedCallback> callback) OVERRIDE;
31   virtual int32_t StartRemoting(
32       PP_TalkEventCallback event_callback,
33       void* user_data,
34       scoped_refptr<TrackedCallback> callback) OVERRIDE;
35   virtual int32_t StopRemoting(
36       scoped_refptr<TrackedCallback> callback) OVERRIDE;
37 
38   // PluginResource override.
39   virtual void OnReplyReceived(const ResourceMessageReplyParams& params,
40                                const IPC::Message& msg) OVERRIDE;
41 
42   void OnNotifyEvent(const ResourceMessageReplyParams& params,
43                      PP_TalkEvent event);
44   void OnRequestPermissionReply(const ResourceMessageReplyParams& params);
45   void OnStartRemotingReply(const ResourceMessageReplyParams& params);
46   void OnStopRemotingReply(const ResourceMessageReplyParams& params);
47 
48   scoped_refptr<TrackedCallback> permission_callback_;
49   scoped_refptr<TrackedCallback> start_callback_;
50   scoped_refptr<TrackedCallback> stop_callback_;
51   PP_TalkEventCallback event_callback_;
52   void* event_callback_user_data_;
53 
54   DISALLOW_COPY_AND_ASSIGN(TalkResource);
55 };
56 
57 }  // namespace proxy
58 }  // namespace ppapi
59 
60 #endif  // PPAPI_PROXY_TALK_RESOURCE_H_
61