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_PPB_FLASH_MESSAGE_LOOP_PROXY_H_
6#define PPAPI_PPB_FLASH_MESSAGE_LOOP_PROXY_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/memory/weak_ptr.h"
12#include "ppapi/c/pp_instance.h"
13#include "ppapi/c/pp_resource.h"
14#include "ppapi/proxy/interface_proxy.h"
15
16namespace IPC {
17class Message;
18}
19
20namespace ppapi {
21
22class HostResource;
23
24namespace proxy {
25
26class PPB_Flash_MessageLoop_Proxy
27    : public InterfaceProxy,
28      public base::SupportsWeakPtr<PPB_Flash_MessageLoop_Proxy> {
29 public:
30  explicit PPB_Flash_MessageLoop_Proxy(Dispatcher* dispatcher);
31  virtual ~PPB_Flash_MessageLoop_Proxy();
32
33  static PP_Resource CreateProxyResource(PP_Instance instance);
34
35  // InterfaceProxy implementation.
36  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
37
38  static const ApiID kApiID = API_ID_PPB_FLASH_MESSAGELOOP;
39
40 private:
41  void OnMsgCreate(PP_Instance instance, ppapi::HostResource* resource);
42  void OnMsgRun(const ppapi::HostResource& flash_message_loop,
43                IPC::Message* reply);
44  void OnMsgQuit(const ppapi::HostResource& flash_message_loop);
45
46  void WillQuitSoon(scoped_ptr<IPC::Message> reply_message, int32_t result);
47
48  DISALLOW_COPY_AND_ASSIGN(PPB_Flash_MessageLoop_Proxy);
49};
50
51}  // namespace proxy
52}  // namespace ppapi
53
54#endif  // PPAPI_PPB_FLASH_MESSAGE_LOOP_PROXY_H_
55