layout/base/tests/chrome/printpreview_bug396024_helper.xul

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <?xml version="1.0"?>
     2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
     3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
     4                  type="text/css"?>
     5 <!--
     6 https://bugzilla.mozilla.org/show_bug.cgi?id=396024
     7 -->
     8 <window title="Mozilla Bug 396024" onload="run()"
     9         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    10 <iframe id="i" src="about:blank" type="content"></iframe>
    11 <iframe src="about:blank" type="content"></iframe>
    12 <script type="application/javascript">
    13 <![CDATA[
    14 var is = window.opener.wrappedJSObject.is;
    15 var ok = window.opener.wrappedJSObject.ok;
    16 var todo = window.opener.wrappedJSObject.todo;
    17 var SimpleTest = window.opener.wrappedJSObject.SimpleTest;
    18 var gWbp;
    19 function printpreview() {
    20   gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
    21              .getInterface(Components.interfaces.nsIWebBrowserPrint);
    22   var listener = {
    23     onLocationChange: function(webProgress, request, location, flags) { },
    24     onProgressChange: function(webProgress, request, curSelfProgress, 
    25                                maxSelfProgress, curTotalProgress,
    26                                maxTotalProgress) { },
    27     onSecurityChange: function(webProgress, request, state) { },
    28     onStateChange: function(webProgress, request, stateFlags, status) { },
    29     onStatusChange: function(webProgress, request, status, message) { },
    30     QueryInterface: function(iid) {
    31       if (iid.equals(Components.interfaces.nsIWebProgressListener) ||
    32           iid.equals(Components.interfaces.nsISupportsWeakReference))
    33             return this;
    34       throw Components.results.NS_NOINTERFACE;
    35     }
    36   }
    37   var prefs = Components.classes["@mozilla.org/preferences-service;1"]
    38                             .getService(Components.interfaces.nsIPrefBranch);
    39   prefs.setBoolPref('print.show_print_progress', false);
    40   //XXX I would have thought this would work, instead I'm forced to use prefs service
    41   gWbp.globalPrintSettings.showPrintProgress = false; 
    42   gWbp.printPreview(gWbp.globalPrintSettings, window.frames[0], listener);
    43   prefs.clearUserPref('print.show_print_progress');
    44 }
    46 function exitprintpreview() {
    47   window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
    48    .getInterface(Components.interfaces.nsIWebBrowserPrint).exitPrintPreview(); 
    49 }
    51 function finish() {
    52   SimpleTest.finish();
    53   window.close();
    54 }
    56 function run()
    57 {
    58 /** Test for Bug 396024 **/
    59   var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
    60                                .getService(Components.interfaces.nsIPrintSettingsService);
    62   try {
    63     Components.classes["@mozilla.org/gfx/printerenumerator;1"]
    64               .getService(Components.interfaces.nsIPrinterEnumerator);
    65   } catch(e) {
    66     todo(false, "Test skipped on MacOSX, as the print preview code doesn't work there");
    67     finish();
    68     return;
    69   }
    71   if (printService.defaultPrinterName != '') {
    72     printpreview();
    73     ok(gWbp.doingPrintPreview, "Should be doing print preview");
    74     exitprintpreview();
    75     ok(!gWbp.doingPrintPreview, "Should not be doing print preview anymore1");
    76     printpreview();
    77     setTimeout(run2, 0)
    78   } else {
    79     todo(false, "No printer seems installed on this machine, that is necessary for this test");
    80     finish();
    81   }
    82 }
    84 function run2() {
    85   var loadhandler = function() {
    86     document.getElementById("i").removeEventListener("load", arguments.callee, true);
    87     setTimeout(run3, 0);
    88   };
    89   document.getElementById("i").addEventListener("load", loadhandler, true);
    90   window.frames[0].location.reload();
    91 }
    93 function run3() {
    94   gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
    95              .getInterface(Components.interfaces.nsIWebBrowserPrint);
    96   ok(gWbp.doingPrintPreview, "Should be doing print preview");
    97   exitprintpreview();
    98   setTimeout(run4, 0);
    99 }
   101 function run4() {
   102   var i = document.getElementById("i");
   103   var x = i.parentNode.removeChild(i);
   104   var loadhandler = function() {
   105     document.getElementById("i").removeEventListener("load", loadhandler, true);
   106     setTimeout(run5, 0);
   107   };
   108   x.addEventListener("load", loadhandler, true);
   109   document.documentElement.getBoundingClientRect();
   110   document.documentElement.appendChild(x);
   111   gWbp = window.frames[1].QueryInterface(Components.interfaces.nsIInterfaceRequestor)
   112              .getInterface(Components.interfaces.nsIWebBrowserPrint);
   113   ok(!gWbp.doingPrintPreview, "Should not be doing print preview anymore2");
   114 }
   116 function run5() {
   117   //XXX this shouldn't be necessary, see bug 405555
   118   printpreview();
   119   exitprintpreview();
   120   finish(); //should not have crashed after all of this
   121 }
   122 ]]></script>
   123 </window>

mercurial