| // 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_ |
| |