summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/widgets/test_panel_list_min_width_from_anchor.html
blob: 0708174a88edcec2fbf5b42e2bef0ef5ec112433 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE HTML>
<!-- Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/ -->
<html>
<head>
  <title>Test Panel List Min-width From Anchor</title>
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
  <script type="text/javascript" src="head.js"></script>
  <link rel="stylesheet" href="chrome://global/skin/global.css" type="text/css"/>
  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>

<div id="content">
  <button id="anchor-button">This is a button with a long string to act as a wide anchor.</button>
  <panel-list id="panel-list">
    <panel-item>one</panel-item>
    <panel-item>two</panel-item>
    <panel-item>three</panel-item>
    <panel-item>four</panel-item>
    <panel-item>five</panel-item>
    <panel-item>six</panel-item>
  </panel-list>
</div>

<pre id="test">

<script class="testbody" type="application/javascript">
const {BrowserTestUtils} = ChromeUtils.importESModule("resource://testing-common/BrowserTestUtils.sys.mjs");
let anchorButton, panelList;

add_setup(function setup() {
  panelList = document.getElementById("panel-list");
  anchorButton = document.getElementById("anchor-button");
  anchorButton.addEventListener("click", e => panelList.toggle(e));
});

add_task(async function minWidthFromAnchor() {
  let anchorWidth = anchorButton.getBoundingClientRect().width;
  let shown = BrowserTestUtils.waitForEvent(panelList, "shown");
  synthesizeMouseAtCenter(anchorButton, {});
  await shown;

  let panelWidth = panelList.getBoundingClientRect().width;
  isnot(anchorWidth, panelWidth, "Without min-width-from-anchor, panel should not have anchor width.");

  let hidden = BrowserTestUtils.waitForEvent(panelList, "hidden");
  synthesizeKey("Escape", {});
  await hidden;

  panelList.toggleAttribute("min-width-from-anchor", true);

  shown = BrowserTestUtils.waitForEvent(panelList, "shown");
  synthesizeMouseAtCenter(anchorButton, {});
  await shown;

  panelWidth = panelList.getBoundingClientRect().width;
  is(anchorWidth, panelWidth, "With min-width-from-anchor, panel should have anchor width.");

  hidden = BrowserTestUtils.waitForEvent(panelList, "hidden");
  synthesizeKey("Escape", {});
  await hidden;
});

</script>
</pre>
</body>
</html>