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
|
"use strict";
const {TabStateFlusher} = Cu.import("resource:///modules/sessionstore/TabStateFlusher.jsm", {});
/**
* Test what happens if loading a URL that should clear the
* location bar after a parent process URL.
*/
add_task(function* clearURLBarAfterParentProcessURL() {
let tab = yield new Promise(resolve => {
gBrowser.selectedTab = gBrowser.addTab("about:preferences");
let newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab);
newTabBrowser.addEventListener("Initialized", function onInit() {
newTabBrowser.removeEventListener("Initialized", onInit, true);
resolve(gBrowser.selectedTab);
}, true);
});
document.getElementById("home-button").click();
yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
is(gURLBar.value, "", "URL bar should be empty");
is(tab.linkedBrowser.userTypedValue, null, "The browser should have no recorded userTypedValue");
yield BrowserTestUtils.removeTab(tab);
});
/**
* Same as above, but open the tab without passing the URL immediately
* which changes behaviour in tabbrowser.xml.
*/
add_task(function* clearURLBarAfterParentProcessURLInExistingTab() {
let tab = yield new Promise(resolve => {
gBrowser.selectedTab = gBrowser.addTab();
let newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab);
newTabBrowser.addEventListener("Initialized", function onInit() {
newTabBrowser.removeEventListener("Initialized", onInit, true);
resolve(gBrowser.selectedTab);
}, true);
newTabBrowser.loadURI("about:preferences");
});
document.getElementById("home-button").click();
yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
is(gURLBar.value, "", "URL bar should be empty");
is(tab.linkedBrowser.userTypedValue, null, "The browser should have no recorded userTypedValue");
yield BrowserTestUtils.removeTab(tab);
});
/**
* Load about:home directly from an about:newtab page. Because it is an
* 'initial' page, we need to treat this specially if the user actually
* loads a page like this from the URL bar.
*/
add_task(function* clearURLBarAfterManuallyLoadingAboutHome() {
let promiseTabOpenedAndSwitchedTo = BrowserTestUtils.switchTab(gBrowser, () => {});
// This opens about:newtab:
BrowserOpenTab();
let tab = yield promiseTabOpenedAndSwitchedTo;
is(gURLBar.value, "", "URL bar should be empty");
is(tab.linkedBrowser.userTypedValue, null, "userTypedValue should be null");
gURLBar.value = "about:home";
gURLBar.select();
let aboutHomeLoaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false, "about:home");
EventUtils.sendKey("return");
yield aboutHomeLoaded;
is(gURLBar.value, "", "URL bar should be empty");
is(tab.linkedBrowser.userTypedValue, null, "userTypedValue should be null");
yield BrowserTestUtils.removeTab(tab);
});
/**
* Ensure we don't show 'about:home' in the URL bar temporarily in new tabs
* while we're switching remoteness (when the URL we're loading and the
* default content principal are different).
*/
add_task(function* dontTemporarilyShowAboutHome() {
yield SpecialPowers.pushPrefEnv({set: [["browser.startup.page", 1]]});
let windowOpenedPromise = BrowserTestUtils.waitForNewWindow();
let win = OpenBrowserWindow();
yield windowOpenedPromise;
let promiseTabSwitch = BrowserTestUtils.switchTab(win.gBrowser, () => {});
win.BrowserOpenTab();
yield promiseTabSwitch;
yield TabStateFlusher.flush(win.gBrowser.selectedBrowser);
yield BrowserTestUtils.closeWindow(win);
ok(SessionStore.getClosedWindowCount(), "Should have a closed window");
windowOpenedPromise = BrowserTestUtils.waitForNewWindow();
win = SessionStore.undoCloseWindow(0);
yield windowOpenedPromise;
let wpl = {
onLocationChange(wpl, request, location, flags) {
is(win.gURLBar.value, "", "URL bar value should stay empty.");
},
};
win.gBrowser.addProgressListener(wpl);
let otherTab = win.gBrowser.selectedTab.previousSibling;
let tabLoaded = BrowserTestUtils.browserLoaded(otherTab.linkedBrowser, false, "about:home");
yield BrowserTestUtils.switchTab(win.gBrowser, otherTab);
yield tabLoaded;
win.gBrowser.removeProgressListener(wpl);
is(win.gURLBar.value, "", "URL bar value should be empty.");
yield BrowserTestUtils.closeWindow(win);
});
|