Pepper_42_C++_interfaces
scriptable_object_deprecated.h
Go to the documentation of this file.
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.
34  public:
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 
virtual Var Call(const Var &method_name, const std::vector< Var > &args, Var *exception)
virtual bool HasMethod(const Var &name, Var *exception)
virtual Var Construct(const std::vector< Var > &args, Var *exception)
virtual void RemoveProperty(const Var &name, Var *exception)
virtual bool HasProperty(const Var &name, Var *exception)
virtual void SetProperty(const Var &name, const Var &value, Var *exception)
A generic type used for passing data types between the module and the page.
Definition: var.h:21
virtual Var GetProperty(const Var &name, Var *exception)
virtual void GetAllPropertyNames(std::vector< Var > *properties, Var *exception)