summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/tabs/browser_multiselect_tabs_drag_to_bookmarks_toolbar.js
blob: 42342c889cbd63dc352013447830244142b25396 (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
add_task(async function test() {
  // Disable tab animations
  gReduceMotionOverride = true;

  // Open Bookmarks Toolbar
  let bookmarksToolbar = document.getElementById("PersonalToolbar");
  setToolbarVisibility(bookmarksToolbar, true);
  ok(!bookmarksToolbar.collapsed, "bookmarksToolbar should be visible now");

  let tab1 = await addTab("http://mochi.test:8888/1");
  let tab2 = await addTab("http://mochi.test:8888/2");
  let tab3 = await addTab("http://mochi.test:8888/3");
  let tab4 = await addTab("http://mochi.test:8888/4");
  let tab5 = await addTab("http://mochi.test:8888/5");

  is(gBrowser.multiSelectedTabsCount, 0, "Zero multiselected tabs");

  await BrowserTestUtils.switchTab(gBrowser, tab2);
  await triggerClickOn(tab1, { ctrlKey: true });

  ok(tab1.multiselected, "Tab1 is multiselected");
  ok(tab2.multiselected, "Tab2 is multiselected");
  ok(!tab3.multiselected, "Tab3 is not multiselected");
  ok(!tab4.multiselected, "Tab4 is not multiselected");
  ok(!tab5.multiselected, "Tab5 is not multiselected");
  is(gBrowser.multiSelectedTabsCount, 2, "Two multiselected tabs");

  // Use getElementsByClassName so the list is live and will update as items change.
  let currentBookmarks =
    bookmarksToolbar.getElementsByClassName("bookmark-item");
  let startBookmarksLength = currentBookmarks.length;

  // The destination element should be a non-folder bookmark
  let destBookmarkItem = () =>
    bookmarksToolbar.querySelector(
      "#PlacesToolbarItems .bookmark-item:not([container])"
    );

  await EventUtils.synthesizePlainDragAndDrop({
    srcElement: tab1,
    destElement: destBookmarkItem(),
  });
  await TestUtils.waitForCondition(
    () => currentBookmarks.length == startBookmarksLength + 2,
    "waiting for 2 bookmarks"
  );
  is(
    currentBookmarks.length,
    startBookmarksLength + 2,
    "Bookmark count should have increased by 2"
  );

  // Drag non-selection to the bookmarks toolbar
  startBookmarksLength = currentBookmarks.length;
  await EventUtils.synthesizePlainDragAndDrop({
    srcElement: tab3,
    destElement: destBookmarkItem(),
  });
  await TestUtils.waitForCondition(
    () => currentBookmarks.length == startBookmarksLength + 1,
    "waiting for 1 bookmark"
  );
  is(
    currentBookmarks.length,
    startBookmarksLength + 1,
    "Bookmark count should have increased by 1"
  );

  BrowserTestUtils.removeTab(tab1);
  BrowserTestUtils.removeTab(tab2);
  BrowserTestUtils.removeTab(tab3);
  BrowserTestUtils.removeTab(tab4);
  BrowserTestUtils.removeTab(tab5);
});