products/Sources/formale Sprachen/C/Firefox/layout/forms/test/test_bug536567_perwindowpb.html
<!
DOCTYPE HTML >
<
html >
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=536567
-->
<
head >
<
title >Test for Bug
536567 </
title >
<
script src=
"chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" ></
script >
<
script 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 " >Mozill
a Bug 536567 </a>
<p id="display" ></p>
<pre id="test" >
<script type="application/javascript" >
/** Test for Bug 536567 **/
const Cm = Components.manager;
var MockFilePicker = SpecialPowers.MockFilePicker;
MockFilePicker.init(SpecialPowers.wrap(window).browsingContext);
var tmpDir = Services.dirsvc.get("TmpD" , Ci.nsIFile);
var homeDir = Services.dirsvc.get("Desk" , Ci.nsIFile);
function newDir() {
var dir = tmpDir.clone();
dir .append("testdir" + Math.floor(Math.random() * 10000 ));
dir .QueryInterface(Ci.nsIFile);
dir .createUnique(Ci.nsIFile.DIRECTORY_TYPE, 0 o700);
return dir ;
}
var dirs = [];
for(let 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 = [
"clear history" ,
[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.setFiles([file]);
content.setAttribute('src' , domains[test[0 ]] + '/chrome/layout/forms/test/bug536567_subframe.html' );
}
}
function endTest() {
for(let i = 0 ; i < dirs.length - 1 ; i++) {
dirs[i].remove(true);
}
normalWindow.close();
privateWindow.close();
MockFilePicker.cleanup();
SimpleTest.finish();
}
var mainWindow = window.browsingContext.topChromeWindow;
var contentPage = "http://mochi.test:8888/chrome/layout/forms/test/bug536567_iframe.html " ;
function whenDelayedStartupFinished(aWindow, aCallback) {
Services.obs.addObserver(function observer(aSubject, aTopic) {
if (aWindow == aSubject) {
Services.obs.removeObserver(observer, aTopic);
setTimeout(aCallback, 0 );
}
}, "browser-delayed-startup-finished" );
}
function testOnWindow(aIsPrivate, aCallback) {
var win = mainWindow.OpenBrowserWindow({private: aIsPrivate});
whenDelayedStartupFinished(win, function() {
win.addEventListener("DOMContentLoaded" , function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
}
win.removeEventListener("DOMContentLoaded" , onInnerLoad, true);
win.gBrowser.selectedBrowser.focus();
SimpleTest.info("DOMContentLoaded's window: " + win.location + " vs. " + window.location);
win.setTimeout(function() { aCallback(win); }, 0 );
}, true);
SimpleTest.info("load's window: " + win.location + " vs. " + window.location);
win.setTimeout(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
}, 0 );
});
}
MockFilePicker.showCallback = function(filepicker) {
var test = tests[testIndex];
var returned = -1 ;
for (let i = 0 ; i < dirs.length; i++) {
var dir = MockFilePicker.displayDirectory
? MockFilePicker.displayDirectory
: Services.dirsvc.get(MockFilePicker.displaySpecialDirectory, Ci.nsIFile);
if (dirs[i].path == dir .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);
}
filepicker.window.setTimeout(function() {
testIndex++;
runTest();
}, 0 );
};
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;
selectedBrowser.contentWindow.setTimeout(runTest, 0 );
});
});
};
</script >
</pre >
</body >
</html >
Messung V0.5 in Prozent C=90 H=97 G=93
¤ Dauer der Verarbeitung: 0.23 Sekunden
(vorverarbeitet am 2026-06-04)
¤
*© Formatika GbR, Deutschland