[Pkg-mozext-commits] [requestpolicy] 18/65: [fix] toolbar button: "toggle" menu rather than "open"
David Prévot
taffit at moszumanska.debian.org
Fri Mar 25 22:59:47 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit 5307885504c64ad117bce84f92aa8da6b1431f12
Author: Martin Kimmerle <dev at 256k.de>
Date: Wed Jan 13 14:52:14 2016 +0100
[fix] toolbar button: "toggle" menu rather than "open"
Fixes #648
---
src/content/controllers/keyboard-shortcuts.jsm | 2 +-
src/content/controllers/windows.toolbarbutton.jsm | 2 +-
src/content/ui/overlay.js | 15 ++++++++
src/content/ui/xul-trees.js | 2 +-
tests/marionette/rp_puppeteer/tests/test_menu.py | 22 ++++++++----
tests/marionette/rp_puppeteer/ui/menu.py | 42 +++++++++++++++--------
6 files changed, 60 insertions(+), 25 deletions(-)
diff --git a/src/content/controllers/keyboard-shortcuts.jsm b/src/content/controllers/keyboard-shortcuts.jsm
index b656d3f..f03221f 100644
--- a/src/content/controllers/keyboard-shortcuts.jsm
+++ b/src/content/controllers/keyboard-shortcuts.jsm
@@ -42,7 +42,7 @@ var KeyboardShortcuts = (function() {
self.startup = function() {
keyboardShortcuts.push(new KeyboardShortcut("openMenu", "alt shift r",
function(window) {
- window.rpcontinued.overlay.openMenu();
+ window.rpcontinued.overlay.toggleMenu();
},
"keyboardShortcuts.openMenu.enabled",
"keyboardShortcuts.openMenu.combo"));
diff --git a/src/content/controllers/windows.toolbarbutton.jsm b/src/content/controllers/windows.toolbarbutton.jsm
index b6043a8..b00ac67 100644
--- a/src/content/controllers/windows.toolbarbutton.jsm
+++ b/src/content/controllers/windows.toolbarbutton.jsm
@@ -84,7 +84,7 @@ var ToolbarButtonController = (function() {
onCommand: function(aEvent) {
// Bad smell
let win = aEvent.target.ownerDocument.defaultView;
- win.rpcontinued.overlay.openMenu();
+ win.rpcontinued.overlay.toggleMenu();
}
});
}
diff --git a/src/content/ui/overlay.js b/src/content/ui/overlay.js
index e595feb..a0c593b 100644
--- a/src/content/ui/overlay.js
+++ b/src/content/ui/overlay.js
@@ -1092,6 +1092,21 @@ window.rpcontinued.overlay = (function() {
}, 0);
};
+ /**
+ * Close RequestPolicy's menu.
+ */
+ self.closeMenu = function() {
+ rpcontinued.menu.close();
+ };
+
+ self.toggleMenu = function() {
+ if ($id("rpc-popup").state === "closed") {
+ self.openMenu();
+ } else {
+ self.closeMenu();
+ }
+ };
+
self.isToolbarButtonVisible = function() {
return DOMUtils.isElementVisible($id("rpcontinuedToolbarButton"));
};
diff --git a/src/content/ui/xul-trees.js b/src/content/ui/xul-trees.js
index da2b469..c8f5287 100644
--- a/src/content/ui/xul-trees.js
+++ b/src/content/ui/xul-trees.js
@@ -88,7 +88,7 @@ exports.mainTree = [
tag: "menuitem",
attributes: {id: "rpcontinuedContextMenuEntry",
label: "RequestPolicy Continued"},
- events: {command: ["overlay", "openMenu"]}
+ events: {command: ["overlay", "toggleMenu"]}
},
{
diff --git a/tests/marionette/rp_puppeteer/tests/test_menu.py b/tests/marionette/rp_puppeteer/tests/test_menu.py
index fe198de..edc85b1 100644
--- a/tests/marionette/rp_puppeteer/tests/test_menu.py
+++ b/tests/marionette/rp_puppeteer/tests/test_menu.py
@@ -14,16 +14,24 @@ class TestMenu(RequestPolicyTestCase):
super(RequestPolicyTestCase, self).tearDown()
def test_open_close(self):
- def test(trigger):
- self.assertFalse(self.menu.is_open())
- self.menu.open(trigger=trigger)
- self.assertTrue(self.menu.is_open())
- self.menu.close()
- self.assertFalse(self.menu.is_open())
+ def test(trigger, test_close=True):
+ try:
+ self.assertFalse(self.menu.is_open())
+ self.menu.open(trigger=trigger)
+ self.assertTrue(self.menu.is_open())
+ if test_close:
+ self.menu.close(trigger=trigger)
+ else:
+ self.menu.close()
+ self.assertFalse(self.menu.is_open())
+ except:
+ print "trigger: " + trigger
+ raise
test("api")
test("button")
- test("shortcut")
+ # The keyboard shortcut is not captured when the menu is open.
+ test("shortcut", test_close=False)
def test_total_num_requests(self):
with self.marionette.using_context("content"):
diff --git a/tests/marionette/rp_puppeteer/ui/menu.py b/tests/marionette/rp_puppeteer/ui/menu.py
index a0b5c5a..2301608 100644
--- a/tests/marionette/rp_puppeteer/ui/menu.py
+++ b/tests/marionette/rp_puppeteer/ui/menu.py
@@ -22,25 +22,17 @@ class Menu(BaseLib):
return int(match.group(1))
def open(self, trigger="api"):
- if callable(trigger):
- trigger()
- elif trigger == "button":
- self._toolbar_button.click()
- elif trigger == "shortcut":
- window = Windows(lambda: self.marionette).current
- window.send_shortcut("r", alt=True, shift=True)
- elif trigger == "api":
- self._ensure_popup_state("open")
- else:
- raise ValueError("Unknown opening method: \"{}\"".format(trigger))
-
- Wait(self.marionette, timeout=1).until(lambda _: self.is_open())
+ if self.is_open():
+ return
+ self._toggle(trigger=trigger)
def is_open(self):
return self._popup_state == "open"
- def close(self):
- self._ensure_popup_state("closed")
+ def close(self, trigger="api"):
+ if not self.is_open():
+ return
+ self._toggle(trigger=trigger)
##################################
# Private Properties and Methods #
@@ -58,6 +50,26 @@ class Menu(BaseLib):
def _popup_state(self):
return self._popup.get_attribute("state")
+ def _toggle(self, trigger="api"):
+ is_open = self.is_open()
+
+ if callable(trigger):
+ trigger()
+ elif trigger == "button":
+ self._toolbar_button.click()
+ elif trigger == "shortcut":
+ window = Windows(lambda: self.marionette).current
+ window.send_shortcut("r", alt=True, shift=True)
+ elif trigger == "api":
+ self._ensure_popup_state("closed" if is_open else "open")
+ else:
+ raise ValueError("Unknown trigger method: \"{}\"".format(trigger))
+
+ (
+ Wait(self.marionette, timeout=1)
+ .until(lambda _: self.is_open() is not is_open)
+ )
+
def _ensure_popup_state(self, state):
assert state in ["open", "closed"]
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git
More information about the Pkg-mozext-commits
mailing list