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

"use strict";

// Bug 1327683 - Tests that an editable attribute is not refocused
// when the focus has been moved to an other element than the editor.

const TEST_URL = 'data:text/html,<body class="abcd"></body>';

add_task(async function () {
  const { inspector } = await openInspectorForURL(TEST_URL);

  await selectNode(".abcd", inspector);
  await clickContainer(".abcd", inspector);

  const container = await focusNode(".abcd", inspector);
  ok(container && container.editor, "The markup-container was found");

  info("Listening for the markupmutation event");
  const nodeMutated = inspector.once("markupmutation");
  const attr = container.editor.attrElements
    .get("class")
    .querySelector(".editable");

  attr.focus();
  EventUtils.sendKey("return", inspector.panelWin);
  const input = inplaceEditor(attr).input;
  ok(input, "Found editable field for class attribute");

  input.value = 'class="wxyz"';

  const onFocus = once(inspector.searchBox, "focus");
  EventUtils.synthesizeMouseAtCenter(
    inspector.searchBox,
    {},
    inspector.panelWin
  );

  info("Wait for the focus event on search box");
  await onFocus;

  info("Wait for the markup-mutation event");
  await nodeMutated;

  is(
    inspector.panelDoc.activeElement,
    inspector.searchBox,
    "The currently focused element is the search box"
  );
});