29 Components.utils.import(
"resource://gre/modules/XPCOMUtils.jsm");
30 Components.utils.import(
"resource://app/jsmodules/sbProperties.jsm");
31 Components.utils.import(
"resource://app/jsmodules/sbLibraryUtils.jsm");
37 const K_IDLE_TOPIC =
"songbird-media-item-controller-cleanup-idle";
39 const K_SEEN_PROP = SBProperties.base +
"libraryItemControllerLastSeenTypes";
40 const K_HIDDEN_PROP = SBProperties.base +
"libraryItemControllerTypeDisappeared";
46 gLibrary =
createLibrary(
"test_media_item_controller_cleanup",
52 log(
"Processing pre-existing libraries...");
53 var obs =
Cc[
"@mozilla.org/observer-service;1"]
54 .getService(
Ci.nsIObserverService);
58 log(
"Initialized: " + aTopic +
" [" +
aData +
"]");
69 Cc[
"@songbirdnest.com/Songbird/Library/MediaItemControllerCleanup;1"]
70 .getService(
Ci.nsIObserver);
71 cleanupSvc.observe(
null,
"idle",
null);
73 log(
"Pre-existing libraries processed");
89 onEnumerationBegin:
function(aList) {},
90 onEnumerationEnd:
function(aList, aResult) {},
91 onEnumeratedItem:
function(aList, aItem) {
93 for each (var prop
in postFilter) {
94 if (aItem.getProperty(prop[0]) !==
null) {
100 for each (var set
in aCheck) {
102 aItem.getProperty(set[0]),
103 aItem.contentSrc.spec);
108 throw (exception = e);
119 var selector = aFilter.filter(
function(f)f[1] !==
null);
120 var postFilter = aFilter.filter(
function(f)f[1] ===
null);
121 if (selector.length > 0) {
122 aList.enumerateItemsByProperties(SBProperties.createArray(selector),
126 aList.enumerateAllItems(listener);
136 var obs =
Cc[
"@mozilla.org/observer-service;1"]
137 .getService(
Ci.nsIObserverService);
142 gCount = {
true:0,
false:0};
144 gLibrary.runInBatchMode(
function() {
146 var hide = (Math.random() >= 0.5);
148 var
uri =
newURI(
"data:application/octet-stream," +
i);
149 var item = gLibrary.createMediaItem(uri);
157 "unexpected number of items added to library");
159 gLibrary.getItemCountByProperty(SBProperties.trackType,
161 "unexpected number of items with testing track type");
170 Cc[
"@songbirdnest.com/Songbird/Library/MediaItemControllerCleanup;1"]
171 .getService(
Ci.nsIObserver);
172 cleanupSvc.observe(
null,
"idle",
null);
177 var obs =
Cc[
"@mozilla.org/observer-service;1"]
178 .getService(
Ci.nsIObserverService);
182 "unexpected number of items added to library");
184 gLibrary.getItemCountByProperty(SBProperties.hidden,
"1"),
185 "unexpected number of hidden items");
188 "unexpected number of marked items");
190 gLibrary.enumerateItemsByProperties(
192 [SBProperties.hidden, 1]]),
193 {onEnumerationBegin:
function(){},
194 onEnumerationEnd:
function(){},
195 onEnumeratedItem:
function(aList, aItem){
197 aItem.getProperty(SBProperties.trackType),
198 "item with testing track type was not hidden");
201 "item hidden incorrectly");
207 "unexpected number of hidden items with testing track type");
210 gLibrary.enumerateItemsByProperty(
213 {onEnumerationBegin:
function(){},
214 onEnumerationEnd:
function(){},
215 onEnumeratedItem:
function(aList, aItem){
217 aItem.getProperty(SBProperties.trackType),
218 "item with testing track type was not hidden");
221 "item hidden incorrectly");
227 "unexpected number of not hidden tracks");
238 true: {
true:0,
false: 0},
239 false: {
true:0,
false: 0}},
241 true: {
true:0,
false: 0},
242 false: {
true:0,
false: 0}}
245 gLibrary.runInBatchMode(
function() {
247 var type = (Math.random() > 0.5);
248 var
hidden = (Math.random() > 0.5);
249 var flagged = (hidden && Math.random() > 0.5);
250 ++gCount[type][
hidden][flagged];
252 var
uri =
newURI(
"data:application/octet-stream," +
i);
253 var item = gLibrary.createMediaItem(uri);
257 item.setProperty(SBProperties.hidden, 1);
264 "unexpected number of items added to library");
265 for each (var type
in [
false,
true]) {
266 for each (var
hidden in [
false,
true]) {
267 for each (var flagged
in [
false,
true]) {
269 [SBProperties.trackType,
271 [SBProperties.hidden,
274 flagged ? 1 :
null]];
278 "unexpected number of initial " +
279 (type ?
"custom controller" :
"default controller") +
"/" +
280 (hidden ?
"hidden" :
"visible") +
"/" +
281 (flagged ?
"flagged" :
"unflagged") +
282 " items in library");
291 var obs =
Cc[
"@mozilla.org/observer-service;1"]
292 .getService(
Ci.nsIObserverService);
295 Cc[
"@songbirdnest.com/Songbird/Library/MediaItemControllerCleanup;1"]
296 .getService(
Ci.nsIObserver);
297 cleanupSvc.observe(
null,
"idle",
null);
303 var obs =
Cc[
"@mozilla.org/observer-service;1"]
304 .getService(
Ci.nsIObserverService);
308 "unexpected number of added items remaining library");
313 gCount[
true][
false][
false] += gCount[
true][
true][
true];
314 gCount[
true][
true][
true] = 0;
316 for each (type
in [
false,
true]) {
317 for each (
hidden in [
false,
true]) {
318 for each (flagged
in [
false,
true]) {
320 [SBProperties.trackType,
322 [SBProperties.hidden,
325 flagged ? 1 :
null]];
328 (type ?
"custom controller" :
"default controller"),
329 (
hidden ?
"hidden" :
"visible"),
330 (flagged ?
"flagged" :
"unflagged")];
334 "unexpected number of resulting " +
336 " items in library");
function sleep(ms, suppressOutput)
function assertNotEqual(aExpected, aActual, aMessage)
sbOSDControlService prototype QueryInterface
function assertEqual(aExpected, aActual, aMessage)
function createLibrary(databaseGuid, databaseLocation)
function newURI(aURLString)
Javascript wrappers for common library tasks.
_getSelectedPageStyle s i
_updateTextAndScrollDataForFrame aData
sbDeviceFirmwareAutoCheckForUpdate prototype observe