forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			125 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| function invokeUsingCtrlD(phase) {
 | |
|   switch (phase) {
 | |
|   case 1:
 | |
|     EventUtils.synthesizeKey("d", { accelKey: true });
 | |
|     break;
 | |
|   case 2:
 | |
|   case 4:
 | |
|     EventUtils.synthesizeKey("VK_ESCAPE", {});
 | |
|     break;
 | |
|   case 3:
 | |
|     EventUtils.synthesizeKey("d", { accelKey: true });
 | |
|     EventUtils.synthesizeKey("d", { accelKey: true });
 | |
|     break;
 | |
|   }
 | |
| }
 | |
| 
 | |
| function invokeUsingStarButton(phase) {
 | |
|   switch (phase) {
 | |
|   case 1:
 | |
|     EventUtils.sendMouseEvent({ type: "click" }, "star-button");
 | |
|     break;
 | |
|   case 2:
 | |
|   case 4:
 | |
|     EventUtils.synthesizeKey("VK_ESCAPE", {});
 | |
|     break;
 | |
|   case 3:
 | |
|     EventUtils.synthesizeMouse(document.getElementById("star-button"),
 | |
|                                1, 1, { clickCount: 2 });
 | |
|     break;
 | |
|   }
 | |
| }
 | |
| 
 | |
| var testURL = "data:text/plain,Content";
 | |
| var bookmarkId;
 | |
| 
 | |
| function add_bookmark(aURI, aTitle) {
 | |
|   return PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId,
 | |
|                                               aURI, PlacesUtils.bookmarks.DEFAULT_INDEX,
 | |
|                                               aTitle);
 | |
| }
 | |
| 
 | |
| // test bug 432599
 | |
| function test() {
 | |
|   waitForExplicitFinish();
 | |
| 
 | |
|   gBrowser.selectedTab = gBrowser.addTab();
 | |
|   gBrowser.selectedBrowser.addEventListener("load", function () {
 | |
|     gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true);
 | |
|     waitForStarChange(false, initTest);
 | |
|   }, true);
 | |
| 
 | |
|   content.location = testURL;
 | |
| }
 | |
| 
 | |
| function initTest() {
 | |
|   // First, bookmark the page.
 | |
|   bookmarkId = add_bookmark(makeURI(testURL), "Bug 432599 Test");
 | |
| 
 | |
|   checkBookmarksPanel(invokers[currentInvoker], 1);
 | |
| }
 | |
| 
 | |
| function waitForStarChange(aValue, aCallback) {
 | |
|   let starButton = document.getElementById("star-button");
 | |
|   if (PlacesStarButton._pendingStmt || starButton.hasAttribute("starred") != aValue) {
 | |
|     info("Waiting for star button change.");
 | |
|     setTimeout(arguments.callee, 50, aValue, aCallback);
 | |
|     return;
 | |
|   }
 | |
|   aCallback();
 | |
| }
 | |
| 
 | |
| let invokers = [invokeUsingStarButton, invokeUsingCtrlD];
 | |
| let currentInvoker = 0;
 | |
| 
 | |
| let initialValue;
 | |
| let initialRemoveHidden;
 | |
| 
 | |
| let popupElement = document.getElementById("editBookmarkPanel");
 | |
| let titleElement = document.getElementById("editBookmarkPanelTitle");
 | |
| let removeElement = document.getElementById("editBookmarkPanelRemoveButton");
 | |
| 
 | |
| function checkBookmarksPanel(invoker, phase)
 | |
| {
 | |
|   let onPopupShown = function(aEvent) {
 | |
|     if (aEvent.originalTarget == popupElement) {
 | |
|       popupElement.removeEventListener("popupshown", arguments.callee, false);
 | |
|       checkBookmarksPanel(invoker, phase + 1);
 | |
|     }
 | |
|   };
 | |
|   let onPopupHidden = function(aEvent) {
 | |
|     if (aEvent.originalTarget == popupElement) {
 | |
|       popupElement.removeEventListener("popuphidden", arguments.callee, false);
 | |
|       if (phase < 4) {
 | |
|         checkBookmarksPanel(invoker, phase + 1);
 | |
|       } else {
 | |
|         ++currentInvoker;
 | |
|         if (currentInvoker < invokers.length) {
 | |
|           checkBookmarksPanel(invokers[currentInvoker], 1);
 | |
|         } else {
 | |
|           gBrowser.removeCurrentTab();
 | |
|           PlacesUtils.bookmarks.removeItem(bookmarkId);
 | |
|           executeSoon(finish);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   switch (phase) {
 | |
|   case 1:
 | |
|   case 3:
 | |
|     popupElement.addEventListener("popupshown", onPopupShown, false);
 | |
|     break;
 | |
|   case 2:
 | |
|     popupElement.addEventListener("popuphidden", onPopupHidden, false);
 | |
|     initialValue = titleElement.value;
 | |
|     initialRemoveHidden = removeElement.hidden;
 | |
|     break;
 | |
|   case 4:
 | |
|     popupElement.addEventListener("popuphidden", onPopupHidden, false);
 | |
|     is(titleElement.value, initialValue, "The bookmark panel's title should be the same");
 | |
|     is(removeElement.hidden, initialRemoveHidden, "The bookmark panel's visibility should not change");
 | |
|     break;
 | |
|   }
 | |
|   invoker(phase);
 | |
| }
 | 
