summaryrefslogtreecommitdiffstats
path: root/browser/components/firefoxview/tests/browser/browser_ui_state.js
blob: 979a8c9d5c4ebce11de5529cedb99597a7e75af9 (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
135
136
137
138
139
140
141
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

add_task(async function test_state_prefs_unset() {
  await SpecialPowers.clearUserPref(TAB_PICKUP_STATE_PREF);
  await SpecialPowers.clearUserPref(RECENTLY_CLOSED_STATE_PREF);

  const sandbox = sinon.createSandbox();
  let setupCompleteStub = sandbox.stub(
    TabsSetupFlowManager,
    "isTabSyncSetupComplete"
  );
  setupCompleteStub.returns(true);

  await withFirefoxView({}, async function (browser) {
    const { document } = browser.contentWindow;
    let recentlyClosedTabsContainer = document.querySelector(
      "#recently-closed-tabs-container"
    );
    ok(
      recentlyClosedTabsContainer.open,
      "Recently Closed Tabs should be open if the pref is unset and sync setup is complete"
    );

    let tabPickupContainer = document.querySelector("#tab-pickup-container");
    ok(
      tabPickupContainer.open,
      "Tab Pickup container should be open if the pref is unset and sync setup is complete"
    );

    sandbox.restore();
  });
});

add_task(async function test_state_prefs_defined() {
  await SpecialPowers.pushPrefEnv({
    set: [
      [TAB_PICKUP_STATE_PREF, false],
      [RECENTLY_CLOSED_STATE_PREF, false],
    ],
  });

  const sandbox = sinon.createSandbox();
  let setupCompleteStub = sandbox.stub(
    TabsSetupFlowManager,
    "isTabSyncSetupComplete"
  );
  setupCompleteStub.returns(true);

  await withFirefoxView({}, async function (browser) {
    const { document } = browser.contentWindow;
    let recentlyClosedTabsContainer = document.querySelector(
      "#recently-closed-tabs-container"
    );
    ok(
      !recentlyClosedTabsContainer.getAttribute("open"),
      "Recently Closed Tabs should not be open if the pref is set to false"
    );

    let tabPickupContainer = document.querySelector("#tab-pickup-container");
    ok(
      !tabPickupContainer.getAttribute("open"),
      "Tab Pickup container should not be open if the pref is set to false and sync setup is complete"
    );

    sandbox.restore();
  });
});

add_task(async function test_state_pref_set_on_toggle() {
  await SpecialPowers.pushPrefEnv({
    set: [
      [TAB_PICKUP_STATE_PREF, true],
      [RECENTLY_CLOSED_STATE_PREF, true],
    ],
  });

  const sandbox = sinon.createSandbox();
  let setupCompleteStub = sandbox.stub(
    TabsSetupFlowManager,
    "isTabSyncSetupComplete"
  );
  setupCompleteStub.returns(true);

  await withFirefoxView({}, async function (browser) {
    const { document } = browser.contentWindow;

    await waitForElementVisible(browser, "#tab-pickup-container > summary");

    document.querySelector("#tab-pickup-container > summary").click();

    document.querySelector("#recently-closed-tabs-container > summary").click();

    // Wait a turn for the click to propagate to the pref.
    await TestUtils.waitForTick();

    ok(
      !Services.prefs.getBoolPref(RECENTLY_CLOSED_STATE_PREF),
      "Hiding the recently closed container should have flipped the UI state pref value"
    );
    ok(
      !Services.prefs.getBoolPref(TAB_PICKUP_STATE_PREF),
      "Hiding the tab pickup container should have flipped the UI state pref value"
    );

    sandbox.restore();
  });
});

add_task(async function test_state_prefs_ignored_during_sync_setup() {
  await SpecialPowers.pushPrefEnv({
    set: [
      [TAB_PICKUP_STATE_PREF, false],
      [RECENTLY_CLOSED_STATE_PREF, false],
    ],
  });
  const sandbox = sinon.createSandbox();
  let setupCompleteStub = sandbox.stub(
    TabsSetupFlowManager,
    "isTabSyncSetupComplete"
  );
  setupCompleteStub.returns(false);
  await withFirefoxView({}, async function (browser) {
    const { document } = browser.contentWindow;
    let recentlyClosedTabsContainer = document.querySelector(
      "#recently-closed-tabs-container"
    );
    ok(
      !recentlyClosedTabsContainer.open,
      "Recently Closed Tabs should not be open if the pref is set to false"
    );

    let tabPickupContainer = document.querySelector("#tab-pickup-container");
    ok(
      tabPickupContainer.open,
      "Tab Pickup container should be open if the pref is set to false but sync setup is not complete"
    );

    sandbox.restore();
  });
});