/* * Licensed to OMTP Ltd. (OMTP) under one or more contributor license agreements. * See the NOTICE file distributed with this work for additional information regarding * copyright ownership. * * The Reference Implementation (save for such parts of the reference implementation made * available under separate terms and conditions) is made available under the terms of the * Apache License, version 2.0, subject to the condition that any "Works" and "Derivative * Works" used or distributed for commercial purposes must be and remain compliant with the * BONDI specification as promulgated by OMTP in each release. Your implementation of the * Reference Implementation (whether object or source) must maintain these conditions, and * you must notify any recipient of this condition in a conspicuous way. * * You may not use this BONDI Reference Implementation except in compliance with the License. * * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 or at * http://bondi.omtp.org/BONDI-LICENSE-2.0 */ /** * \brief Common BONDI functionality. * * These definitions can be used in all other BONDI modules as dependencies. * \version 1.1 */ module bondi { /** * \brief Array of DOMStrings. */ typedef sequence StringArray; /** * \brief Array of 8-bit unsigned integer values. */ typedef sequence ByteArray; /** * \brief Array of 16-bit signed integer values. */ typedef sequence ShortArray; /** * \brief Array of 32-bit signed integer values. */ typedef sequence LongArray; /** * \brief Array of floating point values. */ typedef sequence FloatArray; /** * \brief Generic Map object. */ typedef Object Map; /** * \brief Generic success callback interface. */ [Callback=FunctionOnly, NoInterfaceObject] interface SuccessCallback { /** * \brief Method invoked when the asynchronous call completes successfully */ void onSuccess(); }; /** * \brief Success callback interface for requestFeature invocations */ [Callback=FunctionOnly, NoInterfaceObject] interface RequestFeatureSuccessCallback { /** * \brief Method invoked upon a succesful requestFeature invocation * * \param ob Object implementing the JavaScript API associated with the requested Feature. */ void onSuccess(in Object ob); }; /** * \brief Generic error callback interface. */ [Callback=FunctionOnly, NoInterfaceObject] interface ErrorCallback { /** * \brief Method invoked when an error occurs * * \param error The error that is raised. */ void onError(in GenericError error); }; /** * \brief Generic error interface. * * */ interface GenericError { /** * \brief 16-bit error code. */ readonly attribute unsigned short code; }; /** * \brief DeviceApiError error interface. * * The error codes must be in the range 10000-19999. */ interface DeviceAPIError : GenericError { /** * \brief Unknown error. */ const unsigned short UNKNOWN_ERROR = 10000; /** * \brief Invalid value was specified as input parameter. */ const unsigned short INVALID_ARGUMENT_ERROR = 10001; /** * \brief The searched value or object was not found. */ const unsigned short NOT_FOUND_ERROR = 10002; /** * \brief Operation is pending. */ const unsigned short PENDING_OPERATION_ERROR = 10003; /** * \brief Input/Output error. */ const unsigned short IO_ERROR = 10004; /** * \brief Not supported error. */ const unsigned short NOT_SUPPORTED_ERROR = 10005; }; /** * \brief Security error interface. * * The error codes must be in the range 20000-29999 */ interface SecurityError : GenericError { const unsigned short PERMISSION_DENIED_ERROR = 20000; }; /** * \brief PendingOperation. * * Interface that is returned by asynchronous operations in order to * provide a cancellation operation. */ interface PendingOperation { /** * \brief Call to cancel the underlying asynchronous operation. * * This call is always successful, i.e. the pending operation i.e. * either cancelled or one of the callback is called. * * \return false if the cancellation did not succeed * either because the pending operation finished already or because * the cancellation cannot succeed due to technical limitations in * the underlying implementation. Consquently the pending operation * completes and depending on the success or failure the appropriate * callbacks will be called. * true if the cancellation did succeed. No callbacks will * be called by the cancelled pending operation. */ boolean cancel(); }; /** * \brief BONDI root API. * bondi root property exists in the global object * \def-api-feature http://bondi.omtp.org/api/bondi.requestfeature */ interface Bondi { /** * \brief Requests a feature. * * This function requests a named feature * asynchronously and returns a pending operation object. * If it succeeds it calls the successCallback and passes in * the object of the requested feature. If it fails it calls * the errorCallback passing in a DeviceAPIError which provides * an error message and error code indicating the nature of the error. * * If the requested feature binds itself to a root namespace * ( for example, "bondi.pim.contact") this will happen prior to the * successCallback being invoked. * * \param successCallback the success callback function * \param errorCallback the error callback function * \param name the feature name IRI * * \return PendingOperation enabling the requester to cancel this request. * * The errorCallback will receive one of the following errors: * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if a malformed * argument has been supplied or a required argument has been omitted. * \throw DeviceAPIError NOT_FOUND_ERROR if the requested feature could not be found. * \throw SecurityError PERMISSION_DENIED_ERROR if the * requested feature is not permitted to load/bind or that * access to a required device capability has been denied. * \throw DeviceAPIError UNKNOWN_ERROR if an error occurred and a pending * operation object can't be returned. */ PendingOperation requestFeature(in RequestFeatureSuccessCallback successCallback, in ErrorCallback errorCallback, in DOMString name) raises(DeviceAPIError, SecurityError); }; interface BondiObject { readonly attribute Bondi bondi; }; Window implements bondiObject; };