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: ScriptableObject()35 ScriptableObject() {} ~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 94