WebAPI/WebNFC
Introduction
Current Status (As to Firefox OS v2.2)
- Gecko b2g-nfc meta bug, bug 860906
- Gecko b2g-secure-element meta bug bug 1044428
- Gaia meta bug, bug 933640
- nfcd meta bug, bug 1044425
- Gonk
- Use a native daemon nfcd which links to native NFC library. nfcd github
- Hardware
- Using Nexus-4/Nexus-5, which uses Broadcom NFC chipset with libnfc-nci library.
- Flame, NXP chipsets with libnfc-nci library.
Security Review (By Paul Theriault and Stephanie Ouillon)
- https://wiki.mozilla.org/Security/Reviews/B2G/WebNFC
- Security Review for WebNFC: bug 749325
- Security Review for NFC Payment: bug 948280
- Security Review for NFC privilege API: bug 1095417
Contributors
- Gecko Engineers: Arno Puder, Garner Lee, Siddartha Pothapragada, Yoshi Huang, Dimi Lee
- Early Contributors: Markus Neubrand, Philipp von Weitershausen
Roadmap
First iteration: NDEF (Firefox OS v1.3)
- meta bug, bug 959692 - (b2g-NFC-1.3) [meta] FxOS v1.3 NFC feature
- Technologies:
- Focus on NDEF standard only for now
- Others (e.g. proprietary MIFARE) to be investigated later.
- Capabilities:
- Read/write NDEF records on tags
- bug 933136 - [Gecko] NFC onpeerready, onpeerlost callbacks
- Implementation:
- See bug 674741
- NDEF-only API is available on MozNFCTag object.
- Discovered NDEF tags are automatically parsed and dispatched to content in the "nfc-manager-tech-discovered" system message.
- navigator.mozNfc only available to a specific privileged content page (cf. WebTelephony, WebSMS).
- For now, content is expected to do filtering and dispatching to handlers e.g. via WebActivity.
- Gonk
- bug 906579 - B2G NFC: NFC Daemon for supporting libnfc-nci
- Hardware
- Using Nexus-4, which uses Broadcom NFC chipset with libnfc-nci library.
Second iteration: Handover and other bug fixes (Firefox OS v1.4)
- meta bug : bug 949293 - (b2g-NFC-1.4) [meta] FxOS v1.4 NFC feature
- Capabilities:
- bug 933093 NFC handover.
- bug 916863 - [NFC] NFC support in emulator
- NFC Manager API
- bug 952217 - [B2G][NFC] Have a separate NFC application API and NFC Manager API
- bug 959437 - Refactor NfcManager APIs and implementation details to support sendFile , notifyUserAcceptedP2P and other privileged Nfc operations
Third iteration: NFC Sharing feature, P2P, emulator support, test cases (Firefox OS v2.0)
- meta bug : bug 949293 - (b2g-NFC-2.0) [meta] FxOS v2.0 NFC feature
- NFC emulator: bug 973133
- More Gaia unit tests for NFC in apps/system/test/unit/
Fourth iteration: HCI transaction event (Firefox OS v2.1)
Fifth iteration: Secure Element (Firefox OS v2.2)
- bug 1044428 b2g-secure-element
- bug 879861 - NFC Secure Element Support
- bug 1042851 - (b2g-nfc-privilege) (meta) [NFC] Make NFC APIs available to privileged webapps
Current API
Check DXR for latest NFC IDL
- MozNDEFRecord.webidl
- MozNFC.webidl
- MozNFCPeer.webidl
- MozNFCPeerEvent.webidl
- MozNFCTag.webidl
- MozNFCTagEvent.webidl
Usage of APIs
https://developer.mozilla.org/en-US/docs/Web/API/NFC_API
Application Permissions
NFC API has three permissions.
- nfc, which will be used by privileged applications.
- nfc-share, which will be used by ceritified(internal) applications.
- nfc-manager', which will be used by System app.
nfc permission could be used for general tag reading/writing, or sending NDEF to NFC Peer. nfc-share could be used to send large file (Blob) to another NFC peer. nfc-manager is used to control the RF state of NFC hardware.
Application Dispatch Order
Dispatch priority is handled by the NFC Manager. In the numbered list below, a low number indicates higher priority. It generally dispatches according to the NFC technology type, and then the NDEF NDEF.TNF field, and the NDEF Record type field. If an activity is to be launched, it will display a activity list if there is more than one match.
1) Foreground App, if the callback onforegrounddispatch is set. 2) P2P Handover Types (BT transfers, WiFi direct connection, etc.) 3) All other matches.
In #3, unknown tags are dispatched as a "nfc-tag-discovered" activity.
NFC on B2G emulator
- See Kami's notes : https://bitbucket.org/kamituel/b2g-notepad/wiki/Using%20emulator
NFC Resources
Reference
- Introduction to NFC: http://www.adafruit.com/datasheets/Introduction_to_NFC_v1_0_en.pdf
- NDEF specification: NFCForum-TS-NDEF_1.0.pdf
- Understand NDEF messages : http://developer.nokia.com/Community/Wiki/Inside_NFC:_Understanding_NDEF_message
- NFC forum specifications: http://members.nfc-forum.org/specs/
- Handover specification: NFCForum-TS-ConnectionHandover_1_2.pdf