|  | // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef PPAPI_CPP_DEV_SCRIPTABLE_OBJECT_DEPRECATED_H_ | 
|  | #define PPAPI_CPP_DEV_SCRIPTABLE_OBJECT_DEPRECATED_H_ | 
|  |  | 
|  | #include <vector> | 
|  |  | 
|  | struct PPP_Class_Deprecated; | 
|  |  | 
|  | namespace pp { | 
|  | class Var; | 
|  | class VarPrivate; | 
|  | } | 
|  |  | 
|  | namespace pp { | 
|  |  | 
|  | namespace deprecated { | 
|  |  | 
|  | // This class allows you to implement objects accessible by JavaScript. Derive | 
|  | // from this class and override the virtual functions you support. pp::Var has | 
|  | // a constructor that takes a pointer to a ScriptableObject for when you want | 
|  | // to convert your custom object to a var. | 
|  | // | 
|  | // Please see the PPB_Core C interface for more information on how to implement | 
|  | // these functions. These functions are the backend implementation for the | 
|  | // functions in PPB_Var, which contains further information. | 
|  | // | 
|  | // Please see: | 
|  | //   http://code.google.com/p/ppapi/wiki/InterfacingWithJavaScript | 
|  | // for a general overview of interfacing with JavaScript. | 
|  | class ScriptableObject { | 
|  | public: | 
|  | ScriptableObject() {} | 
|  | virtual ~ScriptableObject() {} | 
|  |  | 
|  | // The default implementation returns false. | 
|  | virtual bool HasProperty(const Var& name, Var* exception); | 
|  |  | 
|  | // The default implementation returns false. | 
|  | virtual bool HasMethod(const Var& name, Var* exception); | 
|  |  | 
|  | // The default implementation sets an exception that the property doesn't | 
|  | // exist. | 
|  | virtual Var GetProperty(const Var& name, Var* exception); | 
|  |  | 
|  | // The default implementation returns no properties. | 
|  | virtual void GetAllPropertyNames(std::vector<Var>* properties, | 
|  | Var* exception); | 
|  |  | 
|  | // The default implementation sets an exception that the property can not be | 
|  | // set. | 
|  | virtual void SetProperty(const Var& name, | 
|  | const Var& value, | 
|  | Var* exception); | 
|  |  | 
|  | // The default implementation sets an exception that the method does not | 
|  | // exist. | 
|  | virtual void RemoveProperty(const Var& name, | 
|  | Var* exception); | 
|  |  | 
|  | // TODO(brettw) need native array access here. | 
|  |  | 
|  | // method_name is guaranteed to be either a string or an integer. | 
|  | // | 
|  | // The default implementation sets an exception that the method does not | 
|  | // exist. | 
|  | virtual Var Call(const Var& method_name, | 
|  | const std::vector<Var>& args, | 
|  | Var* exception); | 
|  |  | 
|  | // The default implementation sets an exception that the method does not | 
|  | // exist. | 
|  | virtual Var Construct(const std::vector<Var>& args, | 
|  | Var* exception); | 
|  |  | 
|  | private: | 
|  | friend class ::pp::Var; | 
|  | friend class ::pp::VarPrivate; | 
|  | static const PPP_Class_Deprecated* GetClass(); | 
|  |  | 
|  | // Unimplemented, copy and assignment is not allowed. | 
|  | ScriptableObject(const ScriptableObject& other); | 
|  | ScriptableObject& operator=(const ScriptableObject& other); | 
|  | }; | 
|  |  | 
|  | }  // namespace deprecated | 
|  |  | 
|  | }  // namespace pp | 
|  |  | 
|  | #endif  // PPAPI_CPP_DEV_SCRIPTABLE_OBJECT_DEPRECATED_H_ | 
|  |  |