35 "mp3",
"mov",
"m4p",
"ogm",
"ogx",
"tta",
"wv",
62 var unicodeFile = testFolder.clone();
63 unicodeFile.append(
"MP3_ID3v23.mp3");
64 unicodeFile =
getCopyOfFile(unicodeFile,
"\u2606\u2606\u2606\u2606\u2606\u2606.mp3");
66 var
prefSvc =
Cc[
"@mozilla.org/preferences-service;1"]
67 .getService(
Ci.nsIPrefBranch);
68 var oldWritingEnabledPref = prefSvc.getBoolPref(
"songbird.metadata.enableWriting");
69 prefSvc.setBoolPref(
"songbird.metadata.enableWriting",
true);
90 if (job.status == Components.interfaces.sbIJobProgress.STATUS_RUNNING) {
99 "\u008C\u00A2\u00FE" +
100 "\u141A\u142B\u1443" +
101 "\u184F\u1889\u1896" +
102 "\u4E08\u4E02\u9FBB" +
103 "\u4DCA\u4DC5\u4DD9" +
104 "\u0308\u030F\u034F" +
105 "\u033C\u034C\u035C" +
106 "\uD800\uDC83\uD800" +
107 "\uDC80\uD802\uDD00";
109 var successValues = [
111 [SBProperties.trackName, SBProperties.trackName],
114 [SBProperties.albumName, SBProperties.albumName + unicodeSample],
124 [SBProperties.genre, SBProperties.genre],
127 [SBProperties.composerName, SBProperties.composerName],
128 [SBProperties.lyricistName, SBProperties.lyricistName],
129 [SBProperties.lyrics, SBProperties.lyrics],
139 [SBProperties.trackNumber, 7],
140 [SBProperties.totalTracks, 13],
142 [SBProperties.discNumber, 1],
143 [SBProperties.totalDiscs, 2],
151 [SBProperties.artistName,
null],
157 [SBProperties.year, 2004],
159 [SBProperties.isPartOfCompilation, 1]
163 var propertiesToWrite = [];
166 for each (var item
in items) {
167 for each (var pair
in successValues) {
168 item.setProperty(pair[0], pair[1]);
171 if (propertiesToWrite.indexOf(pair[0]) < 0) {
172 propertiesToWrite.push(pair[0]);
183 if (job.status == Components.interfaces.sbIJobProgress.STATUS_RUNNING) {
193 assertEqual(job.status, Components.interfaces.sbIJobProgress.STATUS_SUCCEEDED);
204 job.addJobProgressListener(
function onSecondReadComplete(job) {
206 if (job.status == Components.interfaces.sbIJobProgress.STATUS_RUNNING) {
209 job.removeJobProgressListener(onSecondReadComplete);
216 assertEqual(job.status, Components.interfaces.sbIJobProgress.STATUS_SUCCEEDED);
219 for each (var item
in items) {
220 var failedProperties = 0;
221 log(
"MetadataJob_Write: verifying " + item.contentSrc.path);
222 for each (var pair
in successValues) {
223 if (item.getProperty(pair[0]) != pair[1]) {
226 if(item.contentSrc.path.indexOf(
"MP3_ID3v22.mp3") != 0) {
227 if(pair[0] == SBProperties.lyricistName || pair[0] == SBProperties.lyrics) {
232 log(
"MetadataJob_Write: \n" + pair[0]+
":\nfound:\t" + item.getProperty(pair[0])
233 +
"\nwanted:\t" + pair[1]);
237 if (failedProperties != 0) {
241 assertEqual(failedFiles, 0,
"Some files failed to write correctly.");
243 prefSvc.setBoolPref(
"songbird.metadata.enableWriting", oldWritingEnabledPref);
245 testFolder.remove(
true);
259 var scan =
Cc[
"@songbirdnest.com/Songbird/FileScan;1"]
260 .createInstance(
Ci.sbIFileScan);
261 var query =
Cc[
"@songbirdnest.com/Songbird/FileScanQuery;1"]
262 .createInstance(
Ci.sbIFileScanQuery);
263 query.setDirectory(folder.path);
264 query.setRecurse(
true);
267 query.addFileExtension(extension);
270 scan.submitQuery(query);
274 while (query.isScanning()) {
279 var urls = query.getResultRangeAsURIStrings(0, query.getFileCount() - 1);
291 var items = library.batchCreateMediaItems(files,
null,
true);
294 for (var
i = 0;
i < items.length;
i++) {
295 jsItems.push(items.queryElementAt(
i,
Ci.sbIMediaItem));
305 var
array = Components.classes[
"@songbirdnest.com/moz/xpcom/threadsafe-array;1"]
306 .createInstance(Components.interfaces.nsIMutableArray);
307 for each (var item
in items) {
308 array.appendElement(item,
false);
310 manager = Components.classes[
"@songbirdnest.com/Songbird/FileMetadataService;1"]
311 .getService(Components.interfaces.sbIFileMetadataService);
314 if (type ==
"write") {
315 job = manager.write(
array, ArrayConverter.stringEnumerator(writeProperties));
317 job = manager.read(
array);
function sleep(ms, suppressOutput)
function newAppRelativeFile(path)
function assertEqual(aExpected, aActual, aMessage)
function getCopyOfFolder(folder, tempName)
Copy the given folder to tempName, returning an nsIFile for the new location.
_getSelectedPageStyle s i