gecko-dev/netwerk/base/nsICacheInfoChannel.idl

103 строки
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 nsIOutputStream;
[scriptable, uuid(72c34415-c6eb-48af-851f-772fa9ee5972)]
interface nsICacheInfoChannel : nsISupports
{
/**
* Get the number of times the cache entry has been opened. This attribute is
* equivalent to nsICachingChannel.cacheToken.fetchCount.
*
* @throws NS_ERROR_NOT_AVAILABLE if the cache entry or the alternate data
* cache entry cannot be read.
*/
readonly attribute int32_t cacheTokenFetchCount;
/**
* Get the last time the cache entry was opened from cache token. This
* attribute is equivalent to nsICachingChannel.cacheToken.lastFetched.
*
* @throws NS_ERROR_NOT_AVAILABLE if the cache entry or the alternate data
* cache entry cannot be read.
*/
readonly attribute uint32_t cacheTokenLastFetched;
/**
* Get expiration time from cache token. This attribute is equivalent to
* nsICachingChannel.cacheToken.expirationTime.
*/
readonly attribute uint32_t cacheTokenExpirationTime;
/**
* Set/get charset of cache entry. Accessing this attribute is equivalent to
* calling nsICachingChannel.cacheToken.getMetaDataElement("charset") and
* nsICachingChannel.cacheToken.setMetaDataElement("charset").
*/
attribute ACString cacheTokenCachedCharset;
/**
* TRUE if this channel's data is being loaded from the cache. This value
* is undefined before the channel fires its OnStartRequest notification
* and after the channel fires its OnStopRequest notification.
*/
boolean isFromCache();
/**
* Set/get the cache key... uniquely identifies the data in the cache
* for this channel. Holding a reference to this key does NOT prevent
* the cached data from being removed.
*
* A cache key retrieved from a particular instance of nsICacheInfoChannel
* could be set on another instance of nsICacheInfoChannel provided the
* underlying implementations are compatible and provided the new
* channel instance was created with the same URI. The implementation of
* nsICacheInfoChannel would be expected to use the cache entry identified
* by the cache token. Depending on the value of nsIRequest::loadFlags,
* the cache entry may be validated, overwritten, or simply read.
*
* The cache key may be NULL indicating that the URI of the channel is
* sufficient to locate the same cache entry. Setting a NULL cache key
* is likewise valid.
*/
attribute nsISupports cacheKey;
/**
* Tells the channel to behave as if the LOAD_FROM_CACHE flag has been set,
* but without affecting the loads for the entire loadGroup in case of this
* channel being the default load group's channel.
*/
attribute boolean allowStaleCacheContent;
/**
* Calling this method instructs the channel to serve the alternative data
* if that was previously saved in the cache, otherwise it will serve the
* real data.
* Must be called before AsyncOpen.
*/
void preferAlternativeDataType(in ACString type);
/**
* Holds the type of the alternative data representation that the channel
* is returning.
* Is empty string if no alternative data representation was requested, or
* if the requested representation wasn't found in the cache.
* Can only be called during or after OnStartRequest.
*/
readonly attribute ACString alternativeDataType;
/**
* Opens and returns an output stream that a consumer may use to save an
* alternate representation of the data.
* Must be called after the OnStopRequest that delivered the real data.
* The consumer may choose to replace the saved alt representation.
* Opening the output stream will fail if there are any open input streams
* reading the already saved alt representation.
*/
nsIOutputStream openAlternativeOutputStream(in ACString type);
};