mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 05:37:11 +00:00
938961e76b
- Bug 1182147: Ensure ImageHost does not attempt to call DrawQuad with an effect unsupported by the compositor. r=nical (5624e9134f) - Bug 1151749 - "Win-Only: Disabled Hardware Acceleration + CSS 3D transform on canvas -> black artefacts on hover". r=nical (54c49071b9) - Bug 1184224 - Remove gfxPrefs.h include from gfxPlatformGtk.h. r=karlt (eb907daa58) - Bug 1183820 - Expose if cairo uses XRender to GetAzureBackendInfo. r=mattwoodrow (10044ecfb0) - Bug 1128934 - Call XFlush after compositing to prevent jank. r=karlt (f63b9dc1b5) - Bug 1151663 - New mochitest for this bug. r=kats (9344d22ed6) - Bug 1176402 - Have synthesizeNativeWheel() and synthesizeNativeMouseMove() accept coordinates relative to the element's bounding rect. r=kats (cbdffe3869) - Bug 1177018 - Work around the iframe in which mochitests are run not being scrollable. r=kats (d24291080c) - Bug 1177018 - Disable smooth scrolling in the APZ layerization test. r=kats (e1af545da1) - Bug 1181678 - Improve the check for skipping test_layerization if APZ is disabled. r=botond (91e5ead610) - Bug 1177018 - Enable chaos mode for the APZ layerization test. r=kats (f07fdeb936) - Bug 1177018 - Only enable APZ test logging for tests that actually use it. r=kats (9f24ea01c4) - Bug 1196294 - Remove the mCause from TimelineMarkers, r=tromey (5abd1c057d) - Bug 1195232 - Stop using TracingMetadata from GeckoProfiler.h, r=tromey (e736038873) - Bug 1200118 - Create a barebones TimelineMarker abstract class, r=tromey (9930c83c2f) - Bug 1200252 - Add marker for when the IPC request for a composite is sent to the compositor thread, r=jsantell,matt (becc11f58b) - align some minor thing to gecko (5bb64e322a) - Bug 1204581 - Add a deprecation warning for the usage of AppCache when service worker fetch interception is enabled; r=mcmanus,baku (69949c8d96) - Bug 1210941 P2 Use LOAD_BYPASS_SERVICE_WORKER in HttpBaseChannel instead of mForceNoIntercept. r=jduell (fdb7afc0be) - Bug 1173171 - Disable external jar: via preference. r=jduell (704cfb0b9c) - Bug 1210941 P3 Make jar channels use LOAD_BYPASS_SERVICE_WORKER internally. r=jduell (d871dc4837) - Bug 1210941 P4 Use LOAD_BYPASS_SERVICE_WORKER instead of ForceNoIntercept in nsDocShell. r=ehsan (ea5ed76717) - Bug 1210941 P5 Use LOAD_BYPASS_SERVICE_WORKER in nsObjectLoadingContent instead of ForceNoIntercept(). r=ehsan (9e821adfaa) - Bug 1210941 P6 Use LOAD_BYPASS_SERVICE_WORKER instead of ForceNoIntercept in FetchDriver. r=ehsan (02685be882) - Bug 1210941 P7 Use LOAD_BYPASS_SERVICE_WORKER in ServiceWorkerScriptCache. r=ehsan (45fa163dd2) - Bug 1182112 - XML documents should not be intercepted by ServiceWorkers. r=ehsan (a9dfeffcb3) - Bug 1210941 P8 Use LOAD_BYPASS_SERVICE_WORKER in xslt txURIUtils. r=ehsan (d7686d572b) - Bug 1210941 P9 Use LOAD_BYPASS_SERVICE_WORKER in nsCORSListenerProxy. r=ehsan (653f50de45) - Bug 1205302 - Disallow intercepting OCSP requests; r=jdm (b4650e78d9) - Bug 1210941 P10 Use LOAD_BYPASS_SERVICE_WORKER in nsNSSCallbacks. r=ehsan (b4b8b3f503) - Bug 1210941 P11 Use LOAD_BYPASS_SERVICE_WORKER in worker ScriptLoader. r=ehsan (ac07404832) - Bug 1210941 P12 Remove http channel's ForceNoIntercept. r=jduell IGNORE IDL (a7592a83c4) - Bug 1210941 P13 Remove ForceNoIntercept from jar channel. r=jduell (617544fcee) - Bug 1169613 - Use content type of synthesized response for JAR channel requests if available. Part 1: Set Content-Type of synthesized reponses for JAR channel requests. r=jdm (e32061a26a) - Bug 1169613 - Use content type of synthesized response for JAR channel requests if available. Part 2: Set Content-Type for JAR Channel requests on Fetch API responses. r=nsm (da43e29583) - Bug 1207556 - Part 1: Stop reusing the loadinfo in StartCORSPreflight; r=sicking (4724bfa8cd) - Bug 1207556 - Part 2: Fix the beacon CORS preflight tests; r=sicking (c61a699f9f) - Bug 1111834 - CORS preflight of navigator.sendBeacon() should not follow 30x redirect - tests. r=sicking (2871ad22e7) - fix build because of previous backports (e3096e6f9a) - Bug 1161677 - Expose dev mode state read-only through the navigator.hasFeature() api r=ehsan (013399847b) - Bug 1203680 P8 nsCORSListenerProxy::OnStartRequest must always call outer OnStartRequest. r=ehsan (9a67709770) - spacing (d4511b37c4) - missing bit of 920017 and some telemetry (2bf267ce72)
169 lines
6.5 KiB
HTML
169 lines
6.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1173580
|
|
-->
|
|
<head>
|
|
<title>Test for layerization</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<script type="application/javascript" src="apz_test_native_event_utils.js"></script>
|
|
<script type="application/javascript" src="apz_test_utils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
<link rel="stylesheet" type="text/css" href="helper_subframe_style.css"/>
|
|
<style>
|
|
#container {
|
|
display: flex;
|
|
overflow: scroll;
|
|
height: 500px;
|
|
}
|
|
.outer-frame {
|
|
height: 500px;
|
|
overflow: scroll;
|
|
flex-basis: 100%;
|
|
background: repeating-linear-gradient(#CCC, #CCC 100px, #BBB 100px, #BBB 200px);
|
|
}
|
|
#container-content {
|
|
height: 200%;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1173580">APZ layerization tests</a>
|
|
<p id="display"></p>
|
|
<div id="container">
|
|
<div id="outer1" class="outer-frame">
|
|
<div id="inner1" class="inner-frame">
|
|
<div class="inner-content"></div>
|
|
</div>
|
|
</div>
|
|
<div id="outer2" class="outer-frame">
|
|
<div id="inner2" class="inner-frame">
|
|
<div class="inner-content"></div>
|
|
</div>
|
|
</div>
|
|
<iframe id="outer3" class="outer-frame" src="helper_iframe1.html"></iframe>
|
|
<iframe id="outer4" class="outer-frame" src="helper_iframe2.html"></iframe>
|
|
<!-- The container-content div ensures 'container' is scrollable, so the
|
|
optimization that layerizes the primary async-scrollable frame on page
|
|
load layerizes it rather than its child subframes. -->
|
|
<div id="container-content"></div>
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript;version=1.7">
|
|
|
|
// Scroll the mouse wheel over |element|.
|
|
function scrollWheelOver(element) {
|
|
var x = 10;
|
|
var y = 10;
|
|
// Move the mouse to the desired wheel location.
|
|
// Not doing so can result in the wheel events from two consecutive
|
|
// scrollWheelOver() calls on different elements being incorrectly considered
|
|
// as part of the same wheel transaction.
|
|
// We also wait for the mouse move event to be processed before sending the
|
|
// wheel event, otherwise there is a chance they might get reordered, and
|
|
// we have the transaction problem again.
|
|
synthesizeNativeMouseMoveAndWaitForMoveEvent(element, x, y, function() {
|
|
synthesizeNativeWheelAndWaitForScrollEvent(element, x, y, 0, -10, driveTest);
|
|
});
|
|
}
|
|
|
|
var gTestContinuation = null;
|
|
var utils;
|
|
|
|
// Return whether the element with id |elementId| has been layerized.
|
|
// Assumes |elementId| will be present in the content description for the
|
|
// element, and not in the content descriptions of other elements.
|
|
function isLayerized(elementId) {
|
|
var contentTestData = utils.getContentAPZTestData();
|
|
ok(contentTestData.paints.length > 0, "expected at least one paint");
|
|
var seqno = contentTestData.paints[contentTestData.paints.length - 1].sequenceNumber;
|
|
contentTestData = convertTestData(contentTestData);
|
|
var paint = contentTestData.paints[seqno];
|
|
for (var scrollId in paint) {
|
|
if ("contentDescription" in paint[scrollId]) {
|
|
if (paint[scrollId]["contentDescription"].includes(elementId)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function* runTest() {
|
|
utils = SpecialPowers.getDOMWindowUtils(window);
|
|
|
|
// Initially, nothing should be layerized.
|
|
ok(!isLayerized('outer1'), "initially 'outer1' should not be layerized");
|
|
ok(!isLayerized('inner1'), "initially 'inner1' should not be layerized");
|
|
ok(!isLayerized('outer2'), "initially 'outer2' should not be layerized");
|
|
ok(!isLayerized('inner2'), "initially 'inner2' should not be layerized");
|
|
ok(!isLayerized('outer3'), "initially 'outer3' should not be layerized");
|
|
ok(!isLayerized('inner3'), "initially 'inner3' should not be layerized");
|
|
ok(!isLayerized('outer4'), "initially 'outer4' should not be layerized");
|
|
ok(!isLayerized('inner4'), "initially 'inner4' should not be layerized");
|
|
|
|
// Scrolling over outer1 should layerize outer1, but not inner1.
|
|
yield scrollWheelOver(document.getElementById('outer1'));
|
|
ok(isLayerized('outer1'), "scrolling 'outer1' should cause it to be layerized");
|
|
ok(!isLayerized('inner1'), "scrolling 'outer1' should not cause 'inner1' to be layerized");
|
|
|
|
// Scrolling over inner2 should layerize both outer2 and inner2.
|
|
yield scrollWheelOver(document.getElementById('inner2'));
|
|
ok(isLayerized('inner2'), "scrolling 'inner2' should cause it to be layerized");
|
|
ok(isLayerized('outer2'), "scrolling 'inner2' should also cause 'outer2' to be layerized");
|
|
|
|
// The second half of the test repeats the same checks as the first half,
|
|
// but with an iframe as the outer scrollable frame.
|
|
|
|
// Scrolling over outer3 should layerize outer3, but not inner3.
|
|
yield scrollWheelOver(document.getElementById('outer3').contentDocument.documentElement);
|
|
ok(isLayerized('outer3'), "scrolling 'outer3' should cause it to be layerized");
|
|
ok(!isLayerized('inner3'), "scrolling 'outer3' should not cause 'inner3' to be layerized");
|
|
|
|
// Scrolling over outer4 should layerize both outer4 and inner4.
|
|
yield scrollWheelOver(document.getElementById('outer4').contentDocument.getElementById('inner4'));
|
|
ok(isLayerized('inner4'), "scrolling 'inner4' should cause it to be layerized");
|
|
ok(isLayerized('outer4'), "scrolling 'inner4' should also cause 'outer4' to be layerized");
|
|
}
|
|
|
|
function driveTest() {
|
|
if (!gTestContinuation) {
|
|
gTestContinuation = runTest();
|
|
}
|
|
var ret = gTestContinuation.next();
|
|
if (ret.done) {
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
function startTest() {
|
|
// This test requires APZ - if it's not enabled, skip it.
|
|
var apzEnabled = SpecialPowers.getDOMWindowUtils(window).asyncPanZoomEnabled;
|
|
if (!apzEnabled) {
|
|
ok(true, "APZ not enabled, skipping test");
|
|
SimpleTest.finish();
|
|
return;
|
|
}
|
|
|
|
driveTest();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
SimpleTest.testInChaosMode();
|
|
|
|
// Disable smooth scrolling, because it results in long-running scroll
|
|
// animations that can result in a 'scroll' event triggered by an earlier
|
|
// wheel event as corresponding to a later wheel event.
|
|
// Also enable APZ test logging, since we use that data to determine whether
|
|
// a scroll frame was layerized.
|
|
SpecialPowers.pushPrefEnv({"set": [["general.smoothScroll", false],
|
|
["apz.test.logging_enabled", true]]},
|
|
function() {
|
|
SimpleTest.waitForFocus(startTest, window);
|
|
});
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|