88 lines
2.6 KiB
JavaScript
88 lines
2.6 KiB
JavaScript
/* 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/. */
|
|
|
|
// Tests view updates in relation to hidden-exposure results.
|
|
|
|
"use strict";
|
|
|
|
// Tests the case where a hidden-exposure result replaces another result in a
|
|
// row in the view.
|
|
add_task(async function rowCanUpdateToResult() {
|
|
// Create a provider that returns two non-hidden results.
|
|
let provider = new UrlbarTestUtils.TestProvider({ priority: Infinity });
|
|
UrlbarProvidersManager.registerProvider(provider);
|
|
registerCleanupFunction(() => {
|
|
UrlbarProvidersManager.unregisterProvider(provider);
|
|
});
|
|
|
|
for (let i = 0; i < 2; i++) {
|
|
provider.results.push(
|
|
new UrlbarResult(
|
|
UrlbarUtils.RESULT_TYPE.URL,
|
|
UrlbarUtils.RESULT_SOURCE.HISTORY,
|
|
{
|
|
url: "https://example.com/" + i,
|
|
}
|
|
)
|
|
);
|
|
}
|
|
|
|
// Do a search to populate the view with the provider's results, and leave the
|
|
// view open.
|
|
await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
|
window,
|
|
value: "test1",
|
|
});
|
|
|
|
Assert.equal(
|
|
UrlbarTestUtils.getResultCount(window),
|
|
2,
|
|
"The view should have the two non-hidden provider results"
|
|
);
|
|
for (let i = 0; i < 2; i++) {
|
|
let details = await UrlbarTestUtils.getDetailsOfResultAt(window, i);
|
|
Assert.equal(
|
|
details.url,
|
|
"https://example.com/" + i,
|
|
"The non-hidden result should have the expected URL at index " + i
|
|
);
|
|
}
|
|
|
|
// Now make the provider return only a hidden-exposure result. Important: The
|
|
// hidden-exposure result needs to pass the view's "row can update to result?"
|
|
// check so that it can replace the non-hidden result in the first row. So
|
|
// make sure the two results are the exact same type.
|
|
provider.results = [
|
|
Object.assign(
|
|
new UrlbarResult(
|
|
UrlbarUtils.RESULT_TYPE.URL,
|
|
UrlbarUtils.RESULT_SOURCE.HISTORY,
|
|
{
|
|
url: "https://example.com/hidden-exposure",
|
|
}
|
|
),
|
|
{
|
|
exposureTelemetry: UrlbarUtils.EXPOSURE_TELEMETRY.HIDDEN,
|
|
}
|
|
),
|
|
];
|
|
|
|
// Do another search without closing the view first. Since the only result is
|
|
// the hidden result, there should no longer be any rows in the view.
|
|
await UrlbarTestUtils.promiseAutocompleteResultPopup({
|
|
window,
|
|
value: "test2",
|
|
});
|
|
|
|
Assert.equal(
|
|
UrlbarTestUtils.getResultCount(window),
|
|
0,
|
|
"The view should be empty"
|
|
);
|
|
|
|
await UrlbarTestUtils.promisePopupClose(window);
|
|
gURLBar.handleRevert();
|
|
|
|
UrlbarProvidersManager.unregisterProvider(provider);
|
|
});
|