зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 332b088b3141 (bug 1774315) for causing scroll related failures. CLOSED TREE
This commit is contained in:
Родитель
3264a115bc
Коммит
f93672c673
|
@ -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
|
Загрузка…
Ссылка в новой задаче