Bug 1139830 - Make type/id/payload nullable in MozNDEFRecordOptions. r=smaug

This commit is contained in:
Yoshi Huang 2015-03-06 16:23:21 +08:00
Родитель 38c3210ae5
Коммит 642ea0f3ee
5 изменённых файлов: 27 добавлений и 24 удалений

Просмотреть файл

@ -250,13 +250,13 @@ MozNDEFRecord::ReadStructuredClone(JSContext* aCx, JSStructuredCloneReader* aRea
}
void
MozNDEFRecord::InitType(JSContext* aCx, const Optional<Uint8Array>& aType)
MozNDEFRecord::InitType(JSContext* aCx, const Optional<Nullable<Uint8Array>>& aType)
{
if (!aType.WasPassed()) {
if (!aType.WasPassed() || aType.Value().IsNull()) {
return;
}
const Uint8Array& type = aType.Value();
const Uint8Array& type = aType.Value().Value();
type.ComputeLengthAndData();
mType = Uint8Array::Create(aCx, this, type.Length(), type.Data());
IncSize(type.Length());
@ -279,13 +279,13 @@ MozNDEFRecord::InitType(JSContext* aCx, JSObject& aType, uint32_t aLen)
}
void
MozNDEFRecord::InitId(JSContext* aCx, const Optional<Uint8Array>& aId)
MozNDEFRecord::InitId(JSContext* aCx, const Optional<Nullable<Uint8Array>>& aId)
{
if (!aId.WasPassed()) {
if (!aId.WasPassed() || aId.Value().IsNull()) {
return;
}
const Uint8Array& id = aId.Value();
const Uint8Array& id = aId.Value().Value();
id.ComputeLengthAndData();
mId = Uint8Array::Create(aCx, this, id.Length(), id.Data());
IncSize(1 /* id_length */ + id.Length());
@ -299,13 +299,13 @@ MozNDEFRecord::InitId(JSContext* aCx, JSObject& aId, uint32_t aLen)
}
void
MozNDEFRecord::InitPayload(JSContext* aCx, const Optional<Uint8Array>& aPayload)
MozNDEFRecord::InitPayload(JSContext* aCx, const Optional<Nullable<Uint8Array>>& aPayload)
{
if (!aPayload.WasPassed()) {
if (!aPayload.WasPassed() || aPayload.Value().IsNull()) {
return;
}
const Uint8Array& payload = aPayload.Value();
const Uint8Array& payload = aPayload.Value().Value();
payload.ComputeLengthAndData();
mPayload = Uint8Array::Create(aCx, this, payload.Length(), payload.Data());
IncSizeForPayload(payload.Length());

Просмотреть файл

@ -103,12 +103,12 @@ private:
nsRefPtr<nsISupports> mParent;
void HoldData();
void DropData();
void InitType(JSContext* aCx, const Optional<Uint8Array>& aType);
void InitType(JSContext* aCx, const Optional<Nullable<Uint8Array>>& aType);
void InitType(JSContext* aCx, const RTD rtd);
void InitType(JSContext* aCx, JSObject& aType, uint32_t aLen);
void InitId(JSContext* aCx, const Optional<Uint8Array>& aId);
void InitId(JSContext* aCx, const Optional<Nullable<Uint8Array>>& aId);
void InitId(JSContext* aCx, JSObject& aId, uint32_t aLen);
void InitPayload(JSContext* aCx, const Optional<Uint8Array>& aPayload);
void InitPayload(JSContext* aCx, const Optional<Nullable<Uint8Array>>& aPayload);
void InitPayload(JSContext* aCx, const nsAString& aUri);
void InitPayload(JSContext* aCx, JSObject& aPayload, uint32_t aLen);
void IncSize(uint32_t aCount);

Просмотреть файл

@ -58,20 +58,23 @@ struct CommandOptions
NDEFRecordStruct record;
record.mTnf = currentValue[i].mTnf;
if (currentValue[i].mType.WasPassed()) {
const dom::Uint8Array& type = currentValue[i].mType.Value();
if (currentValue[i].mType.WasPassed() &&
!currentValue[i].mType.Value().IsNull()) {
const dom::Uint8Array& type = currentValue[i].mType.Value().Value();
type.ComputeLengthAndData();
record.mType.AppendElements(type.Data(), type.Length());
}
if (currentValue[i].mId.WasPassed()) {
const dom::Uint8Array& id = currentValue[i].mId.Value();
if (currentValue[i].mId.WasPassed() &&
!currentValue[i].mId.Value().IsNull()) {
const dom::Uint8Array& id = currentValue[i].mId.Value().Value();
id.ComputeLengthAndData();
record.mId.AppendElements(id.Data(), id.Length());
}
if (currentValue[i].mPayload.WasPassed()) {
const dom::Uint8Array& payload = currentValue[i].mPayload.Value();
if (currentValue[i].mPayload.WasPassed() &&
!currentValue[i].mPayload.Value().IsNull()) {
const dom::Uint8Array& payload = currentValue[i].mPayload.Value().Value();
payload.ComputeLengthAndData();
record.mPayload.AppendElements(payload.Data(), payload.Length());
}

Просмотреть файл

@ -161,17 +161,17 @@ public:
if (recordStruct.mType.Length() > 0) {
record.mType.Construct();
record.mType.Value().Init(Uint8Array::Create(cx, recordStruct.mType.Length(), recordStruct.mType.Elements()));
record.mType.Value().SetValue().Init(Uint8Array::Create(cx, recordStruct.mType.Length(), recordStruct.mType.Elements()));
}
if (recordStruct.mId.Length() > 0) {
record.mId.Construct();
record.mId.Value().Init(Uint8Array::Create(cx, recordStruct.mId.Length(), recordStruct.mId.Elements()));
record.mId.Value().SetValue().Init(Uint8Array::Create(cx, recordStruct.mId.Length(), recordStruct.mId.Elements()));
}
if (recordStruct.mPayload.Length() > 0) {
record.mPayload.Construct();
record.mPayload.Value().Init(Uint8Array::Create(cx, recordStruct.mPayload.Length(), recordStruct.mPayload.Elements()));
record.mPayload.Value().SetValue().Init(Uint8Array::Create(cx, recordStruct.mPayload.Length(), recordStruct.mPayload.Elements()));
}
}
}

Просмотреть файл

@ -118,7 +118,7 @@ interface MozNDEFRecord
dictionary MozNDEFRecordOptions {
TNF tnf = "empty";
Uint8Array type;
Uint8Array id;
Uint8Array payload;
Uint8Array? type;
Uint8Array? id;
Uint8Array? payload;
};