gecko/netwerk/cache2/nsICacheStorageService.idl
Nikhil Marathe 5c7138e668 Bug 1167809 - Add skip size check flag to cache for use with ServiceWorkers. r=mayhemer
For non-e10s Service Worker, we use Cache entries to achieve interception.
While this is a temporary measure, the fact that cache enforces size limits on
cache entries (which make sense for the purpose it was designed) prevents large
files from being served via a Service Worker. This patch adds a skip size check
flag to CacheStorage that is relayed to CacheEntry and CacheFile. It is set to
false by default leading to normal cache behaviour.
The patch also adds nsICacheStorageService.synthesizedCacheStorage() that
retrieves a cache storage with this flag set to true, which is used by
nsHttpChannel in case of possible interception.
2015-09-03 16:05:42 -07:00

120 lines
4.0 KiB
Plaintext

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
interface nsICacheStorage;
interface nsILoadContextInfo;
interface nsIApplicationCache;
interface nsIEventTarget;
interface nsICacheStorageConsumptionObserver;
/**
* Provides access to particual cache storages of the network URI cache.
*/
[scriptable, uuid(9c9dc1d6-533e-4716-9ad8-11e08c3763b3)]
interface nsICacheStorageService : nsISupports
{
/**
* Get storage where entries will only remain in memory, never written
* to the disk.
*
* NOTE: Any existing disk entry for [URL|id-extension] will be doomed
* prior opening an entry using this memory-only storage. Result of
* AsyncOpenURI will be a new and empty memory-only entry. Using
* OPEN_READONLY open flag has no effect on this behavior.
*
* @param aLoadContextInfo
* Information about the loading context, this focuses the storage JAR and
* respects separate storage for private browsing.
*/
nsICacheStorage memoryCacheStorage(in nsILoadContextInfo aLoadContextInfo);
/**
* Get storage where entries will be written to disk when not forbidden by
* response headers.
*
* @param aLookupAppCache
* When set true (for top level document loading channels) app cache will
* be first to check on to find entries in.
*/
nsICacheStorage diskCacheStorage(in nsILoadContextInfo aLoadContextInfo,
in bool aLookupAppCache);
/**
* Get storage for a specified application cache obtained using some different
* mechanism.
*
* @param aLoadContextInfo
* Mandatory reference to a load context information.
* @param aApplicationCache
* Optional reference to an existing appcache. When left null, this will
* work with offline cache as a whole.
*/
nsICacheStorage appCacheStorage(in nsILoadContextInfo aLoadContextInfo,
in nsIApplicationCache aApplicationCache);
/**
* Get storage for synthesized cache entries that we currently use for ServiceWorker interception in non-e10s mode.
*
* This cache storage has no limits on file size to allow the ServiceWorker to intercept large files.
*/
nsICacheStorage synthesizedCacheStorage(in nsILoadContextInfo aLoadContextInfo);
/**
* Evict the whole cache.
*/
void clear();
/**
* Purge only data of disk backed entries. Metadata are left for
* performance purposes.
*/
const uint32_t PURGE_DISK_DATA_ONLY = 1;
/**
* Purge whole disk backed entries from memory. Disk files will
* be left unattended.
*/
const uint32_t PURGE_DISK_ALL = 2;
/**
* Purge all entries we keep in memory, including memory-storage
* entries. This may be dangerous to use.
*/
const uint32_t PURGE_EVERYTHING = 3;
/**
* Purges data we keep warmed in memory. Use for tests and for
* saving memory.
*/
void purgeFromMemory(in uint32_t aWhat);
/**
* I/O thread target to use for any operations on disk
*/
readonly attribute nsIEventTarget ioTarget;
/**
* Asynchronously determine how many bytes of the disk space the cache takes.
* @see nsICacheStorageConsumptionObserver
* @param aObserver
* A mandatory (weak referred) observer. Documented at
* nsICacheStorageConsumptionObserver.
* NOTE: the observer MUST implement nsISupportsWeakReference.
*/
void asyncGetDiskConsumption(in nsICacheStorageConsumptionObserver aObserver);
};
[scriptable, uuid(7728ab5b-4c01-4483-a606-32bf5b8136cb)]
interface nsICacheStorageConsumptionObserver : nsISupports
{
/**
* Callback invoked to answer asyncGetDiskConsumption call. Always triggered
* on the main thread.
* NOTE: implementers must also implement nsISupportsWeakReference.
*
* @param aDiskSize
* The disk consumption in bytes.
*/
void onNetworkCacheDiskConsumption(in int64_t aDiskSize);
};