зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1354078 - update panel/toolbar context menus to move items to the right place, with tests, r=bgrins
MozReview-Commit-ID: DpQdvE25iqU --HG-- rename : browser/components/customizableui/test/browser_880164_customization_context_menus.js => browser/components/customizableui/test/browser_photon_customization_context_menus.js extra : rebase_source : 740c8f47381bd9f15e62345502871db0d098c927
This commit is contained in:
Родитель
f4d222a6a4
Коммит
811cf5dfec
|
@ -776,7 +776,9 @@ CustomizeMode.prototype = {
|
|||
if (aNode.localName == "toolbarpaletteitem" && aNode.firstChild) {
|
||||
aNode = aNode.firstChild;
|
||||
}
|
||||
CustomizableUI.addWidgetToArea(aNode.id, CustomizableUI.AREA_PANEL);
|
||||
let panel = gPhotonStructure ? CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
|
||||
: CustomizableUI.AREA_PANEL;
|
||||
CustomizableUI.addWidgetToArea(aNode.id, panel);
|
||||
if (!this._customizing) {
|
||||
CustomizableUI.dispatchToolboxEvent("customizationchange");
|
||||
}
|
||||
|
|
|
@ -332,42 +332,6 @@
|
|||
</panelview>
|
||||
|
||||
</panelmultiview>
|
||||
<!-- These menupopups are located here to prevent flickering,
|
||||
see bug 492960 comment 20. -->
|
||||
<menupopup id="customizationPanelItemContextMenu">
|
||||
<menuitem oncommand="gCustomizeMode.addToToolbar(document.popupNode)"
|
||||
closemenu="single"
|
||||
class="customize-context-moveToToolbar"
|
||||
accesskey="&customizeMenu.moveToToolbar.accesskey;"
|
||||
label="&customizeMenu.moveToToolbar.label;"/>
|
||||
<menuitem oncommand="gCustomizeMode.removeFromArea(document.popupNode)"
|
||||
closemenu="single"
|
||||
class="customize-context-removeFromPanel"
|
||||
accesskey="&customizeMenu.removeFromMenu.accesskey;"
|
||||
label="&customizeMenu.removeFromMenu.label;"/>
|
||||
<menuseparator/>
|
||||
<menuitem command="cmd_CustomizeToolbars"
|
||||
class="viewCustomizeToolbar"
|
||||
accesskey="&viewCustomizeToolbar.accesskey;"
|
||||
label="&viewCustomizeToolbar.label;"/>
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="customizationPaletteItemContextMenu">
|
||||
<menuitem oncommand="gCustomizeMode.addToToolbar(document.popupNode)"
|
||||
class="customize-context-addToToolbar"
|
||||
accesskey="&customizeMenu.addToToolbar.accesskey;"
|
||||
label="&customizeMenu.addToToolbar.label;"/>
|
||||
<menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
|
||||
class="customize-context-addToPanel"
|
||||
accesskey="&customizeMenu.addToPanel.accesskey;"
|
||||
label="&customizeMenu.addToPanel.label;"/>
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="customizationPanelContextMenu">
|
||||
<menuitem command="cmd_CustomizeToolbars"
|
||||
accesskey="&customizeMenu.addMoreItems.accesskey;"
|
||||
label="&customizeMenu.addMoreItems.label;"/>
|
||||
</menupopup>
|
||||
</panel>
|
||||
|
||||
<panel id="widget-overflow"
|
||||
|
@ -490,6 +454,41 @@
|
|||
</popupnotification>
|
||||
</panel>
|
||||
|
||||
<menupopup id="customizationPanelItemContextMenu">
|
||||
<menuitem oncommand="gCustomizeMode.addToToolbar(document.popupNode)"
|
||||
closemenu="single"
|
||||
class="customize-context-moveToToolbar"
|
||||
accesskey="&customizeMenu.moveToToolbar.accesskey;"
|
||||
label="&customizeMenu.moveToToolbar.label;"/>
|
||||
<menuitem oncommand="gCustomizeMode.removeFromArea(document.popupNode)"
|
||||
closemenu="single"
|
||||
class="customize-context-removeFromPanel"
|
||||
accesskey="&customizeMenu.removeFromMenu.accesskey;"
|
||||
label="&customizeMenu.removeFromMenu.label;"/>
|
||||
<menuseparator/>
|
||||
<menuitem command="cmd_CustomizeToolbars"
|
||||
class="viewCustomizeToolbar"
|
||||
accesskey="&viewCustomizeToolbar.accesskey;"
|
||||
label="&viewCustomizeToolbar.label;"/>
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="customizationPaletteItemContextMenu">
|
||||
<menuitem oncommand="gCustomizeMode.addToToolbar(document.popupNode)"
|
||||
class="customize-context-addToToolbar"
|
||||
accesskey="&customizeMenu.addToToolbar.accesskey;"
|
||||
label="&customizeMenu.addToToolbar.label;"/>
|
||||
<menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
|
||||
class="customize-context-addToPanel"
|
||||
accesskey="&customizeMenu.addToPanel.accesskey;"
|
||||
label="&customizeMenu.addToPanel.label;"/>
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="customizationPanelContextMenu">
|
||||
<menuitem command="cmd_CustomizeToolbars"
|
||||
accesskey="&customizeMenu.addMoreItems.accesskey;"
|
||||
label="&customizeMenu.addMoreItems.label;"/>
|
||||
</menupopup>
|
||||
|
||||
<panel id="appMenu-popup"
|
||||
class="cui-widget-panel"
|
||||
role="group"
|
||||
|
|
|
@ -541,6 +541,9 @@ const PanelUI = {
|
|||
this.navbar.setAttribute("nonemptyoverflow", "true");
|
||||
this.overflowPanel.setAttribute("hasfixeditems", "true");
|
||||
} else if (!hasKids && this.navbar.hasAttribute("nonemptyoverflow")) {
|
||||
if (this.overflowPanel.state != "closed") {
|
||||
this.overflowPanel.hidePopup();
|
||||
}
|
||||
this.overflowPanel.removeAttribute("hasfixeditems");
|
||||
this.navbar.removeAttribute("nonemptyoverflow");
|
||||
}
|
||||
|
|
|
@ -161,4 +161,5 @@ skip-if = os == "mac"
|
|||
[browser_check_tooltips_in_navbar.js]
|
||||
[browser_editcontrols_update.js]
|
||||
subsuite = clipboard
|
||||
[browser_photon_customization_context_menus.js]
|
||||
[browser_remote_tabs_button.js]
|
||||
|
|
|
@ -3,18 +3,19 @@
|
|||
const kOverflowPanel = document.getElementById("widget-overflow");
|
||||
|
||||
var gOriginalWidth;
|
||||
registerCleanupFunction(function*() {
|
||||
registerCleanupFunction(async function() {
|
||||
kOverflowPanel.removeAttribute("animate");
|
||||
window.resizeTo(gOriginalWidth, window.outerHeight);
|
||||
await waitForCondition(() => !document.getElementById("nav-bar").hasAttribute("overflowing"));
|
||||
CustomizableUI.reset();
|
||||
});
|
||||
|
||||
/**
|
||||
* This checks that subview-compatible items show up as subviews rather than
|
||||
* re-anchored panels. If we ever remove the character encoding widget, please
|
||||
* re-anchored panels. If we ever remove the developer widget, please
|
||||
* replace this test with another subview - don't remove it.
|
||||
*/
|
||||
add_task(async function check_character_encoding_subview_in_overflow() {
|
||||
add_task(async function check_developer_subview_in_overflow() {
|
||||
kOverflowPanel.setAttribute("animate", "false");
|
||||
gOriginalWidth = window.outerWidth;
|
||||
|
||||
|
@ -39,8 +40,6 @@ add_task(async function check_character_encoding_subview_in_overflow() {
|
|||
is(developerView.closest("panel"), kOverflowPanel, "Should be inside the panel");
|
||||
kOverflowPanel.hidePopup();
|
||||
await Promise.resolve(); // wait for popup to hide fully.
|
||||
|
||||
CustomizableUI.reset();
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,431 @@
|
|||
/* 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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
requestLongerTimeout(2);
|
||||
|
||||
const isOSX = (Services.appinfo.OS === "Darwin");
|
||||
|
||||
const overflowButton = document.getElementById("nav-bar-overflow-button");
|
||||
const overflowPanel = document.getElementById("widget-overflow");
|
||||
|
||||
// Right-click on the home button should
|
||||
// show a context menu with options to move it.
|
||||
add_task(async function() {
|
||||
await SpecialPowers.pushPrefEnv({set: [["browser.photon.structure.enabled", true]]});
|
||||
let contextMenu = document.getElementById("toolbar-context-menu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let homeButton = document.getElementById("home-button");
|
||||
EventUtils.synthesizeMouse(homeButton, 2, 2, {type: "contextmenu", button: 2 });
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToPanel", true],
|
||||
[".customize-context-removeFromToolbar", true],
|
||||
["---"]
|
||||
];
|
||||
if (!isOSX) {
|
||||
expectedEntries.push(["#toggle_toolbar-menubar", true]);
|
||||
}
|
||||
expectedEntries.push(
|
||||
["#toggle_PersonalToolbar", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
);
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenPromise;
|
||||
});
|
||||
|
||||
// Right-click on an empty bit of tabstrip should
|
||||
// show a context menu without options to move it,
|
||||
// but with tab-specific options instead.
|
||||
add_task(async function() {
|
||||
// ensure there are tabs to reload/bookmark:
|
||||
let extraTab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
|
||||
await promiseTabLoadEvent(extraTab, "http://example.com/");
|
||||
let contextMenu = document.getElementById("toolbar-context-menu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let tabstrip = document.getElementById("tabbrowser-tabs");
|
||||
let rect = tabstrip.getBoundingClientRect();
|
||||
EventUtils.synthesizeMouse(tabstrip, rect.width - 2, 2, {type: "contextmenu", button: 2 });
|
||||
await shownPromise;
|
||||
|
||||
let closedTabsAvailable = SessionStore.getClosedTabCount(window) == 0;
|
||||
info("Closed tabs: " + closedTabsAvailable);
|
||||
let expectedEntries = [
|
||||
["#toolbar-context-reloadAllTabs", true],
|
||||
["#toolbar-context-bookmarkAllTabs", true],
|
||||
["#toolbar-context-undoCloseTab", !closedTabsAvailable],
|
||||
["---"]
|
||||
];
|
||||
if (!isOSX) {
|
||||
expectedEntries.push(["#toggle_toolbar-menubar", true]);
|
||||
}
|
||||
expectedEntries.push(
|
||||
["#toggle_PersonalToolbar", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
);
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenPromise;
|
||||
gBrowser.removeTab(extraTab);
|
||||
});
|
||||
|
||||
// Right-click on an empty bit of extra toolbar should
|
||||
// show a context menu with moving options disabled,
|
||||
// and a toggle option for the extra toolbar
|
||||
add_task(async function() {
|
||||
let contextMenu = document.getElementById("toolbar-context-menu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let toolbar = createToolbarWithPlacements("880164_empty_toolbar", []);
|
||||
toolbar.setAttribute("context", "toolbar-context-menu");
|
||||
toolbar.setAttribute("toolbarname", "Fancy Toolbar for Context Menu");
|
||||
EventUtils.synthesizeMouseAtCenter(toolbar, {type: "contextmenu", button: 2 });
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToPanel", false],
|
||||
[".customize-context-removeFromToolbar", false],
|
||||
["---"]
|
||||
];
|
||||
if (!isOSX) {
|
||||
expectedEntries.push(["#toggle_toolbar-menubar", true]);
|
||||
}
|
||||
expectedEntries.push(
|
||||
["#toggle_PersonalToolbar", true],
|
||||
["#toggle_880164_empty_toolbar", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
);
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenPromise;
|
||||
removeCustomToolbars();
|
||||
});
|
||||
|
||||
|
||||
// Right-click on the urlbar-container should
|
||||
// show a context menu with disabled options to move it.
|
||||
add_task(async function() {
|
||||
let contextMenu = document.getElementById("toolbar-context-menu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let urlBarContainer = document.getElementById("urlbar-container");
|
||||
// Need to make sure not to click within an edit field.
|
||||
EventUtils.synthesizeMouse(urlBarContainer, 100, 1, {type: "contextmenu", button: 2 });
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToPanel", false],
|
||||
[".customize-context-removeFromToolbar", false],
|
||||
["---"]
|
||||
];
|
||||
if (!isOSX) {
|
||||
expectedEntries.push(["#toggle_toolbar-menubar", true]);
|
||||
}
|
||||
expectedEntries.push(
|
||||
["#toggle_PersonalToolbar", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
);
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenPromise;
|
||||
});
|
||||
|
||||
// Right-click on the searchbar and moving it to the menu
|
||||
// and back should move the search-container instead.
|
||||
add_task(async function() {
|
||||
let searchbar = document.getElementById("searchbar");
|
||||
gCustomizeMode.addToPanel(searchbar);
|
||||
let placement = CustomizableUI.getPlacementOfWidget("search-container");
|
||||
is(placement.area, CustomizableUI.AREA_FIXED_OVERFLOW_PANEL, "Should be in panel");
|
||||
|
||||
let shownPanelPromise = popupShown(overflowPanel);
|
||||
overflowButton.click();
|
||||
await shownPanelPromise;
|
||||
let hiddenPanelPromise = popupHidden(overflowPanel);
|
||||
overflowButton.click();
|
||||
await hiddenPanelPromise;
|
||||
|
||||
gCustomizeMode.addToToolbar(searchbar);
|
||||
placement = CustomizableUI.getPlacementOfWidget("search-container");
|
||||
is(placement.area, CustomizableUI.AREA_NAVBAR, "Should be in navbar");
|
||||
gCustomizeMode.removeFromArea(searchbar);
|
||||
placement = CustomizableUI.getPlacementOfWidget("search-container");
|
||||
is(placement, null, "Should be in palette");
|
||||
CustomizableUI.reset();
|
||||
placement = CustomizableUI.getPlacementOfWidget("search-container");
|
||||
is(placement.area, CustomizableUI.AREA_NAVBAR, "Should be in navbar");
|
||||
});
|
||||
|
||||
// Right-click on an item within the panel should
|
||||
// show a context menu with options to move it.
|
||||
add_task(async function() {
|
||||
CustomizableUI.addWidgetToArea("new-window-button", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
|
||||
let shownPanelPromise = popupShown(overflowPanel);
|
||||
overflowButton.click();
|
||||
await shownPanelPromise;
|
||||
|
||||
let contextMenu = document.getElementById("customizationPanelItemContextMenu");
|
||||
let shownContextPromise = popupShown(contextMenu);
|
||||
let newWindowButton = document.getElementById("new-window-button");
|
||||
ok(newWindowButton, "new-window-button was found");
|
||||
EventUtils.synthesizeMouse(newWindowButton, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownContextPromise;
|
||||
|
||||
is(overflowPanel.state, "open", "The overflow panel should still be open.");
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToToolbar", true],
|
||||
[".customize-context-removeFromPanel", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
];
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenContextPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenContextPromise;
|
||||
|
||||
let hiddenPromise = popupHidden(overflowPanel);
|
||||
overflowButton.click();
|
||||
await hiddenPromise;
|
||||
|
||||
CustomizableUI.removeWidgetFromArea("new-window-button");
|
||||
});
|
||||
|
||||
// Right-click on the home button while in customization mode
|
||||
// should show a context menu with options to move it.
|
||||
add_task(async function() {
|
||||
await startCustomizing();
|
||||
let contextMenu = document.getElementById("toolbar-context-menu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let homeButton = document.getElementById("wrapper-home-button");
|
||||
EventUtils.synthesizeMouse(homeButton, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToPanel", true],
|
||||
[".customize-context-removeFromToolbar", true],
|
||||
["---"]
|
||||
];
|
||||
if (!isOSX) {
|
||||
expectedEntries.push(["#toggle_toolbar-menubar", true]);
|
||||
}
|
||||
expectedEntries.push(
|
||||
["#toggle_PersonalToolbar", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", false]
|
||||
);
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenContextPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenContextPromise;
|
||||
});
|
||||
|
||||
// Right-click on an item in the palette should
|
||||
// show a context menu with options to move it.
|
||||
add_task(async function() {
|
||||
let contextMenu = document.getElementById("customizationPaletteItemContextMenu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let openFileButton = document.getElementById("wrapper-open-file-button");
|
||||
EventUtils.synthesizeMouse(openFileButton, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-addToToolbar", true],
|
||||
[".customize-context-addToPanel", true]
|
||||
];
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenContextPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenContextPromise;
|
||||
});
|
||||
|
||||
// Right-click on an item in the panel while in customization mode
|
||||
// should show a context menu with options to move it.
|
||||
add_task(async function() {
|
||||
CustomizableUI.addWidgetToArea("new-window-button", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
|
||||
let contextMenu = document.getElementById("customizationPanelItemContextMenu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let newWindowButton = document.getElementById("wrapper-new-window-button");
|
||||
EventUtils.synthesizeMouse(newWindowButton, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToToolbar", true],
|
||||
[".customize-context-removeFromPanel", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", false]
|
||||
];
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenContextPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenContextPromise;
|
||||
CustomizableUI.removeWidgetFromArea("new-window-button");
|
||||
await endCustomizing();
|
||||
});
|
||||
|
||||
// Test the toolbarbutton panel context menu in customization mode
|
||||
// without opening the panel before customization mode
|
||||
add_task(async function() {
|
||||
CustomizableUI.addWidgetToArea("new-window-button", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
|
||||
this.otherWin = await openAndLoadWindow(null, true);
|
||||
|
||||
await new Promise(resolve => waitForFocus(resolve, this.otherWin));
|
||||
|
||||
await startCustomizing(this.otherWin);
|
||||
|
||||
let contextMenu = this.otherWin.document.getElementById("customizationPanelItemContextMenu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let newWindowButton = this.otherWin.document.getElementById("wrapper-new-window-button");
|
||||
EventUtils.synthesizeMouse(newWindowButton, 2, 2, {type: "contextmenu", button: 2}, this.otherWin);
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToToolbar", true],
|
||||
[".customize-context-removeFromPanel", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", false]
|
||||
];
|
||||
checkContextMenu(contextMenu, expectedEntries, this.otherWin);
|
||||
|
||||
let hiddenContextPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenContextPromise;
|
||||
await endCustomizing(this.otherWin);
|
||||
CustomizableUI.removeWidgetFromArea("new-window-button");
|
||||
await promiseWindowClosed(this.otherWin);
|
||||
this.otherWin = null;
|
||||
|
||||
await new Promise(resolve => waitForFocus(resolve, window));
|
||||
});
|
||||
|
||||
// Bug 945191 - Combined buttons show wrong context menu options
|
||||
// when they are in the toolbar.
|
||||
add_task(async function() {
|
||||
CustomizableUI.addWidgetToArea("zoom-controls", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
|
||||
await startCustomizing();
|
||||
let contextMenu = document.getElementById("customizationPanelItemContextMenu");
|
||||
let shownPromise = popupShown(contextMenu);
|
||||
let zoomControls = document.getElementById("wrapper-zoom-controls");
|
||||
EventUtils.synthesizeMouse(zoomControls, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownPromise;
|
||||
// Execute the command to move the item from the panel to the toolbar.
|
||||
contextMenu.childNodes[0].doCommand();
|
||||
let hiddenPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenPromise;
|
||||
await endCustomizing();
|
||||
|
||||
zoomControls = document.getElementById("zoom-controls");
|
||||
is(zoomControls.parentNode.id, "nav-bar-customization-target", "Zoom-controls should be on the nav-bar");
|
||||
|
||||
contextMenu = document.getElementById("toolbar-context-menu");
|
||||
shownPromise = popupShown(contextMenu);
|
||||
EventUtils.synthesizeMouse(zoomControls, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownPromise;
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToPanel", true],
|
||||
[".customize-context-removeFromToolbar", true],
|
||||
["---"]
|
||||
];
|
||||
if (!isOSX) {
|
||||
expectedEntries.push(["#toggle_toolbar-menubar", true]);
|
||||
}
|
||||
expectedEntries.push(
|
||||
["#toggle_PersonalToolbar", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
);
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
hiddenPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenPromise;
|
||||
await resetCustomization();
|
||||
});
|
||||
|
||||
// Bug 947586 - After customization, panel items show wrong context menu options
|
||||
add_task(async function() {
|
||||
info("Check panel context menu is correct after customization");
|
||||
await startCustomizing();
|
||||
await endCustomizing();
|
||||
|
||||
CustomizableUI.addWidgetToArea("new-window-button", CustomizableUI.AREA_FIXED_OVERFLOW_PANEL);
|
||||
let shownPanelPromise = popupShown(overflowPanel);
|
||||
overflowButton.click();
|
||||
await shownPanelPromise;
|
||||
|
||||
let contextMenu = document.getElementById("customizationPanelItemContextMenu");
|
||||
let shownContextPromise = popupShown(contextMenu);
|
||||
let newWindowButton = document.getElementById("new-window-button");
|
||||
ok(newWindowButton, "new-window-button was found");
|
||||
EventUtils.synthesizeMouse(newWindowButton, 2, 2, {type: "contextmenu", button: 2});
|
||||
await shownContextPromise;
|
||||
|
||||
is(overflowPanel.state, "open", "The panel should still be open.");
|
||||
|
||||
let expectedEntries = [
|
||||
[".customize-context-moveToToolbar", true],
|
||||
[".customize-context-removeFromPanel", true],
|
||||
["---"],
|
||||
[".viewCustomizeToolbar", true]
|
||||
];
|
||||
checkContextMenu(contextMenu, expectedEntries);
|
||||
|
||||
let hiddenContextPromise = popupHidden(contextMenu);
|
||||
contextMenu.hidePopup();
|
||||
await hiddenContextPromise;
|
||||
|
||||
let hiddenPromise = popupHidden(overflowPanel);
|
||||
overflowButton.click();
|
||||
await hiddenPromise;
|
||||
CustomizableUI.removeWidgetFromArea("new-window-button");
|
||||
});
|
||||
|
||||
|
||||
// Bug 982027 - moving icon around removes custom context menu.
|
||||
add_task(async function() {
|
||||
let widgetId = "custom-context-menu-toolbarbutton";
|
||||
let expectedContext = "myfancycontext";
|
||||
let widget = createDummyXULButton(widgetId, "Test ctxt menu");
|
||||
widget.setAttribute("context", expectedContext);
|
||||
CustomizableUI.addWidgetToArea(widgetId, CustomizableUI.AREA_NAVBAR);
|
||||
is(widget.getAttribute("context"), expectedContext, "Should have context menu when added to the toolbar.");
|
||||
|
||||
await startCustomizing();
|
||||
is(widget.getAttribute("context"), "", "Should not have own context menu in the toolbar now that we're customizing.");
|
||||
is(widget.getAttribute("wrapped-context"), expectedContext, "Should keep own context menu wrapped when in toolbar.");
|
||||
|
||||
let panel = document.getElementById("widget-overflow-fixed-list");
|
||||
simulateItemDrag(widget, panel);
|
||||
is(widget.getAttribute("context"), "", "Should not have own context menu when in the panel.");
|
||||
is(widget.getAttribute("wrapped-context"), expectedContext, "Should keep own context menu wrapped now that we're in the panel.");
|
||||
|
||||
simulateItemDrag(widget, document.getElementById("nav-bar").customizationTarget);
|
||||
is(widget.getAttribute("context"), "", "Should not have own context menu when back in toolbar because we're still customizing.");
|
||||
is(widget.getAttribute("wrapped-context"), expectedContext, "Should keep own context menu wrapped now that we're back in the toolbar.");
|
||||
|
||||
await endCustomizing();
|
||||
is(widget.getAttribute("context"), expectedContext, "Should have context menu again now that we're out of customize mode.");
|
||||
CustomizableUI.removeWidgetFromArea(widgetId);
|
||||
widget.remove();
|
||||
ok(CustomizableUI.inDefaultState, "Should be in default state after removing button.");
|
||||
});
|
Загрузка…
Ссылка в новой задаче