mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
Bug 1082440
- B2G NFC: Dispatch NFC events to foreground app. r=yoshi
This commit is contained in:
parent
c1c5575e48
commit
76ea8c7b9f
@ -134,7 +134,7 @@ NfcContentHelper.prototype = {
|
||||
.getService(Ci.nsIXULRuntime)
|
||||
.processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
|
||||
if (inParent) {
|
||||
this._tabId = -1;
|
||||
this._tabId = Ci.nsINfcBrowserAPI.SYSTEM_APP_ID;
|
||||
} else {
|
||||
throw Components.Exception("Can't get tab id in child process",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
|
@ -181,7 +181,7 @@ XPCOMUtils.defineLazyGetter(this, "gMessageManager", function () {
|
||||
this.focusApp = id;
|
||||
} else if (this.focusApp == id){
|
||||
// Set focusApp to null means currently there is no foreground app.
|
||||
this.focusApp = null;
|
||||
this.focusApp = NFC.SYSTEM_APP_ID;
|
||||
}
|
||||
},
|
||||
|
||||
@ -228,27 +228,30 @@ XPCOMUtils.defineLazyGetter(this, "gMessageManager", function () {
|
||||
},
|
||||
|
||||
onTagFound: function onTagFound(message) {
|
||||
let target = this.eventListeners[this.focusApp] ||
|
||||
this.eventListeners[NFC.SYSTEM_APP_ID];
|
||||
|
||||
message.event = NFC.TAG_EVENT_FOUND;
|
||||
for (let id in this.eventListeners) {
|
||||
this.notifyDOMEvent(this.eventListeners[id], message);
|
||||
}
|
||||
|
||||
this.notifyDOMEvent(target, message);
|
||||
|
||||
delete message.event;
|
||||
},
|
||||
|
||||
onTagLost: function onTagLost(sessionToken) {
|
||||
for (let id in this.eventListeners) {
|
||||
this.notifyDOMEvent(this.eventListeners[id],
|
||||
{ event: NFC.TAG_EVENT_LOST,
|
||||
sessionToken: sessionToken });
|
||||
}
|
||||
let target = this.eventListeners[this.focusApp] ||
|
||||
this.eventListeners[NFC.SYSTEM_APP_ID];
|
||||
|
||||
this.notifyDOMEvent(target, { event: NFC.TAG_EVENT_LOST,
|
||||
sessionToken: sessionToken });
|
||||
},
|
||||
|
||||
onPeerEvent: function onPeerEvent(eventType, sessionToken) {
|
||||
for (let id in this.eventListeners) {
|
||||
this.notifyDOMEvent(this.eventListeners[id],
|
||||
{ event: eventType,
|
||||
sessionToken: sessionToken });
|
||||
}
|
||||
let target = this.eventListeners[this.focusApp] ||
|
||||
this.eventListeners[NFC.SYSTEM_APP_ID];
|
||||
|
||||
this.notifyDOMEvent(target, { event: eventType,
|
||||
sessionToken: sessionToken });
|
||||
},
|
||||
|
||||
onRFStateChange: function onRFStateChange(rfState) {
|
||||
|
@ -46,5 +46,8 @@ this.TAG_EVENT_LOST = 0x04;
|
||||
this.PEER_EVENT_FOUND = 0x05;
|
||||
this.RF_EVENT_STATE_CHANGE = 0x06;
|
||||
|
||||
// This value should sync with |SYSTEM_APP_ID| in nsINfcContentHelper.idl
|
||||
this.SYSTEM_APP_ID = -1;
|
||||
|
||||
// Allow this file to be imported via Components.utils.import().
|
||||
this.EXPORTED_SYMBOLS = Object.keys(this);
|
||||
|
@ -102,9 +102,11 @@ interface nsINfcRequestCallback : nsISupports
|
||||
void notifyError(in DOMString errorMsg);
|
||||
};
|
||||
|
||||
[scriptable, uuid(7ae46728-bc42-44bd-8093-bc7563abf52d)]
|
||||
[scriptable, uuid(7ae94107-adc9-4467-ae44-72f9a91f3ee8)]
|
||||
interface nsINfcBrowserAPI : nsISupports
|
||||
{
|
||||
const int32_t SYSTEM_APP_ID = -1;
|
||||
|
||||
void setFocusApp(in uint64_t tabId,
|
||||
in boolean isFocus);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user