1// Copyright 2014 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_PPP_FIND_PROXY_H_
6#define PPAPI_PROXY_PPP_FIND_PROXY_H_
7
8#include <string>
9
10#include "ppapi/c/private/ppp_find_private.h"
11#include "ppapi/proxy/interface_proxy.h"
12
13namespace ppapi {
14
15namespace proxy {
16
17class PPP_Find_Proxy : public InterfaceProxy {
18 public:
19  explicit PPP_Find_Proxy(Dispatcher* dispatcher);
20  virtual ~PPP_Find_Proxy();
21
22  static const PPP_Find_Private* GetProxyInterface();
23
24  // InterfaceProxy implementation.
25  virtual bool OnMessageReceived(const IPC::Message& msg);
26
27 private:
28  // Message handlers.
29  void OnPluginMsgStartFind(PP_Instance instance,
30                            const std::string& text);
31  void OnPluginMsgSelectFindResult(PP_Instance instance,
32                                   PP_Bool forward);
33  void OnPluginMsgStopFind(PP_Instance instance);
34
35  // When this proxy is in the plugin side, this value caches the interface
36  // pointer so we don't have to retrieve it from the dispatcher each time.
37  // In the host, this value is always NULL.
38  const PPP_Find_Private* ppp_find_;
39
40  DISALLOW_COPY_AND_ASSIGN(PPP_Find_Proxy);
41};
42
43}  // namespace proxy
44}  // namespace ppapi
45
46#endif  // PPAPI_PROXY_PPP_FIND_PROXY_H_
47