/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" #include "nsIDOMDOMRequest.idl" interface nsIVariant; [scriptable, function, uuid(26673d1a-4af4-470a-ba96-f1f54b1f2052)] interface nsINfcPeerCallback : nsISupports { /** * Callback function used to notify NFC peer events. * * @param event * An event indicating 'PeerReady' or 'PeerLost' * One of NFC_EVENT_PEER_XXXX * * @param sessionToken * SessionToken received from Chrome process */ void peerNotification(in unsigned long event, in DOMString sessionToken); }; [scriptable, uuid(70cac000-7e3c-11e3-baa7-0800200c9a66)] interface nsINfcContentHelper : nsISupports { const long NFC_EVENT_PEER_READY = 0x01; const long NFC_EVENT_PEER_LOST = 0x02; void setSessionToken(in DOMString sessionToken); nsIDOMDOMRequest getDetailsNDEF(in nsIDOMWindow window, in DOMString sessionToken); nsIDOMDOMRequest readNDEF(in nsIDOMWindow window, in DOMString sessionToken); nsIDOMDOMRequest writeNDEF(in nsIDOMWindow window, in nsIVariant records, in DOMString sessionToken); nsIDOMDOMRequest makeReadOnlyNDEF(in nsIDOMWindow window, in DOMString sessionToken); nsIDOMDOMRequest connect(in nsIDOMWindow window, in unsigned long techType, in DOMString sessionToken); nsIDOMDOMRequest close(in nsIDOMWindow window, in DOMString sessionToken); /** * Initiate Send file operation * * @param window * Current window * * @param blob * Raw data of the file to be sent. This object represents a file-like * (nsIDOMFile) object of immutable, raw data. The blob data needs * to be 'object wrapped' before calling this interface. * * @param sessionToken * Current token * * Returns DOMRequest, if initiation of send file operation is successful * then 'onsuccess' is called else 'onerror' */ nsIDOMDOMRequest sendFile(in nsIDOMWindow window, in jsval blob, in DOMString sessionToken); /** * Register the given application id with Chrome process * * @param window * Current window * * @param appId * Application ID to be registered * * @param event * Event to be registered. Either NFC_EVENT_PEER_READY or NFC_EVENT_PEER_LOST * * @param callback * Callback that is used to notify upper layers whenever PeerEvents happen. */ void registerTargetForPeerEvent(in nsIDOMWindow window, in unsigned long appId, in octet event, in nsINfcPeerCallback callback); /** * Unregister the given application id with Chrome process * * @param window * Current window * * @param appId * Application ID to be registered * * @param event * Event to be unregistered. Either NFC_EVENT_PEER_READY or NFC_EVENT_PEER_LOST */ void unregisterTargetForPeerEvent(in nsIDOMWindow window, in unsigned long appId, in octet event); /** * Checks if the given application's id is a registered peer target (with the Chrome process) * * @param window * Current window * * @param appId * Application ID to be updated with Chrome process * * Returns DOMRequest, if appId is registered then 'onsuccess' is called else 'onerror' */ nsIDOMDOMRequest checkP2PRegistration(in nsIDOMWindow window, in unsigned long appId); /** * Notify the Chrome process that user has accepted to share nfc message on P2P UI * * @param window * Current window * * @param appId * Application ID that is capable of handling NFC_EVENT_PEER_READY event */ void notifyUserAcceptedP2P(in nsIDOMWindow window, in unsigned long appId); /** * Notify the status of sendFile operation to Chrome process * * @param window * Current window * * @param status * Status of sendFile operation * (GECKO_NFC_ERROR_SUCCESS, GECKO_NFC_ERROR_GENERIC_FAILURE) * * @param requestId * Request ID of SendFile DOM Request */ void notifySendFileStatus(in nsIDOMWindow window, in octet status, in DOMString requestId); };