summaryrefslogtreecommitdiffstats
path: root/devtools/client/framework/test/browser_toolbox_selectionchanged_event.js
blob: e4e0dcc446819786f94a8f0550e6e82d274387d6 (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
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

const PAGE_URL = "data:text/html;charset=utf-8,<body><div></div></body>";

add_task(async function () {
  const tab = await addTab(PAGE_URL);
  const toolbox = await openToolboxForTab(tab, "inspector", "bottom");
  const inspector = toolbox.getCurrentPanel();

  const root = await inspector.walker.getRootNode();
  const body = await inspector.walker.querySelector(root, "body");
  const node = await inspector.walker.querySelector(root, "div");

  is(inspector.selection.nodeFront, body, "Body is selected by default");

  // Listen to selection changed
  const onSelectionChanged = toolbox.once("selection-changed");

  info("Select the div and wait for the selection-changed event to be fired.");
  inspector.selection.setNodeFront(node, { reason: "browser-context-menu" });

  await onSelectionChanged;

  is(inspector.selection.nodeFront, node, "Div is now selected");

  // Listen to cleared selection changed
  const onClearSelectionChanged = toolbox.once("selection-changed");

  info(
    "Clear the selection and wait for the selection-changed event to be fired."
  );
  inspector.selection.setNodeFront(null);

  await onClearSelectionChanged;

  is(inspector.selection.nodeFront, null, "The selection is null as expected");
});