summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_autocomplete_edit_completed.js
blob: c17949eb9e763635b8e2b4c2472eda02e29e90be (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
71
72
73
74
75
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Tests selecting a result, and editing the value of that autocompleted result.
 */

add_task(async function () {
  await PlacesUtils.history.clear();

  await PlacesTestUtils.addVisits([
    { uri: makeURI("http://example.com/foo") },
    { uri: makeURI("http://example.com/foo/bar") },
  ]);

  let tab = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    "about:blank"
  );
  registerCleanupFunction(async function () {
    BrowserTestUtils.removeTab(tab);
    await PlacesUtils.history.clear();
  });

  await UrlbarTestUtils.promiseAutocompleteResultPopup({
    window,
    value: "http://example.com",
  });

  const initialIndex = UrlbarTestUtils.getSelectedRowIndex(window);

  info("Key Down to select the next item.");
  EventUtils.synthesizeKey("KEY_ArrowDown");

  let nextIndex = initialIndex + 1;
  let nextResult = await UrlbarTestUtils.getDetailsOfResultAt(
    window,
    nextIndex
  );
  Assert.equal(
    UrlbarTestUtils.getSelectedRowIndex(window),
    nextIndex,
    "Should have selected the next item"
  );
  Assert.equal(
    gURLBar.untrimmedValue,
    nextResult.url,
    "Should have completed the URL"
  );

  info("Press backspace");
  EventUtils.synthesizeKey("KEY_Backspace");
  await UrlbarTestUtils.promiseSearchComplete(window);

  let editedValue = gURLBar.value;
  Assert.equal(
    UrlbarTestUtils.getSelectedRowIndex(window),
    initialIndex,
    "Should have selected the initialIndex again"
  );
  Assert.notEqual(editedValue, nextResult.url, "The URL has changed.");

  let docLoad = BrowserTestUtils.waitForDocLoadAndStopIt(
    "http://" + editedValue,
    gBrowser.selectedBrowser
  );

  info("Press return to load edited URL.");

  await UrlbarTestUtils.promisePopupClose(window, () => {
    EventUtils.synthesizeKey("KEY_Enter");
  });

  await docLoad;
});