зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1907756: Store bookmark at the end if user drop item on chevron menu r=places-reviewers,mak
Differential Revision: https://phabricator.services.mozilla.com/D218384
This commit is contained in:
Родитель
d148733a9d
Коммит
4e7d59bea9
|
@ -1625,6 +1625,13 @@ class PlacesToolbar extends PlacesViewBase {
|
||||||
dropPoint.beforeIndex = beforeIndex;
|
dropPoint.beforeIndex = beforeIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (elt == this._chevron) {
|
||||||
|
// If drop on the chevron, insert after the last bookmark.
|
||||||
|
dropPoint.ip = new PlacesInsertionPoint({
|
||||||
|
parentGuid: PlacesUtils.getConcreteItemGuid(this._resultNode),
|
||||||
|
orientation: Ci.nsITreeView.DROP_BEFORE,
|
||||||
|
});
|
||||||
|
dropPoint.beforeIndex = -1;
|
||||||
} else {
|
} else {
|
||||||
dropPoint.ip = new PlacesInsertionPoint({
|
dropPoint.ip = new PlacesInsertionPoint({
|
||||||
parentGuid: PlacesUtils.getConcreteItemGuid(this._resultNode),
|
parentGuid: PlacesUtils.getConcreteItemGuid(this._resultNode),
|
||||||
|
|
|
@ -91,7 +91,7 @@ support-files = ["pageopeningwindow.html"]
|
||||||
|
|
||||||
["browser_bookmarks_toolbar_context_menu_view_options.js"]
|
["browser_bookmarks_toolbar_context_menu_view_options.js"]
|
||||||
|
|
||||||
["browser_bookmarks_toolbar_drag_from_chevron.js"]
|
["browser_bookmarks_toolbar_drag_with_chevron.js"]
|
||||||
|
|
||||||
["browser_bookmarks_toolbar_telemetry.js"]
|
["browser_bookmarks_toolbar_telemetry.js"]
|
||||||
|
|
||||||
|
|
|
@ -9,29 +9,12 @@ add_setup(async function () {
|
||||||
set: [["browser.toolbars.bookmarks.visibility", "newtab"]],
|
set: [["browser.toolbars.bookmarks.visibility", "newtab"]],
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCleanupFunction(async () => {
|
info("Open new tab and bookmarks toolbar");
|
||||||
await PlacesUtils.bookmarks.eraseEverything();
|
let { newTab } = await openNewTabAndBookmarksToolbar();
|
||||||
await PlacesUtils.history.clear();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
add_task(async function drop_on_tabbar() {
|
|
||||||
let bookmarksToolbar = document.getElementById("PersonalToolbar");
|
|
||||||
let chevronMenu = document.getElementById("PlacesChevron");
|
|
||||||
|
|
||||||
info("Open about:newtab to show the bookmark toolbar");
|
|
||||||
let newTab = await BrowserTestUtils.openNewForegroundTab({
|
|
||||||
gBrowser,
|
|
||||||
opening: "about:newtab",
|
|
||||||
waitForLoad: false,
|
|
||||||
});
|
|
||||||
await TestUtils.waitForCondition(
|
|
||||||
() => !bookmarksToolbar.collapsed,
|
|
||||||
"Wait for toolbar to become visible"
|
|
||||||
);
|
|
||||||
|
|
||||||
info("Add bookmarks until showing chevron menu");
|
info("Add bookmarks until showing chevron menu");
|
||||||
let bookmarkCount = 1;
|
let chevronMenu = document.getElementById("PlacesChevron");
|
||||||
|
let bookmarkCount = 2;
|
||||||
for (; ; bookmarkCount++) {
|
for (; ; bookmarkCount++) {
|
||||||
let url = `https://example.com/${bookmarkCount}`;
|
let url = `https://example.com/${bookmarkCount}`;
|
||||||
await PlacesUtils.bookmarks.insert({
|
await PlacesUtils.bookmarks.insert({
|
||||||
|
@ -47,7 +30,7 @@ add_task(async function drop_on_tabbar() {
|
||||||
|
|
||||||
info("Add more bookmarks");
|
info("Add more bookmarks");
|
||||||
bookmarkCount += 1;
|
bookmarkCount += 1;
|
||||||
for (let max = bookmarkCount + 5; bookmarkCount < max; bookmarkCount++) {
|
for (let max = bookmarkCount + 2; bookmarkCount < max; bookmarkCount++) {
|
||||||
let url = `https://example.com/${bookmarkCount}`;
|
let url = `https://example.com/${bookmarkCount}`;
|
||||||
await PlacesUtils.bookmarks.insert({
|
await PlacesUtils.bookmarks.insert({
|
||||||
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
||||||
|
@ -56,8 +39,21 @@ add_task(async function drop_on_tabbar() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BrowserTestUtils.removeTab(newTab);
|
||||||
|
|
||||||
|
registerCleanupFunction(async () => {
|
||||||
|
await PlacesUtils.bookmarks.eraseEverything();
|
||||||
|
await PlacesUtils.history.clear();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
add_task(async function drop_on_tabbar_from_chevron() {
|
||||||
|
info("Open new tab and bookmarks toolbar");
|
||||||
|
let { newTab, bookmarksToolbar } = await openNewTabAndBookmarksToolbar();
|
||||||
|
|
||||||
info("Check whether DnD from chevron works");
|
info("Check whether DnD from chevron works");
|
||||||
await dndTest(chevronMenu);
|
let chevronMenu = document.getElementById("PlacesChevron");
|
||||||
|
await testForDndFromChevron(chevronMenu);
|
||||||
|
|
||||||
info("Open not about:newtab page to collapse the bookmark toolbar");
|
info("Open not about:newtab page to collapse the bookmark toolbar");
|
||||||
let contentTab = await BrowserTestUtils.openNewForegroundTab({
|
let contentTab = await BrowserTestUtils.openNewForegroundTab({
|
||||||
|
@ -78,13 +74,55 @@ add_task(async function drop_on_tabbar() {
|
||||||
);
|
);
|
||||||
|
|
||||||
info("Check whether DnD from chevron works again");
|
info("Check whether DnD from chevron works again");
|
||||||
await dndTest(chevronMenu);
|
await testForDndFromChevron(chevronMenu);
|
||||||
|
|
||||||
BrowserTestUtils.removeTab(newTab);
|
BrowserTestUtils.removeTab(newTab);
|
||||||
BrowserTestUtils.removeTab(contentTab);
|
BrowserTestUtils.removeTab(contentTab);
|
||||||
});
|
});
|
||||||
|
|
||||||
async function dndTest(chevronMenu) {
|
add_task(async function drop_on_chevron_from_identity_box() {
|
||||||
|
await SpecialPowers.pushPrefEnv({
|
||||||
|
set: [["browser.toolbars.bookmarks.visibility", "always"]],
|
||||||
|
});
|
||||||
|
|
||||||
|
const TEST_URL = "https://example.com/404_not_found";
|
||||||
|
|
||||||
|
info("Open new tab and bookmarks toolbar");
|
||||||
|
let { newTab } = await openNewTabAndBookmarksToolbar({
|
||||||
|
url: TEST_URL,
|
||||||
|
});
|
||||||
|
|
||||||
|
info("Start DnD");
|
||||||
|
let chevronMenu = document.getElementById("PlacesChevron");
|
||||||
|
let identityBox = document.getElementById("identity-box");
|
||||||
|
let chevronPopup = document.getElementById("PlacesChevronPopup");
|
||||||
|
|
||||||
|
let onChevronPopupShown = BrowserTestUtils.waitForPopupEvent(
|
||||||
|
chevronPopup,
|
||||||
|
"shown"
|
||||||
|
);
|
||||||
|
await EventUtils.synthesizePlainDragAndDrop({
|
||||||
|
srcElement: identityBox,
|
||||||
|
destElement: chevronMenu,
|
||||||
|
});
|
||||||
|
await onChevronPopupShown;
|
||||||
|
|
||||||
|
info("Check the last bookmark item");
|
||||||
|
await BrowserTestUtils.waitForCondition(() => {
|
||||||
|
let items = [...chevronPopup.children];
|
||||||
|
let lastElement = items.findLast(
|
||||||
|
c => c.nodeName == "menuitem" && BrowserTestUtils.isVisible(c)
|
||||||
|
);
|
||||||
|
return lastElement.label == "404 Not Found";
|
||||||
|
});
|
||||||
|
Assert.ok(true, "The current page is bookmarked with correct position");
|
||||||
|
|
||||||
|
chevronPopup.hidePopup();
|
||||||
|
BrowserTestUtils.removeTab(newTab);
|
||||||
|
await SpecialPowers.popPrefEnv();
|
||||||
|
});
|
||||||
|
|
||||||
|
async function testForDndFromChevron(chevronMenu) {
|
||||||
info("Open chevron menu");
|
info("Open chevron menu");
|
||||||
let chevronPopup = document.getElementById("PlacesChevronPopup");
|
let chevronPopup = document.getElementById("PlacesChevronPopup");
|
||||||
let onChevronPopupShown = BrowserTestUtils.waitForPopupEvent(
|
let onChevronPopupShown = BrowserTestUtils.waitForPopupEvent(
|
||||||
|
@ -125,3 +163,19 @@ async function dndTest(chevronMenu) {
|
||||||
BrowserTestUtils.removeTab(dropTab);
|
BrowserTestUtils.removeTab(dropTab);
|
||||||
chevronPopup.hidePopup();
|
chevronPopup.hidePopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function openNewTabAndBookmarksToolbar({ url } = {}) {
|
||||||
|
let newTab = await BrowserTestUtils.openNewForegroundTab({
|
||||||
|
gBrowser,
|
||||||
|
opening: url ?? "about:newtab",
|
||||||
|
waitForLoad: !!url,
|
||||||
|
});
|
||||||
|
|
||||||
|
let bookmarksToolbar = document.getElementById("PersonalToolbar");
|
||||||
|
await TestUtils.waitForCondition(
|
||||||
|
() => !bookmarksToolbar.collapsed,
|
||||||
|
"Wait for toolbar to become visible"
|
||||||
|
);
|
||||||
|
|
||||||
|
return { newTab, bookmarksToolbar };
|
||||||
|
}
|
Загрузка…
Ссылка в новой задаче