15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2010 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PPP_CLASS_DEPRECATED_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PPP_CLASS_DEPRECATED_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/dev/deprecated_bool.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Defines the PPP_Class_Deprecated struct.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup PPP
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_Var;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Interface for the plugin to implement JavaScript-accessible objects.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This interface has no interface name. Instead, the plugin passes a pointer
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to this interface to PPB_Var_Deprecated.CreateObject that corresponds to the
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * object being implemented.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See the PPB_Var_Deprecated interface for more information on these functions.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This interface just allows you to implement the "back end" of those
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * functions, so most of the contract is specified in that interface.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   http://code.google.com/p/ppapi/wiki/InterfacingWithJavaScript
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * for general information on using and implementing vars.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPP_Class_Deprecated {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |name| is guaranteed to be an integer or string type var. Exception is
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * guaranteed non-NULL. An integer is used for |name| when implementing
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * array access into the object. This test should only return true for
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * properties that are not methods.  Use HasMethod() to handle methods.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool (*HasProperty)(void* object,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      struct PP_Var name,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      struct PP_Var* exception);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |name| is guaranteed to be a string-type. Exception is guaranteed non-NULL.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * If the method does not exist, return false and don't set the exception.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Errors in this function will probably not occur in general usage, but
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * if you need to throw an exception, still return false.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool (*HasMethod)(void* object,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    struct PP_Var name,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    struct PP_Var* exception);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |name| is guaranteed to be a string-type or an integer-type var. Exception
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * is guaranteed non-NULL. An integer is used for |name| when implementing
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * array access into the object. If the property does not exist, set the
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * exception and return a var of type Void. A property does not exist if
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a call HasProperty() for the same |name| would return false.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Var (*GetProperty)(void* object,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               struct PP_Var name,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               struct PP_Var* exception);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Exception is guaranteed non-NULL.
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This should include all enumerable properties, including methods. Be sure
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to set |*property_count| to 0 and |properties| to NULL in all failure
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * cases, these should never be unset when calling this function. The
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * pointers passed in are guaranteed not to be NULL, so you don't have to
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * NULL check them.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * If you have any properties, allocate the property array with
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * PPB_Core.MemAlloc(sizeof(PP_Var) * property_count) and add a reference
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to each property on behalf of the caller. The caller is responsible for
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Release()ing each var and calling PPB_Core.MemFree on the property pointer.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*GetAllPropertyNames)(void* object,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              uint32_t* property_count,
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              struct PP_Var** properties,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              struct PP_Var* exception);
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |name| is guaranteed to be an integer or string type var. Exception is
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * guaranteed non-NULL.
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*SetProperty)(void* object,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      struct PP_Var name,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      struct PP_Var value,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      struct PP_Var* exception);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |name| is guaranteed to be an integer or string type var. Exception is
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * guaranteed non-NULL.
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*RemoveProperty)(void* object,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         struct PP_Var name,
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         struct PP_Var* exception);
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(brettw) need native array access here.
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |name| is guaranteed to be a string type var. Exception is guaranteed
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * non-NULL
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Var (*Call)(void* object,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        struct PP_Var method_name,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t argc,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        struct PP_Var* argv,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        struct PP_Var* exception);
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** Exception is guaranteed non-NULL. */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Var (*Construct)(void* object,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             uint32_t argc,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             struct PP_Var* argv,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             struct PP_Var* exception);
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Called when the reference count of the object reaches 0. Normally, plugins
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * would free their internal data pointed to by the |object| pointer.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*Deallocate)(void* object);
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * End addtogroup PPP
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PPP_CLASS_DEPRECATED_H_ */
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
136