|
1 var DEBUG = false; |
|
2 |
|
3 var clientID = "javascript"; |
|
4 var key = "theme:button"; |
|
5 var nsICache = Components.interfaces.nsICache; |
|
6 |
|
7 function getCacheService() |
|
8 { |
|
9 var nsCacheService = Components.classes["@mozilla.org/network/cache-service;1"]; |
|
10 var service = nsCacheService.getService(Components.interfaces.nsICacheService); |
|
11 return service; |
|
12 } |
|
13 |
|
14 function createCacheSession(clientID, storagePolicy, streamable) |
|
15 { |
|
16 var service = getCacheService(); |
|
17 var session = service.createSession(clientID, storagePolicy, streamable); |
|
18 return session; |
|
19 } |
|
20 |
|
21 function openCacheEntry(mode) |
|
22 { |
|
23 var session = createCacheSession(clientID, nsICache.STORE_ON_DISK, true); |
|
24 var entry = session.openCacheEntry(key, mode); |
|
25 return entry; |
|
26 } |
|
27 |
|
28 function wrapInputStream(input) |
|
29 { |
|
30 var nsIScriptableInputStream = Components.interfaces.nsIScriptableInputStream; |
|
31 var factory = Components.classes["@mozilla.org/scriptableinputstream;1"]; |
|
32 var wrapper = factory.createInstance(nsIScriptableInputStream); |
|
33 wrapper.init(input); |
|
34 return wrapper; |
|
35 } |
|
36 |
|
37 function test() |
|
38 { |
|
39 var outputEntry = openCacheEntry(nsICache.ACCESS_WRITE); |
|
40 var output = outputEntry.transport.openOutputStream(0, -1, 0); |
|
41 if (output.write("foo", 3) == 3) |
|
42 print("disk cache write works!"); |
|
43 else |
|
44 print("disk cache write broken!"); |
|
45 |
|
46 // store some metadata. |
|
47 outputEntry.setMetaDataElement("size", "3"); |
|
48 |
|
49 output.close(); |
|
50 outputEntry.markValid(); |
|
51 outputEntry.close(); |
|
52 |
|
53 var inputEntry = openCacheEntry(nsICache.ACCESS_READ); |
|
54 var input = wrapInputStream(inputEntry.transport.openInputStream(0, -1, 0)); |
|
55 |
|
56 if (input.read(input.available()) == "foo") |
|
57 print("disk cache read works!"); |
|
58 else |
|
59 print("disk cache read broken!"); |
|
60 |
|
61 if (inputEntry.getMetaDataElement("size") == "3") |
|
62 print("disk cache metadata works!"); |
|
63 else |
|
64 print("disk cache metadata broken!"); |
|
65 |
|
66 input.close(); |
|
67 inputEntry.close(); |
|
68 } |
|
69 |
|
70 function doom() |
|
71 { |
|
72 var doomedEntry = openCacheEntry(nsICache.ACCESS_READ_WRITE); |
|
73 doomedEntry.doom(); |
|
74 doomedEntry.close(); |
|
75 } |
|
76 |
|
77 if (DEBUG) { |
|
78 getCacheService(); |
|
79 print("cache service loaded."); |
|
80 } else { |
|
81 print("running disk cache test."); |
|
82 test(); |
|
83 print("disk cache test complete."); |
|
84 } |