[Pkg-mozext-commits] [compactheader] 385/441: Version 2.0.8beta1: Add subject link for NNTP web references. Two subject context menu entries for link and text.
David Prévot
taffit at moszumanska.debian.org
Wed Mar 18 12:29:20 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository compactheader.
commit 1260f1303742544f82592f615aeea872c97830a4
Author: Joachim Herb <Joachim.Herb at gmx.de>
Date: Wed Feb 20 21:32:00 2013 +0100
Version 2.0.8beta1: Add subject link for NNTP web references. Two subject context menu entries for link and text.
---
chrome/CompactHeader/content/RSSLinkify.js | 16 +-
.../content/compactHeaderOverlay-9.xul | 13 +-
.../CompactHeader/content/compactHeaderOverlay.xul | 13 +-
chrome/CompactHeader/locale/en-US/preferences.dtd | 2 +-
chrome/CompactHeader/locale/ru/preferences.dtd | 2 +-
install.rdf | 2 +-
.../test-compactheader-context-copy.js | 281 +++++++++++++++++++++
test/compactheader/test-ewait.js | 164 +-----------
test/shared-modules/test-compactheader-helpers.js | 26 +-
9 files changed, 338 insertions(+), 181 deletions(-)
diff --git a/chrome/CompactHeader/content/RSSLinkify.js b/chrome/CompactHeader/content/RSSLinkify.js
index 02d5686..3c6c99c 100644
--- a/chrome/CompactHeader/content/RSSLinkify.js
+++ b/chrome/CompactHeader/content/RSSLinkify.js
@@ -67,7 +67,7 @@ org.mozdev.compactHeader.RSSLinkify = function() {
}
if (cohePrefBranch.getBoolPref("headersize.linkify")) {
if (!RSSLinkify.newSubject) pub.InitializeHeaderViewTables();
- var url = currentHeaderData["content-base"];
+ var url = currentHeaderData["content-base"] || currentHeaderData["x-post-url"];
if(url) {
// RSSLinkify.newSubject.setAttribute("onclick", "if (!event.button) messenger.launchExternalURL('" +
// url.headerValue + "');");
@@ -78,7 +78,7 @@ org.mozdev.compactHeader.RSSLinkify = function() {
RSSLinkify.newSubject.setAttribute("tooltiptext", url.headerValue);
RSSLinkify.newSubject.addEventListener("click",
org.mozdev.compactHeader.RSSLinkify.openBrowser, false);
- RSSLinkify.newSubject.setAttribute("context", "CompactHeader_CohecopyUrlPopup");
+ RSSLinkify.newSubject.setAttribute("context", "CompactHeader_copyPopup");
} else {
removeEventListener('click',
org.mozdev.compactHeader.RSSLinkify.openBrowser, true);
@@ -122,7 +122,7 @@ org.mozdev.compactHeader.RSSLinkify = function() {
RSSLinkify.newSubject.setAttribute("id", "CompactHeader_collapsedsubjectlinkBox");
RSSLinkify.newSubject.setAttribute("class", "headerValue plain headerValueUrl");
RSSLinkify.newSubject.setAttribute("originalclass", "headerValue plain headerValueUrl");
- RSSLinkify.newSubject.setAttribute("context", "CohecopyUrlPopup");
+ RSSLinkify.newSubject.setAttribute("context", "CompactHeader_copyPopup");
RSSLinkify.newSubject.setAttribute("keywordrelated", "true");
RSSLinkify.newSubject.setAttribute("readonly", "true");
RSSLinkify.newSubject.setAttribute("appendoriginalclass", "true");
@@ -188,16 +188,12 @@ org.mozdev.compactHeader.RSSLinkify = function() {
}
}
- pub.CoheCopyWebsiteAddress = function (websiteAddressNode)
- {
- if (websiteAddressNode)
- {
- var websiteAddress = websiteAddressNode.getAttribute("url");
-
+ pub.CopyToClipboard = function(node, attr) {
+ if (node) {
var contractid = "@mozilla.org/widget/clipboardhelper;1";
var iid = Components.interfaces.nsIClipboardHelper;
var clipboard = Components.classes[contractid].getService(iid);
- clipboard.copyString(websiteAddress);
+ clipboard.copyString( node.getAttribute(attr) );
}
}
diff --git a/chrome/CompactHeader/content/compactHeaderOverlay-9.xul b/chrome/CompactHeader/content/compactHeaderOverlay-9.xul
index 7365cf0..ad8da30 100644
--- a/chrome/CompactHeader/content/compactHeaderOverlay-9.xul
+++ b/chrome/CompactHeader/content/compactHeaderOverlay-9.xul
@@ -1,6 +1,9 @@
<?xml version="1.0" ?>
<!DOCTYPE overlay [
+ <!ENTITY % utilityDTD SYSTEM
+ "chrome://communicator/locale/utilityOverlay.dtd">
+ %utilityDTD; <!-- copyCmd -->
<!ENTITY % msgHeaderDTD SYSTEM
"chrome://messenger/locale/msgHdrViewOverlay.dtd">
%msgHeaderDTD;
@@ -133,9 +136,13 @@
</vbox>
<vbox id="CompactHeader_collapsedHeaderView" orient="horizontal" flex="1">
- <menupopup id="CompactHeader_CohecopyUrlPopup" popupanchor="bottomleft">
- <menuitem label="©LinkCmd.label;" accesskey="©LinkCmd.accesskey;"
- oncommand="org.mozdev.compactHeader.RSSLinkify.CoheCopyWebsiteAddress(document.popupNode)"/>
+ <menupopup id="CompactHeader_copyPopup" popupanchor="bottomleft">
+ <menuitem id="CompactHeader_copyPopup_CopyLink"
+ label="©LinkCmd.label;" accesskey="©LinkCmd.accesskey;"
+ oncommand="org.mozdev.compactHeader.RSSLinkify.CopyToClipboard(document.popupNode, 'url')"/>
+ <menuitem id="CompactHeader_copyPopup_CopyText"
+ label="©Cmd.label;" accesskey="©Cmd.accesskey;"
+ oncommand="org.mozdev.compactHeader.RSSLinkify.CopyToClipboard(document.popupNode, 'value')"/>
</menupopup>
<vbox id="CompactHeader_showDetailsButtonBox" align="start" flex="0">
<button id="CompactHeader_showDetailsButton"
diff --git a/chrome/CompactHeader/content/compactHeaderOverlay.xul b/chrome/CompactHeader/content/compactHeaderOverlay.xul
index 2ecd215..793f424 100644
--- a/chrome/CompactHeader/content/compactHeaderOverlay.xul
+++ b/chrome/CompactHeader/content/compactHeaderOverlay.xul
@@ -1,6 +1,9 @@
<?xml version="1.0" ?>
<!DOCTYPE overlay [
+ <!ENTITY % utilityDTD SYSTEM
+ "chrome://communicator/locale/utilityOverlay.dtd">
+ %utilityDTD; <!-- copyCmd -->
<!ENTITY % msgHeaderDTD SYSTEM
"chrome://messenger/locale/msgHdrViewOverlay.dtd">
%msgHeaderDTD;
@@ -130,9 +133,13 @@
</vbox>
<vbox id="CompactHeader_collapsedHeaderView" orient="horizontal" flex="1">
- <menupopup id="CompactHeader_CohecopyUrlPopup" popupanchor="bottomleft">
- <menuitem label="©LinkCmd.label;" accesskey="©LinkCmd.accesskey;"
- oncommand="org.mozdev.compactHeader.RSSLinkify.CoheCopyWebsiteAddress(document.popupNode)"/>
+ <menupopup id="CompactHeader_copyPopup" popupanchor="bottomleft">
+ <menuitem id="CompactHeader_copyPopup_CopyLink"
+ label="©LinkCmd.label;" accesskey="©LinkCmd.accesskey;"
+ oncommand="org.mozdev.compactHeader.RSSLinkify.CopyToClipboard(document.popupNode, 'url')"/>
+ <menuitem id="CompactHeader_copyPopup_CopyText"
+ label="©Cmd.label;" accesskey="©Cmd.accesskey;"
+ oncommand="org.mozdev.compactHeader.RSSLinkify.CopyToClipboard(document.popupNode, 'value')"/>
</menupopup>
<vbox id="CompactHeader_showDetailsButtonBox" align="start" flex="0">
<button id="CompactHeader_showDetailsButton"
diff --git a/chrome/CompactHeader/locale/en-US/preferences.dtd b/chrome/CompactHeader/locale/en-US/preferences.dtd
index 74969bf..dbe3d1c 100644
--- a/chrome/CompactHeader/locale/en-US/preferences.dtd
+++ b/chrome/CompactHeader/locale/en-US/preferences.dtd
@@ -37,7 +37,7 @@
<!ENTITY CompactHeader_dialog.title "CompactHeader Preferences">
<!ENTITY CompactHeader_checkbox.Compact.TwolineView.caption "Display two lines in compact view">
-<!ENTITY CompactHeader_menu.Linkify.caption "Link in subjects of RSS feeds">
+<!ENTITY CompactHeader_menu.Linkify.caption "Link in subjects of RSS feeds and NNTP posts">
<!ENTITY CompactHeader_menu.ShowOnlyAddress.caption "Display only address">
<!ENTITY CompactHeader_menu.flatButtons.caption "Flat buttons">
<!ENTITY CompactHeader_radiobox.ToolbarPosition.caption "Position of Header Toolbar">
diff --git a/chrome/CompactHeader/locale/ru/preferences.dtd b/chrome/CompactHeader/locale/ru/preferences.dtd
index cdd5b93..c9157e9 100644
--- a/chrome/CompactHeader/locale/ru/preferences.dtd
+++ b/chrome/CompactHeader/locale/ru/preferences.dtd
@@ -39,7 +39,7 @@
-->
<!ENTITY CompactHeader_dialog.title "Настройки CompactHeader">
<!ENTITY CompactHeader_checkbox.Compact.TwolineView.caption "Две строчки в компактном режиме">
-<!ENTITY CompactHeader_menu.Linkify.caption "Тема ленты новостей как ссылка">
+<!ENTITY CompactHeader_menu.Linkify.caption "Темы сообщений из лент и групп новостей работают как ссылки">
<!ENTITY CompactHeader_menu.ShowOnlyAddress.caption "Показывать только адрес">
<!ENTITY CompactHeader_menu.flatButtons.caption "Плоские кнопки">
<!ENTITY CompactHeader_radiobox.ToolbarPosition.caption "Расположение панели инструментов заголовка">
diff --git a/install.rdf b/install.rdf
index 73a5362..bf66299 100644
--- a/install.rdf
+++ b/install.rdf
@@ -6,7 +6,7 @@
<RDF:Description about="urn:mozilla:install-manifest">
<em:name>CompactHeader</em:name>
- <em:version>2.0.7</em:version>
+ <em:version>2.0.8beta1</em:version>
<em:description>Add ability to reduce header size to one or two lines. Linkify subjects in RSS feeds.</em:description>
<em:creator>Joachim Herb</em:creator>
<em:contributor>Zamula</em:contributor>
diff --git a/test/compactheader/test-compactheader-context-copy.js b/test/compactheader/test-compactheader-context-copy.js
new file mode 100644
index 0000000..d2b1faf
--- /dev/null
+++ b/test/compactheader/test-compactheader-context-copy.js
@@ -0,0 +1,281 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Thunderbird Mail Client.
+ *
+ * The Initial Developer of the Original Code is
+ * the Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2009
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Joachim Herb <Joachim.Herb at gmx.de>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var MODULE_NAME = 'test-compactheader-dark-on-focus';
+
+var RELATIVE_ROOT = '../shared-modules';
+var MODULE_REQUIRES = ['folder-display-helpers', 'window-helpers',
+ 'address-book-helpers', 'mouse-event-helpers',
+ 'compactheader-helpers'];
+
+const LINKIFY_PREF = "extensions.CompactHeader.headersize.linkify";
+const FEED_ADDR = "http://www.mozilla.org/"
+
+var elib = {};
+Cu.import('resource://mozmill/modules/elementslib.js', elib);
+var controller = {};
+Cu.import('resource://mozmill/modules/controller.js', controller);
+
+// The WindowHelper module
+var WindowHelper;
+
+var folder1;
+var normalBackground;
+
+function setupModule(module) {
+ let fdh = collector.getModule('folder-display-helpers');
+ fdh.installInto(module);
+ WindowHelper = collector.getModule('window-helpers');
+ WindowHelper.installInto(module);
+ let abh = collector.getModule('address-book-helpers');
+ abh.installInto(module);
+ let meh = collector.getModule('mouse-event-helpers');
+ meh.installInto(module);
+ let meh = collector.getModule('mouse-event-helpers');
+ meh.installInto(module);
+ let chh = collector.getModule('compactheader-helpers');
+ chh.installInto(module);
+
+ folder1 = create_folder("ContextCopyTest1");
+
+ let msg = create_message({cc: msgGen.makeNamesAndAddresses(3),
+ to: msgGen.makeNamesAndAddresses(1),
+ subject: "Normal message"
+ });
+
+
+ add_message_to_folder(folder1, msg);
+ // create a message which looks like an RSS feed
+ let msg = create_message({to: msgGen.makeNamesAndAddresses(1), // YYY
+ subject: "RSS feed message",
+ clobberHeaders: {
+ "Content-Base": FEED_ADDR
+ }});
+ add_message_to_folder(folder1, msg);
+
+}
+
+function teardownModule() {
+ Services.prefs.clearUserPref(LINKIFY_PREF);
+ let abwc = openAddressBook();
+ close3PaneWindow();
+ mc = open3PaneWindow();
+ abwc.window.close();
+}
+
+function test_without_linkify() {
+ // select "normal message
+ let curMessage = select_message_in_folder(folder1, 0, mc);
+ expand_and_assert_header(mc);
+ open_preferences_dialog(mc, set_preferences_oneline);
+ open_preferences_dialog(mc, set_preferences_non_linkify);
+
+ // check context menu of subject = Copy
+ mc.rightClick(mc.eid("expandedsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+
+ // no header entry web address
+ assert_false(isVisible(mc.e("expandedcontent-baseBox")));
+
+ collapse_and_assert_header(mc);
+ // check context menu of subject = Copy
+ assert_true(isVisible(mc.e("CompactHeader_collapsed1LsubjectBox")));
+ mc.rightClick(mc.eid("CompactHeader_collapsed1LsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ assert_false(isVisible(mc.e("CompactHeader_copyPopup_CopyLink")),
+ "CompactHeader_copyPopup_CopyLink should be invisible");
+ assert_false(isVisible(mc.e("CompactHeader_copyPopup_CopyText")),
+ "CompactHeader_copyPopup_CopyText should be invisible");
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+ assert_equals(null, mc.e("CompactHeader_collapsedsubjectlinkBox"));
+
+ // select RSS message
+ let curMessage = select_message_in_folder(folder1, 1, mc);
+ expand_and_assert_header(mc);
+
+ // check context menu of subject = Copy
+ mc.rightClick(mc.eid("expandedsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+
+ // check context menu of Website = Copy Link Address
+ mc.rightClick(mc.eid("expandedcontent-baseBox"));
+ wait_for_popup_to_open(mc.e("copyUrlPopup"));
+
+ let copyLinkMenuItem = mc.window.document.getElementsByAttribute("oncommand",
+ "CopyWebsiteAddress(document.popupNode)")[0];
+ assert_true(isVisible(copyLinkMenuItem));
+ let copyLinkMenuItemClick = new elementslib.Elem(copyLinkMenuItem);
+ mc.click(copyLinkMenuItemClick);
+ assert_clipboard_content(FEED_ADDR);
+
+
+ collapse_and_assert_header(mc);
+ // check context menu of subject = Copy
+ assert_true(isVisible(mc.e("CompactHeader_collapsed1LsubjectBox")));
+ mc.rightClick(mc.eid("CompactHeader_collapsed1LsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ assert_false(isVisible(mc.e("CompactHeader_copyPopup_CopyLink")),
+ "CompactHeader_copyPopup_CopyLink should be invisible");
+ assert_false(isVisible(mc.e("CompactHeader_copyPopup_CopyText")),
+ "CompactHeader_copyPopup_CopyText should be invisible");
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+ // no link in subject
+ assert_equals(null, mc.e("CompactHeader_collapsedsubjectlinkBox"));
+}
+
+function test_with_linkify() {
+ let curMessage = select_message_in_folder(folder1, 0, mc);
+ expand_and_assert_header(mc);
+ open_preferences_dialog(mc, set_preferences_oneline);
+ open_preferences_dialog(mc, set_preferences_linkify);
+
+ // check context menu of subject = Copy
+ mc.rightClick(mc.eid("expandedsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+
+ // no header entry web address
+ assert_false(isVisible(mc.e("expandedcontent-baseBox")));
+
+ collapse_and_assert_header(mc);
+ // check context menu of subject = Copy
+ assert_true(isVisible(mc.e("CompactHeader_collapsed1LsubjectBox")));
+ mc.rightClick(mc.eid("CompactHeader_collapsed1LsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ assert_false(isVisible(mc.e("CompactHeader_copyPopup_CopyLink")),
+ "CompactHeader_copyPopup_CopyLink should be invisible");
+ assert_false(isVisible(mc.e("CompactHeader_copyPopup_CopyText")),
+ "CompactHeader_copyPopup_CopyText should be invisible");
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+
+ let curMessage = select_message_in_folder(folder1, 1, mc);
+ expand_and_assert_header(mc);
+
+ // check context menu of subject = Copy
+ mc.rightClick(mc.eid("expandedsubjectBox"));
+ wait_for_popup_to_open(mc.e("copyPopup"));
+ assert_true(isVisible(mc.e("copyMenuitem")));
+ mc.click_menus_in_sequence(mc.e("copyPopup"), [{id: "copyMenuitem"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+
+ // check context menu of Website = Copy Link Address
+ mc.rightClick(mc.eid("expandedcontent-baseBox"));
+ wait_for_popup_to_open(mc.e("copyUrlPopup"));
+
+ let copyLinkMenuItem = mc.window.document.getElementsByAttribute("oncommand",
+ "CopyWebsiteAddress(document.popupNode)")[0];
+ assert_true(isVisible(copyLinkMenuItem));
+ let copyLinkMenuItemClick = new elementslib.Elem(copyLinkMenuItem);
+ mc.click(copyLinkMenuItemClick);
+ assert_clipboard_content(FEED_ADDR);
+
+
+ collapse_and_assert_header(mc);
+ // check context menu of subject = Copy
+ assert_false(isVisible(mc.e("CompactHeader_collapsed1LsubjectBox")));
+ assert_equals(FEED_ADDR,
+ mc.e("CompactHeader_collapsedsubjectlinkBox").getAttribute("url"));
+ mc.rightClick(mc.eid("CompactHeader_collapsedsubjectlinkBox"));
+ wait_for_popup_to_open(mc.e("CompactHeader_copyPopup"));
+ assert_false(isVisible(mc.e("copyPopup")));
+ assert_true(isVisible(mc.e("CompactHeader_copyPopup_CopyLink")),
+ "CompactHeader_copyPopup_CopyLink should be visible");
+ assert_true(isVisible(mc.e("CompactHeader_copyPopup_CopyText")),
+ "CompactHeader_copyPopup_CopyText should be visible");
+ mc.click_menus_in_sequence(mc.e("CompactHeader_copyPopup"),
+ [{id: "CompactHeader_copyPopup_CopyText"}]);
+ assert_clipboard_content(curMessage.mime2DecodedSubject);
+
+
+ mc.rightClick(mc.eid("CompactHeader_collapsedsubjectlinkBox"));
+ wait_for_popup_to_open(mc.e("CompactHeader_copyPopup"));
+ mc.click_menus_in_sequence(mc.e("CompactHeader_copyPopup"),
+ [{id: "CompactHeader_copyPopup_CopyLink"}]);
+ assert_clipboard_content(FEED_ADDR);
+}
+
+
+function assert_clipboard_content(expectedContent) {
+ var trans = Transferable();
+ trans.addDataFlavor("text/unicode");
+
+ Services.clipboard.getData(trans, Services.clipboard.kGlobalClipboard);
+
+ var str = {};
+ var strLength = {};
+
+ trans.getTransferData("text/unicode", str, strLength);
+
+ if (str) {
+ var pastetext = str.value.QueryInterface(Ci.nsISupportsString).data;
+ }
+
+ assert_equals(expectedContent, pastetext)
+}
+
+//Create a constructor for the builtin transferable class
+const nsTransferable = Components.Constructor("@mozilla.org/widget/transferable;1", "nsITransferable");
+
+//Create a wrapper to construct a nsITransferable instance and set its source to the given window, when necessary
+function Transferable(source) {
+ var res = nsTransferable();
+ if ('init' in res) {
+ // When passed a Window object, find a suitable provacy context for it.
+ if (source instanceof Ci.nsIDOMWindow)
+ // Note: in Gecko versions >16, you can import the PrivateBrowsingUtils.jsm module
+ // and use PrivateBrowsingUtils.privacyContextFromWindow(sourceWindow) instead
+ source = source.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIWebNavigation);
+
+ res.init(source);
+ }
+ return res;
+}
\ No newline at end of file
diff --git a/test/compactheader/test-ewait.js b/test/compactheader/test-ewait.js
index 1afa496..0d5b77b 100644
--- a/test/compactheader/test-ewait.js
+++ b/test/compactheader/test-ewait.js
@@ -44,6 +44,7 @@ var MODULE_NAME = 'test-header-toolbar';
var RELATIVE_ROOT = '../shared-modules';
var MODULE_REQUIRES = ['folder-display-helpers', 'window-helpers',
+ 'mouse-event-helpers',
'address-book-helpers'];
var elib = {};
@@ -63,6 +64,8 @@ function setupModule(module) {
wh.installInto(module);
let abh = collector.getModule('address-book-helpers');
abh.installInto(module);
+ let meh = collector.getModule('mouse-event-helpers');
+ meh.installInto(module);
folder = create_folder("TestEwait");
@@ -144,164 +147,3 @@ function close_header_pane_toolbar_customization(aController)
assert_true(aController.window.closed, "The customization dialog is not closed.");
}
}
-
-
-// taken form test-mouse-event-helpers:
-
-/**
- * Execute a drag and drop session.
- * @param {XULElement} aDragObject
- * the element from which the drag session should be started.
- * @param {} aDragWindow
- * the window the aDragObject is in
- * @param {XULElement} aDropObject
- * the element at which the drag session should be ended.
- * @param {} aDropWindow
- * the window the aDropObject is in
- * @param {} aRelDropX
- * the relative x-position the element is dropped over the aDropObject
- * in percent of the aDropObject width
- * @param {} aRelDropY
- * the relative y-position the element is dropped over the aDropObject
- * in percent of the aDropObject height
- * @param {XULElement} aListener
- * the element who's drop target should be captured and returned.
- */
-function drag_n_drop_element(aDragObject, aDragWindow, aDropObject,
- aDropWindow, aRelDropX, aRelDropY, aListener)
-{
- let dt = synthesize_drag_start(aDragWindow, aDragObject, aListener);
- assert_true(dt, "Drag target was undefined");
-
- synthesize_drag_over(aDropWindow, aDropObject, dt);
-
- synthesize_drop(aDropWindow, aDropObject, dt,
- { screenX : aDropObject.boxObject.screenX +
- (aDropObject.boxObject.width * aRelDropX),
- screenY : aDropObject.boxObject.screenY +
- (aDropObject.boxObject.width * aRelDropY)
- });
-}
-
-/**
- * Starts a drag new session.
- * @param {} aWindow
- * @param {XULElement} aDispatcher
- * the element from which the drag session should be started.
- * @param {XULElement} aListener
- * the element who's drop target should be captured and returned.
- * @return {nsIDataTransfer}
- * returns the DataTransfer Object of captured by aListener.
- */
-function synthesize_drag_start(aWindow, aDispatcher, aListener)
-{
- let dt;
-
- var trapDrag = function(event) {
-
- if ( !event.dataTransfer )
- throw "no DataTransfer";
-
- dt = event.dataTransfer;
-
- //event.stopPropagation();
- event.preventDefault();
- };
-
- aListener.addEventListener("dragstart", trapDrag, true);
-
- EventUtils.synthesizeMouse(aDispatcher, 5, 5, {type:"mousedown"}, aWindow);
- EventUtils.synthesizeMouse(aDispatcher, 5, 10, {type:"mousemove"}, aWindow);
- EventUtils.synthesizeMouse(aDispatcher, 5, 15, {type:"mousemove"}, aWindow);
-
- aListener.removeEventListener("dragstart", trapDrag, true);
-
- return dt;
-}
-
-/**
- * Synthesizes a drag over event.
- * @param {} aWindow
- * @param {XULElement} aDispatcher
- * the element from which the drag session should be started.
- * @param {nsIDataTransfer} aDt
- * the DataTransfer Object of captured by listener.
- * @param {} aArgs
- * arguments passed to the mouse event.
- */
-function synthesize_drag_over(aWindow, aDispatcher, aDt, aArgs)
-{
- _synthesizeDragEvent("dragover", aWindow, aDispatcher, aDt, aArgs);
-}
-
-/**
- * Synthesizes a drag end event.
- * @param {} aWindow
- * @param {XULElement} aDispatcher
- * the element from which the drag session should be started.
- * @param {nsIDataTransfer} aDt
- * the DataTransfer Object of captured by listener.
- * @param {} aArgs
- * arguments passed to the mouse event.
- */
-function synthesize_drag_end(aWindow, aDispatcher, aListener, aDt, aArgs)
-{
- _synthesizeDragEvent("dragend", aWindow, aListener, aDt, aArgs);
-
- //Ensure drag has ended.
- EventUtils.synthesizeMouse(aDispatcher, 5, 5, {type:"mousemove"}, aWindow);
- EventUtils.synthesizeMouse(aDispatcher, 5, 10, {type:"mousemove"}, aWindow);
- EventUtils.synthesizeMouse(aDispatcher, 5, 5, {type:"mouseup"}, aWindow);
-}
-
-/**
- * Synthesizes a drop oevent.
- * @param {} aWindow
- * @param {XULElement} aDispatcher
- * the element from which the drag session should be started.
- * @param {nsIDataTransfer} aDt
- * the DataTransfer Object of captured by listener.
- * @param {} aArgs
- * arguments passed to the mouse event.
- */
-function synthesize_drop(aWindow, aDispatcher, aDt, aArgs)
-{
- _synthesizeDragEvent("drop", aWindow, aDispatcher, aDt, aArgs);
-
- // Ensure drag has ended.
- EventUtils.synthesizeMouse(aDispatcher, 5, 5, {type:"mousemove"}, aWindow);
- EventUtils.synthesizeMouse(aDispatcher, 5, 10, {type:"mousemove"}, aWindow);
- EventUtils.synthesizeMouse(aDispatcher, 5, 5, {type:"mouseup"}, aWindow);
-}
-
-/**
- * Private function: Synthesizes a specified drag event.
- * @param {} aType
- * the type of the drag event to be synthesiyzed.
- * @param {} aWindow
- * @param {XULElement} aDispatcher
- * the element from which the drag session should be started.
- * @param {nsIDataTransfer} aDt
- * the DataTransfer Object of captured by listener.
- * @param {} aArgs
- * arguments passed to the mouse event.
- */
-function _synthesizeDragEvent(aType, aWindow, aDispatcher, aDt, aArgs)
-{
- let screenX;
- if (aArgs && ("screenX" in aArgs))
- screenX = aArgs.screenX;
- else
- screenX = aDispatcher.boxObject.ScreenX;
-
- let screenY;
- if (aArgs && ("screenY" in aArgs))
- screenY = aArgs.screenY;
- else
- screenY = aDispatcher.boxObject.ScreenY;
-
- let event = aWindow.document.createEvent("DragEvents");
- event.initDragEvent(aType, true, true, aWindow, 0,
- screenX, screenY, 0, 0, false, false, false, false, 0, null, aDt);
- aDispatcher.dispatchEvent(event);
-}
diff --git a/test/shared-modules/test-compactheader-helpers.js b/test/shared-modules/test-compactheader-helpers.js
index 8a69413..03711e5 100644
--- a/test/shared-modules/test-compactheader-helpers.js
+++ b/test/shared-modules/test-compactheader-helpers.js
@@ -87,6 +87,8 @@ function installInto(module) {
module.set_preferences_oneline = set_preferences_oneline;
module.set_preferences_darken = set_preferences_darken;
module.set_preferences_non_darken = set_preferences_non_darken;
+ module.set_preferences_linkify = set_preferences_linkify;
+ module.set_preferences_non_linkify = set_preferences_non_linkify;
module.subtest_change_dblclick = subtest_change_dblclick;
module.subtest_change_no_dblclick = subtest_change_no_dblclick;
module.assert_collapsed = assert_collapsed;
@@ -436,8 +438,30 @@ function set_preferences_non_darken(aController) {
close_preferences_dialog(aController);
}
+function set_preferences_linkify(aController) {
+ let checkboxLinkify = aController.eid("CompactHeader_checkboxLinkify");
+ if (!checkboxLinkify.node.getAttribute("checked")) {
+ aController.click(checkboxLinkify);
+ }
+ close_preferences_dialog(aController);
+}
+
+function set_preferences_non_linkify(aController) {
+ let checkboxLinkify = aController.eid("CompactHeader_checkboxLinkify");
+ if (checkboxLinkify.node.getAttribute("checked")) {
+ aController.click(checkboxLinkify);
+ }
+ close_preferences_dialog(aController);
+}
+
function isVisible(aElem) {
- if (aElem.hidden || aElem.collapsed)
+ if ( aElem.hidden || aElem.collapsed
+ || aElem.state == "closed"
+ || (typeof aElem.hasAttribute === 'function'
+ && aElem.hasAttribute("collapsed")
+ && aElem.getAttribute("collapsed") == "true"
+ )
+ )
return false;
let parent = aElem.parentNode;
if (parent == null)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/compactheader.git
More information about the Pkg-mozext-commits
mailing list