Bug 1251071 - "New bookmark" popup disappears if I reopen it after creating bookmark. r?mak
MozReview-Commit-ID: DNqcu5vxrBG
* * *
[mq]: try
MozReview-Commit-ID: 3KoNVklCK8d
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -20,17 +20,17 @@ var StarUI = {
get panel() {
delete this.panel;
var element = this._element("editBookmarkPanel");
// initially the panel is hidden
// to avoid impacting startup / new window performance
element.hidden = false;
element.addEventListener("keypress", this, false);
element.addEventListener("mouseout", this, false);
- element.addEventListener("mouseover", this, false);
+ element.addEventListener("mousemove", this, false);
element.addEventListener("popuphidden", this, false);
element.addEventListener("popupshown", this, false);
return this.panel = element;
},
// Array of command elements to disable when the panel is opened.
get _blockedCommands() {
delete this._blockedCommands;
@@ -58,17 +58,17 @@ var StarUI = {
elt.removeAttribute("disabled");
elt.removeAttribute("wasDisabled");
});
},
// nsIDOMEventListener
handleEvent(aEvent) {
switch (aEvent.type) {
- case "mouseover":
+ case "mousemove":
clearTimeout(this._autoCloseTimer);
break;
case "popuphidden":
clearTimeout(this._autoCloseTimer);
if (aEvent.originalTarget == this.panel) {
if (!this._element("editBookmarkPanelContent").hidden)
this.quitEditMode();
@@ -125,33 +125,34 @@ var StarUI = {
//XXX Why is this necessary? The defaultPrevented check should
// be enough.
break;
}
this.panel.hidePopup();
break;
}
break;
- case "mouseout": {
+ case "mouseout":
+ // Explicit fall-through
+ case "popupshown":
// Don't handle events for descendent elements.
if (aEvent.target != aEvent.currentTarget) {
break;
}
- // Explicit fall-through
- }
- case "popupshown":
// auto-close if new and not interacted with
if (this._isNewBookmark) {
// 3500ms matches the timeout that Pocket uses in
// browser/extensions/pocket/content/panels/js/saved.js
let delay = 3500;
if (this._closePanelQuickForTesting) {
delay /= 10;
}
- this._autoCloseTimer = setTimeout(() => this.panel.hidePopup(), delay, this);
+ this._autoCloseTimer = setTimeout(() => {
+ this.panel.hidePopup();
+ }, delay);
}
break;
}
},
_overlayLoaded: false,
_overlayLoading: false,
showEditBookmarkPopup: Task.async(function* (aNode, aAnchorElement, aPosition, aIsNewBookmark) {
--- a/browser/base/content/test/general/browser_bookmark_popup.js
+++ b/browser/base/content/test/general/browser_bookmark_popup.js
@@ -8,17 +8,16 @@
* Test opening and closing the bookmarks panel.
*/
let bookmarkPanel = document.getElementById("editBookmarkPanel");
let bookmarkStar = document.getElementById("bookmarks-menu-button");
let bookmarkPanelTitle = document.getElementById("editBookmarkPanelTitle");
StarUI._closePanelQuickForTesting = true;
-Services.prefs.setBoolPref("browser.bookmarks.closePanelQuickForTesting", true);
function* test_bookmarks_popup({isNewBookmark, popupShowFn, popupEditFn,
shouldAutoClose, popupHideFn, isBookmarkRemoved}) {
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:home");
try {
if (!isNewBookmark) {
yield PlacesUtils.bookmarks.insert({
parentGuid: PlacesUtils.bookmarks.unfiledGuid,
@@ -117,49 +116,36 @@ add_task(function* panel_shown_for_keybo
popupShowFn() {
EventUtils.synthesizeKey("D", {accelKey: true}, window);
},
shouldAutoClose: true,
isBookmarkRemoved: false,
});
});
-add_task(function* panel_shown_for_new_bookmarks_mouseover_mouseout() {
+add_task(function* panel_shown_for_new_bookmarks_mousemove_mouseout() {
yield test_bookmarks_popup({
isNewBookmark: true,
popupShowFn() {
bookmarkStar.click();
},
*popupEditFn() {
- let mouseOverPromise = new Promise(resolve => {
- bookmarkPanel.addEventListener("mouseover", function onmouseover() {
- bookmarkPanel.removeEventListener("mouseover", onmouseover);
- resolve();
- });
- });
- yield new Promise(resolve => {
- EventUtils.synthesizeNativeMouseMove(bookmarkPanel, 0, 0, resolve, window);
- });
- info("Waiting for mouseover event");
- yield mouseOverPromise;
- info("Got mouseover event");
+ let mouseMovePromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mousemove");
+ EventUtils.synthesizeMouse(bookmarkPanel, 0, 0, {type: "mousemove"});
+ info("Waiting for mousemove event");
+ yield mouseMovePromise;
+ info("Got mousemove event");
yield new Promise(resolve => setTimeout(resolve, 400));
- is(bookmarkPanel.state, "open", "Panel should still be open on mouseover");
+ is(bookmarkPanel.state, "open", "Panel should still be open on mousemove");
},
*popupHideFn() {
- let mouseOutPromise = new Promise(resolve => {
- bookmarkPanel.addEventListener("mouseout", function onmouseout() {
- bookmarkPanel.removeEventListener("mouseout", onmouseout);
- resolve();
- });
- });
- yield new Promise(resolve => {
- EventUtils.synthesizeNativeMouseMove(bookmarkStar, 0, 0, resolve, window);
- });
+ let mouseOutPromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mouseout");
+ EventUtils.synthesizeMouse(bookmarkPanel, 0, 0, {type: "mouseout"});
+ EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"});
info("Waiting for mouseout event");
yield mouseOutPromise;
info("Got mouseout event, should autoclose now");
},
shouldAutoClose: false,
isBookmarkRemoved: false,
});
});
@@ -262,11 +248,10 @@ add_task(function* ctrl_d_edit_bookmark_
popupHideFn() {
document.getElementById("editBookmarkPanelRemoveButton").click();
},
isBookmarkRemoved: true,
});
});
registerCleanupFunction(function() {
- Services.prefs.clearUserPref("browser.bookmarks.closePanelQuickForTesting");
delete StarUI._closePanelQuickForTesting;
})