Sat, 03 Jan 2015 20:18:00 +0100
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 }