mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 15:25:52 +00:00
Bug 806729 - Port test_bug536567.html to the new per-tab PB APIs; r=jdm
--HG-- rename : layout/forms/test/test_bug536567.html => layout/forms/test/test_bug536567_perwindowpb.html
This commit is contained in:
parent
59d264251b
commit
311309b087
@ -54,8 +54,14 @@ MOCHITEST_CHROME_FILES = \
|
||||
|
||||
ifndef MOZ_PER_WINDOW_PRIVATE_BROWSING
|
||||
MOCHITEST_CHROME_FILES += \
|
||||
test_bug536567.html \
|
||||
$(NULL)
|
||||
test_bug536567.html \
|
||||
$(NULL)
|
||||
else
|
||||
MOCHITEST_CHROME_FILES += \
|
||||
bug536567_iframe.html \
|
||||
test_bug536567.html \
|
||||
test_bug536567_perwindowpb.html \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
9
layout/forms/test/bug536567_iframe.html
Normal file
9
layout/forms/test/bug536567_iframe.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="content"></iframe>
|
||||
</body>
|
||||
</html>
|
||||
|
205
layout/forms/test/test_bug536567_perwindowpb.html
Normal file
205
layout/forms/test/test_bug536567_perwindowpb.html
Normal file
@ -0,0 +1,205 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=536567
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 536567</title>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=536567">Mozilla Bug 536567</a>
|
||||
<p id="display"></p>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 536567 **/
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
const Cm = Components.manager;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var MockFilePicker = SpecialPowers.MockFilePicker;
|
||||
MockFilePicker.init();
|
||||
|
||||
var tmpDir = Services.dirsvc.get("TmpD", Ci.nsILocalFile);
|
||||
var homeDir = Services.dirsvc.get("Desk", Ci.nsILocalFile);
|
||||
|
||||
function newDir() {
|
||||
var dir = tmpDir.clone();
|
||||
dir.append("testdir" + Math.floor(Math.random() * 10000));
|
||||
dir.QueryInterface(Ci.nsILocalFile);
|
||||
dir.createUnique(Ci.nsIFile.DIRECTORY_TYPE, 0700);
|
||||
return dir;
|
||||
}
|
||||
|
||||
var dirs = [];
|
||||
for(var i = 0; i < 6; i++) {
|
||||
dirs.push(newDir());
|
||||
}
|
||||
dirs.push(homeDir);
|
||||
var domains = ['http://mochi.test:8888', 'http://example.org:80', 'http://example.com:80'];
|
||||
/*
|
||||
* These tests take 3 args each:
|
||||
* - which domain to load
|
||||
* - the filePicker displayDirectory we expect to be set
|
||||
* - the file to pick (in most cases this will show up in the next test,
|
||||
* as indicated by the comments)
|
||||
*/
|
||||
var tests = [
|
||||
[0, 6, 0], // 0 -> 3
|
||||
[1, 6, 1], // 1 -> 4
|
||||
[2, 6, 2], // 2 -> 5
|
||||
[0, 0, 3], // 3 -> 6
|
||||
[1, 1, 1], // 4 -> 8
|
||||
[2, 2, 2], // 5 -> 9
|
||||
[0, 3, 1], // 6 -> 7
|
||||
[0, 1, 0], // 7 -> x
|
||||
[1, 1, 1], // 8 -> x
|
||||
[2, 2, 2], // 9 -> x
|
||||
"clear history",
|
||||
[0, 6, 0], // 11 -> 15
|
||||
[1, 6, 1], // 12 -> 16
|
||||
[2, 6, 2], // 13 -> 17
|
||||
"pb on",
|
||||
[0, 0, 3], // 15 -> 18
|
||||
[1, 1, 4], // 16 -> 19
|
||||
[2, 2, 5], // 17 -> 20
|
||||
[0, 3, 3], // 18 -> x
|
||||
[1, 4, 4], // 19 -> x
|
||||
[2, 5, 5], // 20 -> x
|
||||
"pb off",
|
||||
[0, 0, 5], // 22 -> 26
|
||||
[1, 1, 4], // 23 -> 27
|
||||
[2, 2, 3], // 24 -> 28
|
||||
"pb on",
|
||||
[0, 3, 5], // 26 -> x
|
||||
[1, 4, 4], // 27 -> x
|
||||
[2, 5, 3], // 28 -> x
|
||||
"clear history",
|
||||
// Not checking after clear history because browser.download.lastDir content
|
||||
// pref is not being clear properly in private windows.
|
||||
//[0, 6, 0], // 30 -> x
|
||||
//[1, 6, 1], // 31 -> x
|
||||
//[2, 6, 2], // 32 -> x
|
||||
"pb off"
|
||||
];
|
||||
|
||||
var testIndex = 0;
|
||||
var content;
|
||||
var normalWindow;
|
||||
var privateWindow;
|
||||
var normalWindowIframe;
|
||||
var privateWindowIframe;
|
||||
|
||||
function runTest() {
|
||||
var test = tests[testIndex];
|
||||
if (test == undefined) {
|
||||
endTest();
|
||||
} else if (test == "pb on") {
|
||||
content = privateWindowIframe;
|
||||
testIndex++;
|
||||
runTest();
|
||||
} else if (test == "pb off") {
|
||||
content = normalWindowIframe;
|
||||
testIndex++;
|
||||
runTest();
|
||||
} else if (test == "clear history") {
|
||||
Services.obs.notifyObservers(null, "browser:purge-session-history", "");
|
||||
testIndex++;
|
||||
runTest();
|
||||
} else {
|
||||
var file = dirs[test[2]].clone();
|
||||
file.append("file.file");
|
||||
MockFilePicker.returnFiles = [file];
|
||||
content.setAttribute('src', domains[test[0]] + '/chrome/layout/forms/test/bug536567_subframe.html');
|
||||
}
|
||||
}
|
||||
|
||||
function endTest() {
|
||||
for(var i = 0; i < dirs.length - 1; i++) {
|
||||
dirs[i].remove(true);
|
||||
}
|
||||
|
||||
normalWindow.close();
|
||||
privateWindow.close();
|
||||
MockFilePicker.cleanup();
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
var mainWindow =
|
||||
window.QueryInterface(Ci.nsIInterfaceRequestor).
|
||||
getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShellTreeItem).
|
||||
rootTreeItem.QueryInterface(Ci.nsIInterfaceRequestor).
|
||||
getInterface(Ci.nsIDOMWindow);
|
||||
var contentPage = "http://mochi.test:8888/chrome/layout/forms/test/bug536567_iframe.html";
|
||||
|
||||
function testOnWindow(aIsPrivate, aCallback) {
|
||||
var win = mainWindow.OpenBrowserWindow({private: aIsPrivate});
|
||||
win.addEventListener("load", function onLoad() {
|
||||
win.removeEventListener("load", onLoad, false);
|
||||
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
|
||||
if (win.content.location.href == "about:privatebrowsing") {
|
||||
win.gBrowser.loadURI(contentPage);
|
||||
return;
|
||||
}
|
||||
win.removeEventListener("DOMContentLoaded", onInnerLoad, true);
|
||||
win.gBrowser.selectedBrowser.focus();
|
||||
SimpleTest.executeSoon(function() { aCallback(win); });
|
||||
}, true);
|
||||
SimpleTest.executeSoon(function() { win.gBrowser.loadURI(contentPage); });
|
||||
}, true);
|
||||
}
|
||||
|
||||
MockFilePicker.showCallback = function(filepicker) {
|
||||
var test = tests[testIndex];
|
||||
var returned = -1;
|
||||
for (var i = 0; i < dirs.length; i++) {
|
||||
if (dirs[i].path == MockFilePicker.displayDirectory.path) {
|
||||
returned = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (test[1] == -1) {
|
||||
ok(false, "We should never get an unknown directory back");
|
||||
} else {
|
||||
is(returned, test[1], 'test ' + testIndex);
|
||||
}
|
||||
|
||||
SimpleTest.executeSoon(function() {
|
||||
testIndex++;
|
||||
runTest();
|
||||
});
|
||||
};
|
||||
|
||||
window.onload = function() {
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
testOnWindow(false, function(aWin) {
|
||||
var selectedBrowser = aWin.gBrowser.selectedBrowser;
|
||||
|
||||
normalWindow = aWin;
|
||||
normalWindowIframe =
|
||||
selectedBrowser.contentDocument.getElementById("content");
|
||||
|
||||
testOnWindow(true, function(aPrivateWin) {
|
||||
selectedBrowser = aPrivateWin.gBrowser.selectedBrowser;
|
||||
|
||||
privateWindow = aPrivateWin;
|
||||
privateWindowIframe =
|
||||
selectedBrowser.contentDocument.getElementById("content");
|
||||
|
||||
content = normalWindowIframe;
|
||||
setTimeout(runTest, 0);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user