toolkit/content/tests/browser/browser_bug982298.js

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 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 Components.utils.import("resource://gre/modules/Timer.jsm");
     6 const Ci = Components.interfaces;
     8 let tab;
     9 let browser;
    11 const scrollHtml =
    12   "<textarea id=\"textarea1\" row=2>Firefox\n\nFirefox\n\n\n\n\n\n\n\n\n\n" +
    13   "</textarea><a href=\"about:blank\">blank</a>";
    15 const scrollTest =
    16   "var textarea = content.document.getElementById(\"textarea1\");" +
    17   "textarea.scrollTop = textarea.scrollHeight;" +
    18   "sendAsyncMessage(\"ScrollDone\", { });"
    20 function test()
    21 {
    22   waitForExplicitFinish();
    24   tab = gBrowser.addTab("data:text/html;base64," + 
    25                         btoa(scrollHtml));
    26   browser = gBrowser.getBrowserForTab(tab);
    27   gBrowser.selectedTab = tab;
    29   browser.addEventListener("load", find, true);
    30 }
    32 function find()
    33 {
    34   browser.removeEventListener("load", find, true);
    35   let listener = {
    36     onFindResult: function(aData) {
    37       browser.finder.removeResultListener(listener);
    39       ok(aData.result == Ci.nsITypeAheadFind.FIND_FOUND, "should find string");
    41       browser.messageManager.addMessageListener("ScrollDone",
    42                                                 function f(aMsg) {
    43         browser.messageManager.removeMessageListener("ScrollDone", f);
    44         browser.loadURI("about:blank");
    45         browser.addEventListener("load", findAgain, true);
    46       });
    48       // scroll textarea to bottom
    49       browser.messageManager.loadFrameScript("data:text/javascript;base64," +
    50                                              btoa(scrollTest), false);
    52     },
    53   };
    54   browser.finder.addResultListener(listener);
    55   gFindBar.onFindCommand();
    56   EventUtils.sendString("F");
    57 }
    59 function findAgain()
    60 {
    61   browser.removeEventListener("load", findAgain, true);
    63   ok(browser.currentURI.spec == "about:blank", "cannot navigate to about:blank");
    64   let listener = {
    65     onFindResult: function(aData) {
    66       browser.finder.removeResultListener(listener);
    67       cleanup();
    68     },
    69   };
    71   browser.finder.addResultListener(listener);
    72   // find again needs delay for crash test
    73   setTimeout(function() {
    74     // ignore exception if occured
    75     try {
    76       gFindBar.onFindAgainCommand(false);
    77     } catch (e) {
    78     }
    79     cleanup();
    80   }, 0);
    81 }
    83 function cleanup()
    84 {
    85   gBrowser.removeTab(tab);
    86   finish();
    87 }

mercurial