Plugin Power Saver: Force SW rendering for peripheral plugins.
[chromium-blink-merge.git] / ppapi / proxy / ppp_class_proxy.h
blobf890b3ddf44ad20fc74dddae58e37fd11225bd31
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.
5 #ifndef PPAPI_PROXY_PPP_CLASS_PROXY_H_
6 #define PPAPI_PROXY_PPP_CLASS_PROXY_H_
8 #include <vector>
10 #include "base/basictypes.h"
11 #include "ppapi/c/pp_instance.h"
12 #include "ppapi/c/pp_var.h"
13 #include "ppapi/proxy/interface_proxy.h"
15 struct PPB_Var_Deprecated;
17 namespace ppapi {
18 namespace proxy {
20 class SerializedVar;
21 class SerializedVarReceiveInput;
22 class SerializedVarVectorReceiveInput;
23 class SerializedVarOutParam;
24 class SerializedVarReturnValue;
26 class PPP_Class_Proxy : public InterfaceProxy {
27 public:
28 // PPP_Class isn't a normal interface that you can query for, so this
29 // constructor doesn't take an interface pointer.
30 explicit PPP_Class_Proxy(Dispatcher* dispatcher);
31 virtual ~PPP_Class_Proxy();
33 // Factory function used for registration (normal code can just use the
34 // constructor).
35 static InterfaceProxy* Create(Dispatcher* dispatcher);
37 // Creates a proxied object in the browser process. This takes the browser's
38 // PPB_Var_Deprecated interface to use to create the object. The class and
39 static PP_Var CreateProxiedObject(const PPB_Var_Deprecated* var,
40 Dispatcher* dispatcher,
41 PP_Instance instance_id,
42 int64 ppp_class,
43 int64 class_data);
45 static PP_Bool IsInstanceOf(const PPB_Var_Deprecated* ppb_var_impl,
46 const PP_Var& var,
47 int64 ppp_class,
48 int64* ppp_class_data);
50 // InterfaceProxy implementation.
51 virtual bool OnMessageReceived(const IPC::Message& msg);
53 private:
54 // IPC message handlers.
55 void OnMsgHasProperty(int64 ppp_class, int64 object,
56 SerializedVarReceiveInput property,
57 SerializedVarOutParam exception,
58 bool* result);
59 void OnMsgHasMethod(int64 ppp_class, int64 object,
60 SerializedVarReceiveInput property,
61 SerializedVarOutParam exception,
62 bool* result);
63 void OnMsgGetProperty(int64 ppp_class, int64 object,
64 SerializedVarReceiveInput property,
65 SerializedVarOutParam exception,
66 SerializedVarReturnValue result);
67 void OnMsgEnumerateProperties(
68 int64 ppp_class, int64 object,
69 std::vector<SerializedVar>* props,
70 SerializedVarOutParam exception);
71 void OnMsgSetProperty(int64 ppp_class, int64 object,
72 SerializedVarReceiveInput property,
73 SerializedVarReceiveInput value,
74 SerializedVarOutParam exception);
75 void OnMsgRemoveProperty(int64 ppp_class, int64 object,
76 SerializedVarReceiveInput property,
77 SerializedVarOutParam exception);
78 void OnMsgCall(int64 ppp_class, int64 object,
79 SerializedVarReceiveInput method_name,
80 SerializedVarVectorReceiveInput arg_vector,
81 SerializedVarOutParam exception,
82 SerializedVarReturnValue result);
83 void OnMsgConstruct(int64 ppp_class, int64 object,
84 SerializedVarVectorReceiveInput arg_vector,
85 SerializedVarOutParam exception,
86 SerializedVarReturnValue result);
87 void OnMsgDeallocate(int64 ppp_class, int64 object);
89 // Returns true if the given class/data points to a plugin-implemented
90 // object. On failure, the exception, if non-NULL, will also be set.
91 bool ValidateUserData(int64 ppp_class, int64 class_data,
92 SerializedVarOutParam* exception);
94 DISALLOW_COPY_AND_ASSIGN(PPP_Class_Proxy);
97 } // namespace proxy
98 } // namespace ppapi
100 #endif // PPAPI_PROXY_PPP_CLASS_PROXY_H_