1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Simulates quickly switching between different list views to verify that only
// the last selected is displayed
var tempScope = {};
Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", tempScope);
var LightweightThemeManager = tempScope.LightweightThemeManager;
const xpi = "browser/toolkit/mozapps/extensions/test/browser/browser_installssl.xpi";
var gManagerWindow;
var gCategoryUtilities;
function test() {
waitForExplicitFinish();
// Add a lightweight theme so at least one theme exists
LightweightThemeManager.currentTheme = {
id: "test",
name: "Test lightweight theme",
headerURL: "http://example.com/header.png"
};
open_manager(null, function(aWindow) {
gManagerWindow = aWindow;
gCategoryUtilities = new CategoryUtilities(gManagerWindow);
run_next_test();
});
}
function end_test() {
close_manager(gManagerWindow, function() {
LightweightThemeManager.forgetUsedTheme("test");
finish();
});
}
// Tests that loading a second view before the first has not finished loading
// does not merge the results
add_test(function() {
var themeCount = null;
var pluginCount = null;
var themeItem = gCategoryUtilities.get("theme");
var pluginItem = gCategoryUtilities.get("plugin");
var list = gManagerWindow.document.getElementById("addon-list");
gCategoryUtilities.open(themeItem, function() {
themeCount = list.childNodes.length;
ok(themeCount > 0, "Test is useless if there are no themes");
gCategoryUtilities.open(pluginItem, function() {
pluginCount = list.childNodes.length;
ok(pluginCount > 0, "Test is useless if there are no plugins");
gCategoryUtilities.open(themeItem);
gCategoryUtilities.open(pluginItem, function() {
is(list.childNodes.length, pluginCount, "Should only see the plugins");
var item = list.firstChild;
while (item) {
is(item.getAttribute("type"), "plugin", "All items should be plugins");
item = item.nextSibling;
}
// Tests that switching to, from, to the same pane in quick succession
// still only shows the right number of results
gCategoryUtilities.open(themeItem);
gCategoryUtilities.open(pluginItem);
gCategoryUtilities.open(themeItem, function() {
is(list.childNodes.length, themeCount, "Should only see the theme");
var item = list.firstChild;
while (item) {
is(item.getAttribute("type"), "theme", "All items should be theme");
item = item.nextSibling;
}
run_next_test();
});
});
});
});
});
|