Closed Bug 991970 Opened 12 years ago Closed 11 years ago

[B2G][NFC] Support W3C compliant ontagfound, ontaglost

Categories

(Firefox OS Graveyard :: NFC, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(tracking-b2g:backlog)

RESOLVED FIXED
2.1 S8 (7Nov)
tracking-b2g backlog

People

(Reporter: dgarnerlee, Assigned: allstars.chh)

References

Details

(Keywords: dev-doc-needed, Whiteboard: [p=3])

Attachments

(3 files, 10 obsolete files)

4.79 KB, patch
smaug
: review+
Details | Diff | Splinter Review
22.29 KB, patch
allstars.chh
: review+
Details | Diff | Splinter Review
3.46 KB, patch
smaug
: review+
Details | Diff | Splinter Review
See also: https://bugzilla.mozilla.org/show_bug.cgi?id=963533#c5 Investigate and create W3C compliant "ontagfound"/"ontaglost" Currently, they are "nfc-ndef-discovered" and "nfc-tag-discovered" and "nfc-tech-lost" activities. A new system message ("Activity picker" that instead invokes the on<event> callback) and support for getting NFC interface objects in the argument list is needed for this to happen.
Blocks: 948721
Related to: 963533
Depends on: 963533
blocking-b2g: --- → backlog
Assignee: nobody → dgarnerlee
Blocks: 963531
WIP Gaia change: ontagfound with unimplemented ndefmessage.
Perhaps a obvious note: the manifest.webapp specifies the accepted activities, but instead of the registered callback for 'activity', ontagfound/ontaglost will be called instead. Ignoring implementation, the proposed change for compliance is going to be somewhat unnatural, when it works as designed. Feedback is welcome.
Attachment #8422713 - Attachment is obsolete: true
Attachment #8422742 - Attachment is obsolete: true
Attached patch NFC-Demo updates using new API (obsolete) — Splinter Review
Depends on: 1075198
Why does this depend on Bug 1075198? In ontagfound the parameter should be type of MozNFCTag, not Uint8Array.
No longer depends on: 963533
Hi Garner This bug has been filed for a while and no recently update, almost 4 months. Like onpeerfound, we will handle 'how to dispatch event to foregound' to Bug 1082440. So in this bug you can just focus on the 'dispatch ontagfound with a MozNFCTagEvent'. This bug is blocking our plan (Bug 1042851) now also it blocks our following work on MozNFCTag object. Given it already takes 4 months, Please update the status here and provide ETA to finish this. If you don't have any progress, then I'll take this bug because of priority. Thanks
Flags: needinfo?(dgarnerlee)
I'll take another look. The main issue that remains unsolved is the whole "declare a system message/activity handler" in manifest, and then declare another event handler to handle the tag data/event object. It'll work (as in the outdated WIP), just not really good solution. On the other hand, it can solved in a separate bug, and example code supplied until the original callback is simply redundant. For the event handler, it should also contain data as a field (Uint8Array, which isn't supported by the event object code generator), unless we want the data to arrive separately in the message handler callback. I workaround is to just directly implement the event ourselves. This seems to be discouraged in new code. (In reply to Yoshi Huang[:allstars.chh] from comment #9) > Hi Garner > > This bug has been filed for a while and no recently update, almost 4 months. > > Like onpeerfound, we will handle 'how to dispatch event to foregound' to Bug > 1082440. > So in this bug you can just focus on the 'dispatch ontagfound with a > MozNFCTagEvent'. > > This bug is blocking our plan (Bug 1042851) now also it blocks our following > work on MozNFCTag object. > > Given it already takes 4 months, > Please update the status here and provide ETA to finish this. > If you don't have any progress, then I'll take this bug because of priority. > > Thanks
Flags: needinfo?(dgarnerlee)
(In reply to Garner Lee from comment #10) > On the other hand, it can > solved in a separate bug, File anothe bug to address your concern. > For the event handler, it should also contain data as a field (Uint8Array, > which isn't supported by the event object code generator), unless we want > the data to arrive separately in the message handler callback. I workaround > is to just directly implement the event ourselves. This seems to be > discouraged in new code. I think you mean to contain the MozNDEFRecord, not just the payload(Uint8Array) I will try if I can add MozNDEFRecord in thie bug, So in the ontagfound callback it will have evt.tag for the NFCTag object and evt.ndef for the NDEF. Also I still didn't see new WIP patch on this, I'll take this one.
Assignee: dgarnerlee → allstars.chh
Attached patch WIP Part 1: indent to 2 spaces. (obsolete) — Splinter Review
Attachment #8446326 - Attachment is obsolete: true
Attachment #8446328 - Attachment is obsolete: true
Attachment #8446330 - Attachment is obsolete: true
Comment on attachment 8510161 [details] [diff] [review] Part 2: implement ontagfound/lost Review of attachment 8510161 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/nfc/nsINfcContentHelper.idl @@ +41,5 @@ > * > * @param sessionToken > * SessionToken received from Chrome process > */ > + void notifyPeerReady(in DOMString sessionToken); Here and Below I just changed the indent from 3 spaces to 2 spaces.
Attachment #8510161 - Flags: review?(dlee)
I have problems running marionette-webapi now, so I'd complete the test case in Bug 1087928.
Attachment #8510161 - Attachment is obsolete: true
Attachment #8510227 - Flags: review?(dlee)
Comment on attachment 8510227 [details] [diff] [review] Part 2: implement ontagfound/lost Review of attachment 8510227 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/nfc/gonk/Nfc.js @@ +562,5 @@ > } > > SessionHelper.unregisterSession(message.sessionId); > // Do not expose the actual session to the content > delete message.sessionId; If we do not want to expose sessionID to content, maybe we should move this before onPeerLost/onTagLost ::: dom/nfc/nsINfcContentHelper.idl @@ +72,5 @@ > nsIDOMDOMRequest connect(in nsIDOMWindow window, in unsigned long techType, in DOMString sessionToken); > nsIDOMDOMRequest close(in nsIDOMWindow window, in DOMString sessionToken); > > + /** > + * Initiate Send file operation Nits. send ::: dom/nfc/nsNfc.js @@ +200,5 @@ > + > + set ontaglost(handler) { > + this.__DOM_IMPL__.setEventHandler("ontaglost", handler); > + }, > + I would suggest another coding style because we will have many NFC events (taglost,tagfound,peerfound,peerready,peerlost). init: function init(aWindow) { this.defineEventHandlerGetterSetter("onpeerfound"); this.defineEventHandlerGetterSetter("onpeerready"); this.defineEventHandlerGetterSetter("onpeerlost"); this.defineEventHandlerGetterSetter("ontagfound"); this.defineEventHandlerGetterSetter("ontaglost"); }, defineEventHandlerGetterSetter: function(name) { Object.defineProperty(this, name, { get: function() { return this.__DOM_IMPL__.getEventHandler(name); }, set: function(handler) { this.__DOM_IMPL__.setEventHandler(name, handler); } }); }, ::: dom/webidl/MozNFC.webidl @@ +75,5 @@ > + > + /** > + * Ths event will be fired when a NFCTag is detected. > + */ > + attribute EventHandler ontagfound; ontagfound will get MozNFCTagEvent with tag data, should we add [CheckPermissions="nfc-read"] here ? @@ +80,5 @@ > + > + /** > + * This event will be fired if the tag detected in ontagfound has been removed. > + */ > + attribute EventHandler ontaglost; I don't understand why onpeerlost require nfc-write permission. So I am a little bit confused if we also need permission check in ontaglost EventHandler ::: dom/webidl/MozNFCTagEvent.webidl @@ +4,5 @@ > + * You can obtain one at http://mozilla.org/MPL/2.0/. > + */ > + > +[Constructor(DOMString type, optional MozNFCTagEventInit eventInitDict), > + Func="Navigator::HasNFCSupport", AvailableIn="CertifiedApps"] require nfc-write & nfc-read ? @@ +24,5 @@ > +{ > + MozNFCTag? tag = null; > + > + sequence<MozNDEFRecord>? ndefRecords = []; > +}; MozNFCTagEvent should be added to test_all_synthetic_events.html
Attachment #8510227 - Flags: review?(dlee)
Attachment #8510227 - Attachment is obsolete: true
Attachment #8511832 - Flags: review?(dlee)
Attachment #8511832 - Flags: review?(dlee) → review+
Comment on attachment 8511832 [details] [diff] [review] Part 2: implement ontagfound/lost v2. Add r? to smaug for requesting review for: 1. WebIDL changed MozNFC.webidl, and MozNFCTagEvent.webidl. 2. IDL changed in nsINfcContentHelper.idl: the techList in nsINfcTagEvent actually is an array of NFCTechType defined in dom/webidl/MozNFCTag.webidl, I use nsIVariant to represent this. 3. modifying test case in dom/events/test/test_all_synthetic_events.html since I added a MozNFCTagEvent. Thanks
Attachment #8511832 - Flags: review?(bugs)
Comment on attachment 8510160 [details] [diff] [review] Part 1: indent to 2 spaces. fixed indent to 2 spaces.
Attachment #8510160 - Flags: review?(bugs)
Attachment #8510160 - Flags: review?(bugs) → review+
Comment on attachment 8511832 [details] [diff] [review] Part 2: implement ontagfound/lost v2. I wouldn't talk about Chrome process, but either chrome process or parent process. On IRC people said they use 'parent process'.
Attachment #8511832 - Flags: review?(bugs) → review+
s/Chrome/parent/g
Attachment #8511832 - Attachment is obsolete: true
Attachment #8512417 - Flags: review+
Attachment #8512452 - Flags: review?(bugs) → review+
Whiteboard: [p=3]
Target Milestone: --- → 2.1 S8 (7Nov)
blocking-b2g: backlog → ---
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: