mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1137107
- Part 1: Add NfcRequestType. r=smaug, dimi
From 2c1e87a8e1018f2c1d9f8825e36d1478a8a409bc Mon Sep 17 00:00:00 2001 --- dom/nfc/gonk/Nfc.js | 22 ++++++--- dom/nfc/gonk/NfcGonkMessage.h | 9 ---- dom/nfc/gonk/NfcMessageHandler.cpp | 91 +++++++++++++++++++------------------- dom/nfc/gonk/NfcOptions.h | 2 +- dom/webidl/NfcOptions.webidl | 16 ++++++- 5 files changed, 76 insertions(+), 64 deletions(-)
This commit is contained in:
parent
0ffd109c00
commit
4cf97dac15
@ -81,6 +81,16 @@ const NFC_IPC_MSG_ENTRIES = [
|
||||
"NFC:SetFocusApp"] }
|
||||
];
|
||||
|
||||
// Should be consistent with NfcRequestType defined in NfcOptions.webidl.
|
||||
const NfcRequestType = {
|
||||
CHANGE_RF_STATE: "changeRFState",
|
||||
READ_NDEF: "readNDEF",
|
||||
WRITE_NDEF: "writeNDEF",
|
||||
MAKE_READ_ONLY: "makeReadOnly",
|
||||
FORMAT: "format",
|
||||
TRANSCEIVE: "transceive"
|
||||
};
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
|
||||
"@mozilla.org/parentprocessmessagemanager;1",
|
||||
"nsIMessageBroadcaster");
|
||||
@ -617,23 +627,23 @@ Nfc.prototype = {
|
||||
|
||||
switch (message.name) {
|
||||
case "NFC:ChangeRFState":
|
||||
this.sendToNfcService("changeRFState", message.data);
|
||||
this.sendToNfcService(NfcRequestType.CHANGE_RF_STATE, message.data);
|
||||
break;
|
||||
case "NFC:ReadNDEF":
|
||||
this.sendToNfcService("readNDEF", message.data);
|
||||
this.sendToNfcService(NfcRequestType.READ_NDEF, message.data);
|
||||
break;
|
||||
case "NFC:WriteNDEF":
|
||||
message.data.isP2P = SessionHelper.isP2PSession(message.data.sessionId);
|
||||
this.sendToNfcService("writeNDEF", message.data);
|
||||
this.sendToNfcService(NfcRequestType.WRITE_NDEF, message.data);
|
||||
break;
|
||||
case "NFC:MakeReadOnly":
|
||||
this.sendToNfcService("makeReadOnly", message.data);
|
||||
this.sendToNfcService(NfcRequestType.MAKE_READ_ONLY, message.data);
|
||||
break;
|
||||
case "NFC:Format":
|
||||
this.sendToNfcService("format", message.data);
|
||||
this.sendToNfcService(NfcRequestType.FORMAT, message.data);
|
||||
break;
|
||||
case "NFC:Transceive":
|
||||
this.sendToNfcService("transceive", message.data);
|
||||
this.sendToNfcService(NfcRequestType.TRANSCEIVE, message.data);
|
||||
break;
|
||||
case "NFC:SendFile":
|
||||
// Chrome process is the arbitrator / mediator between
|
||||
|
@ -10,15 +10,6 @@ namespace mozilla {
|
||||
#define NFCD_MAJOR_VERSION 1
|
||||
#define NFCD_MINOR_VERSION 21
|
||||
|
||||
enum NfcRequest {
|
||||
ChangeRFStateReq,
|
||||
ReadNDEFReq,
|
||||
WriteNDEFReq,
|
||||
MakeReadOnlyReq,
|
||||
FormatReq,
|
||||
TransceiveReq,
|
||||
};
|
||||
|
||||
enum NfcResponse {
|
||||
ChangeRFStateRsp,
|
||||
ReadNDEFRsp,
|
||||
|
@ -17,13 +17,6 @@ using namespace android;
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::dom;
|
||||
|
||||
static const char* kChangeRFStateRequest = "changeRFState";
|
||||
static const char* kReadNDEFRequest = "readNDEF";
|
||||
static const char* kWriteNDEFRequest = "writeNDEF";
|
||||
static const char* kMakeReadOnlyRequest = "makeReadOnly";
|
||||
static const char* kFormatRequest = "format";
|
||||
static const char* kTransceiveRequest = "transceive";
|
||||
|
||||
static const char* kChangeRFStateResponse = "ChangeRFStateResponse";
|
||||
static const char* kReadNDEFResponse = "ReadNDEFResponse";
|
||||
static const char* kWriteNDEFResponse = "WriteNDEFResponse";
|
||||
@ -41,23 +34,29 @@ bool
|
||||
NfcMessageHandler::Marshall(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
bool result;
|
||||
const char* type = NS_ConvertUTF16toUTF8(aOptions.mType).get();
|
||||
|
||||
if (!strcmp(type, kChangeRFStateRequest)) {
|
||||
result = ChangeRFStateRequest(aParcel, aOptions);
|
||||
} else if (!strcmp(type, kReadNDEFRequest)) {
|
||||
result = ReadNDEFRequest(aParcel, aOptions);
|
||||
} else if (!strcmp(type, kWriteNDEFRequest)) {
|
||||
result = WriteNDEFRequest(aParcel, aOptions);
|
||||
} else if (!strcmp(type, kMakeReadOnlyRequest)) {
|
||||
result = MakeReadOnlyRequest(aParcel, aOptions);
|
||||
} else if (!strcmp(type, kFormatRequest)) {
|
||||
result = FormatRequest(aParcel, aOptions);
|
||||
} else if (!strcmp(type, kTransceiveRequest)) {
|
||||
result = TransceiveRequest(aParcel, aOptions);
|
||||
} else {
|
||||
result = false;
|
||||
}
|
||||
switch (aOptions.mType) {
|
||||
case NfcRequestType::ChangeRFState:
|
||||
result = ChangeRFStateRequest(aParcel, aOptions);
|
||||
break;
|
||||
case NfcRequestType::ReadNDEF:
|
||||
result = ReadNDEFRequest(aParcel, aOptions);
|
||||
break;
|
||||
case NfcRequestType::WriteNDEF:
|
||||
result = WriteNDEFRequest(aParcel, aOptions);
|
||||
break;
|
||||
case NfcRequestType::MakeReadOnly:
|
||||
result = MakeReadOnlyRequest(aParcel, aOptions);
|
||||
break;
|
||||
case NfcRequestType::Format:
|
||||
result = FormatRequest(aParcel, aOptions);
|
||||
break;
|
||||
case NfcRequestType::Transceive:
|
||||
result = TransceiveRequest(aParcel, aOptions);
|
||||
break;
|
||||
default:
|
||||
result = false;
|
||||
break;
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -157,7 +156,7 @@ NfcMessageHandler::GeneralResponse(const int32_t aResponse, const Parcel& aParce
|
||||
bool
|
||||
NfcMessageHandler::ChangeRFStateRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(NfcRequest::ChangeRFStateReq);
|
||||
aParcel.writeInt32(static_cast<int32_t>(NfcRequestType::ChangeRFState));
|
||||
aParcel.writeInt32(aOptions.mRfState);
|
||||
mRequestIdQueue.AppendElement(aOptions.mRequestId);
|
||||
return true;
|
||||
@ -179,7 +178,7 @@ NfcMessageHandler::ChangeRFStateResponse(const Parcel& aParcel, EventOptions& aO
|
||||
bool
|
||||
NfcMessageHandler::ReadNDEFRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(NfcRequest::ReadNDEFReq);
|
||||
aParcel.writeInt32(static_cast<int32_t>(NfcRequestType::ReadNDEF));
|
||||
aParcel.writeInt32(aOptions.mSessionId);
|
||||
mRequestIdQueue.AppendElement(aOptions.mRequestId);
|
||||
return true;
|
||||
@ -203,6 +202,23 @@ NfcMessageHandler::ReadNDEFResponse(const Parcel& aParcel, EventOptions& aOption
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
NfcMessageHandler::TransceiveRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(static_cast<int32_t>(NfcRequestType::Transceive));
|
||||
aParcel.writeInt32(aOptions.mSessionId);
|
||||
aParcel.writeInt32(aOptions.mTechnology);
|
||||
|
||||
uint32_t length = aOptions.mCommand.Length();
|
||||
aParcel.writeInt32(length);
|
||||
|
||||
void* data = aParcel.writeInplace(length);
|
||||
memcpy(data, aOptions.mCommand.Elements(), length);
|
||||
|
||||
mRequestIdQueue.AppendElement(aOptions.mRequestId);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
NfcMessageHandler::TransceiveResponse(const Parcel& aParcel, EventOptions& aOptions)
|
||||
{
|
||||
@ -224,7 +240,7 @@ NfcMessageHandler::TransceiveResponse(const Parcel& aParcel, EventOptions& aOpti
|
||||
bool
|
||||
NfcMessageHandler::WriteNDEFRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(NfcRequest::WriteNDEFReq);
|
||||
aParcel.writeInt32(static_cast<int32_t>(NfcRequestType::WriteNDEF));
|
||||
aParcel.writeInt32(aOptions.mSessionId);
|
||||
aParcel.writeInt32(aOptions.mIsP2P);
|
||||
WriteNDEFMessage(aParcel, aOptions);
|
||||
@ -235,7 +251,7 @@ NfcMessageHandler::WriteNDEFRequest(Parcel& aParcel, const CommandOptions& aOpti
|
||||
bool
|
||||
NfcMessageHandler::MakeReadOnlyRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(NfcRequest::MakeReadOnlyReq);
|
||||
aParcel.writeInt32(static_cast<int32_t>(NfcRequestType::MakeReadOnly));
|
||||
aParcel.writeInt32(aOptions.mSessionId);
|
||||
mRequestIdQueue.AppendElement(aOptions.mRequestId);
|
||||
return true;
|
||||
@ -244,29 +260,12 @@ NfcMessageHandler::MakeReadOnlyRequest(Parcel& aParcel, const CommandOptions& aO
|
||||
bool
|
||||
NfcMessageHandler::FormatRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(NfcRequest::FormatReq);
|
||||
aParcel.writeInt32(static_cast<int32_t>(NfcRequestType::Format));
|
||||
aParcel.writeInt32(aOptions.mSessionId);
|
||||
mRequestIdQueue.AppendElement(aOptions.mRequestId);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
NfcMessageHandler::TransceiveRequest(Parcel& aParcel, const CommandOptions& aOptions)
|
||||
{
|
||||
aParcel.writeInt32(NfcRequest::TransceiveReq);
|
||||
aParcel.writeInt32(aOptions.mSessionId);
|
||||
aParcel.writeInt32(aOptions.mTechnology);
|
||||
|
||||
uint32_t length = aOptions.mCommand.Length();
|
||||
aParcel.writeInt32(length);
|
||||
|
||||
void* data = aParcel.writeInplace(length);
|
||||
memcpy(data, aOptions.mCommand.Elements(), length);
|
||||
|
||||
mRequestIdQueue.AppendElement(aOptions.mRequestId);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
NfcMessageHandler::InitializeNotification(const Parcel& aParcel, EventOptions& aOptions)
|
||||
{
|
||||
|
@ -83,7 +83,7 @@ struct CommandOptions
|
||||
#undef COPY_OPT_FIELD
|
||||
}
|
||||
|
||||
nsString mType;
|
||||
dom::NfcRequestType mType;
|
||||
int32_t mSessionId;
|
||||
nsString mRequestId;
|
||||
int32_t mRfState;
|
||||
|
@ -8,12 +8,24 @@ enum RFState {
|
||||
"discovery"
|
||||
};
|
||||
|
||||
/**
|
||||
* Type of the Request used in NfcCommandOptions.
|
||||
*/
|
||||
enum NfcRequestType {
|
||||
"changeRFState",
|
||||
"readNDEF",
|
||||
"writeNDEF",
|
||||
"makeReadOnly",
|
||||
"format",
|
||||
"transceive"
|
||||
};
|
||||
|
||||
dictionary NfcCommandOptions
|
||||
{
|
||||
DOMString type = "";
|
||||
required NfcRequestType type;
|
||||
|
||||
long sessionId;
|
||||
DOMString requestId = "";
|
||||
required DOMString requestId;
|
||||
|
||||
RFState rfState;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user