зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1415225 - Add a couple of mochitests for event-regions overrides. r=botond
These two tests exercise the codepaths where an event regions override is set on (a) the root layer of a layer tree and (b) on an in-process subdocument. I verified that case (b) was failing with webrender enabled without the patchset and passes now. MozReview-Commit-ID: GMwk5iQstj --HG-- extra : rebase_source : c80c4a890ac37ed691310e541ac1347deb21090f
This commit is contained in:
Родитель
be01b429eb
Коммит
8a6d61d886
|
@ -0,0 +1,60 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width; initial-scale=1.0">
|
||||
<title>Simple wheel scroll cancellation</title>
|
||||
<script type="application/javascript" src="apz_test_native_event_utils.js"></script>
|
||||
<script type="application/javascript" src="apz_test_utils.js"></script>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
|
||||
<script type="application/javascript">
|
||||
|
||||
// Add a non-passive listener on the document, so that we have a document-level
|
||||
// APZ-aware listener, and the entire document is put in the dispatch-to-content
|
||||
// region
|
||||
document.addEventListener('wheel', function(e) {
|
||||
dump("Wheel listener running...\n");
|
||||
|
||||
// spin for 2 seconds to give APZ time to scroll, if the event region override
|
||||
// is broken and it decides not to wait for the main thread. Note that it's
|
||||
// possible the APZ controller thread is busy for whatever reason so APZ
|
||||
// may not scroll. That might cause this test to only fail intermittently
|
||||
// instead of consistently if the behaviour being tested regresses.
|
||||
var now = Date.now();
|
||||
while (Date.now() - now < 2000);
|
||||
|
||||
// Cancel the scroll. If this works then we know APZ waited for this listener
|
||||
// to run.
|
||||
e.preventDefault();
|
||||
|
||||
setTimeout(function() {
|
||||
flushApzRepaints(checkScroll);
|
||||
}, 0);
|
||||
}, false);
|
||||
|
||||
function scrollPage() {
|
||||
synthesizeNativeWheel(document.body, 100, 100, 0, -50);
|
||||
dump("Finished native wheel, waiting for listener to run...\n");
|
||||
}
|
||||
|
||||
function checkScroll() {
|
||||
is(window.scrollY, 0, "check that the window didn't scroll");
|
||||
subtestDone();
|
||||
}
|
||||
|
||||
if (window.top != window) {
|
||||
dump("Running inside an iframe! stealing functions from window.top...\n");
|
||||
window.subtestDone = window.top.subtestDone;
|
||||
window.SimpleTest = window.top.SimpleTest;
|
||||
window.is = window.top.is;
|
||||
window.ok = window.top.ok;
|
||||
}
|
||||
|
||||
waitUntilApzStable().then(scrollPage);
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="height: 5000px; background-image: linear-gradient(green,red);">
|
||||
This page should not be wheel-scrollable.
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width; initial-scale=1.0">
|
||||
<title>Wheel scroll cancellation inside iframe</title>
|
||||
<script type="application/javascript" src="apz_test_utils.js"></script>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
This just loads helper_override_root in an iframe, so that we test event
|
||||
regions overriding on in-process subdocuments.
|
||||
<iframe src="helper_override_root.html"></iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -21,6 +21,8 @@
|
|||
helper_iframe2.html
|
||||
helper_key_scroll.html
|
||||
helper_long_tap.html
|
||||
helper_override_root.html
|
||||
helper_override_subdoc.html
|
||||
helper_scroll_inactive_perspective.html
|
||||
helper_scroll_inactive_zindex.html
|
||||
helper_scroll_on_position_fixed.html
|
||||
|
@ -72,3 +74,5 @@ skip-if = os == 'win' && os_version == '10.0' # Bug 1404836
|
|||
skip-if = (os == 'android') # wheel events not supported on mobile
|
||||
[test_wheel_transactions.html]
|
||||
skip-if = (os == 'android') # wheel events not supported on mobile
|
||||
[test_group_overrides.html]
|
||||
skip-if = (os == 'android') # wheel events not supported on mobile
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Various tests for event regions overrides</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="application/javascript" src="apz_test_utils.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<script type="application/javascript">
|
||||
|
||||
var prefs = [
|
||||
// turn off smooth scrolling so that we don't have to wait for
|
||||
// APZ animations to finish before sampling the scroll offset
|
||||
['general.smoothScroll', false],
|
||||
// Increase the content response timeout because these tests do preventDefault
|
||||
// and we want to make sure APZ actually waits for them.
|
||||
['apz.content_response_timeout', 10000],
|
||||
]
|
||||
|
||||
var subtests = [
|
||||
{'file': 'helper_override_root.html', 'prefs': prefs},
|
||||
{'file': 'helper_override_subdoc.html', 'prefs': prefs},
|
||||
];
|
||||
|
||||
if (isApzEnabled()) {
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
window.onload = function() {
|
||||
runSubtestsSeriallyInFreshWindows(subtests)
|
||||
.then(SimpleTest.finish);
|
||||
};
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче