uriloader/exthandler/tests/mochitest/test_unsafeBidiChars.xhtml

Wed, 31 Dec 2014 07:53:36 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:53:36 +0100
branch
TOR_BUG_3246
changeset 5
4ab42b5ab56c
permissions
-rw-r--r--

Correct small whitespace inconsistency, lost while renaming variables.

     1 <html xmlns="http://www.w3.org/1999/xhtml">
     2 <head>
     3   <title>Test for Handling of unsafe bidi chars</title>
     4   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     5   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     6 </head>
     7 <body onload="load();">
     8 <p id="display"></p>
     9 <iframe id="test"></iframe>
    10 <script type="text/javascript">
    11 <![CDATA[
    13 var unsafeBidiChars = {
    14   LRE: "\xe2\x80\xaa",
    15   RLE: "\xe2\x80\xab",
    16   PDF: "\xe2\x80\xac",
    17   LRO: "\xe2\x80\xad",
    18   RLO: "\xe2\x80\xae"
    19 };
    21 var tests = [
    22   "{1}.test",
    23   "{1}File.test",
    24   "Fi{1}le.test",
    25   "File{1}.test",
    26   "File.{1}test",
    27   "File.te{1}st",
    28   "File.test{1}",
    29   "File.{1}",
    30 ];
    32 function replace(name, x) {
    33   return name.replace(/\{1\}/, x);
    34 }
    36 function sanitize(name) {
    37   return replace(name, '_');
    38 }
    40 var gTests = [];
    41 function make_test(param, expected) {
    42   gTests.push({
    43     param: param,
    44     expected: expected,
    45   });
    46 }
    48 SimpleTest.waitForExplicitFinish();
    50 function load() {
    51   var iframe = document.getElementById("test");
    52   var gCallback = null;
    53   function run_test(test, cb) {
    54     var url = "unsafeBidiFileName.sjs?name=" + encodeURIComponent(test.param);
    55     gCallback = cb;
    56     iframe.src = url;
    57   }
    59   var gCounter = -1;
    60   function run_next_test() {
    61     if (++gCounter == gTests.length)
    62       finish_test();
    63     else
    64       run_test(gTests[gCounter], run_next_test);
    65   }
    67   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    69   const HELPERAPP_DIALOG_CONTRACT = "@mozilla.org/helperapplauncherdialog;1";
    70   const HELPERAPP_DIALOG_CID = SpecialPowers.wrap(SpecialPowers.Components).ID(SpecialPowers.Cc[HELPERAPP_DIALOG_CONTRACT].number);
    72   const FAKE_CID = SpecialPowers.Cc["@mozilla.org/uuid-generator;1"].
    73     getService(SpecialPowers.Ci.nsIUUIDGenerator).generateUUID();
    75   function HelperAppLauncherDialog() {}
    76   HelperAppLauncherDialog.prototype = {
    77     REASON_CANTHANDLE: 0,
    78     REASON_SERVERREQUEST: 1,
    79     REASON_TYPESNIFFED: 2,
    80     show: function(aLauncher, aWindowContext, aReason) {
    81       netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    82       var test = gTests[gCounter];
    83       is(aLauncher.suggestedFileName, test.expected,
    84          "The filename should be correctly sanitized");
    85       gCallback();
    86     },
    87     promptForSaveToFile: function(aLauncher, aWindowContext, aDefaultFileName, aSuggestedFileExtension, aForcePrompt) {
    88       return null;
    89     },
    90     QueryInterface: function(aIID) {
    91       netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    92       if (aIID.equals(SpecialPowers.Ci.nsISupports) ||
    93           aIID.equals(SpecialPowers.Ci.nsIHelperAppLauncherDialog))
    94         return this;
    95       throw SpecialPowers.Cr.NS_ERROR_NO_INTERFACE;
    96     }
    97   };
    99   var factory = {
   100     createInstance: function(aOuter, aIID) {
   101       netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
   102       if (aOuter != null)
   103         throw SpecialPowers.Cr.NS_ERROR_NO_AGGREGATION;
   104       return new HelperAppLauncherDialog().QueryInterface(aIID);
   105     }
   106   };
   108   SpecialPowers.wrap(SpecialPowers.Components).manager
   109             .QueryInterface(SpecialPowers.Ci.nsIComponentRegistrar)
   110             .registerFactory(FAKE_CID, "",
   111                              HELPERAPP_DIALOG_CONTRACT,
   112                              factory);
   114   function finish_test() {
   115     SpecialPowers.wrap(SpecialPowers.Components).manager
   116               .QueryInterface(SpecialPowers.Ci.nsIComponentRegistrar)
   117               .registerFactory(HELPERAPP_DIALOG_CID, "",
   118                                HELPERAPP_DIALOG_CONTRACT,
   119                                null);
   120     SimpleTest.finish();
   121   }
   123   var i,j;
   125   for (i = 0; i < tests.length; ++i) {
   126     for (j in unsafeBidiChars) {
   127       make_test(replace(tests[i], unsafeBidiChars[j]),
   128                 sanitize(tests[i]));
   129     }
   130   }
   132   run_next_test();
   133 }
   135 ]]>
   136 </script>
   137 </body>
   138 </html>

mercurial