summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser-updateResults/browser_suggestedIndex_5_url_5_search.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser-updateResults/browser_suggestedIndex_5_url_5_search.js')
-rw-r--r--browser/components/urlbar/tests/browser-updateResults/browser_suggestedIndex_5_url_5_search.js1203
1 files changed, 1203 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser-updateResults/browser_suggestedIndex_5_url_5_search.js b/browser/components/urlbar/tests/browser-updateResults/browser_suggestedIndex_5_url_5_search.js
new file mode 100644
index 0000000000..44078c2251
--- /dev/null
+++ b/browser/components/urlbar/tests/browser-updateResults/browser_suggestedIndex_5_url_5_search.js
@@ -0,0 +1,1203 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// This test checks row visibility during view updates when rows with suggested
+// indexes are added and removed. Each task performs two searches: Search 1
+// returns 5 results where the first result is a search suggestion and the
+// remainder are URL results, and search 2 returns 5 results with search
+// suggestions. This tests the view-update logic that allows search suggestions
+// to replace other results once an existing suggestion row is encountered.
+
+"use strict";
+
+// Search 1:
+// 5 results, no suggestedIndex
+// Search 2:
+// 5 results including suggestedIndex = 1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ hidden: true,
+ },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results, no suggestedIndex
+// Search 2:
+// 5 results including suggestedIndex = 2
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 2,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results, no suggestedIndex
+// Search 2:
+// 5 results including suggestedIndex = 9
+// Expected visible rows during update:
+// Indexes 2 and 3 replaced with search suggestions, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results, no suggestedIndex
+// Search 2:
+// 5 results including suggestedIndex = -1
+// Expected visible rows during update:
+// Indexes 2 and 3 replaced with search suggestions, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results, no suggestedIndex
+// Search 2:
+// 5 results including suggestedIndex = -2
+// Expected visible rows during update:
+// Index 2 replaced with search suggestion, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ hidden: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = 1
+// Expected visible rows during update:
+// All search-2 rows
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 2,
+ type: UrlbarPrefs.get("resultMenu")
+ ? UrlbarUtils.RESULT_TYPE.URL
+ : UrlbarUtils.RESULT_TYPE.SEARCH,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = 2
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 2,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = 9
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = -1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = -2
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ hidden: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = -3
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -3,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -3,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 9
+// Search 2:
+// 5 results including suggestedIndex = 1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ hidden: true,
+ },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 9
+// Search 2:
+// 5 results including suggestedIndex = 2
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 2,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 9
+// Search 2:
+// 5 results including suggestedIndex = 9
+// Expected visible rows during update:
+// All search-2 rows
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 2,
+ type: UrlbarPrefs.get("resultMenu")
+ ? UrlbarUtils.RESULT_TYPE.URL
+ : UrlbarUtils.RESULT_TYPE.SEARCH,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 9
+// Search 2:
+// 5 results including suggestedIndex = -1
+// Expected visible rows during update:
+// Indexes 2 and 3 replaced with search suggestions, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 9
+// Search 2:
+// 5 results including suggestedIndex = -2
+// Expected visible rows during update:
+// Index 2 replaced with search suggestion, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ hidden: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 9
+// Search 2:
+// 5 results including suggestedIndex = -3
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -3,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -3,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -1
+// Search 2:
+// 5 results including suggestedIndex = 1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ hidden: true,
+ },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -1
+// Search 2:
+// 5 results including suggestedIndex = 2
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 2,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -1
+// Search 2:
+// 5 results including suggestedIndex = 9
+// Expected visible rows during update:
+// Indexes 2 and 3 replaced with search suggestions, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -1
+// Search 2:
+// 5 results including suggestedIndex = -1
+// Expected visible rows during update:
+// All search-2 rows
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 2,
+ type: UrlbarPrefs.get("resultMenu")
+ ? UrlbarUtils.RESULT_TYPE.URL
+ : UrlbarUtils.RESULT_TYPE.SEARCH,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -1
+// Search 2:
+// 5 results including suggestedIndex = -2
+// Expected visible rows during update:
+// Index 2 replaced with search suggestion, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ hidden: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -2
+// Search 2:
+// 5 results including suggestedIndex = 1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ hidden: true,
+ },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -2
+// Search 2:
+// 5 results including suggestedIndex = 2
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 2,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -2
+// Search 2:
+// 5 results including suggestedIndex = 9
+// Expected visible rows during update:
+// Index 2 replaced with search suggestion, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: 9,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 9,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -2
+// Search 2:
+// 5 results including suggestedIndex = -1
+// Expected visible rows during update:
+// Index 2 replaced with search suggestion, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ stale: true,
+ },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -2
+// Search 2:
+// 5 results including suggestedIndex = -2
+// Expected visible rows during update:
+// All search-2 rows
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 3,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndex: -2,
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ {
+ count: 1,
+ type: UrlbarPrefs.get("resultMenu")
+ ? UrlbarUtils.RESULT_TYPE.URL
+ : UrlbarUtils.RESULT_TYPE.SEARCH,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -2,
+ },
+ {
+ count: 1,
+ type: UrlbarPrefs.get("resultMenu")
+ ? UrlbarUtils.RESULT_TYPE.URL
+ : UrlbarUtils.RESULT_TYPE.SEARCH,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results, no suggestedIndex
+// Search 2:
+// 5 results including suggestedIndex = 1 and suggestedIndex = -1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 2,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndexes: [1, -1],
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 3, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = 1
+// Search 2:
+// 5 results including suggestedIndex = 1 and suggestedIndex = -1
+// Expected visible rows during update:
+// Index 3 replaced with search suggestion, no other changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: 1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 2,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndexes: [1, -1],
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});
+
+// Search 1:
+// 5 results including suggestedIndex = -1
+// Search 2:
+// 5 results including suggestedIndex = 1 and suggestedIndex = -1
+// Expected visible rows during update:
+// 5 original rows with no changes
+add_suggestedIndex_task({
+ search1: {
+ other: [
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL },
+ ],
+ suggestedIndex: -1,
+ viewCount: 5,
+ },
+ search2: {
+ otherCount: 2,
+ otherType: UrlbarUtils.RESULT_TYPE.SEARCH,
+ suggestedIndexes: [1, -1],
+ viewCount: 5,
+ },
+ duringUpdate: [
+ { count: 1 },
+ { count: 1, type: UrlbarUtils.RESULT_TYPE.SEARCH, stale: true },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.URL, stale: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ stale: true,
+ },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: 1,
+ hidden: true,
+ },
+ { count: 2, type: UrlbarUtils.RESULT_TYPE.SEARCH, hidden: true },
+ {
+ count: 1,
+ type: UrlbarUtils.RESULT_TYPE.URL,
+ suggestedIndex: -1,
+ hidden: true,
+ },
+ ],
+});