Backed out 5 changesets (bug 1504659) for reftest failures on frame-reconstruction-scroll-clamping.html.
authorNarcis Beleuzu <nbeleuzu@mozilla.com>
Tue, 15 Jan 2019 07:34:58 +0200
changeset 453897 73cd4b7b53ba8edbc148e40d101fd9427846ea26
parent 453896 27db609ff5ea151d921696cc0d5f1525a7d0ac19
child 453898 8af061c4dfc01a8ecaff8072b70110f85f1c5060
push id35378
push userbtara@mozilla.com
push dateTue, 15 Jan 2019 16:08:45 +0000
treeherdermozilla-central@5090d461e169 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1504659
milestone66.0a1
backs out749c9dcbbd7f7d8146a71d8cb2a1acb07db1b8c7
783f7ccbd7972fce5def1b7a416a9234fa8ef434
231b16b0091e96e1aa15cd34c2a9367df8f4d1b8
a88ccc9308e0003edc0866f820fed9e671433ed8
738e1ee854eb24b72679b35252a4889b9603c003
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 5 changesets (bug 1504659) for reftest failures on frame-reconstruction-scroll-clamping.html. Backed out changeset 749c9dcbbd7f (bug 1504659) Backed out changeset 783f7ccbd797 (bug 1504659) Backed out changeset 231b16b0091e (bug 1504659) Backed out changeset a88ccc9308e0 (bug 1504659) Backed out changeset 738e1ee854eb (bug 1504659)
devtools/client/responsive.html/test/browser/browser.ini
devtools/client/responsive.html/test/browser/browser_scroll.js
devtools/client/responsive.html/test/browser/head.js
devtools/client/responsive.html/test/unit/test_resize_viewport.js
dom/base/nsGlobalWindowOuter.cpp
dom/tests/mochitest/dom-level0/innerWidthHeight_script.html
dom/tests/mochitest/dom-level0/mochitest.ini
layout/base/MobileViewportManager.cpp
layout/reftests/bugs/reftest.list
--- a/devtools/client/responsive.html/test/browser/browser.ini
+++ b/devtools/client/responsive.html/test/browser/browser.ini
@@ -49,17 +49,16 @@ skip-if = true # Bug 1413765
 [browser_page_state.js]
 [browser_page_style.js]
 [browser_permission_doorhanger.js]
 tags = devtools geolocation
 skip-if = true # Bug 1413765
 [browser_preloaded_newtab.js]
 [browser_prompts.js]
 [browser_screenshot_button.js]
-[browser_scroll.js]
 [browser_state_restore.js]
 [browser_tab_close.js]
 [browser_tab_remoteness_change.js]
 [browser_target_blank.js]
 [browser_telemetry_activate_rdm.js]
 [browser_toolbox_computed_view.js]
 [browser_toolbox_rule_view.js]
 [browser_toolbox_rule_view_reload.js]
deleted file mode 100644
--- a/devtools/client/responsive.html/test/browser/browser_scroll.js
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-/**
- * This test is checking that keyboard scrolling of content in RDM
- * behaves correctly, both with and without touch simulation enabled.
- */
-
-const TEST_URL = "data:text/html;charset=utf-8," +
-  "<div style=\"background:blue; width:200px; height:200px\"></div>";
-
-addRDMTask(TEST_URL, async function({ ui, manager }) {
-  info("Turning off keyboard APZ for this test.");
-  await SpecialPowers.pushPrefEnv({
-    set: [["apz.keyboard.enabled", false]],
-  });
-
-  await setViewportSize(ui, manager, 100, 100);
-  const browser = ui.getViewportBrowser();
-
-  info("Setting focus on the browser.");
-  browser.focus();
-
-  info("Testing scroll behavior with touch simulation OFF.");
-  await testScrollingOfContent(ui);
-
-  // Run the tests again with touch simulation on.
-  const reloadNeeded = await ui.updateTouchSimulation(true);
-  if (reloadNeeded) {
-    info("Reload is needed -- waiting for it.");
-    const reload = waitForViewportLoad(ui);
-    browser.reload();
-    await reload;
-
-    await ContentTask.spawn(browser, null, () => {
-      content.scrollTo(0, 0);
-    });
-  }
-
-  info("Testing scroll behavior with touch simulation ON.");
-  await testScrollingOfContent(ui);
-});
-
-async function testScrollingOfContent(ui) {
-  let scroll;
-
-  info("Checking initial scroll conditions.");
-  const viewportScroll = await getViewportScroll(ui);
-  is(viewportScroll.x, 0, "Content should load with scrollX 0.");
-  is(viewportScroll.y, 0, "Content should load with scrollY 0.");
-
-  /**
-   * Here we're going to send off some arrow key events to trigger scrolling.
-   * What we would like to be able to do is to await the scroll event and then
-   * check the scroll position to confirm the amount of scrolling that has
-   * happened. Unfortunately, APZ makes the scrolling happen asynchronously on
-   * the compositor thread, and it's very difficult to await the end state of
-   * the APZ animation -- see the tests in /gfx/layers/apz/test/mochitest for
-   * an example. For our purposes, it's sufficient to test that the scroll
-   * event is fired at all, and not worry about the amount of scrolling that
-   * has occurred at the time of the event. If the key events don't trigger
-   * scrolling, then no event will be fired and the test will time out.
-   */
-  scroll = waitForViewportScroll(ui);
-  EventUtils.synthesizeKey("KEY_ArrowDown");
-  await scroll;
-  info("Scroll event was fired after arrow key down.");
-
-  scroll = waitForViewportScroll(ui);
-  EventUtils.synthesizeKey("KEY_ArrowRight");
-  await scroll;
-  info("Scroll event was fired after arrow key right.");
-}
--- a/devtools/client/responsive.html/test/browser/head.js
+++ b/devtools/client/responsive.html/test/browser/head.js
@@ -327,23 +327,16 @@ function getSessionHistory(browser) {
 
 function getContentSize(ui) {
   return spawnViewportTask(ui, {}, () => ({
     width: content.screen.width,
     height: content.screen.height,
   }));
 }
 
-function getViewportScroll(ui) {
-  return spawnViewportTask(ui, {}, () => ({
-    x: content.scrollX,
-    y: content.scrollY,
-  }));
-}
-
 async function waitForPageShow(browser) {
   const tab = gBrowser.getTabForBrowser(browser);
   const ui = ResponsiveUIManager.getResponsiveUIForTab(tab);
   if (ui) {
     browser = ui.getViewportBrowser();
   }
   info("Waiting for pageshow from " + (ui ? "responsive" : "regular") + " browser");
   // Need to wait an extra tick after pageshow to ensure everyone is up-to-date,
@@ -351,20 +344,16 @@ async function waitForPageShow(browser) 
   await BrowserTestUtils.waitForContentEvent(browser, "pageshow");
   return waitForTick();
 }
 
 function waitForViewportLoad(ui) {
   return BrowserTestUtils.waitForContentEvent(ui.getViewportBrowser(), "load", true);
 }
 
-function waitForViewportScroll(ui) {
-  return BrowserTestUtils.waitForContentEvent(ui.getViewportBrowser(), "scroll", true);
-}
-
 function load(browser, url) {
   const loaded = BrowserTestUtils.browserLoaded(browser, false, url);
   BrowserTestUtils.loadURI(browser, url);
   return loaded;
 }
 
 function back(browser) {
   const shown = waitForPageShow(browser);
--- a/devtools/client/responsive.html/test/unit/test_resize_viewport.js
+++ b/devtools/client/responsive.html/test/unit/test_resize_viewport.js
@@ -2,28 +2,20 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Test resizing the viewport.
 
 const { addViewport, resizeViewport } =
   require("devtools/client/responsive.html/actions/viewports");
-const { toggleTouchSimulation } = require("devtools/client/responsive.html/actions/ui");
 
 add_task(async function() {
   const store = Store();
   const { getState, dispatch } = store;
 
   dispatch(addViewport());
   dispatch(resizeViewport(0, 500, 500));
 
-  let viewport = getState().viewports[0];
+  const viewport = getState().viewports[0];
   equal(viewport.width, 500, "Resized width of 500");
   equal(viewport.height, 500, "Resized height of 500");
-
-  dispatch(toggleTouchSimulation(true));
-  dispatch(resizeViewport(0, 400, 400));
-
-  viewport = getState().viewports[0];
-  equal(viewport.width, 400, "Resized width of 400 (with touch simulation on)");
-  equal(viewport.height, 400, "Resized height of 400 (with touch simulation on)");
 });
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -3029,30 +3029,33 @@ nsresult nsGlobalWindowOuter::GetInnerSi
   RefPtr<nsPresContext> presContext = mDocShell->GetPresContext();
   RefPtr<nsIPresShell> presShell = mDocShell->GetPresShell();
 
   if (!presContext || !presShell) {
     aSize = CSSIntSize(0, 0);
     return NS_OK;
   }
 
-  // If the visual viewport has been overriden, return that.
+  /*
+   * On platforms with resolution-based zooming, the CSS viewport
+   * and visual viewport may not be the same. The inner size should
+   * be the visual viewport, but we fall back to the CSS viewport
+   * if it is not set.
+   */
   if (presShell->IsVisualViewportSizeSet()) {
     aSize = CSSIntRect::FromAppUnitsRounded(presShell->GetVisualViewportSize());
-    return NS_OK;
-  }
-
-  // Whether or not the css viewport has been overridden, we can get the
-  // correct value by looking at the visible area of the presContext.
-  RefPtr<nsViewManager> viewManager = presShell->GetViewManager();
-  if (viewManager) {
-    viewManager->FlushDelayedResize(false);
-  }
-
-  aSize = CSSIntRect::FromAppUnitsRounded(presContext->GetVisibleArea().Size());
+  } else {
+    RefPtr<nsViewManager> viewManager = presShell->GetViewManager();
+    if (viewManager) {
+      viewManager->FlushDelayedResize(false);
+    }
+
+    aSize =
+        CSSIntRect::FromAppUnitsRounded(presContext->GetVisibleArea().Size());
+  }
   return NS_OK;
 }
 
 int32_t nsGlobalWindowOuter::GetInnerWidthOuter(ErrorResult& aError) {
   CSSIntSize size;
   aError = GetInnerSize(size);
   return size.width;
 }
@@ -3065,51 +3068,32 @@ void nsGlobalWindowOuter::SetInnerWidthO
                                              CallerType aCallerType,
                                              ErrorResult& aError) {
   if (!mDocShell) {
     aError.Throw(NS_ERROR_UNEXPECTED);
     return;
   }
 
   CheckSecurityWidthAndHeight(&aInnerWidth, nullptr, aCallerType);
+
   RefPtr<nsIPresShell> presShell = mDocShell->GetPresShell();
 
-  // Setting inner width should set the visual viewport. Most of the
-  // time, this is the same as the CSS viewport, and when we set one,
-  // we implicitly set both of them. But if
-  // presShell->IsVisualViewportSizeSet() returns true, that means
-  // that the two diverge. In that case we only set the visual viewport.
-  // This mirrors the logic in ::GetInnerSize() and ensures that JS
-  // behaves sanely when setting and then getting the innerWidth.
-  if (presShell && presShell->IsVisualViewportSizeSet()) {
-    CSSSize viewportSize =
-        CSSRect::FromAppUnits(presShell->GetVisualViewportSize());
-    viewportSize.width = aInnerWidth;
-    nsLayoutUtils::SetVisualViewportSize(presShell, viewportSize);
-    return;
-  }
-
-  // We're going to set both viewports. If the css viewport has been
-  // overridden, change the css viewport override. The visual viewport
-  // will adopt this value via the logic in ::GetInnerSize().
   if (presShell && presShell->GetIsViewportOverridden()) {
     nscoord height = 0;
 
     RefPtr<nsPresContext> presContext;
     presContext = presShell->GetPresContext();
 
     nsRect shellArea = presContext->GetVisibleArea();
     height = shellArea.Height();
     SetCSSViewportWidthAndHeight(
         nsPresContext::CSSPixelsToAppUnits(aInnerWidth), height);
     return;
   }
 
-  // Nothing has been overriden, so change the docshell itself, which will
-  // affect both viewports.
   int32_t height = 0;
   int32_t unused = 0;
 
   nsCOMPtr<nsIBaseWindow> docShellAsWin(do_QueryInterface(mDocShell));
   docShellAsWin->GetSize(&unused, &height);
   aError = SetDocShellWidthAndHeight(CSSToDevIntPixels(aInnerWidth), height);
 }
 
@@ -3126,57 +3110,37 @@ nsresult nsGlobalWindowOuter::GetInnerHe
 void nsGlobalWindowOuter::SetInnerHeightOuter(int32_t aInnerHeight,
                                               CallerType aCallerType,
                                               ErrorResult& aError) {
   if (!mDocShell) {
     aError.Throw(NS_ERROR_UNEXPECTED);
     return;
   }
 
-  CheckSecurityWidthAndHeight(nullptr, &aInnerHeight, aCallerType);
   RefPtr<nsIPresShell> presShell = mDocShell->GetPresShell();
 
-  // Setting inner height should set the visual viewport. Most of the
-  // time, this is the same as the CSS viewport, and when we set one,
-  // we implicitly set both of them. But if
-  // presShell->IsVisualViewportSizeSet() returns true, that means
-  // that the two diverge. In that case we only set the visual viewport.
-  // This mirrors the logic in ::GetInnerSize() and ensures that JS
-  // behaves sanely when setting and then getting the innerHeight.
-  if (presShell && presShell->IsVisualViewportSizeSet()) {
-    CSSSize viewportSize =
-        CSSRect::FromAppUnits(presShell->GetVisualViewportSize());
-    viewportSize.height = aInnerHeight;
-    nsLayoutUtils::SetVisualViewportSize(presShell, viewportSize);
-    return;
-  }
-
-  // We're going to set both viewports. If the css viewport has been
-  // overridden, change the css viewport override. The visual viewport
-  // will adopt this value via the logic in ::GetInnerSize().
   if (presShell && presShell->GetIsViewportOverridden()) {
-    nscoord width = 0;
-
     RefPtr<nsPresContext> presContext;
     presContext = presShell->GetPresContext();
 
     nsRect shellArea = presContext->GetVisibleArea();
-    width = shellArea.Width();
-    SetCSSViewportWidthAndHeight(
-        width, nsPresContext::CSSPixelsToAppUnits(aInnerHeight));
+    nscoord height = aInnerHeight;
+    nscoord width = shellArea.Width();
+    CheckSecurityWidthAndHeight(nullptr, &height, aCallerType);
+    SetCSSViewportWidthAndHeight(width,
+                                 nsPresContext::CSSPixelsToAppUnits(height));
     return;
   }
 
-  // Nothing has been overriden, so change the docshell itself, which will
-  // affect both viewports.
   int32_t height = 0;
   int32_t width = 0;
 
   nsCOMPtr<nsIBaseWindow> docShellAsWin(do_QueryInterface(mDocShell));
   docShellAsWin->GetSize(&width, &height);
+  CheckSecurityWidthAndHeight(nullptr, &aInnerHeight, aCallerType);
   aError = SetDocShellWidthAndHeight(width, CSSToDevIntPixels(aInnerHeight));
 }
 
 nsIntSize nsGlobalWindowOuter::GetOuterSize(CallerType aCallerType,
                                             ErrorResult& aError) {
   if (nsContentUtils::ResistFingerprinting(aCallerType)) {
     CSSIntSize size;
     aError = GetInnerSize(size);
--- a/dom/tests/mochitest/dom-level0/innerWidthHeight_script.html
+++ b/dom/tests/mochitest/dom-level0/innerWidthHeight_script.html
@@ -1,30 +1,29 @@
 <!DOCTYPE html>
 <html>
 <head>
   <meta name="viewport" content="width=320,height=320" />
-  <title>Bug 602580 - Test layout viewport and visual viewport sizes with meta tags and changed innerWidth</title>
+  <title>Bug 602580 - Test getting and setting innerWidth and Height after using setCSSViewport</title>
   <script class="testbody" type="text/javascript">
   function runSubTest()
   {
-    /* CSS viewport is set the by the meta tag in this document. */
-    window.opener.is(document.documentElement.clientWidth, 320, "CSS viewport width is meta viewport width");
-    window.opener.is(document.documentElement.clientHeight, 320, "CSS viewport height is meta viewport height");
-
-    /* Visual viewport values can be changed by setting window.innerWidth and innerHeight. */
     var oldWidth = window.innerWidth;
     var oldHeight = window.innerHeight;
 
+    /* Test that return values are now from viewport */
+    window.opener.is(window.innerWidth, 320, "innerWidth is css viewport width");
+    window.opener.is(window.innerHeight, 320, "innerHeight is css viewport height");
+
     window.innerWidth = 300;
-    window.opener.is(window.innerWidth, 300, "visual viewport width returns set value");
+    window.opener.is(window.innerWidth, 300, "innerWidth returns value that was set");
     window.innerWidth = oldWidth;
 
     window.innerHeight = 300;
-    window.opener.is(window.innerHeight, 300, "visual viewport height returns set value");
+    window.opener.is(window.innerHeight, 300, "innerHeight returns value that was set");
     window.innerHeight = oldHeight;
 
     window.opener.finish();
   }
   </script>
 </head>
 <body onload="runSubTest()">
 </body>
--- a/dom/tests/mochitest/dom-level0/mochitest.ini
+++ b/dom/tests/mochitest/dom-level0/mochitest.ini
@@ -7,15 +7,16 @@ support-files =
   idn_child.html
   innerWidthHeight_script.html
   iframe1_location_setters.html
   iframe2_location_setters.html
   iframe3_location_setters.html
 
 [test_crossdomainprops.html]
 [test_innerWidthHeight_script.html]
+skip-if = toolkit == 'android' # Bug 1075071 - Permafail on Android
 [test_location.html]
 [test_location_framed.html]
 [test_location_getters.html]
 [test_location_sandboxed.html]
 [test_location_setters.html]
 [test_setting_document.domain_idn.html]
 [test_setting_document.domain_to_shortened_ipaddr.html]
--- a/layout/base/MobileViewportManager.cpp
+++ b/layout/base/MobileViewportManager.cpp
@@ -425,16 +425,20 @@ void MobileViewportManager::UpdateDispla
 void MobileViewportManager::RefreshVisualViewportSize() {
   // This function is a subset of RefreshViewportSize, and only updates the
   // visual viewport size.
 
   if (!mPresShell) {
     return;
   }
 
+  if (!gfxPrefs::APZAllowZooming()) {
+    return;
+  }
+
   ScreenIntSize displaySize = ViewAs<ScreenPixel>(
       mDisplaySize, PixelCastJustification::LayoutDeviceIsScreenForBounds);
 
   CSSToLayoutDeviceScale cssToDev =
       mPresShell->GetPresContext()->CSSToDevPixelScale();
   LayoutDeviceToLayerScale res(mPresShell->GetResolution());
   CSSToScreenScale zoom = ViewTargetAs<ScreenPixel>(
       cssToDev * res / ParentLayerToLayerScale(1),
@@ -504,20 +508,16 @@ void MobileViewportManager::RefreshViewp
   // If it's the first-paint or the viewport changed, we need to update
   // various APZ properties (the zoom and some things that might depend on it)
   MVM_LOG("%p: Updating properties because %d || %d\n", this, mIsFirstPaint,
           mMobileViewportSize != viewport);
 
   if (gfxPrefs::APZAllowZooming()) {
     UpdateResolution(viewportInfo, displaySize, viewport,
                      displayWidthChangeRatio, UpdateType::ViewportSize);
-  } else {
-    // Even without zoom, we need to update that the visual viewport size
-    // has changed.
-    RefreshVisualViewportSize();
   }
   if (gfxPlatform::AsyncPanZoomEnabled()) {
     UpdateDisplayPortMargins();
   }
 
   CSSSize oldSize = mMobileViewportSize;
 
   // Update internal state.
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1908,57 +1908,57 @@ skip-if(verify) == 1121748-2.html 112174
 == 1130231-2-button-padding-rtl.html 1130231-2-button-padding-rtl-ref.html
 # The 1133905-*.html reftests only make sense on platforms where both APZ and
 # <meta viewport> are enabled.
 # (Note: bug 1308702 covers these tests' failures on Android)
 skip-if(!Android) == 1133905-1.html 1133905-ref.html
 skip-if(!Android) == 1133905-2.html 1133905-ref.html
 skip-if(!Android) == 1133905-3.html 1133905-ref.html
 skip-if(!Android) == 1133905-4.html 1133905-ref.html
-skip-if(!Android) fails-if(Android) == 1133905-5.html 1133905-ref.html
-skip-if(!Android) fails-if(Android) == 1133905-6.html 1133905-ref.html
-skip-if(!Android) == 1133905-1-v.html 1133905-ref-v.html
-skip-if(!Android) == 1133905-2-v.html 1133905-ref-v.html
-skip-if(!Android) == 1133905-3-v.html 1133905-ref-v.html
+skip-if(!Android) == 1133905-5.html 1133905-ref.html
+skip-if(!Android) == 1133905-6.html 1133905-ref.html
+skip-if(!Android) fails-if(Android) == 1133905-1-v.html 1133905-ref-v.html
+skip-if(!Android) fails-if(Android) == 1133905-2-v.html 1133905-ref-v.html
+skip-if(!Android) fails-if(Android) == 1133905-3-v.html 1133905-ref-v.html
 skip-if(!Android) == 1133905-4-v.html 1133905-ref-v.html
 skip-if(!Android) fails-if(Android) == 1133905-5-v.html 1133905-ref-v.html
 skip-if(!Android) fails-if(Android) == 1133905-6-v.html 1133905-ref-v.html
 skip-if(!Android) == 1133905-1-h.html 1133905-ref-h.html
 skip-if(!Android) == 1133905-2-h.html 1133905-ref-h.html
 skip-if(!Android) == 1133905-3-h.html 1133905-ref-h.html
 skip-if(!Android) == 1133905-4-h.html 1133905-ref-h.html
-skip-if(!Android) fails-if(Android) == 1133905-5-h.html 1133905-ref-h.html
-skip-if(!Android) fails-if(Android) == 1133905-6-h.html 1133905-ref-h.html
-skip-if(!Android) == 1133905-1-vh.html 1133905-ref-vh.html
-skip-if(!Android) == 1133905-2-vh.html 1133905-ref-vh.html
-skip-if(!Android) == 1133905-3-vh.html 1133905-ref-vh.html
+skip-if(!Android) == 1133905-5-h.html 1133905-ref-h.html
+skip-if(!Android) == 1133905-6-h.html 1133905-ref-h.html
+skip-if(!Android) fails-if(Android) == 1133905-1-vh.html 1133905-ref-vh.html
+skip-if(!Android) fails-if(Android) == 1133905-2-vh.html 1133905-ref-vh.html
+skip-if(!Android) fails-if(Android) == 1133905-3-vh.html 1133905-ref-vh.html
 skip-if(!Android) == 1133905-4-vh.html 1133905-ref-vh.html
 skip-if(!Android) fails-if(Android) == 1133905-5-vh.html 1133905-ref-vh.html
 skip-if(!Android) fails-if(Android) == 1133905-6-vh.html 1133905-ref-vh.html
 skip-if(!Android) == 1133905-1-rtl.html 1133905-ref-rtl.html
 skip-if(!Android) == 1133905-2-rtl.html 1133905-ref-rtl.html
 skip-if(!Android) == 1133905-3-rtl.html 1133905-ref-rtl.html
 skip-if(!Android) == 1133905-4-rtl.html 1133905-ref-rtl.html
-skip-if(!Android) fails-if(Android) == 1133905-5-rtl.html 1133905-ref-rtl.html
-skip-if(!Android) fails-if(Android) == 1133905-6-rtl.html 1133905-ref-rtl.html
-skip-if(!Android) == 1133905-1-v-rtl.html 1133905-ref-v-rtl.html
-skip-if(!Android) == 1133905-2-v-rtl.html 1133905-ref-v-rtl.html
-skip-if(!Android) == 1133905-3-v-rtl.html 1133905-ref-v-rtl.html
+skip-if(!Android) == 1133905-5-rtl.html 1133905-ref-rtl.html
+skip-if(!Android) == 1133905-6-rtl.html 1133905-ref-rtl.html
+skip-if(!Android) fails-if(Android) == 1133905-1-v-rtl.html 1133905-ref-v-rtl.html
+skip-if(!Android) fails-if(Android) == 1133905-2-v-rtl.html 1133905-ref-v-rtl.html
+skip-if(!Android) fails-if(Android) == 1133905-3-v-rtl.html 1133905-ref-v-rtl.html
 skip-if(!Android) == 1133905-4-v-rtl.html 1133905-ref-v-rtl.html
 skip-if(!Android) fails-if(Android) == 1133905-5-v-rtl.html 1133905-ref-v-rtl.html
 skip-if(!Android) fails-if(Android) == 1133905-6-v-rtl.html 1133905-ref-v-rtl.html
 skip-if(!Android) == 1133905-1-h-rtl.html 1133905-ref-h-rtl.html
 skip-if(!Android) == 1133905-2-h-rtl.html 1133905-ref-h-rtl.html
 skip-if(!Android) == 1133905-3-h-rtl.html 1133905-ref-h-rtl.html
 skip-if(!Android) == 1133905-4-h-rtl.html 1133905-ref-h-rtl.html
-skip-if(!Android) fails-if(Android) == 1133905-5-h-rtl.html 1133905-ref-h-rtl.html
-skip-if(!Android) fails-if(Android) == 1133905-6-h-rtl.html 1133905-ref-h-rtl.html
-skip-if(!Android) == 1133905-1-vh-rtl.html 1133905-ref-vh-rtl.html
-skip-if(!Android) == 1133905-2-vh-rtl.html 1133905-ref-vh-rtl.html
-skip-if(!Android) == 1133905-3-vh-rtl.html 1133905-ref-vh-rtl.html
+skip-if(!Android) == 1133905-5-h-rtl.html 1133905-ref-h-rtl.html
+skip-if(!Android) == 1133905-6-h-rtl.html 1133905-ref-h-rtl.html
+skip-if(!Android) fails-if(Android) == 1133905-1-vh-rtl.html 1133905-ref-vh-rtl.html
+skip-if(!Android) fails-if(Android) == 1133905-2-vh-rtl.html 1133905-ref-vh-rtl.html
+skip-if(!Android) fails-if(Android) == 1133905-3-vh-rtl.html 1133905-ref-vh-rtl.html
 skip-if(!Android) == 1133905-4-vh-rtl.html 1133905-ref-vh-rtl.html
 skip-if(!Android) fails-if(Android) == 1133905-5-vh-rtl.html 1133905-ref-vh-rtl.html
 skip-if(!Android) fails-if(Android) == 1133905-6-vh-rtl.html 1133905-ref-vh-rtl.html
 == 1149304-1-transform-change.html 1149304-1-transform-change-ref.html
 == 1150021-1.xul 1150021-1-ref.xul
 == 1151145-1.html 1151145-1-ref.html
 == 1151306-1.html 1151306-1-ref.html
 == 1153845-1.html 1153845-1-ref.html
@@ -1988,18 +1988,17 @@ fuzzy-if(skiaContent,0-1,0-1) == 1202512
 == 1219985-8.html 1219985-ref-opaque-clear.html
 == 1222226-1.html 1222226-1-ref.html
 pref(layout.css.overflow-clip-box.enabled,true) == 1226278.html 1226278-ref.html
 == 1230466.html about:blank
 random-if(gtkWidget) != 1238243-1.html 1238243-1-notref.html # may fail on Linux, depending on Korean fonts available
 == 1238243-2.html 1238243-2-ref.html
 fuzzy(0-100,0-2000) == 1239564.html 1239564-ref.html
 == 1242172-1.html 1242172-1-ref.html
-# Bug 1308702 is tracking this Android failure case.
-fuzzy-if(webrender,0-2,0-2601) fails-if(Android) == 1242172-2.html 1242172-2-ref.html
+fuzzy-if(webrender,0-2,0-2601) == 1242172-2.html 1242172-2-ref.html
 == 1242781.html 1242781-ref.html
 == 1263845.html 1263845-ref.html
 == 1260543-1.html 1260543-1-ref.html
 == 1271714-1.html 1271714-1-ref.html
 == 1272997-1.html 1272997-1-ref.html
 random-if(!winWidget) == 1273154-1.html 1273154-1-ref.html # depends on Windows font
 random-if(!winWidget) == 1273154-2.html 1273154-2-ref.html # depends on Windows font
 == 1274368-1.html 1274368-1-ref.html