netwerk/test/TestDiskCache.js

branch
TOR_BUG_9701
changeset 11
deefc01c0e14
equal deleted inserted replaced
-1:000000000000 0:8645534d74b2
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 }

mercurial