blob: 51cb573f3ad8aea43ad8cb1622de9968d4abc91e [file] [log] [blame]
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true, shouldHandleRunOpenPanel=false, shouldPresentPopovers=false ] -->
<html>
<head>
<meta name="viewport" content="width=device-width">
<script src="../../../resources/js-test.js"></script>
<script src="../../../resources/ui-helper.js"></script>
</head>
<body>
<div id="description"></div>
<input id="testInput" type="file">
<div id="console"></div>
<script>
description("Basic testing for the File Upload Panel on iOS.");
jsTestIsAsync = true;
function getFileUploadPickerMenuItemsScript()
{
return `
(function() {
return JSON.stringify(uiController.contentsOfUserInterfaceItem('fileUploadPanelMenu'));
})();`
}
function getFileUploadPickerMenuItems()
{
return new Promise((resolve) => {
testRunner.runUIScript(getFileUploadPickerMenuItemsScript(), function(result) {
resolve(JSON.parse(result).fileUploadPanelMenu);
});
});
}
async function verifyMenuItems(expectedMenuItems) {
await UIHelper.activateElement(testInput);
items = await getFileUploadPickerMenuItems();
shouldBeTrue("areArraysEqual(items, " + expectedMenuItems + ")");
debug("");
await UIHelper.dismissFilePicker();
}
async function runAcceptTest(accept, expectedMenuItems)
{
debug("* accept = " + accept);
testInput.accept = accept;
testInput.multiple = false;
await verifyMenuItems(expectedMenuItems);
}
async function runMultipleTest(multiple, expectedMenuItems)
{
debug("* multiple = " + multiple)
testInput.accept = "";
testInput.multiple = multiple;
await verifyMenuItems(expectedMenuItems);
}
async function runTests()
{
document.getElementById("console").style = "display: none";
await runAcceptTest("", '["Photo Library", "Take Photo or Video", "Choose File"]');
await runAcceptTest("*/*", '["Photo Library", "Take Photo or Video", "Choose File"]');
await runAcceptTest("image/*", '["Photo Library", "Take Photo", "Choose File"]');
await runAcceptTest("video/*", '["Photo Library", "Take Video", "Choose File"]');
await runAcceptTest("image/*, video/*", '["Photo Library", "Take Photo or Video", "Choose File"]');
await runAcceptTest(".PNG, .GIF", '["Photo Library", "Take Photo", "Choose File"]');
await runAcceptTest(".PNG, .GIF, .MOV", '["Photo Library", "Take Photo or Video", "Choose File"]');
await runAcceptTest("audio/*", '["Photo Library", "Take Video", "Choose File"]');
await runAcceptTest(".TXT", '["Choose File"]');
await runAcceptTest(".PDF", '["Choose File"]');
await runAcceptTest(".PDF, .TXT", '["Choose File"]');
await runMultipleTest(false, '["Photo Library", "Take Photo or Video", "Choose File"]');
await runMultipleTest(true, '["Photo Library", "Take Photo or Video", "Choose Files"]');
document.getElementById("console").style = "";
finishJSTest();
}
onload = runTests;
</script>
</body>
</html>