tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

position-change-heuristic-display-none-change.html (1968B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
      5 <link rel="author" title="Mozilla" href="https://mozilla.org">
      6 <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1543599">
      7 <link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/#suppression-triggers">
      8 <style>
      9 #hidden {
     10  display: none;
     11  background: red;
     12 }
     13 #spacer {
     14  height: calc(100vh + 200px); /* At least 200px of scroll range */
     15 }
     16 </style>
     17 <table>
     18  <thead>
     19    <tr>
     20      <th>1
     21      <th>1
     22      <th>1
     23      <th>1
     24    </tr>
     25  </thead>
     26  <thead id="hidden">
     27    <tr>
     28      <th>1
     29      <th>1
     30      <th>1
     31      <th>1
     32    </tr>
     33  </thead>
     34  <tbody>
     35    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     36    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     37    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     38    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     39    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     40    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     41    <tr><td>0 <td>0 <td>0 <td>0 </tr>
     42  </tbody>
     43 </table>
     44 <div id="spacer"></div>
     45 <script>
     46 let firstEvent = true;
     47 const targetScrollPosition = 100;
     48 const hidden = document.querySelector("#hidden");
     49 const t = async_test("Scroll offset doesn't change when an element goes back and forth to display: none");
     50 window.onscroll = t.step_func(function() {
     51  hidden.style.display = "block";
     52  hidden.style.position = "absolute";
     53  hidden.style.visibility = "hidden";
     54  window.unused = hidden.offsetHeight;
     55  hidden.style.display = "";
     56  hidden.style.position = "";
     57  hidden.style.visibility = "";
     58 
     59  if (firstEvent) {
     60    firstEvent = false;
     61    requestAnimationFrame(t.step_func(function() {
     62      requestAnimationFrame(t.step_func_done(function() {
     63        assert_equals(document.scrollingElement.scrollTop, targetScrollPosition);
     64      }));
     65    }));
     66  }
     67 });
     68 
     69 window.onload = t.step_func(function() {
     70  window.scrollTo(0, targetScrollPosition);
     71 });
     72 </script>