Commit db8e5d7d authored by Marijn Kruisselbrink's avatar Marijn Kruisselbrink Committed by Commit Bot

Enable file uploads in web_tests via testdriver-vendor.js.

testdriver supports file uploads via send_keys to the input element,
on the other hand eventSender supports file uploads via drag&drop to
the input element. So this CL implements test_driver_internal.send_keys
by using the drag&drop functionality if the target element is an
<input type=file>.

Also fixes a bug in file_upload.sub.html where backslashes in the file
path weren't being escaped, resulting in the test not working on windows.

Change-Id: I9a446f8dac3ae7817bb03ba9592d2537223b0f33
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1974849
Commit-Queue: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: default avatarPhilip Jägenstedt <foolip@chromium.org>
Cr-Commit-Position: refs/heads/master@{#726873}
parent 87643bed
...@@ -3080,7 +3080,6 @@ crbug.com/626703 external/wpt/css/css-text/text-transform/text-transform-copy-pa ...@@ -3080,7 +3080,6 @@ crbug.com/626703 external/wpt/css/css-text/text-transform/text-transform-copy-pa
crbug.com/626703 external/wpt/html/webappapis/animation-frames/cancel-handle-manual.html [ Skip ] crbug.com/626703 external/wpt/html/webappapis/animation-frames/cancel-handle-manual.html [ Skip ]
crbug.com/626703 external/wpt/css/filter-effects/filter-subregion-01.html [ Failure ] crbug.com/626703 external/wpt/css/filter-effects/filter-subregion-01.html [ Failure ]
crbug.com/626703 [ Mac10.10 ] external/wpt/css/css-layout-api/auto-block-size-absolute.https.html [ Failure ] crbug.com/626703 [ Mac10.10 ] external/wpt/css/css-layout-api/auto-block-size-absolute.https.html [ Failure ]
crbug.com/626703 external/wpt/infrastructure/testdriver/file_upload.sub.html [ Skip ]
crbug.com/626703 external/wpt/css/css-text/white-space/text-space-collapse-preserve-breaks-001.xht [ Failure ] crbug.com/626703 external/wpt/css/css-text/white-space/text-space-collapse-preserve-breaks-001.xht [ Failure ]
crbug.com/626703 external/wpt/css/css-text/white-space/text-space-collapse-discard-001.xht [ Failure ] crbug.com/626703 external/wpt/css/css-text/white-space/text-space-collapse-discard-001.xht [ Failure ]
crbug.com/626703 external/wpt/css/css-text/white-space/text-space-trim-trim-inner-001.xht [ Failure ] crbug.com/626703 external/wpt/css/css-text/white-space/text-space-trim-trim-inner-001.xht [ Failure ]
......
...@@ -13,7 +13,7 @@ promise_test(() => { ...@@ -13,7 +13,7 @@ promise_test(() => {
let form = document.getElementById("form"); let form = document.getElementById("form");
let input = document.getElementById("file_input"); let input = document.getElementById("file_input");
return test_driver return test_driver
.send_keys(input, "{{fs_path(file_upload_data.txt)}}") .send_keys(input, String.raw`{{fs_path(file_upload_data.txt)}}`)
.then(() => .then(() =>
fetch("file_upload.py", fetch("file_upload.py",
{method: "POST", {method: "POST",
......
...@@ -85,6 +85,18 @@ ...@@ -85,6 +85,18 @@
element.focus(); element.focus();
if (!window.eventSender) if (!window.eventSender)
reject(new Error("No eventSender")); reject(new Error("No eventSender"));
if (element.localName === 'input' && element.type === 'file') {
element.addEventListener('drop', resolve);
eventSender.beginDragWithFiles([keys]);
const centerX = element.offsetLeft + element.offsetWidth / 2;
const centerY = element.offsetTop + element.offsetHeight / 2;
// Moving the mouse could interfere with the test, if it also tries to control
// mouse movements. This can cause differences between tests run with run_web_tests
// and tests run with wptrunner.
eventSender.mouseMoveTo(centerX * devicePixelRatio, centerY * devicePixelRatio);
eventSender.mouseUp();
return;
}
if (keys.length > 1) if (keys.length > 1)
reject(new Error("No support for a sequence of multiple keys")); reject(new Error("No support for a sequence of multiple keys"));
let eventSenderKeys = keys; let eventSenderKeys = keys;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment