mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
183 lines
5.3 KiB
HTML
183 lines
5.3 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=377624
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 377624</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=377624">Mozilla Bug 377624</a>
|
|
<p id="display"></p>
|
|
<div id="content">
|
|
<input id='i' type='file' accept="image/*">
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript">
|
|
|
|
/** Test for Bug 377624 **/
|
|
|
|
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;
|
|
|
|
const FILE_PICKER_CID = "@mozilla.org/filepicker;1";
|
|
const FILE_PICKER_ID = Components.ID(Cc[FILE_PICKER_CID].number);
|
|
const FILE_PICKER_DESCRIPTION = "File Picker Test Service";
|
|
|
|
const kDefaultFilePicker = Cm.getClassObject(Cc[FILE_PICKER_CID],
|
|
Ci.nsIFactory);
|
|
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
|
|
function FilePickerService()
|
|
{
|
|
}
|
|
|
|
FilePickerService.prototype = {
|
|
_obs: Cc["@mozilla.org/observer-service;1"].
|
|
getService(Ci.nsIObserverService),
|
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIFilePicker]),
|
|
|
|
// constants
|
|
modeOpen: 0,
|
|
modeSave: 1,
|
|
modeGetFolder: 2,
|
|
modeOpenMultiple: 3,
|
|
returnOK: 0,
|
|
returnCancel: 1,
|
|
returnReplace: 2,
|
|
filterAll: 1,
|
|
filterHTML: 2,
|
|
filterText: 4,
|
|
filterImages: 8,
|
|
filterXML: 16,
|
|
filterXUL: 32,
|
|
filterApps: 64,
|
|
|
|
// 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)
|
|
{
|
|
this._obs.notifyObservers(null, "TEST_FILEPICKER_APPENDFILTER", val);
|
|
},
|
|
|
|
appendFilters: function(val)
|
|
{
|
|
this._obs.notifyObservers(null, "TEST_FILEPICKER_APPENDFILTERS", val);
|
|
},
|
|
|
|
init: function() {},
|
|
|
|
show: function()
|
|
{
|
|
this._obs.notifyObservers(null, "TEST_FILEPICKER_SHOW", this.filterIndex);
|
|
return this.returnOK;
|
|
}
|
|
};
|
|
|
|
factory = {
|
|
createInstance: function(aOuter, aIid) {
|
|
if (aOuter != null)
|
|
throw Cr.NS_ERROR_NO_AGGREGATION;
|
|
return new FilePickerService().QueryInterface(aIid);
|
|
}
|
|
};
|
|
|
|
document.getElementById('i').addEventListener("focus", function (aEvent) {
|
|
aEvent.target.removeEventListener("focus", arguments.callee, false);
|
|
synthesizeKey('VK_SPACE', {});
|
|
}, false);
|
|
|
|
function runTests()
|
|
{
|
|
var i = document.getElementById('i');
|
|
|
|
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
|
|
|
Cm.registerFactory(FILE_PICKER_ID,
|
|
FILE_PICKER_DESCRIPTION,
|
|
FILE_PICKER_CID,
|
|
factory);
|
|
|
|
var obs = Cc["@mozilla.org/observer-service;1"].
|
|
getService(Ci.nsIObserverService);
|
|
|
|
var observer = {
|
|
observe: function(aSubject, aTopic, aData) {
|
|
switch (aTopic) {
|
|
case "TEST_FILEPICKER_APPENDFILTER":
|
|
this.appendFilterCalled = true;
|
|
break;
|
|
case "TEST_FILEPICKER_APPENDFILTERS":
|
|
this.filters.push(aData);
|
|
break;
|
|
case "TEST_FILEPICKER_SHOW":
|
|
this.shown = true;
|
|
this.filterIndex = aData;
|
|
|
|
SimpleTest.executeSoon(function () {
|
|
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
|
|
|
ok(observer.shown, "File picker show method should have been called");
|
|
ok(!observer.appendFilterCalled, "appendFilter should not have been called");
|
|
is(observer.filters.length, 1, "AppendFilters should have been called once");
|
|
is(observer.filters[0], FilePickerService.prototype.filterAll +
|
|
FilePickerService.prototype.filterImages,
|
|
"All and Images filters should have been added");
|
|
is(observer.filterIndex, 1,
|
|
"File picker should show the second filter index (first is zero)");
|
|
|
|
obs.removeObserver(observer, "TEST_FILEPICKER_APPENDFILTER", false);
|
|
obs.removeObserver(observer, "TEST_FILEPICKER_APPENDFILTERS", false);
|
|
obs.removeObserver(observer, "TEST_FILEPICKER_SHOW", false);
|
|
Cm.unregisterFactory(FILE_PICKER_ID, factory);
|
|
|
|
Cm.registerFactory(FILE_PICKER_ID,
|
|
"File Picker Service",
|
|
FILE_PICKER_CID,
|
|
kDefaultFilePicker);
|
|
|
|
SimpleTest.finish();
|
|
} );
|
|
break;
|
|
}
|
|
},
|
|
shown: false,
|
|
appendFilterCalled: false,
|
|
filters: [],
|
|
filterIndex: 0
|
|
};
|
|
|
|
obs.addObserver(observer, "TEST_FILEPICKER_APPENDFILTER", false);
|
|
obs.addObserver(observer, "TEST_FILEPICKER_APPENDFILTERS", false);
|
|
obs.addObserver(observer, "TEST_FILEPICKER_SHOW", false);
|
|
|
|
// We are simulating a focus then a SPACE key press to open the file picker.
|
|
// We were not able to do this with |synthesizeMouse|.
|
|
i.focus();
|
|
}
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|