gecko/toolkit/components/downloads/test/browser/browser_nsIDownloadManagerUI.js
2012-05-21 12:12:37 +01:00

101 lines
2.9 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
let Cr = Components.results;
function test_visibility_open()
{
var dmui = Cc["@mozilla.org/download-manager-ui;1"].
getService(Ci.nsIDownloadManagerUI);
is(dmui.visible, true,
"nsIDownloadManagerUI indicates that the UI is visible");
}
function test_getAttention_opened()
{
var dmui = Cc["@mozilla.org/download-manager-ui;1"].
getService(Ci.nsIDownloadManagerUI);
// switch focus to this window
window.focus();
dmui.getAttention();
is(dmui.visible, true,
"nsIDownloadManagerUI indicates that the UI is visible");
}
function test_visibility_closed(aWin)
{
var dmui = Cc["@mozilla.org/download-manager-ui;1"].
getService(Ci.nsIDownloadManagerUI);
aWin.close();
is(dmui.visible, false,
"nsIDownloadManagerUI indicates that the UI is not visible");
}
function test_getAttention_closed()
{
var dmui = Cc["@mozilla.org/download-manager-ui;1"].
getService(Ci.nsIDownloadManagerUI);
var exceptionCaught = false;
try {
dmui.getAttention();
} catch (e) {
is(e.result, Cr.NS_ERROR_UNEXPECTED,
"Proper exception was caught");
exceptionCaught = true;
} finally {
is(exceptionCaught, true,
"Exception was caught, as expected");
}
}
var testFuncs = [
test_visibility_open
, test_getAttention_opened
, test_visibility_closed /* all tests after this *must* expect there to be
no open window, otherwise they will fail! */
, test_getAttention_closed
];
function test()
{
var dm = Cc["@mozilla.org/download-manager;1"].
getService(Ci.nsIDownloadManager);
var db = dm.DBConnection;
// First, we populate the database with some fake data
db.executeSimpleSQL("DELETE FROM moz_downloads");
// See if the DM is already open, and if it is, close it!
var win = Services.wm.getMostRecentWindow("Download:Manager");
if (win)
win.close();
// Ensure that the download manager callbacks and nsIDownloadManagerUI always
// use the window UI instead of the panel in the browser's window.
Services.prefs.setBoolPref("browser.download.useToolkitUI", true);
registerCleanupFunction(function() {
Services.prefs.clearUserPref("browser.download.useToolkitUI");
});
// OK, now that all the data is in, let's pull up the UI
Cc["@mozilla.org/download-manager-ui;1"].
getService(Ci.nsIDownloadManagerUI).show();
// The window doesn't open once we call show, so we need to wait a little bit
function finishUp() {
var win = Services.wm.getMostRecentWindow("Download:Manager");
// Now we can run our tests
for each (var t in testFuncs)
t(win);
finish();
}
waitForExplicitFinish();
window.setTimeout(finishUp, 1000);
}