author James Teh <>
Wed, 01 Feb 2023 05:02:01 +0000
changeset 651150 dd0fdd1daa69783be36acd5c50544f3694eaa8f9
parent 405674 f9419024217dbfe3f337e965df3b039b1795ee7a
permissions -rw-r--r--
Bug 1813980: Check IsDoc before Parent in RemoteAccessibleBase::ApplyCrossDocOffset. r=morgan We call this function on every ancestor when calculating bounds. RemoteParent() currently requires a hash lookup, so it's more efficient to early return for !IsDoc() first. This is a micro-optimisation, but it might have some impact given that we call this on every ancestor, especially when hit testing, where we call Bounds() a lot. As a bit of drive-by cleanup, use RemoteParent() rather than calling Parent() and IsRemote/AsRemote(). Differential Revision:

     Any copyright is dedicated to the Public Domain.
  <meta charset="utf-8">
  <title>Reference: Percent track sizes</title>
  <link rel="author" title="Mats Palmgren" href="">
  <style type="text/css">
body,html { color:black; background:white; font-family:monospace; font:1px/1 monospace; padding:0; margin:0; }

.grid {
  display: grid;
  float: left;
  border: 3px solid;
  grid-template-columns: 18px;
  width: 30px;
  grid-template-rows: 5px 10px;
  margin-right: 20px;
  grid-auto-rows: 10px;
  align-content: start;
  justify-content: start;

span {
  background: grey;
  min-width: 0;
  min-height: 0;
  line-height: 0;
  align-self: start;
  justify-self: start;
t {
  display: inline-block;
  width: 30px;
  height: 5px;
x {
  background: lime;
  min-width: 0;
  min-height: 0;

.tA {
  grid-template-columns: 30px;
  width: auto;
.tB {
  grid-template-columns: 30px;
  grid-template-rows: 0 10px; 

.t1 {
  grid-template-columns: 28px;
.t3, .t4, .t8 { grid: auto 10px / auto; width: auto; }

.t9 x { width: 18px }
.t3 x, .t4 x, .t8 x, .tA x { width: 0 }
.t5 x { width: 10px }
.tB x { width: 18px }

.sz {
  grid-template-rows: 40px;
  width: 100px;
  height: 100px;
.sz.t1 { grid-template-rows: 50px; }
.sz.t3, .sz.t4 { grid-template-rows: 0; }
.sz.t5 { grid-template-rows: 10px; }
.sz.t9 { grid-template-rows: 40px 10px; height:100px; }
.sz.tA { grid: 0 0 / 0; }
.sz.tB {
  grid-template-columns: 60px;
  grid-template-rows: 40px;

.sz x { width: 60px; }
.sz.t1 x { width: 70px; }
.sz.t3 x, .sz.t4 x, .sz.t8 x { width: 0 }
.sz.t5 x { width: 10px }
.sz.tA x { width: 160px }

.tC {
  grid-template-columns: 5px;
  grid-template-rows: 5px;
.tD {
  grid-template-columns: 0;
  grid-template-rows: 0;

<div class="grid t0"><span><t></t></span><x></x></div>
<div class="grid t1"><span><t></t></span><x></x></div>
<div class="grid t2"><span><t></t></span><x></x></div>
<div class="grid t3"><span><t></t></span><x></x></div>
<div class="grid t4"><span><t></t></span><x></x></div>
<div class="grid t5"><span><t></t></span><x></x></div>
<div class="grid t6"><span><t></t></span><x></x></div>
<div class="grid t7"><span><t></t></span><x></x></div>
<div class="grid t8"><span><t></t></span><x></x></div>
<div class="grid t9"><span><t></t></span><x></x></div>
<div class="grid tA"><span><t></t></span><x></x></div>
<div class="grid tD" style="width:0"><span><t></t></span><x></x></div>

<br clear="all">

<div class="grid sz t0"><span><t></t></span><x></x></div>
<div class="grid sz t1"><span><t></t></span><x></x></div>
<div class="grid sz t2"><span><t></t></span><x></x></div>
<div class="grid sz t3"><span><t></t></span><x></x></div>
<div class="grid sz t4"><span><t></t></span><x></x></div>
<div class="grid sz t5"><span><t></t></span><x></x></div>
<div class="grid sz t6"><span><t></t></span><x></x></div>
<div class="grid sz t7"><span><t></t></span><x></x></div>
<div class="grid sz t8"><span><t></t></span><x></x></div>
<div class="grid sz t9"><span><t></t></span><x></x></div>
<div class="grid sz tA"><span><t></t></span><x></x></div>
<div class="grid sz tB"><span><t></t></span><x></x></div>
<div class="grid sz tC"><span><t></t></span><x style="height:10px; width:5px"></x></div>
<div class="grid sz tD"><span><t></t></span><x style="width:0"></x></div>
<div class="grid sz tD"><span><t></t></span><x style="width:0"></x></div>