Skip to content

Commit

Permalink
Mark pointerevent_pointermove_in_pointerlock test non flaky
Browse files Browse the repository at this point in the history
Split the test into two subtests. testdriver cannot click on an element
in another iframe for Firefox.
Remove pointerevent_pointermove_in_pointerlock test from expectation
files.
Add expectation file for infrastructure testdriver.

Bug: 1086154
Change-Id: I3d3cd9c020c9c3d17d53dfa06175e01ea549a740
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2233579
Reviewed-by: Lan Wei <lanwei@chromium.org>
Commit-Queue: Liviu Tinta <liviutinta@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776496}
  • Loading branch information
liviutinta authored and Commit Bot committed Jun 9, 2020
1 parent a76e11e commit 0776aa6
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 38 deletions.
1 change: 0 additions & 1 deletion third_party/blink/web_tests/WPTOverrideExpectations
Original file line number Diff line number Diff line change
Expand Up @@ -998,7 +998,6 @@ external/wpt/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_poin
external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Timeout ] # wpt_subtest_failure
external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Pass ] # wpt_subtest_failure
external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture.html [ Pass ] # wpt_subtest_failure
external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Timeout ] # wpt_subtest_failure
external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Timeout ] # wpt_subtest_failure
external/wpt/pointerlock/mouse_buttons_back_forward.html [ Timeout ] # wpt_subtest_failure
external/wpt/pointerlock/pointerlock_remove_target.html [ Timeout ] # wpt_subtest_failure
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3025,7 +3025,6 @@ crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Failure ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Failure ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture.html [ Failure ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Timeout ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Timeout ]
crbug.com/1050754 external/wpt/pointerlock/mouse_buttons_back_forward.html [ Timeout ]
crbug.com/1050754 external/wpt/pointerlock/movementX_Y_basic.html [ Failure ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2552,7 +2552,6 @@ crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Failure ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Failure ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture.html [ Failure ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Timeout ]
crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Timeout ]
crbug.com/1050754 external/wpt/pointerlock/mouse_buttons_back_forward.html [ Timeout ]
crbug.com/1050754 external/wpt/pointerlock/movementX_Y_basic.html [ Failure ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3185,7 +3185,6 @@ external/wpt/pointerevents/pointerlock/pointerevent_movementxy.html [ Failure ]
external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Failure ]
external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Failure ]
external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture.html [ Failure ]
external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Timeout ]
external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Timeout ]
external/wpt/pointerlock/mouse_buttons_back_forward.html [ Timeout ]
external/wpt/pointerlock/movementX_Y_basic.html [ Failure ]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[pointerevent_pointermove_in_pointerlock.html]
expected:
if product == "firefox": ERROR
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
<html>
<head>
<title>pointermove</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="../pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script type="text/javascript" src="/resources/testharness.js"></script>
<script type="text/javascript" src="/resources/testharnessreport.js"></script>
<script type="text/javascript" src="/resources/testdriver.js"></script>
<script type="text/javascript" src="/resources/testdriver-actions.js"></script>
<script type="text/javascript" src="/resources/testdriver-vendor.js"></script>
<!-- Additional helper script for common checks across event types -->
<script type="text/javascript" src="../pointerevent_support.js"></script>
</head>
Expand All @@ -23,10 +24,11 @@ <h4>Test Description: This test checks if pointermove is dispatched correctly wh
</ol>
</h4>
<div id="target0"></div>
<iframe id="innerframe" src="resources/pointerevent_pointermove_in_pointerlock-iframe.html"></iframe>
<iframe id="innerframe" onload="iframe_loaded()" src="resources/pointerevent_pointermove_in_pointerlock-iframe.html"></iframe>
<script>
window.name="outerframe";
var test_pointermove = async_test("pointermove event received");
var test_pointermove_innerframe = async_test("pointermove event received inner frame");
var actions_promise1;
var actions_promise2;
var actions_promise3;
Expand All @@ -37,73 +39,105 @@ <h4>Test Description: This test checks if pointermove is dispatched correctly wh
Lock2: 2,
Done: 3,
};
var iframe_loaded_promise;
var iframe_loaded_resolve;

function run() {
iframe_loaded_promise = new Promise((resolve, reject)=>{
iframe_loaded_resolve = resolve;
});

function iframe_loaded(){
iframe_loaded_resolve();
}

async function run() {
// wait for iframe to fully load
await iframe_loaded_promise;
var target0 = document.getElementById("target0");
var innerframe = document.getElementById('innerframe');
var target1 = innerframe.contentDocument.getElementById('target1');
innerframe.contentWindow.name = "innerframe";
phase = PhaseEnum.Start;

on_event(target0, "click", (event)=>
target0.requestPointerLock());
on_event(target0, "click", async (event)=>{
if(phase === PhaseEnum.Start){
target0.requestPointerLock();
}else{
await actions_promise2;
document.exitPointerLock();
}
});

on_event(target1, "click", (event)=>
target1.requestPointerLock());
on_event(target1, "click", async (event)=>{
if(phase === PhaseEnum.Lock1){
target1.requestPointerLock();
}
else{
await actions_promise4;
innerframe.contentDocument.exitPointerLock();
}
});

on_event(target0, "pointermove", async (event)=> {
if (phase == PhaseEnum.Lock1) {
if (phase === PhaseEnum.Lock1) {
test_pointermove.step(()=> {
assert_equals(document.pointerLockElement, target0);
assert_equals(event.view.name, "outerframe", "View attribute of pointermove should be the target frame.");
}, "View attribute of pointermove should be the target frame.");
document.exitPointerLock();
await actions_promise2;
// Click the inner frame target to lock.
actions_promise3 = clickInTarget("mouse", target1);
}
});

on_event(target1, "pointermove", async (event)=> {
if (phase == PhaseEnum.Lock2) {
test_pointermove.step(()=> {
if (phase === PhaseEnum.Lock2) {
test_pointermove_innerframe.step(()=> {
assert_equals(innerframe.contentDocument.pointerLockElement, target1);
assert_equals(event.view.name, "innerframe", "View attribute of pointermove should be the target frame.");
}, "View attribute of pointermove should be the target frame.");
innerframe.contentDocument.exitPointerLock();
await actions_promise4;
test_pointermove.done();
}
});

on_event(document, "pointerlockchange", async (event)=> {
if (phase == PhaseEnum.Start) {
test_pointermove.step(()=>
assert_equals(document.pointerLockElement, target0));
await actions_promise1;
if (phase === PhaseEnum.Start) {
test_pointermove.step(()=>{
assert_equals(document.pointerLockElement, target0);
});
phase++;
await actions_promise1;
// Send moves in main frame target
// Send moves in main frame target and then click on target0
actions_promise2 = new test_driver.Actions()
.pointerMove(10, 30, {origin: target0})
.pointerMove(0, 0, {origin: target0})
.pointerDown()
.pointerUp()
.send();
}else{
// when we exit pointerlock we are done
test_pointermove.done();
// user activate innerframe
actions_promise3 = clickInTarget("mouse", target1);
}
});

on_event(innerframe.contentDocument, "pointerlockchange", async (event)=> {
if (phase == PhaseEnum.Lock1) {
test_pointermove.step(()=>
await actions_promise3;
if (phase === PhaseEnum.Lock1) {
test_pointermove_innerframe.step(()=>
assert_equals(innerframe.contentDocument.pointerLockElement, target1));
phase++;
await actions_promise3;
// Send moves in inner frame target
actions_promise4 = new test_driver.Actions()
.pointerMove(10, 30, {origin: target0})
.send();
// Send moves in inner frame target and then click anywhere in the inner frame
await new test_driver.Actions()
.pointerMove(10, 30, {origin: target1})
.send();
actions_promise4 = clickInTarget("mouse", target1);
}
else{
// when we exit pointerlock we are done
test_pointermove_innerframe.done();
}
});

on_event(document, "pointerlockerror", test_pointermove.unreached_func("pointer lock request should not fail in document!"));
on_event(innerframe.contentDocument, "pointerlockerror", test_pointermove.unreached_func("pointer lock request should not fail in innerframe.contentDocument!"));
on_event(innerframe.contentDocument, "pointerlockerror", test_pointermove_innerframe.unreached_func("pointer lock request should not fail in innerframe.contentDocument!"));

// Click the outer frame target to lock.
actions_promise1 = clickInTarget("mouse", target0);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="../../pointerevent_styles.css">
</head>
Expand Down

0 comments on commit 0776aa6

Please sign in to comment.