Backed out changeset 332b088b3141 (bug 1774315) for causing scroll related failures. CLOSED TREE

This commit is contained in:
Natalia Csoregi 2023-08-24 08:38:00 +03:00
Родитель 3264a115bc
Коммит f93672c673
14 изменённых файлов: 632 добавлений и 72 удалений

Просмотреть файл

@ -21,7 +21,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1369072
<div id="content" style="display: none">
</div>
<pre id="test">
<script>
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(runTests, window);
@ -31,11 +31,6 @@ function ok()
window.opener.ok.apply(window.opener, arguments);
}
function info()
{
window.opener.info.apply(window.opener, arguments);
}
function is()
{
window.opener.is.apply(window.opener, arguments);
@ -94,38 +89,23 @@ async function runTests()
{
await resetScroll();
function promiseScrollOnWindow(win) {
is(win.document.documentElement.scrollTop, 0, "Reset didn't work?");
is(win.document.documentElement.scrollLeft, 0, "Reset didn't work?");
return new Promise(resolve => {
// Wait scroll event
function onScroll() {
SimpleTest.executeSoon(resolve);
}
window.addEventListener("scroll", onScroll, { once: true });
iframe.contentWindow.addEventListener("scroll", onScroll, { once: true });
return new Promise(resolve => {
win.addEventListener("scroll", function listener() {
// FIXME(bug 1674687): The first scroll might be fractional (and
// scrollTop / Left will round down to zero until bug 1674687 is
// fixed). So make sure we've scrolled at least a pixel before
// resolving. This can be removed once bug 1674687 is fixed.
if (win.document.documentElement.scrollLeft || win.document.documentElement.scrollTop) {
win.removeEventListener("scroll", listener);
SimpleTest.executeSoon(resolve);
}
});
});
}
let promise = Promise.race([
promiseScrollOnWindow(window),
promiseScrollOnWindow(iframe.contentWindow),
]);
if (aVertical) {
synthesizeKey("KEY_ArrowDown");
} else {
synthesizeKey("KEY_ArrowRight");
}
return promise;
if (aVertical) {
synthesizeKey("KEY_ArrowDown");
} else {
synthesizeKey("KEY_ArrowRight");
}
});
}
info("When iframe element has focus and the iframe document isn't scrollable, the parent document should be scrolled instead.");
// When iframe element has focus and the iframe document isn't scrollable, the parent document should be scrolled instead.
document.body.focus();
iframe.focus();
await tryToScrollWithKey(true);
@ -134,7 +114,7 @@ async function runTests()
ok(document.documentElement.scrollLeft > 0, "ArrowRight keydown event at the iframe whose content is not scrollable should cause scrolling the parent document");
await resetScroll();
info("When iframe element has focus and the iframe document scrollable, the parent document shouldn't be scrolled.");
// When iframe element has focus and the iframe document scrollable, the parent document shouldn't be scrolled.
document.body.focus();
div.style.height = "1000px";
div.style.width = "1000px";
@ -147,7 +127,7 @@ async function runTests()
ok(iframe.contentDocument.documentElement.scrollLeft > 0, "ArrowRight keydown event at the iframe whose content is scrollable should cause scrolling the iframe document");
await resetScroll();
info("If iframe document cannot scroll to specific direction, parent document should be scrolled instead.");
// If iframe document cannot scroll to specific direction, parent document should be scrolled instead.
div.style.height = "1px";
div.style.width = "1000px";
iframe.focus();
@ -168,7 +148,7 @@ async function runTests()
ok(document.documentElement.scrollLeft > 0, "ArrowRight keydown event at the iframe whose content is scrollable only vertically should cause scrolling the parent document");
await resetScroll();
info("Hidden iframe shouldn't consume keyboard events if it was not scrollable.");
// Hidden iframe shouldn't consume keyboard events if it was not scrollable.
document.body.focus();
anchor.focus();
iframe.style.display = "none";

Просмотреть файл

@ -55,12 +55,6 @@ add_task(async () => {
// Reduce the scrollbar width from the sticky area.
stickyRect.width -= w.value;
// Reduce the rect a bit vertically to avoid antialiasing and overscroll
// artifacts.
stickyRect.height -= 2;
stickyRect.x += 1;
return {
rect: stickyRect,
scrollbarWidth: w.value,

Просмотреть файл

@ -54,9 +54,7 @@ async function test() {
// Setup a scroll-linked effect callback.
await promiseScrollAndEvent(() => {
isnot(window.scrollY, 0, "we've already scrolled some amount");
// ceil() makes sure that the non-effective setter below is actually
// non-effective.
target.style.top = Math.ceil(window.scrollY) + "px";
target.style.top = window.scrollY + "px";
eventTimeStamp = document.timeline.currentTime;
});
is(eventTimeStamp, document.timeline.currentTime,

Просмотреть файл

@ -48,16 +48,8 @@ async function test() {
var subframe = document.getElementById("subframe");
await promiseNativeWheelAndWaitForScrollEvent(subframe, 100, 150, 0, -10);
while (!subframe.scrollTop) {
is(document.documentElement.scrollTop, 0, "We should not have scrolled the page");
info("Waiting for one more scroll");
// FIXME(bug 1674687): The first scroll might be fractional, and thus still
// round down to zero. Wait for another scroll event.
// Remove this when bug 1674687 is fixed.
await new Promise(r => subframe.addEventListener("scroll", r, { once: true }));
}
is(document.documentElement.scrollTop, 0, "We should still not have scrolled the page");
ok(subframe.scrollTop > 0, "We should have scrolled the subframe down");
is(subframe.scrollTop > 0, true, "We should have scrolled the subframe down");
is(document.documentElement.scrollTop, 0, "We should not have scrolled the page");
}
SimpleTest.waitForExplicitFinish();

Просмотреть файл

@ -2800,28 +2800,89 @@ void nsHTMLScrollFrame::ScrollVisual() {
/**
* Clamp desired scroll position aDesired and range [aDestLower, aDestUpper]
* to [aBoundLower, aBoundUpper]
* to [aBoundLower, aBoundUpper] and then select the appunit value from among
* aBoundLower, aBoundUpper and those such that (aDesired - aCurrent) *
* aRes/aAppUnitsPerPixel is an integer (or as close as we can get
* modulo rounding to appunits) that is in [aDestLower, aDestUpper] and
* closest to aDesired. If no such value exists, return the nearest in
* [aDestLower, aDestUpper].
*/
static nscoord ClampScrollPositionAxis(nscoord aDesired, nscoord aBoundLower,
static nscoord ClampAndAlignWithPixels(nscoord aDesired, nscoord aBoundLower,
nscoord aBoundUpper, nscoord aDestLower,
nscoord aDestUpper) {
nscoord aDestUpper,
nscoord aAppUnitsPerPixel, double aRes,
nscoord aCurrent) {
// Intersect scroll range with allowed range, by clamping the ends
// of aRange to be within bounds
nscoord destLower = clamped(aDestLower, aBoundLower, aBoundUpper);
nscoord destUpper = clamped(aDestUpper, aBoundLower, aBoundUpper);
return clamped(aDesired, destLower, destUpper);
nscoord desired = clamped(aDesired, destLower, destUpper);
double currentLayerVal = (aRes * aCurrent) / aAppUnitsPerPixel;
double desiredLayerVal = (aRes * desired) / aAppUnitsPerPixel;
double delta = desiredLayerVal - currentLayerVal;
double nearestLayerVal = NS_round(delta) + currentLayerVal;
// Convert back from PaintedLayer space to appunits relative to the top-left
// of the scrolled frame.
nscoord aligned =
aRes == 0.0
? 0.0
: NSToCoordRoundWithClamp(nearestLayerVal * aAppUnitsPerPixel / aRes);
// Use a bound if it is within the allowed range and closer to desired than
// the nearest pixel-aligned value.
if (aBoundUpper == destUpper &&
static_cast<decltype(Abs(desired))>(aBoundUpper - desired) <
Abs(desired - aligned)) {
return aBoundUpper;
}
if (aBoundLower == destLower &&
static_cast<decltype(Abs(desired))>(desired - aBoundLower) <
Abs(aligned - desired)) {
return aBoundLower;
}
// Accept the nearest pixel-aligned value if it is within the allowed range.
if (aligned >= destLower && aligned <= destUpper) {
return aligned;
}
// Check if opposite pixel boundary fits into allowed range.
double oppositeLayerVal =
nearestLayerVal + ((nearestLayerVal < desiredLayerVal) ? 1.0 : -1.0);
nscoord opposite = aRes == 0.0
? 0.0
: NSToCoordRoundWithClamp(oppositeLayerVal *
aAppUnitsPerPixel / aRes);
if (opposite >= destLower && opposite <= destUpper) {
return opposite;
}
// No alignment available.
return desired;
}
/**
* Clamp desired scroll position aPt to aBounds, keeping it within aRange.
* aCurrent is the current scroll position.
* Clamp desired scroll position aPt to aBounds and then snap
* it to the same layer pixel edges as aCurrent, keeping it within aRange
* during snapping. aCurrent is the current scroll position.
*/
static nsPoint ClampScrollPosition(const nsPoint& aPt, const nsRect& aBounds,
const nsRect& aRange) {
return nsPoint(ClampScrollPositionAxis(aPt.x, aBounds.x, aBounds.XMost(),
aRange.x, aRange.XMost()),
ClampScrollPositionAxis(aPt.y, aBounds.y, aBounds.YMost(),
aRange.y, aRange.YMost()));
static nsPoint ClampAndAlignWithLayerPixels(const nsPoint& aPt,
const nsRect& aBounds,
const nsRect& aRange,
const nsPoint& aCurrent,
nscoord aAppUnitsPerPixel,
const MatrixScales& aScale) {
return nsPoint(
ClampAndAlignWithPixels(aPt.x, aBounds.x, aBounds.XMost(), aRange.x,
aRange.XMost(), aAppUnitsPerPixel, aScale.xScale,
aCurrent.x),
ClampAndAlignWithPixels(aPt.y, aBounds.y, aBounds.YMost(), aRange.y,
aRange.YMost(), aAppUnitsPerPixel, aScale.yScale,
aCurrent.y));
}
/* static */
@ -2935,7 +2996,11 @@ void nsHTMLScrollFrame::ScrollToImpl(
}
nsPresContext* presContext = PresContext();
const nsPoint curPos = GetScrollPosition();
nscoord appUnitsPerDevPixel = presContext->AppUnitsPerDevPixel();
// 'scale' is our estimate of the scale factor that will be applied
// when rendering the scrolled content to its own PaintedLayer.
MatrixScales scale = GetPaintedLayerScaleForFrame(mScrolledFrame);
nsPoint curPos = GetScrollPosition();
// Try to align aPt with curPos so they have an integer number of layer
// pixels between them. This gives us the best chance of scrolling without
@ -2947,7 +3012,8 @@ void nsHTMLScrollFrame::ScrollToImpl(
// and are relative to the scrollport top-left. This difference doesn't
// actually matter since all we are about is that there be an integer number
// of layer pixels between pt and curPos.
nsPoint pt = ClampScrollPosition(aPt, GetLayoutScrollRange(), aRange);
nsPoint pt = ClampAndAlignWithLayerPixels(aPt, GetLayoutScrollRange(), aRange,
curPos, appUnitsPerDevPixel, scale);
if (pt == curPos) {
// Even if we are bailing out due to no-op main-thread scroll position
// change, we might need to cancel an APZ smooth scroll that we already

Просмотреть файл

@ -22,4 +22,4 @@ fuzzy(0-1,0-500) needs-focus == select.html select-ref.html
== pseudo-class-lock.html pseudo-class-lock-ref.html
needs-focus == focus-on-anchor.html#anchor focus-on-anchor-ref.html
fuzzy-if(cocoaWidget,0-73,0-786) needs-focus == select-overflow.html select-overflow-ref.html # Text anti aliasing (revisit once bug 1674687 is fixed).
needs-focus == select-overflow.html select-overflow-ref.html

Просмотреть файл

@ -7,6 +7,11 @@
[input[type=text\] in sideways-lr: typing characters in input should not cause the page to scroll]
expected:
if (os == "win") and not debug and (processor == "x86"): [PASS, FAIL]
if (os == "android") and debug and swgl: [PASS, FAIL]
if (os == "android") and debug and not swgl: PASS
if (os == "linux") and debug: FAIL
if (os == "android") and not debug: [PASS, FAIL]
if os == "mac": PASS
[FAIL, PASS]
@ -21,6 +26,11 @@
[input[type=password\] in sideways-lr: typing characters in input should not cause the page to scroll]
expected:
if (os == "win") and not debug and (processor == "x86_64"): [PASS, FAIL]
if (os == "android") and debug and swgl: [PASS, FAIL]
if (os == "android") and debug and not swgl: PASS
if (os == "android") and not debug: [PASS, FAIL]
if (os == "linux") and debug: FAIL
if os == "mac": PASS
[FAIL, PASS]
@ -39,6 +49,10 @@
[input[type=search\] in sideways-lr: typing characters in input should not cause the page to scroll]
expected:
if (os == "android") and debug and not swgl: PASS
if (os == "android") and debug and swgl: [PASS, FAIL]
if (os == "android") and not debug: [PASS, FAIL]
if (os == "linux") and debug: FAIL
if os == "mac": PASS
[FAIL, PASS]
@ -62,6 +76,12 @@
[input[type=number\] in sideways-lr: typing characters in input should not cause the page to scroll]
expected:
if (os == "linux") and debug and swgl and fission: [FAIL, PASS]
if (os == "linux") and debug and swgl and not fission: FAIL
if (os == "linux") and debug and not swgl: FAIL
if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS]
if (os == "android") and debug and not swgl: PASS
if (os == "linux") and not debug: [FAIL, PASS]
if os == "mac": PASS
[PASS, FAIL]

Просмотреть файл

@ -0,0 +1,481 @@
[preserve-fragment.html]
[[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in 308 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in 302 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in 302 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in 303 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in 307 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in 303 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in 301 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in 303 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in 301 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in 303 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in 307 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in 307 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in 302 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in 308 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in 308 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in 307 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in 302 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Preserve fragment in 308 redirect]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in multiple 301 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve fragment in 301 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve fragment in 301 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
expected:
if os == "android": FAIL
[[HTTP - SameOrigin\] Preserve fragment in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
expected:
if os == "android": FAIL
[[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects]
expected:
if os == "android": FAIL
[[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
expected:
if os == "android": FAIL

Просмотреть файл

@ -0,0 +1,7 @@
[scroll-restoration-navigation-cross-origin.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[Navigating to new page should reset to "auto" and navigating back should restore and respect scroll restoration mode]
bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1556685
expected:
if os == "android": FAIL

Просмотреть файл

@ -0,0 +1,6 @@
[scroll-frag-percent-encoded.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[Fragment Navigation: fragment id should be percent-decoded]
expected:
if os == "android": FAIL

Просмотреть файл

@ -1,3 +1,5 @@
[scroll-position-vertical-lr.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[Fragment Navigation: Scroll to block start position in vertical-lr writing mode]
expected: FAIL

Просмотреть файл

@ -1,3 +1,5 @@
[scroll-position-vertical-rl.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[Fragment Navigation: Scroll to block start position in vertical-rl writing mode]
expected: FAIL

Просмотреть файл

@ -0,0 +1,6 @@
[scroll-position.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[Fragment Navigation: Scroll to block start position]
expected:
if os == "android": FAIL

Просмотреть файл

@ -0,0 +1,6 @@
[scroll-to-anchor-name.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]
[Fragment Navigation: scroll to anchor name is lower priority than equal id]
expected:
if os == "android": FAIL