34 .createInstance(
Ci.nsIMutableArray);
39 .getService(
Ci.sbIMetadataManager);
42 Components.utils.import(
"resource://app/jsmodules/ArrayConverter.jsm");
48 var
file = gTestFolder.clone();
49 file.append(aFileName);
51 var inputStream =
Cc[
"@mozilla.org/network/file-input-stream;1"]
52 .createInstance(
Ci.nsIFileInputStream);
54 inputStream.init(file, 0x01, 0600, 0);
55 var stream =
Cc[
"@mozilla.org/binaryinputstream;1"]
56 .createInstance(
Ci.nsIBinaryInputStream);
57 stream.setInputStream(inputStream);
58 var size = inputStream.available();
60 return stream.readByteArray(size);
68 source:
"MPEG4_Empty.m4a",
69 ref:
"MPEG4_Empty_Ref.m4a",
71 artistName:
"Songbird",
72 trackName:
"Start From Empty"
77 source:
"MPEG4_Empty_Shift.m4a",
78 ref:
"MPEG4_Empty_Shift_Ref.m4a",
80 artistName:
"Songbird",
86 source:
"MPEG4_Useless.m4a",
87 ref:
"MPEG4_Useless_Ref.m4a",
89 artistName:
"Songbird",
90 trackName:
"Simple Test"
94 source:
"MPEG4_Expand.m4a",
95 ref:
"MPEG4_Expand_Ref.m4a",
97 artistName:
"Songbird",
98 albumName:
"MPEG4 writing unit test",
99 trackName:
"expanding and shifting chunk offsets!",
104 comment:
"Hello, world!",
105 composerName:
"Balut",
122 var
prefSvc =
Cc[
"@mozilla.org/preferences-service;1"]
123 .getService(
Ci.nsIPrefBranch);
124 var oldWritingEnabledPref = prefSvc.getBoolPref(
"songbird.metadata.enableWriting");
126 prefSvc.setBoolPref(
"songbird.metadata.enableWriting", oldWritingEnabledPref);
128 prefSvc.setBoolPref(
"songbird.metadata.enableWriting",
true);
133 "_temp_metadata_mpeg4_files");
139 assertTrue(library instanceof
Ci.sbILibrary,
"creating an invalid library");
142 let itemPath = gTestFolder.clone();
143 itemPath.append(testData.source);
148 for (let
i = 0;
i < items.length; ++
i) {
150 items[
i].contentSrc.QueryInterface(
Ci.nsIURL).fileName);
151 gTestCases[
i].item = items[
i];
163 if (job.status == Components.interfaces.sbIJobProgress.STATUS_RUNNING) {
169 var propertiesToWrite = [];
172 items.push(testData.item);
173 for (let prop in testData.properties) {
174 log(prop +
": " + SBProperties[prop] +
" -> " + testData.properties[prop]);
175 testData.item.setProperty(SBProperties[prop], testData.properties[prop]);
177 if (propertiesToWrite.indexOf(SBProperties[prop]) < 0) {
178 propertiesToWrite.push(SBProperties[prop]);
190 if (job.status == Components.interfaces.sbIJobProgress.STATUS_RUNNING) {
196 log(
"Comparing " + testData.source +
" against " + testData.ref);
206 assertEqual(0, job.errorCount,
"found errors in job");
207 assertEqual(job.status, Components.interfaces.sbIJobProgress.STATUS_SUCCEEDED);
215 if (!(files instanceof
Ci.nsIArray)) {
216 files = ArrayConverter.nsIArray(files);
218 var items = library.batchCreateMediaItems(files,
null,
true);
221 for (var
i = 0;
i < items.length;
i++) {
222 jsItems.push(items.queryElementAt(
i,
Ci.sbIMediaItem));
232 if (!(items instanceof
Ci.nsIArray)) {
233 items = ArrayConverter.nsIArray(items);
235 manager = Components.classes[
"@songbirdnest.com/Songbird/FileMetadataService;1"]
236 .getService(Components.interfaces.sbIFileMetadataService);
239 if (type ==
"write") {
240 job = manager.write(items, ArrayConverter.stringEnumerator(writeProperties));
242 job = manager.read(items);
function newAppRelativeFile(path)
function assertTrue(aTest, aMessage)
function assertEqual(aExpected, aActual, aMessage)
function assertArraysEqual(a1, a2)
function newFileURI(file)
function getCopyOfFolder(folder, tempName)
Copy the given folder to tempName, returning an nsIFile for the new location.
_getSelectedPageStyle s i