Bug 1816740 [5/6] - convert nsIFilePicker::capture* to a proper enum r=ipc-reviewers,karlt,mstange,handyman,nika
Convert the various capture* constants in nsIFilePicker into a proper enum, and perform validation when passing it across IPC. Additionally, unlike the previous two enums, reduce the size of CaptureTarget to 8 bits. This is a workaround for its use with nsAttrValue, which at present very specifically requires that parseable enums' values fit within an `int16_t` -- and a `uint16_t` does not. Differential Revision: https://phabricator.services.mozilla.com/D169854
This commit is contained in:
@@ -181,10 +181,10 @@ static const nsAttrValue::EnumTable* kInputDefaultType =
|
||||
&kInputTypeTable[ArrayLength(kInputTypeTable) - 2];
|
||||
|
||||
static const nsAttrValue::EnumTable kCaptureTable[] = {
|
||||
{"user", static_cast<int16_t>(nsIFilePicker::captureUser)},
|
||||
{"environment", static_cast<int16_t>(nsIFilePicker::captureEnv)},
|
||||
{"", static_cast<int16_t>(nsIFilePicker::captureDefault)},
|
||||
{nullptr, static_cast<int16_t>(nsIFilePicker::captureNone)}};
|
||||
{"user", nsIFilePicker::captureUser},
|
||||
{"environment", nsIFilePicker::captureEnv},
|
||||
{"", nsIFilePicker::captureDefault},
|
||||
{nullptr, nsIFilePicker::captureNone}};
|
||||
|
||||
static const nsAttrValue::EnumTable* kCaptureDefault = &kCaptureTable[2];
|
||||
|
||||
@@ -831,7 +831,8 @@ nsresult HTMLInputElement::InitFilePicker(FilePickerType aType) {
|
||||
const nsAttrValue* captureVal =
|
||||
GetParsedAttr(nsGkAtoms::capture, kNameSpaceID_None);
|
||||
if (captureVal) {
|
||||
filePicker->SetCapture(captureVal->GetEnumValue());
|
||||
filePicker->SetCapture(static_cast<nsIFilePicker::CaptureTarget>(
|
||||
captureVal->GetEnumValue()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user