RetroZilla/netwerk/test/TestObjectCache.js
2015-10-20 23:03:22 -04:00

55 lines
1.6 KiB
JavaScript

function dumpLeaks()
{
var leakDetector = Components.classes["@mozilla.org/xpcom/leakdetector;1"].getService(Components.interfaces.nsILeakDetector);
leakDetector.dumpLeaks();
}
function getCacheService()
{
var nsCacheService = Components.classes["@mozilla.org/network/cache-service;1"];
var service = nsCacheService.getService(Components.interfaces.nsICacheService);
return service;
}
function createCacheSession(clientID, storagePolicy, streamable)
{
var service = getCacheService();
var nsICache = Components.interfaces.nsICache;
var session = service.createSession(clientID, storagePolicy, streamable);
return session;
}
function openCacheEntry(clientID, url)
{
var nsICache = Components.interfaces.nsICache;
var session = createCacheSession(clientID, nsICache.STORE_ANYWHERE, false);
var entry = session.openCacheEntry(url, nsICache.ACCESS_READ_WRITE);
return entry;
}
function wrapString(str)
{
var nsISupportsCString = Components.interfaces.nsISupportsCString;
var factory = Components.classes["@mozilla.org/supports-cstring;1"];
var wrapper = factory.createInstance(nsISupportsCString);
wrapper.data = str;
return wrapper;
}
function test()
{
var data = wrapString("javascript");
var entry = openCacheEntry("javascript", "theme:button");
entry.cacheElement = data;
entry.markValid();
entry.close();
var newEntry = openCacheEntry("javascript", "theme:button");
if (newEntry.cacheElement === data)
print("object cache works.");
else
print("object cache failed.");
}
test();