testing/mochitest/chrome/test_sanityChromeUtils.xul

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 <?xml version="1.0"?>
     2 <!-- This Source Code Form is subject to the terms of the Mozilla Public
     3    - License, v. 2.0. If a copy of the MPL was not distributed with this
     4    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
     5 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
     6                  type="text/css"?>
     7 <window title="Test ChromeUtils functions" 
     8         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     9   <script type="application/javascript"
    10           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
    11   <!-- ChromeUtils.js depends on EventUtils.js -->
    12   <script type="application/javascript"
    13           src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
    14   <script type="text/javascript">
    15   var start = new Date();
    16   </script>
    17   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js"></script>
    18   <script type="text/javascript">
    19   var loadTime = new Date();
    20   </script>
    21   <script type="application/javascript">
    22   <![CDATA[
    23     info("\nProfile::ChromeUtilsLoadTime: " + (loadTime - start) + "\n");
    24     var testFile = Components.classes["@mozilla.org/file/directory_service;1"].
    25                       getService(Components.interfaces.nsIProperties).
    26                       get("CurWorkD", Components.interfaces.nsIFile);
    27     var regularDtForDrag1 = null;
    28     var gSetDropEffect = true;
    29     var gData;
    30     var gEnter = false;
    31     var gOver  = false;
    32     var dragDrop = [[
    33       { type    : "text/plain",
    34         data    : "This is a test" }
    35     ]];
    36     // this is the expected data arrays
    37     // for testing drag of 2 items create 2 inner arrays
    38     var drag1 = [[
    39       { type  : "text/uri-list",
    40         data  : "http://www.mozilla.org/" }
    41     ]];
    42     var drag2items = [[
    43       { type  : "text/uri-list",
    44         data  : "http://www.mozilla.org/" }
    45       ],[
    46       { type  : "text/uri-list",
    47         data  : "http://www.mozilla.org/" }
    48     ]];
    49     var drag1WrongFlavor = [[
    50       { type  : "text/plain",
    51         data  : "this is text/plain" }
    52     ]];
    53     var drag2 = [[
    54       { type  : "text/plain",
    55         data  : "this is text/plain" },
    56       { type  : "text/uri-list",
    57         data  : "http://www.mozilla.org/" }
    58     ]];
    59     var drag2WrongOrder = [[
    60       { type  : "text/uri-list",
    61         data  : "http://www.mozilla.org/" },
    62       { type  : "text/plain",
    63         data  : "this is text/plain" }
    64     ]];
    65     var dragfile = [[
    66       { type    : "application/x-moz-file",
    67         data    : testFile,
    68         eqTest  : function(actualData, expectedData) {return expectedData.equals(actualData);} }
    69     ]];
    71     function doOnDrop(aEvent) {
    72       gData = aEvent.dataTransfer.getData(dragDrop[0][0].type);
    73       aEvent.preventDefault(); // cancels event and keeps dropEffect
    74                                // as was before event.
    75     }
    77     function doOnDragStart(aEvent) {
    78       var dt = aEvent.dataTransfer;
    79       switch (aEvent.currentTarget.id) {
    80         case "drag2" :
    81           dt.setData("text/plain", "this is text/plain");
    82         case "drag1" :
    83           regularDtForDrag1 = dt;
    84           dt.setData("text/uri-list", "http://www.mozilla.org/");
    85           break;
    86         case "dragfile" :
    87           dt.mozSetDataAt("application/x-moz-file", testFile, 0);
    88           break;
    89       }
    90         dt.effectAllowed = "all";
    91     }
    93     function doOnDragEnter(aEvent) {
    94       gEnter = true;
    95       aEvent.dataTransfer.effectAllowed = "all";
    96       aEvent.preventDefault(); // sets target this element
    97     }
    99     function doOnDragOver(aEvent) {
   100       gOver = true;
   101       if (gSetDropEffect)
   102         aEvent.dataTransfer.dropEffect = "copy";
   103       aEvent.preventDefault();
   104     }
   106     SimpleTest.waitForExplicitFinish();
   107     function test() {
   108       var startTime = new Date();
   109       var result;
   111       /* test synthesizeDragStart */
   112       result = synthesizeDragStart($("drag1"), drag1, window);
   113       is(result, null, "drag1 is text/uri-list");
   114       result = synthesizeDragStart($("drag1"), drag1WrongFlavor, window);
   115       isnot(result, null, "drag1 is not text/plain");
   116       result = synthesizeDragStart($("drag1"), drag2items, window);
   117       isnot(result, null, "drag1 is not 2 items");
   118       result = synthesizeDragStart($("drag2"), drag2, window);
   119       is(result, null, "drag2 is ordered text/plain then text/uri-list");
   120       result = synthesizeDragStart($("drag2"), drag1, window);
   121       isnot(result, null, "drag2 is not one flavor");
   122       result = synthesizeDragStart($("drag2"), drag2WrongOrder, window);
   123       isnot(result, null, "drag2 is not ordered text/uri-list then text/plain");
   124       result = synthesizeDragStart($("dragfile"), dragfile, window);
   125       is(result, null, "dragfile is nsIFile");
   126       result = synthesizeDragStart($("drag1"), null, window);
   127       is(result, regularDtForDrag1, "synthesizeDragStart accepts null expectedDragData");
   129       /* test synthesizeDrop */
   130       result = synthesizeDrop($("dragDrop"), $("dragDrop"), dragDrop, null, window);
   131       ok(gEnter, "Fired dragenter");
   132       ok(gOver,  "Fired dragover");
   133       is(result, "copy", "copy is dropEffect");
   134       is(gData, dragDrop[0][0].data, "Received valid drop data");
   136       gSetDropEffect = false;
   137       result = synthesizeDrop($("dragDrop"), $("dragDrop"), dragDrop, "link", window);
   138       is(result, "link", "link is dropEffect");
   139       gSetDropEffect = true;
   141       $("textB").focus();
   142       var content = synthesizeQueryTextContent(0, 100);
   143       ok(content, "synthesizeQueryTextContent should not be null");
   144       ok(content.succeeded, "synthesizeQueryTextContent should succeed");
   145       is(content.text, "I haz a content", "synthesizeQueryTextContent should be 'I haz a content': " + content.text);
   147       content = synthesizeQueryCaretRect(0);
   148       ok(content, "synthesizeQueryCaretRect should not be null");
   149       ok(content.succeeded, "synthesizeQueryCaretRect should succeed");
   151       content = synthesizeQueryTextRect(0, 100);
   152       ok(content, "synthesizeQueryTextRect should not be null");
   153       ok(content.succeeded, "synthesizeQueryTextRect should succeed");
   155       content = synthesizeQueryEditorRect();
   156       ok(content, "synthesizeQueryEditorRect should not be null");
   157       ok(content.succeeded, "synthesizeQueryEditorRect should succeed");
   159       content = synthesizeCharAtPoint(0, 0);
   160       ok(content, "synthesizeCharAtPoint should not be null");
   161       ok(content.succeeded, "synthesizeCharAtPoint should succeed");
   163       content = synthesizeSelectionSet(0, 100);
   164       ok(content, "synthesizeSelectionSet should not be null");
   165       is(content, true, "synthesizeSelectionSet should succeed");
   167       var endTime = new Date();
   168       info("\nProfile::ChromeUtilsRunTime: " + (endTime-startTime) + "\n");
   169       SimpleTest.finish();
   170     };
   171   ]]>
   172   </script>
   174   <body xmlns="http://www.w3.org/1999/xhtml" onload="setTimeout('test()', 0)">
   175     <input id="textB" value="I haz a content"/>
   176     <p id="display"></p>
   177     <div id="content" style="display:none;"></div>
   178     <pre id="test"></pre>
   179     <div id="drag1" ondragstart="doOnDragStart(event);">Need some space here</div>
   180     <p id="display"></p>
   181     <div id="content" style="display:none;"></div>
   182     <pre id="test"></pre>
   183     <div id="dragDrop" ondragover  ="doOnDragOver(event);"
   184                     ondragenter ="doOnDragEnter(event);"
   185                     ondragleave ="doOnDragLeave(event);"
   186                     ondrop      ="doOnDrop(event);">
   187     Need some depth and height to drag here
   188     </div>
   189     <div id="drag2" ondragstart="doOnDragStart(event);">Need more space</div>
   190     <div id="dragfile" ondragstart="doOnDragStart(event);">Sure why not here too</div>
   191   </body>
   192 </window>

mercurial