mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-14 18:51:28 +00:00
170 lines
6.6 KiB
Plaintext
170 lines
6.6 KiB
Plaintext
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is mozilla.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
interface nsISimpleEnumerator;
|
|
interface nsICachedNetData;
|
|
interface nsINetDataCache;
|
|
interface nsINetDataDiskCache;
|
|
interface nsIURI;
|
|
|
|
/**
|
|
* The network-response cache manager is partly responsible for the caching of
|
|
* content and associated metadata that has been retrieved via the network.
|
|
* (The remaining responsibility for caching lies with individual network
|
|
* protocol handlers.)
|
|
*
|
|
* The cache manager supervises the actions of individual cache components,
|
|
* such as the memory cache, the disk cache and any extension caches, e.g. a
|
|
* read-only CD-ROM cache.
|
|
*
|
|
* @See nsINetDataCache
|
|
* @See nsICachedNetData
|
|
*/
|
|
[scriptable, uuid(71c8ab00-6d5c-11d3-90c8-000064657374)]
|
|
interface nsINetDataCacheManager : nsISupports
|
|
{
|
|
/**
|
|
* Flag for the GetCachedNetData() method: If set, the memory cache is
|
|
* neither searched nor will any data be stored into it. This might be
|
|
* appropriate, for example, with images, because they have their own
|
|
* cache for storing *decoded* images.
|
|
*/
|
|
const unsigned long BYPASS_MEMORY_CACHE = 1 << 0;
|
|
|
|
/**
|
|
* Flag for the GetCachedNetData() method: If set, the disk cache
|
|
* is neither searched nor will any be data stored into it.
|
|
* However, read-only extension caches may be searched. This
|
|
* might be used to avoid leaving persistent records of secure
|
|
* data.
|
|
*/
|
|
const unsigned long BYPASS_PERSISTENT_CACHE = 1 << 1;
|
|
|
|
/**
|
|
* Flag for the GetCachedNetData() method: If set, any stream
|
|
* content is stored in the cache as a single disk file. Content
|
|
* will not be cached in the memory cache nor is it cached in a
|
|
* flat-file cache database. This is used to implement the jar
|
|
* protocol handler and to provide the stream-as-file semantics
|
|
* required by the classic bowser plugin API.
|
|
*/
|
|
const unsigned long CACHE_AS_FILE = 1 << 2;
|
|
|
|
/**
|
|
These enum's are used for the ClearCache calls.
|
|
*/
|
|
const unsigned long ALL_CACHES = 1;
|
|
const unsigned long MEM_CACHE = 1<<1;
|
|
const unsigned long FILE_CACHE = 1<<2;
|
|
const unsigned long FLAT_CACHE = 1<<3;
|
|
/**
|
|
* Fetch the cache entry record for the given URI. If one does not exist,
|
|
* create a new, empty record. The normal search order for caches is:
|
|
* + Memory cache
|
|
* + Disk cache
|
|
* + File cache (stream-as-file cache)
|
|
* + All extension caches
|
|
*
|
|
* When writing, data is typically stored in both the memory cache and the
|
|
* disk cache. Both the search order and this write policy can be modified by
|
|
* setting one or more of the flag argument bits, as defined above.
|
|
*
|
|
* The optionally-NULL secondaryKey argument can be used, e.g. for form
|
|
* post data or for HTTP headers in the case of HTTP.
|
|
*/
|
|
nsICachedNetData getCachedNetData(in string uri,
|
|
[size_is(secondaryKeyLength)] in string secondaryKey,
|
|
in PRUint32 secondaryKeyLength,
|
|
in PRUint32 flags);
|
|
|
|
/**
|
|
* Returns true if cached content is available for the given URI, even if
|
|
* only partial data is stored. The flags argument behaves the same as for
|
|
* the GetCachedNetData() method, above.
|
|
*/
|
|
boolean contains(in string uri,
|
|
[size_is(secondaryKeyLength)] in string secondaryKey,
|
|
in PRUint32 secondaryKeyLength,
|
|
in PRUint32 flags);
|
|
|
|
/**
|
|
* Total number of unexpired URI entries stored in all caches. This number
|
|
* does not take into account duplicate URIs, e.g. because the memory cache
|
|
* and the disk cache might each contain an entry for the same URI.
|
|
*/
|
|
readonly attribute PRUint32 numEntries;
|
|
|
|
/**
|
|
* Enumerate the unexpired URI entries stored in all caches. Some URIs may
|
|
* be enumerated more than once, e.g. because the the memory cache and the
|
|
* disk cache might each contain an entry for the same URI.
|
|
*/
|
|
nsISimpleEnumerator newCacheEntryIterator();
|
|
|
|
/*
|
|
* Enumerate all the loaded nsINetDataCache-implementing cache modules.
|
|
* The first module enumerated will be the memory cache, the second will be
|
|
* the disk cache, then the file cache, followed by all the extension
|
|
* caches, in search order.
|
|
*/
|
|
nsISimpleEnumerator newCacheModuleIterator();
|
|
|
|
/**
|
|
* Remove all entries from all writable caches. This could be used, for
|
|
* example, after a guest ends a browser session. This is equivalent to
|
|
* setting the DiskCacheCapacity to zero, except that all cache entries,
|
|
* even those in active use, will be deleted. Also, any global cache
|
|
* database files will be deleted.
|
|
*/
|
|
void RemoveAll();
|
|
|
|
/**
|
|
* Clears the specified cache
|
|
*/
|
|
void Clear( in PRUint32 aCacheToClear );
|
|
|
|
/**
|
|
* The disk cache is made up of the file cache (for stream-as-file
|
|
* requests) and a (possibly independent) persistent cache that handles all
|
|
* other cache requests. This attribute sets/gets the combined capacity of
|
|
* these caches, measured in KBytes. Setting the capacity lower than the
|
|
* current amount of space currently in use may cause cache entries to be
|
|
* evicted from the cache to accomodate the requested capacity.
|
|
*/
|
|
attribute PRUint32 diskCacheCapacity;
|
|
|
|
/**
|
|
* This attribute sets/gets the capacity of the memory cache, measured in
|
|
* KBytes. Setting the capacity lower than the current amount of space
|
|
* currently in use may cause cache entries to be evicted from the cache to
|
|
* accomodate the requested capacity.
|
|
*/
|
|
attribute PRUint32 memCacheCapacity;
|
|
};
|
|
|
|
%{ C++
|
|
// ProgID prefix for Components that implement this interface
|
|
#define NS_NETWORK_CACHE_MANAGER_PROGID NS_NETWORK_CACHE_PROGID "?name=manager"
|
|
%}
|