mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
162 lines
4.0 KiB
JavaScript
162 lines
4.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
// Test that the empty notice in the list view disappears as it should
|
|
|
|
// Don't use a standard list view (e.g. "extension") to ensure that the list is
|
|
// initially empty. Don't need to worry about the list of categories displayed
|
|
// since only the list view itself is tested.
|
|
let VIEW_ID = "addons://list/mock-addon";
|
|
|
|
let LIST_ID = "addon-list";
|
|
let EMPTY_ID = "addon-list-empty";
|
|
|
|
let gManagerWindow;
|
|
let gProvider;
|
|
let gItem;
|
|
|
|
let gInstallProperties = {
|
|
name: "Bug 591663 Mock Install",
|
|
type: "mock-addon"
|
|
};
|
|
let gAddonProperties = {
|
|
id: "test1@tests.mozilla.org",
|
|
name: "Bug 591663 Mock Add-on",
|
|
type: "mock-addon"
|
|
};
|
|
let gExtensionProperties = {
|
|
name: "Bug 591663 Extension Install",
|
|
type: "extension"
|
|
};
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
|
|
gProvider = new MockProvider(true, [{
|
|
id: "mock-addon",
|
|
name: "Mock Add-ons",
|
|
uiPriority: 4500,
|
|
flags: AddonManager.TYPE_UI_VIEW_LIST
|
|
}]);
|
|
|
|
open_manager(VIEW_ID, function(aWindow) {
|
|
gManagerWindow = aWindow;
|
|
run_next_test();
|
|
});
|
|
}
|
|
|
|
function end_test() {
|
|
close_manager(gManagerWindow, finish);
|
|
}
|
|
|
|
/**
|
|
* Check that the list view is as expected
|
|
*
|
|
* @param aItem
|
|
* The expected item in the list, or null if list should be empty
|
|
*/
|
|
function check_list(aItem) {
|
|
// Check state of the empty notice
|
|
let emptyNotice = gManagerWindow.document.getElementById(EMPTY_ID);
|
|
ok(emptyNotice != null, "Should have found the empty notice");
|
|
is(!emptyNotice.hidden, (aItem == null), "Empty notice should be showing if list empty");
|
|
|
|
// Check the children of the list
|
|
let list = gManagerWindow.document.getElementById(LIST_ID);
|
|
is(list.itemCount, aItem ? 1 : 0, "Should get expected number of items in list");
|
|
if (aItem != null) {
|
|
let itemName = list.firstChild.getAttribute("name");
|
|
is(itemName, aItem.name, "List item should have correct name");
|
|
}
|
|
}
|
|
|
|
|
|
// Test that the empty notice is showing and no items are showing in list
|
|
add_test(function() {
|
|
check_list(null);
|
|
run_next_test();
|
|
});
|
|
|
|
// Test that a new, non-active, install does not affect the list view
|
|
add_test(function() {
|
|
gItem = gProvider.createInstalls([gInstallProperties])[0];
|
|
check_list(null);
|
|
run_next_test();
|
|
});
|
|
|
|
// Test that onInstallStarted properly hides empty notice and adds install to list
|
|
add_test(function() {
|
|
gItem.addTestListener({
|
|
onDownloadStarted: function() {
|
|
// Install type unknown until download complete
|
|
check_list(null);
|
|
},
|
|
onInstallStarted: function() {
|
|
check_list(gItem);
|
|
},
|
|
onInstallEnded: function() {
|
|
check_list(gItem);
|
|
run_next_test();
|
|
}
|
|
});
|
|
|
|
gItem.install();
|
|
});
|
|
|
|
// Test that restarting the manager does not change list
|
|
add_test(function() {
|
|
restart_manager(gManagerWindow, VIEW_ID, function(aManagerWindow) {
|
|
gManagerWindow = aManagerWindow;
|
|
check_list(gItem);
|
|
run_next_test();
|
|
});
|
|
});
|
|
|
|
// Test that onInstallCancelled removes install and shows empty notice
|
|
add_test(function() {
|
|
gItem.cancel();
|
|
gItem = null;
|
|
check_list(null);
|
|
run_next_test();
|
|
});
|
|
|
|
// Test that add-ons of a different type do not show up in the list view
|
|
add_test(function() {
|
|
let extension = gProvider.createInstalls([gExtensionProperties])[0];
|
|
check_list(null);
|
|
|
|
extension.addTestListener({
|
|
onDownloadStarted: function() {
|
|
check_list(null);
|
|
},
|
|
onInstallStarted: function() {
|
|
check_list(null);
|
|
},
|
|
onInstallEnded: function() {
|
|
check_list(null);
|
|
extension.cancel();
|
|
run_next_test();
|
|
}
|
|
});
|
|
|
|
extension.install();
|
|
});
|
|
|
|
// Test that onExternalInstall properly hides empty notice and adds install to list
|
|
add_test(function() {
|
|
gItem = gProvider.createAddons([gAddonProperties])[0];
|
|
check_list(gItem);
|
|
run_next_test();
|
|
});
|
|
|
|
// Test that restarting the manager does not change list
|
|
add_test(function() {
|
|
restart_manager(gManagerWindow, VIEW_ID, function(aManagerWindow) {
|
|
gManagerWindow = aManagerWindow;
|
|
check_list(gItem);
|
|
run_next_test();
|
|
});
|
|
});
|
|
|