[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="&copyLinkCmd.label;" accesskey="&copyLinkCmd.accesskey;"
-                oncommand="org.mozdev.compactHeader.RSSLinkify.CoheCopyWebsiteAddress(document.popupNode)"/>
+    <menupopup id="CompactHeader_copyPopup" popupanchor="bottomleft">
+      <menuitem id="CompactHeader_copyPopup_CopyLink"
+                label="&copyLinkCmd.label;" accesskey="&copyLinkCmd.accesskey;"
+                oncommand="org.mozdev.compactHeader.RSSLinkify.CopyToClipboard(document.popupNode, 'url')"/>
+      <menuitem id="CompactHeader_copyPopup_CopyText"
+                label="&copyCmd.label;" accesskey="&copyCmd.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="&copyLinkCmd.label;" accesskey="&copyLinkCmd.accesskey;"
-                oncommand="org.mozdev.compactHeader.RSSLinkify.CoheCopyWebsiteAddress(document.popupNode)"/>
+    <menupopup id="CompactHeader_copyPopup" popupanchor="bottomleft">
+      <menuitem id="CompactHeader_copyPopup_CopyLink"
+                label="&copyLinkCmd.label;" accesskey="&copyLinkCmd.accesskey;"
+                oncommand="org.mozdev.compactHeader.RSSLinkify.CopyToClipboard(document.popupNode, 'url')"/>
+      <menuitem id="CompactHeader_copyPopup_CopyText"
+                label="&copyCmd.label;" accesskey="&copyCmd.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