forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			140 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| /**
 | |
|  * Test the behavior of keypress shortcuts for the bookmarks toolbar.
 | |
|  */
 | |
| 
 | |
| // Test that the bookmarks toolbar's visibility is toggled using the bookmarks-shortcut.
 | |
| add_task(async function testBookmarksToolbarShortcut() {
 | |
|   let blankTab = await BrowserTestUtils.openNewForegroundTab({
 | |
|     gBrowser,
 | |
|     opening: "example.com",
 | |
|     waitForLoad: false,
 | |
|   });
 | |
| 
 | |
|   info("Toggle toolbar visibility on");
 | |
|   let toolbar = document.getElementById("PersonalToolbar");
 | |
|   is(
 | |
|     toolbar.getAttribute("collapsed"),
 | |
|     "true",
 | |
|     "Toolbar bar should already be collapsed"
 | |
|   );
 | |
| 
 | |
|   EventUtils.synthesizeKey("b", { shiftKey: true, accelKey: true });
 | |
|   toolbar = document.getElementById("PersonalToolbar");
 | |
|   await BrowserTestUtils.waitForAttribute("collapsed", toolbar, "false");
 | |
|   ok(true, "bookmarks toolbar is visible");
 | |
| 
 | |
|   await testIsBookmarksMenuItemStateChecked("always");
 | |
| 
 | |
|   info("Toggle toolbar visibility off");
 | |
|   EventUtils.synthesizeKey("b", { shiftKey: true, accelKey: true });
 | |
|   toolbar = document.getElementById("PersonalToolbar");
 | |
|   await BrowserTestUtils.waitForAttribute("collapsed", toolbar, "true");
 | |
|   ok(true, "bookmarks toolbar is not visible");
 | |
| 
 | |
|   await testIsBookmarksMenuItemStateChecked("never");
 | |
| 
 | |
|   await BrowserTestUtils.removeTab(blankTab);
 | |
| });
 | |
| 
 | |
| // Test that the bookmarks library windows opens with the new keyboard shortcut.
 | |
| add_task(async function testNewBookmarksLibraryShortcut() {
 | |
|   let blankTab = await BrowserTestUtils.openNewForegroundTab({
 | |
|     gBrowser,
 | |
|     opening: "example.com",
 | |
|     waitForLoad: false,
 | |
|   });
 | |
| 
 | |
|   info("Check that the bookmarks library windows opens.");
 | |
|   let bookmarksLibraryOpened = promiseOpenBookmarksLibrary();
 | |
| 
 | |
|   await EventUtils.synthesizeKey("o", { shiftKey: true, accelKey: true });
 | |
| 
 | |
|   let win = await bookmarksLibraryOpened;
 | |
| 
 | |
|   ok(true, "Bookmarks library successfully opened.");
 | |
| 
 | |
|   win.close();
 | |
| 
 | |
|   await BrowserTestUtils.removeTab(blankTab);
 | |
| });
 | |
| 
 | |
| /**
 | |
|  * Tests whether or not the bookmarks' menuitem state is checked.
 | |
|  */
 | |
| async function testIsBookmarksMenuItemStateChecked(expected) {
 | |
|   info("Test that the toolbar menuitem state is correct.");
 | |
|   let contextMenu = document.getElementById("toolbar-context-menu");
 | |
|   let target = document.getElementById("PanelUI-menu-button");
 | |
| 
 | |
|   await openContextMenu(contextMenu, target);
 | |
| 
 | |
|   let menuitems = ["always", "never", "newtab"].map(e =>
 | |
|     document.querySelector(`menuitem[data-visibility-enum="${e}"]`)
 | |
|   );
 | |
| 
 | |
|   let checkedItem = menuitems.filter(m => m.getAttribute("checked") == "true");
 | |
|   is(checkedItem.length, 1, "should have only one menuitem checked");
 | |
|   is(
 | |
|     checkedItem[0].dataset.visibilityEnum,
 | |
|     expected,
 | |
|     `checked menuitem should be ${expected}`
 | |
|   );
 | |
| 
 | |
|   for (let menuitem of menuitems) {
 | |
|     if (menuitem.dataset.visibilityEnum == expected) {
 | |
|       ok(!menuitem.hasAttribute("key"), "dont show shortcut on current state");
 | |
|     } else {
 | |
|       is(
 | |
|         menuitem.hasAttribute("key"),
 | |
|         menuitem.dataset.visibilityEnum != "newtab",
 | |
|         "shortcut is on the menuitem opposite of the current state excluding newtab"
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   await closeContextMenu(contextMenu);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Returns a promise for opening the bookmarks library.
 | |
|  */
 | |
| async function promiseOpenBookmarksLibrary() {
 | |
|   return BrowserTestUtils.domWindowOpened(null, async win => {
 | |
|     await BrowserTestUtils.waitForEvent(win, "load");
 | |
|     await TestUtils.waitForCondition(
 | |
|       () =>
 | |
|         win.document.documentURI ===
 | |
|         "chrome://browser/content/places/places.xhtml"
 | |
|     );
 | |
|     return true;
 | |
|   });
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Helper for opening the context menu.
 | |
|  */
 | |
| async function openContextMenu(contextMenu, target) {
 | |
|   info("Opening context menu.");
 | |
|   EventUtils.synthesizeMouseAtCenter(target, {
 | |
|     type: "contextmenu",
 | |
|   });
 | |
|   await BrowserTestUtils.waitForPopupEvent(contextMenu, "shown");
 | |
|   let bookmarksToolbarMenu = document.querySelector("#toggle_PersonalToolbar");
 | |
|   let subMenu = bookmarksToolbarMenu.querySelector("menupopup");
 | |
|   bookmarksToolbarMenu.openMenu(true);
 | |
|   await BrowserTestUtils.waitForPopupEvent(subMenu, "shown");
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Helper for closing the context menu.
 | |
|  */
 | |
| async function closeContextMenu(contextMenu) {
 | |
|   info("Closing context menu.");
 | |
|   contextMenu.hidePopup();
 | |
|   await BrowserTestUtils.waitForPopupEvent(contextMenu, "hidden");
 | |
| }
 | 
