1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/test/unit/test_bug654926_test_seek.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,63 @@ 1.4 +function gen_1MiB() 1.5 +{ 1.6 + var i; 1.7 + var data="x"; 1.8 + for (i=0 ; i < 20 ; i++) 1.9 + data+=data; 1.10 + return data; 1.11 +} 1.12 + 1.13 +function write_and_check(str, data, len) 1.14 +{ 1.15 + var written = str.write(data, len); 1.16 + if (written != len) { 1.17 + do_throw("str.write has not written all data!\n" + 1.18 + " Expected: " + len + "\n" + 1.19 + " Actual: " + written + "\n"); 1.20 + } 1.21 +} 1.22 + 1.23 +function write_datafile(status, entry) 1.24 +{ 1.25 + do_check_eq(status, Cr.NS_OK); 1.26 + var os = entry.openOutputStream(0); 1.27 + var data = gen_1MiB(); 1.28 + 1.29 + write_and_check(os, data, data.length); 1.30 + 1.31 + os.close(); 1.32 + entry.close(); 1.33 + 1.34 + // try to open the entry for appending 1.35 + asyncOpenCacheEntry("http://data/", 1.36 + "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null, 1.37 + open_for_readwrite); 1.38 +} 1.39 + 1.40 +function open_for_readwrite(status, entry) 1.41 +{ 1.42 + do_check_eq(status, Cr.NS_OK); 1.43 + var os = entry.openOutputStream(entry.dataSize); 1.44 + 1.45 + // Opening the entry for appending data calls nsDiskCacheStreamIO::Seek() 1.46 + // which initializes mFD. If no data is written then mBufDirty is false and 1.47 + // mFD won't be closed in nsDiskCacheStreamIO::Flush(). 1.48 + 1.49 + os.close(); 1.50 + entry.close(); 1.51 + 1.52 + do_test_finished(); 1.53 +} 1.54 + 1.55 +function run_test() { 1.56 + do_get_profile(); 1.57 + 1.58 + // clear the cache 1.59 + evict_cache_entries(); 1.60 + 1.61 + asyncOpenCacheEntry("http://data/", 1.62 + "disk", Ci.nsICacheStorage.OPEN_NORMALLY, null, 1.63 + write_datafile); 1.64 + 1.65 + do_test_pending(); 1.66 +}