summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_sidebar_open_bookmarks.js
blob: 92f98b898ce2a441b120468a262da604db0e59e6 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

const PREF_LOAD_BOOKMARKS_IN_TABS = "browser.tabs.loadBookmarksInTabs";

var gBms;

add_setup(async function () {
  gBms = await PlacesUtils.bookmarks.insertTree({
    guid: PlacesUtils.bookmarks.unfiledGuid,
    children: [
      {
        title: "bm1",
        url: "about:buildconfig",
      },
      {
        title: "bm2",
        url: "about:mozilla",
      },
    ],
  });

  registerCleanupFunction(async () => {
    await PlacesUtils.bookmarks.eraseEverything();
  });
});

add_task(async function test_open_bookmark_from_sidebar() {
  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);

  await withSidebarTree("bookmarks", async tree => {
    tree.selectItems([gBms[0].guid]);

    let loadedPromise = BrowserTestUtils.browserLoaded(
      gBrowser.selectedBrowser,
      false,
      gBms[0].url
    );

    tree.controller.doCommand("placesCmd_open");

    await loadedPromise;

    // An assert to make the test happy.
    Assert.ok(true, "The bookmark was loaded successfully.");
  });

  await BrowserTestUtils.removeTab(tab);
});

add_task(async function test_open_bookmark_from_sidebar_keypress() {
  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);

  await withSidebarTree("bookmarks", async tree => {
    tree.selectItems([gBms[1].guid]);

    let loadedPromise = BrowserTestUtils.browserLoaded(
      gBrowser.selectedBrowser,
      false,
      gBms[1].url
    );

    tree.focus();
    EventUtils.sendKey("return");

    await loadedPromise;

    // An assert to make the test happy.
    Assert.ok(true, "The bookmark was loaded successfully.");
  });

  await BrowserTestUtils.removeTab(tab);
});

add_task(async function test_open_bookmark_in_tab_from_sidebar() {
  await SpecialPowers.pushPrefEnv({
    set: [[PREF_LOAD_BOOKMARKS_IN_TABS, true]],
  });

  await BrowserTestUtils.withNewTab({ gBrowser }, async initialTab => {
    await withSidebarTree("bookmarks", async tree => {
      tree.selectItems([gBms[0].guid]);
      let loadedPromise = BrowserTestUtils.browserLoaded(
        gBrowser.selectedBrowser,
        false,
        gBms[0].url
      );
      tree.focus();
      EventUtils.sendKey("return");
      await loadedPromise;
      Assert.ok(true, "The bookmark reused the empty tab.");

      tree.selectItems([gBms[1].guid]);
      let newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, gBms[1].url);
      tree.focus();
      EventUtils.sendKey("return");
      let newTab = await newTabPromise;
      Assert.ok(true, "The bookmark was opened in a new tab.");
      BrowserTestUtils.removeTab(newTab);
    });
  });

  await SpecialPowers.popPrefEnv();
});

add_task(async function test_open_bookmark_folder_from_sidebar() {
  await withSidebarTree("bookmarks", async tree => {
    tree.selectItems([PlacesUtils.bookmarks.virtualUnfiledGuid]);

    Assert.equal(
      tree.view.selection.getRangeCount(),
      1,
      "Should only have one range selected"
    );

    let loadedPromises = [];

    for (let bm of gBms) {
      loadedPromises.push(
        BrowserTestUtils.waitForNewTab(gBrowser, bm.url, false, true)
      );
    }

    synthesizeClickOnSelectedTreeCell(tree, { button: 1 });

    let tabs = await Promise.all(loadedPromises);

    for (let tab of tabs) {
      await BrowserTestUtils.removeTab(tab);
    }
  });
});