Bug 1814828 - Handle clicks on result row border. r=adw

Differential Revision: https://phabricator.services.mozilla.com/D168794
This commit is contained in:
Dão Gottwald
2023-02-06 14:01:22 +00:00
parent e89b11b939
commit 64875a0d74
3 changed files with 49 additions and 1 deletions

View File

@@ -2063,7 +2063,18 @@ export class UrlbarView {
*/
#getClosestSelectableElement(element) {
let closest = element.closest(SELECTABLE_ELEMENT_SELECTOR);
return closest && this.#isElementVisible(closest) ? closest : null;
if (closest && this.#isElementVisible(closest)) {
return closest;
}
// When clicking on a gap within a row or on its border or padding, treat
// this as if the main part was clicked.
if (
element.classList.contains("urlbarView-row") &&
element.hasAttribute("row-selectable")
) {
return element._content;
}
return null;
}
/**

View File

@@ -23,6 +23,7 @@ support-files =
add_search_engine_many.html
add_search_engine_same_names.html
add_search_engine_two.html
[browser_click_row_border.js]
[browser_contextualsearch.js]
[browser_shortcuts_add_search_engine.js]
support-files =

View File

@@ -0,0 +1,36 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TEST_URL = "https://example.com/autocomplete";
add_setup(async function() {
await PlacesTestUtils.addVisits(TEST_URL);
registerCleanupFunction(async function() {
await PlacesUtils.history.clear();
});
});
add_task(async function test_click_row_border() {
await UrlbarTestUtils.promiseAutocompleteResultPopup({
window,
value: "example.com/autocomplete",
});
let resultRow = await UrlbarTestUtils.waitForAutocompleteResultAt(window, 0);
let loaded = BrowserTestUtils.browserLoaded(
gBrowser.selectedBrowser,
false,
TEST_URL
);
info("Clicking on the result's top pixel row");
EventUtils.synthesizeMouse(
resultRow,
parseInt(getComputedStyle(resultRow).borderTopLeftRadius) * 2,
1,
{}
);
info("Waiting for page to load");
await loaded;
ok(true, "Page loaded");
});