Bug 933678 - B2G NFC: Add exposedProps for those objects passed to Gaia. r=dimi

This commit is contained in:
Yoshi Huang 2014-02-20 18:13:40 +08:00
parent c50c5a7897
commit 328762f66a

View File

@ -61,6 +61,17 @@ XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
"@mozilla.org/childprocessmessagemanager;1", "@mozilla.org/childprocessmessagemanager;1",
"nsISyncMessageSender"); "nsISyncMessageSender");
function GetDetailsNDEFResponse(details) {
this.canBeMadeReadOnly = details.canBeMadeReadOnly;
this.isReadOnly = details.isReadOnly;
this.maxSupportedLength = details.maxSupportedLength;
}
GetDetailsNDEFResponse.prototype = {
__exposedProps__ : {canBeMadeReadOnly: 'r',
isReadOnly: 'r',
maxSupportedLength: 'r'}
};
function NfcContentHelper() { function NfcContentHelper() {
this.initDOMRequestHelper(/* aWindow */ null, NFC_IPC_MSG_NAMES); this.initDOMRequestHelper(/* aWindow */ null, NFC_IPC_MSG_NAMES);
Services.obs.addObserver(this, "xpcom-shutdown", false); Services.obs.addObserver(this, "xpcom-shutdown", false);
@ -346,76 +357,64 @@ NfcContentHelper.prototype = {
receiveMessage: function receiveMessage(message) { receiveMessage: function receiveMessage(message) {
debug("Message received: " + JSON.stringify(message)); debug("Message received: " + JSON.stringify(message));
let result = message.json;
let requester = this._requestMap[result.requestId];
if (!requester) {
debug("Response Invalid requestId=" + result.requestId);
return;
}
delete this._requestMap[result.requestId];
if (result.status !== NFC.GECKO_NFC_ERROR_SUCCESS) {
this.fireRequestError(atob(result.requestId), result.status);
return;
}
switch (message.name) { switch (message.name) {
case "NFC:ReadNDEFResponse": case "NFC:ReadNDEFResponse":
this.handleReadNDEFResponse(message.json); this.handleReadNDEFResponse(requester, result);
break;
case "NFC:GetDetailsNDEFResponse":
this.handleGetDetailsNDEFResponse(result);
break; break;
case "NFC:ConnectResponse": // Fall through. case "NFC:ConnectResponse": // Fall through.
case "NFC:CloseResponse": case "NFC:CloseResponse":
case "NFC:WriteNDEFResponse": case "NFC:WriteNDEFResponse":
case "NFC:MakeReadOnlyNDEFResponse": case "NFC:MakeReadOnlyNDEFResponse":
case "NFC:GetDetailsNDEFResponse":
case "NFC:CheckP2PRegistrationResponse": case "NFC:CheckP2PRegistrationResponse":
case "NFC:NotifySendFileStatusResponse": case "NFC:NotifySendFileStatusResponse":
this.handleResponse(message.json); this.fireRequestSuccess(atob(result.requestId), result);
break; break;
case "NFC:PeerEvent": case "NFC:PeerEvent":
let callback = this.peerEventsCallbackMap[message.json.event]; let callback = this.peerEventsCallbackMap[result.event];
if (callback) { if (callback) {
callback.peerNotification(message.json.event, callback.peerNotification(result.event, result.sessionToken);
message.json.sessionToken);
} else { } else {
debug("PeerEvent: No valid callback registered for the event " + debug("PeerEvent: No valid callback registered for the event " +
message.json.event); result.event);
} }
break; break;
} }
}, },
handleReadNDEFResponse: function handleReadNDEFResponse(message) { handleReadNDEFResponse: function handleReadNDEFResponse(requester, result) {
debug("ReadNDEFResponse(" + JSON.stringify(message) + ")"); let requestId = atob(result.requestId);
let requester = this._requestMap[message.requestId]; let ndefMsg = [];
if (!requester) { let records = result.records;
debug("ReadNDEFResponse Invalid requester=" + requester + for (let i = 0; i < records.length; i++) {
" message.sessionToken=" + message.sessionToken); let record = records[i];
return; // Nothing to do in this instance. ndefMsg.push(new requester.MozNDEFRecord(record.tnf,
} record.type,
delete this._requestMap[message.requestId]; record.id,
let records = message.records; record.payload));
let requestId = atob(message.requestId);
if (message.status !== NFC.GECKO_NFC_ERROR_SUCCESS) {
this.fireRequestError(requestId, message.status);
} else {
let ndefMsg = [];
for (let i = 0; i < records.length; i++) {
let record = records[i];
ndefMsg.push(new requester.MozNDEFRecord(record.tnf,
record.type,
record.id,
record.payload));
}
this.fireRequestSuccess(requestId, ndefMsg);
} }
this.fireRequestSuccess(requestId, ndefMsg);
}, },
handleResponse: function handleResponse(message) { handleGetDetailsNDEFResponse: function handleGetDetailsNDEFResponse(result) {
debug("Response(" + JSON.stringify(message) + ")"); let requestId = atob(result.requestId);
let requester = this._requestMap[message.requestId]; let result = new GetDetailsNDEFResponse(result);
if (!requester) { this.fireRequestSuccess(requestId, result);
debug("Response Invalid requester=" + requester +
" message.sessionToken=" + message.sessionToken);
return; // Nothing to do in this instance.
}
delete this._requestMap[message.requestId];
let result = message;
let requestId = atob(message.requestId);
if (message.status !== NFC.GECKO_NFC_ERROR_SUCCESS) {
this.fireRequestError(requestId, result.status);
} else {
this.fireRequestSuccess(requestId, result);
}
}, },
}; };