content/xul/templates/tests/chrome/test_bug441785.xul

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 <?xml version="1.0" ?>
     2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
     3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
     5 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     6    <tree flex="20" id="t" ref="urn:data:row" datasources="rdf:null" seltype="single">
     7      <treecols> 
     8       <treecol flex="1" id="id" label="id" sort="rdf:http://dummy/rdf#id" />
     9       <splitter class="tree-splitter"/>
    10       <treecol flex="1" id="title" label="title" sort="rdf:http://dummy/rdf#title" sortActive="true" sortDirection="ascending" /><splitter class="tree-splitter"/>
    11      </treecols>
    12      <template>
    13        <treechildren>
    14          <treeitem uri="rdf:*" seltype="single">
    15            <treerow >
    16              <treecell label="rdf:http://dummy/rdf#id"/>
    17              <treecell label="rdf:http://dummy/rdf#title"/>
    18            </treerow>
    19          </treeitem>
    20        </treechildren>
    21      </template>
    22    </tree>
    23    <tree flex="20" id="tc" ref="urn:data:row" datasources="rdf:null" seltype="single" flags="dont-build-content">
    24      <treecols> 
    25       <treecol flex="1" id="idc" label="id" sort="rdf:http://dummy/rdf#id" />
    26       <splitter class="tree-splitter"/>
    27       <treecol flex="1" id="titlec" label="title" sort="rdf:http://dummy/rdf#title" sortActive="true" sortDirection="ascending" /><splitter class="tree-splitter"/>
    28      </treecols>
    29      <template>
    30        <treechildren>
    31          <treeitem uri="rdf:*" seltype="single">
    32            <treerow >
    33              <treecell label="rdf:http://dummy/rdf#id"/>
    34              <treecell label="rdf:http://dummy/rdf#title"/>
    35            </treerow>
    36          </treeitem>
    37        </treechildren>
    38      </template>
    39    </tree>
    41 <body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/>
    43 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>      
    45 <script type="application/x-javascript">
    46 <![CDATA[
    48 var buildCount = 0;
    50 SimpleTest.waitForExplicitFinish();
    52 var TemplateBuilderListener = {
    53   willRebuild: function(aBuilder) {
    54   },
    56   didRebuild: function(aBuilder) {
    57   ++buildCount;
    58     var remove = false;
    59     if (buildCount == 2) {
    60       remove =true;
    61       setTimeout(nextDataSource, 0);
    62     } else if (buildCount == 4) {
    63       remove = true;
    64       setTimeout(continueTest, 0);
    65     }
    66     if (remove) {
    67       var tree = document.getElementById('t');
    68       var treec = document.getElementById('tc');
    69       tree.builder.removeListener(TemplateBuilderListener);
    70       treec.builder.removeListener(TemplateBuilderListener);
    71     }
    72   },
    74   QueryInterface: function (aIID)
    75   {
    76     if (!aIID.equals(Components.interfaces.nsIXULBuilderListener) &&
    77         !aIID.equals(Components.interfaces.nsISupports))
    78       throw Components.results.NS_ERROR_NO_INTERFACE;
    79     return this;
    80   }
    81 };
    83 function runTest() {
    84   var tree = document.getElementById('t');
    85   var treec = document.getElementById('tc');
    87   try {
    88     var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
    89                        getService(Components.interfaces.nsIRDFService);
    91     var s1 = window.location.href.replace(/test_bug441785.xul/, "bug441785-1.rdf");
    92     var ds1 = rdfService.GetDataSourceBlocking(s1);
    94     var s2 = window.location.href.replace(/test_bug441785.xul/, "bug441785-2.rdf");
    95     var ds2 = rdfService.GetDataSourceBlocking(s2);
    96   } catch (ex) { }
    98   tree.builder.addListener(TemplateBuilderListener);
    99   treec.builder.addListener(TemplateBuilderListener);
   100   tree.setAttribute('datasources', 'bug441785-1.rdf');
   101   treec.setAttribute('datasources', 'bug441785-1.rdf');
   102 }
   104 var oldtreefirstrow, oldtreecfirstrow;
   106 function nextDataSource()
   107 {
   108   var tree = document.getElementById('t');
   109   var treec = document.getElementById('tc');
   110   tree.treeBoxObject.scrollToRow(10);
   111   treec.treeBoxObject.scrollToRow(10);
   113   is(tree.treeBoxObject.getFirstVisibleRow(), 10, "first tree row count datasource 1");
   114   is(treec.treeBoxObject.getFirstVisibleRow(), 10, "second tree row count datasource 1");
   116   tree.builder.addListener(TemplateBuilderListener);
   117   treec.builder.addListener(TemplateBuilderListener);
   118   tree.setAttribute('datasources', 'bug441785-2.rdf');
   119   treec.setAttribute('datasources', 'bug441785-2.rdf');
   120 }
   122 function continueTest() {
   123   var tree = document.getElementById('t');
   124   var treec = document.getElementById('tc');
   126   is(tree.treeBoxObject.getFirstVisibleRow(), 0, "first tree row count datasource 2");
   127   is(treec.treeBoxObject.getFirstVisibleRow(), 0, "second tree row count datasource 2");
   129   try {
   130     window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
   131             .getInterface(Components.interfaces.nsIDOMWindowUtils)
   132             .garbageCollect();
   133   } 
   134   catch (e) { }
   136   // Hit the bug, crash 
   137   // (not exactly the same kind of crash as 441785, but from the same cause)
   138   tree.parentNode.removeChild(tree);
   139   treec.parentNode.removeChild(treec);
   141   SimpleTest.finish();
   142 }
   144 window.addEventListener("load", runTest, false);
   146 ]]>
   147 </script>
   148 </window>

mercurial