- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / cpp / dev / scriptable_object_deprecated.h
1 // Copyright (c) 2010 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_CPP_SCRIPTABLE_OBJECT_DEPRECATED_H_
6 #define PPAPI_CPP_SCRIPTABLE_OBJECT_DEPRECATED_H_
7
8 #include <vector>
9
10 struct PPP_Class_Deprecated;
11
12 namespace pp {
13 class Var;
14 class VarPrivate;
15 }
16
17 namespace pp {
18
19 namespace deprecated {
20
21 // This class allows you to implement objects accessible by JavaScript. Derive
22 // from this class and override the virtual functions you support. pp::Var has
23 // a constructor that takes a pointer to a ScriptableObject for when you want
24 // to convert your custom object to a var.
25 //
26 // Please see the PPB_Core C interface for more information on how to implement
27 // these functions. These functions are the backend implementation for the
28 // functions in PPB_Var, which contains further information.
29 //
30 // Please see:
31 //   http://code.google.com/p/ppapi/wiki/InterfacingWithJavaScript
32 // for a general overview of interfacing with JavaScript.
33 class ScriptableObject {
34  public:
35   ScriptableObject() {}
36   virtual ~ScriptableObject() {}
37
38   // The default implementation returns false.
39   virtual bool HasProperty(const Var& name, Var* exception);
40
41   // The default implementation returns false.
42   virtual bool HasMethod(const Var& name, Var* exception);
43
44   // The default implementation sets an exception that the property doesn't
45   // exist.
46   virtual Var GetProperty(const Var& name, Var* exception);
47
48   // The default implementation returns no properties.
49   virtual void GetAllPropertyNames(std::vector<Var>* properties,
50                                    Var* exception);
51
52   // The default implementation sets an exception that the property can not be
53   // set.
54   virtual void SetProperty(const Var& name,
55                            const Var& value,
56                            Var* exception);
57
58   // The default implementation sets an exception that the method does not
59   // exist.
60   virtual void RemoveProperty(const Var& name,
61                               Var* exception);
62
63   // TODO(brettw) need native array access here.
64
65   // method_name is guaranteed to be either a string or an integer.
66   //
67   // The default implementation sets an exception that the method does not
68   // exist.
69   virtual Var Call(const Var& method_name,
70                    const std::vector<Var>& args,
71                    Var* exception);
72
73   // The default implementation sets an exception that the method does not
74   // exist.
75   virtual Var Construct(const std::vector<Var>& args,
76                         Var* exception);
77
78  private:
79   friend class ::pp::Var;
80   friend class ::pp::VarPrivate;
81   static const PPP_Class_Deprecated* GetClass();
82
83   // Unimplemented, copy and assignment is not allowed.
84   ScriptableObject(const ScriptableObject& other);
85   ScriptableObject& operator=(const ScriptableObject& other);
86 };
87
88 }  // namespace deprecated
89
90 }  // namespace pp
91
92 #endif  // PPAPI_CPP_SCRIPTABLE_OBJECT_DEPRECATED_H_
93