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