netwerk/test/TestDiskCache.js

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     1 var DEBUG = false;
     3 var clientID = "javascript";
     4 var key = "theme:button";
     5 var nsICache = Components.interfaces.nsICache;
     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 }
    14 function createCacheSession(clientID, storagePolicy, streamable)
    15 {
    16     var service = getCacheService();
    17     var session = service.createSession(clientID, storagePolicy, streamable);
    18     return session;
    19 }
    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 }
    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 }
    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!");
    46     // store some metadata.
    47     outputEntry.setMetaDataElement("size", "3");
    49     output.close();
    50     outputEntry.markValid();
    51     outputEntry.close();
    53     var inputEntry = openCacheEntry(nsICache.ACCESS_READ);
    54     var input = wrapInputStream(inputEntry.transport.openInputStream(0, -1, 0));
    56     if (input.read(input.available()) == "foo")
    57         print("disk cache read works!");
    58     else
    59         print("disk cache read broken!");
    61     if (inputEntry.getMetaDataElement("size") == "3")
    62         print("disk cache metadata works!");
    63     else
    64         print("disk cache metadata broken!");
    66     input.close();
    67     inputEntry.close();
    68 }
    70 function doom()
    71 {
    72     var doomedEntry = openCacheEntry(nsICache.ACCESS_READ_WRITE);
    73     doomedEntry.doom();
    74     doomedEntry.close();
    75 }
    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