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
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TEST_URL = "data:text/html;charset=utf-8,";
// Test global exit button
addRDMTask(TEST_URL, function* (...args) {
yield testExitButton(...args);
});
// Test global exit button on detached tab.
// See Bug 1262806
add_task(function* () {
let tab = yield addTab(TEST_URL);
let { ui, manager } = yield openRDM(tab);
yield waitBootstrap(ui);
let waitTabIsDetached = Promise.all([
once(tab, "TabClose"),
once(tab.linkedBrowser, "SwapDocShells")
]);
// Detach the tab with RDM open.
let newWindow = gBrowser.replaceTabWithWindow(tab);
// Waiting the tab is detached.
yield waitTabIsDetached;
// Get the new tab instance.
tab = newWindow.gBrowser.tabs[0];
// Detaching a tab closes RDM.
ok(!manager.isActiveForTab(tab),
"Responsive Design Mode is not active for the tab");
// Reopen the RDM and test the exit button again.
yield testExitButton(yield openRDM(tab));
yield BrowserTestUtils.closeWindow(newWindow);
});
function* waitBootstrap(ui) {
let { toolWindow, tab } = ui;
let { store } = toolWindow;
let url = String(tab.linkedBrowser.currentURI.spec);
// Wait until the viewport has been added.
yield waitUntilState(store, state => state.viewports.length == 1);
// Wait until the document has been loaded.
yield waitForFrameLoad(ui, url);
}
function* testExitButton({ui, manager}) {
yield waitBootstrap(ui);
let exitButton = ui.toolWindow.document.getElementById("global-exit-button");
ok(manager.isActiveForTab(ui.tab),
"Responsive Design Mode active for the tab");
exitButton.click();
yield once(manager, "off");
ok(!manager.isActiveForTab(ui.tab),
"Responsive Design Mode is not active for the tab");
}
|