pepper_talk_host.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
12fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath// Use of this source code is governed by a BSD-style license that can be
32fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath// found in the LICENSE file.
42fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath
50e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig#ifndef CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TALK_HOST_H_
62fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath#define CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TALK_HOST_H_
70e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
82fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath#include "base/memory/weak_ptr.h"
92fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath#include "ppapi/c/private/ppb_talk_private.h"
10549e2c4a9858a380b03eb6e2ff4861d2c6687d6aDmitry V. Levin#include "ppapi/host/resource_host.h"
11549e2c4a9858a380b03eb6e2ff4861d2c6687d6aDmitry V. Levin#include "ppapi/proxy/resource_message_params.h"
12549e2c4a9858a380b03eb6e2ff4861d2c6687d6aDmitry V. Levin
13549e2c4a9858a380b03eb6e2ff4861d2c6687d6aDmitry V. Levinnamespace content {
14b63256e69bf3f1a74aadb0e14556490bc8f4ef95Denys Vlasenkoclass BrowserPpapiHost;
150e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig}
16b9e897d6aa535651b400d44080e48d88ab708da2Dmitry V. Levin
172fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrathnamespace ppapi {
185273cb7d607e89043a80da36cf13580567c0dcd0Dmitry V. Levinnamespace host {
195273cb7d607e89043a80da36cf13580567c0dcd0Dmitry V. Levinstruct ReplyMessageContext;
202fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath}
212fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath}
220e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
232fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrathnamespace chrome {
242fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath
25f07367954c9b41bf87deba08e79e5bb4c3b72c55Denys Vlasenkoclass PepperTalkHost : public ppapi::host::ResourceHost {
26549e2c4a9858a380b03eb6e2ff4861d2c6687d6aDmitry V. Levin public:
279679296d56e3c0a948b1b4dcce99fd3c9b253a3dNamhyung Kim  PepperTalkHost(content::BrowserPpapiHost* host,
289679296d56e3c0a948b1b4dcce99fd3c9b253a3dNamhyung Kim                 PP_Instance instance,
299679296d56e3c0a948b1b4dcce99fd3c9b253a3dNamhyung Kim                 PP_Resource resource);
300e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  virtual ~PepperTalkHost();
31549e2c4a9858a380b03eb6e2ff4861d2c6687d6aDmitry V. Levin
320e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig private:
332fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath  // ResourceHost override.
342fe7b13b2f893f7647408af98576affe2b9b123dRoland McGrath  virtual int32_t OnResourceMessageReceived(
350e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig      const IPC::Message& msg,
360e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig      ppapi::host::HostMessageContext* context) OVERRIDE;
370e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
380e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  int32_t OnRequestPermission(ppapi::host::HostMessageContext* context,
390e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig                              PP_TalkPermission permission);
400e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  int32_t OnStartRemoting(ppapi::host::HostMessageContext* context);
412c42f32518e43b1e5ccb00c19010a799be6858d4Dmitry V. Levin  int32_t OnStopRemoting(ppapi::host::HostMessageContext* context);
420e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  void OnRemotingStopEvent();
430e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
440e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  void OnRequestPermissionCompleted(ppapi::host::ReplyMessageContext reply);
450e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  void OnStartRemotingCompleted(ppapi::host::ReplyMessageContext reply);
460e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  void OnStopRemotingCompleted(ppapi::host::ReplyMessageContext reply);
47e86f54272c6968a4a0ed2d9c397a6ab3f74d4749Dmitry V. Levin
4899d3e01eefa315999574e205b9c9d65ab01d1b68Denys Vlasenko  base::WeakPtrFactory<PepperTalkHost> weak_factory_;
490e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  content::BrowserPpapiHost* browser_ppapi_host_;
500e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  bool remoting_started_;
510e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
520e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig  DISALLOW_COPY_AND_ASSIGN(PepperTalkHost);
530e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig};
540e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
550e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig}  // namespace chrome
560e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig
57361aac5193045db0ff0d2d0a7a19964793ab1ab7Roland McGrath#endif  // CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_TALK_HOST_H_
580e035502d28ef981636abde3139247e6fb2bfcceMichal Ludvig