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
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const { SearchTestUtils } = ChromeUtils.importESModule(
"resource://testing-common/SearchTestUtils.sys.mjs"
);
SearchTestUtils.init(this);
const kButton = document.getElementById("reload-button");
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [["browser.fixup.dns_first_for_single_words", true]],
});
// Create an engine to use for the test.
await SearchTestUtils.installSearchExtension(
{
name: "MozSearch",
search_url: "https://example.com/",
search_url_get_params: "q={searchTerms}",
},
{ setAsDefault: true }
);
});
/*
* When loading a keyword search as a result of an unknown host error,
* check that we can stop the load.
* See https://bugzilla.mozilla.org/show_bug.cgi?id=235825
*/
add_task(async function test_unknown_host() {
await BrowserTestUtils.withNewTab("about:blank", async browser => {
const kNonExistingHost = "idontreallyexistonthisnetwork";
let searchPromise = BrowserTestUtils.browserStarted(
browser,
Services.uriFixup.keywordToURI(kNonExistingHost).preferredURI.spec
);
gURLBar.value = kNonExistingHost;
gURLBar.select();
EventUtils.synthesizeKey("KEY_Enter");
await searchPromise;
// With parent initiated loads, we need to give XULBrowserWindow
// time to process the STATE_START event and set the attribute to true.
await new Promise(resolve => executeSoon(resolve));
ok(kButton.hasAttribute("displaystop"), "Should be showing stop");
await TestUtils.waitForCondition(
() => !kButton.hasAttribute("displaystop")
);
ok(
!kButton.hasAttribute("displaystop"),
"Should no longer be showing stop after search"
);
});
});
/*
* When NOT loading a keyword search as a result of an unknown host error,
* check that the stop button goes back to being a reload button.
* See https://bugzilla.mozilla.org/show_bug.cgi?id=1591183
*/
add_task(async function test_unknown_host_without_search() {
await BrowserTestUtils.withNewTab("about:blank", async browser => {
const kNonExistingHost = "idontreallyexistonthisnetwork.example.com";
let searchPromise = BrowserTestUtils.browserLoaded(
browser,
false,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://" + kNonExistingHost + "/",
true /* want an error page */
);
gURLBar.value = kNonExistingHost;
gURLBar.select();
EventUtils.synthesizeKey("KEY_Enter");
await searchPromise;
await TestUtils.waitForCondition(
() => !kButton.hasAttribute("displaystop")
);
ok(
!kButton.hasAttribute("displaystop"),
"Should not be showing stop on error page"
);
});
});
|