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