Tests for Bug 36619 r=sicking a=blocking

This commit is contained in:
David Zbarsky 2010-08-27 11:49:10 -04:00
parent a65da96f73
commit 76be33e32b
5 changed files with 143 additions and 5 deletions

View File

@ -52,15 +52,15 @@ MockFilePicker.prototype = {
}
};
var mockFilePickerRegisterer =
var mockFilePickerRegisterer =
new MockObjectRegisterer("@mozilla.org/filepicker;1",MockFilePicker);
function test() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var wu = window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
mockFilePickerRegisterer.register();
try {
var domActivateEvents;
@ -82,8 +82,14 @@ function test() {
is(domActivateEvents, 1, "click on button should only fire 1 DOMActivate event");
} finally {
mockFilePickerRegisterer.unregister();
SimpleTest.executeSoon(unregister);
}
}
function unregister()
{
mockFilePickerRegisterer.unregister();
SimpleTest.finish();
}

View File

@ -73,6 +73,7 @@ _TEST_FILES = test_bug231389.html \
test_bug377624.html \
test_bug571352.html \
test_bug572406.html \
test_bug36619.html \
$(NULL)
libs:: $(_TEST_FILES)

View File

@ -30,6 +30,7 @@ MockFilePicker.prototype = {
filterIndex: 0,
displayDirectory: null,
get file() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = window.parent.dirs[window.parent.index].clone();
f.append("aFile.txt");
return f;
@ -41,10 +42,12 @@ MockFilePicker.prototype = {
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
show: function MFP_show() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
if (this.displayDirectory)
window.parent.postMessage(this.displayDirectory.path, "*");
else
window.parent.postMessage("", "*");
mockFilePickerRegisterer.unregister();
return Ci.nsIFilePicker.returnOK;
}
};
@ -67,7 +70,6 @@ function test() {
} catch (e) {
Cu.reportError(e);
} finally {
mockFilePickerRegisterer.unregister();
}
}

View File

@ -0,0 +1,120 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=36619
-->
<head>
<title>Test for Bug 36619</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body onload="runTests();">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=36619">Mozilla Bug 36619</a>
<p id="display"></p>
<div id="content">
<input id='a' type='file'>
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 36619 **/
SimpleTest.waitForExplicitFinish();
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cm = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
const Cu = Components.utils;
Cc["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Ci.mozIJSSubScriptLoader)
.loadSubScript("chrome://mochikit/content/browser/toolkit/content/tests/browser/common/mockObjects.js", this);
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
function MockFilePicker()
{
}
MockFilePicker.prototype = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIFilePicker]),
// properties
defaultExtension: "",
defaultString: "",
get displayDirectory() { return null; },
set displayDirectory(val) { },
file: null,
get files() { return null; },
get fileURL() { return null; },
filterIndex: 0,
// methods
appendFilter: function(val)
{
},
appendFilters: function(val)
{
},
init: function() {
},
show: function()
{
shown = true;
}
};
var mockFilePickerRegisterer =
new MockObjectRegisterer("@mozilla.org/filepicker;1",MockFilePicker);
mockFilePickerRegisterer.register();
// enable popups the first time
var pbi = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch2);
var oldAllow = pbi.getBoolPref("dom.disable_open_during_load");
var oldShowBar = pbi.getBoolPref("privacy.popups.showBrowserMessage");
pbi.setBoolPref("dom.disable_open_during_load", true);
pbi.setBoolPref("privacy.popups.showBrowserMessage", false);
var shown = false;
function checkFirst()
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
ok(shown,
"File picker show method should have been called");
shown = false;
document.getElementById("a").click();
setTimeout(finishTest, 1000);
}
function finishTest()
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
ok(!shown,
"File picker show method should not have been called");
mockFilePickerRegisterer.unregister();
pbi.setBoolPref("dom.disable_open_during_load", oldAllow);
pbi.setBoolPref("privacy.popups.showBrowserMessage", oldShowBar);
SimpleTest.finish();
}
function runTests()
{
document.getElementById("a").click();
SimpleTest.executeSoon(checkFirst);
}
</script>
</pre>
</body>
</html>

View File

@ -46,6 +46,12 @@ const FILE_PICKER_DESCRIPTION = "File Picker Test Service";
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
// disable popups to make sure that the popup blocker does not interfere
// with manually opened file pickers.
var pbi = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch2);
var oldAllow = pbi.getBoolPref("dom.disable_open_during_load");
pbi.setBoolPref("dom.disable_open_during_load", true);
function FilePickerService()
{
}
@ -92,6 +98,7 @@ FilePickerService.prototype = {
appendFilters: function(val)
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
this._obs.notifyObservers(null, "TEST_FILEPICKER_APPENDFILTERS", val);
},
@ -99,6 +106,7 @@ FilePickerService.prototype = {
show: function()
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
this._obs.notifyObservers(null, "TEST_FILEPICKER_SHOW", this.filterIndex);
return this.returnOK;
}
@ -197,7 +205,8 @@ function runTests()
"File Picker Service",
FILE_PICKER_CID,
null);
pbi.setBoolPref("dom.disable_open_during_load", oldAllow);
SimpleTest.finish();
} else {
launchNextTest(observer);