/* 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, uuid(57fc2998-1058-4fd5-8dd9-0e303218d5fd)] interface nsINfcPeerEventListener : nsISupports { /** * Callback function used to notify peerready. * * @param sessionToken * SessionToken received from Chrome process */ void notifyPeerReady(in DOMString sessionToken); /** * Callback function used to notify peerlost. * * @param sessionToken * SessionToken received from Chrome process */ void notifyPeerLost(in DOMString sessionToken); }; [scriptable, uuid(9a41d969-3375-4933-814e-2da781c8f691)] interface nsINfcContentHelper : nsISupports { const long NFC_EVENT_PEER_READY = 0x01; const long NFC_EVENT_PEER_LOST = 0x02; boolean checkSessionToken(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 peer event listener. * * @param listener An instance of the nsINfcPeerEventListener. */ void registerPeerEventListener(in nsINfcPeerEventListener listener); /** * Register the given application id with Chrome process * * @param window * Current window * * @param appId * Application ID to be registered */ void registerTargetForPeerReady(in nsIDOMWindow window, in unsigned long appId); /** * Unregister the given application id with Chrome process * * @param window * Current window * * @param appId * Application ID to be registered */ void unregisterTargetForPeerReady(in nsIDOMWindow window, in unsigned long appId); /** * 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 * * @param requestId * Request ID of SendFile DOM Request */ void notifySendFileStatus(in nsIDOMWindow window, in octet status, in DOMString requestId); /** * Power on the NFC hardware and start polling for NFC tags or devices. */ nsIDOMDOMRequest startPoll(in nsIDOMWindow window); /** * Stop polling for NFC tags or devices. i.e. enter low power mode. */ nsIDOMDOMRequest stopPoll(in nsIDOMWindow window); /** * Power off the NFC hardware. */ nsIDOMDOMRequest powerOff(in nsIDOMWindow window); };