15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_PROXY_PPB_VAR_DEPRECATED_PROXY_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_PROXY_PPB_VAR_DEPRECATED_PROXY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/interface_proxy.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_Var_Deprecated;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace proxy {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVar;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarReceiveInput;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarVectorOutParam;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarVectorReceiveInput;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarOutParam;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SerializedVarReturnValue;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PPB_Var_Deprecated_Proxy : public InterfaceProxy {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit PPB_Var_Deprecated_Proxy(Dispatcher* dispatcher);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PPB_Var_Deprecated_Proxy();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  static const PPB_Var_Deprecated* GetProxyInterface();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // InterfaceProxy implementation.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& msg);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Message handlers.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgAddRefObject(int64 object_id, int* unused);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgReleaseObject(int64 object_id);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgHasProperty(SerializedVarReceiveInput var,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        SerializedVarReceiveInput name,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        SerializedVarOutParam exception,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_Bool* result);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgHasMethodDeprecated(SerializedVarReceiveInput var,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                SerializedVarReceiveInput name,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                SerializedVarOutParam exception,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                PP_Bool* result);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgGetProperty(SerializedVarReceiveInput var,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        SerializedVarReceiveInput name,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        SerializedVarOutParam exception,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        SerializedVarReturnValue result);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgEnumerateProperties(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SerializedVarReceiveInput var,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SerializedVarVectorOutParam props,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SerializedVarOutParam exception);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgSetPropertyDeprecated(SerializedVarReceiveInput var,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  SerializedVarReceiveInput name,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  SerializedVarReceiveInput value,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  SerializedVarOutParam exception);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgDeleteProperty(SerializedVarReceiveInput var,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SerializedVarReceiveInput name,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SerializedVarOutParam exception,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           PP_Bool* result);
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgCall(SerializedVarReceiveInput object,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 SerializedVarReceiveInput this_object,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 SerializedVarReceiveInput method_name,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 SerializedVarVectorReceiveInput arg_vector,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 SerializedVarOutParam exception,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 SerializedVarReturnValue result);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgCallDeprecated(SerializedVarReceiveInput object,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SerializedVarReceiveInput method_name,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SerializedVarVectorReceiveInput arg_vector,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SerializedVarOutParam exception,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SerializedVarReturnValue result);
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgConstruct(SerializedVarReceiveInput var,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      SerializedVarVectorReceiveInput arg_vector,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      SerializedVarOutParam exception,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      SerializedVarReturnValue result);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgIsInstanceOfDeprecated(SerializedVarReceiveInput var,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int64 ppp_class,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int64* ppp_class_data,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   PP_Bool* result);
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMsgCreateObjectDeprecated(PP_Instance instance,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int64 ppp_class,
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int64 ppp_class_data,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   SerializedVarReturnValue result);
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Call in the host for messages that can be reentered.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetAllowPluginReentrancy();
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DoReleaseObject(int64 object_id);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const PPB_Var_Deprecated* ppb_var_impl_;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  base::WeakPtrFactory<PPB_Var_Deprecated_Proxy> task_factory_;
964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PPB_Var_Deprecated_Proxy);
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace proxy
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_PROXY_PPB_VAR_DEPRECATED_PROXY_H_
104