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