gecko-dev/netwerk/cache2/OldWrappers.h

260 строки
8.5 KiB
C++

// Stuff to link the old imp to the new api - will go away!
#ifndef OLDWRAPPERS__H__
#define OLDWRAPPERS__H__
#include "nsICacheEntry.h"
#include "nsICacheListener.h"
#include "nsICacheStorage.h"
#include "nsCOMPtr.h"
#include "nsICacheEntryOpenCallback.h"
#include "nsICacheEntryDescriptor.h"
#include "nsICacheStorageVisitor.h"
#include "nsThreadUtils.h"
#include "mozilla/TimeStamp.h"
class nsIURI;
class nsICacheEntryOpenCallback;
class nsICacheStorageConsumptionObserver;
class nsIApplicationCache;
class nsILoadContextInfo;
namespace mozilla {
namespace net {
class CacheStorage;
class _OldCacheEntryWrapper : public nsICacheEntry {
public:
NS_DECL_THREADSAFE_ISUPPORTS
// nsICacheEntryDescriptor
NS_IMETHOD SetExpirationTime(uint32_t expirationTime) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->SetExpirationTime(expirationTime);
}
nsresult OpenInputStream(uint32_t offset, nsIInputStream **_retval) {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->OpenInputStream(offset, _retval);
}
nsresult OpenOutputStream(uint32_t offset, nsIOutputStream **_retval) {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->OpenOutputStream(offset, _retval);
}
NS_IMETHOD OpenAlternativeOutputStream(const nsACString &type,
int64_t predictedSize,
nsIOutputStream **_retval) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHOD OpenAlternativeInputStream(const nsACString &type,
nsIInputStream **_retval) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHOD GetSecurityInfo(nsISupports **aSecurityInfo) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->GetSecurityInfo(aSecurityInfo);
}
NS_IMETHOD SetSecurityInfo(nsISupports *aSecurityInfo) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->SetSecurityInfo(aSecurityInfo);
}
NS_IMETHOD GetStorageDataSize(uint32_t *aStorageDataSize) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->GetStorageDataSize(aStorageDataSize);
}
nsresult AsyncDoom(nsICacheListener *listener) {
return !mOldDesc ? NS_ERROR_NULL_POINTER : mOldDesc->AsyncDoom(listener);
}
NS_IMETHOD MarkValid(void) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER : mOldDesc->MarkValid();
}
NS_IMETHOD Close(void) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER : mOldDesc->Close();
}
NS_IMETHOD GetMetaDataElement(const char *key, char **_retval) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->GetMetaDataElement(key, _retval);
}
NS_IMETHOD SetMetaDataElement(const char *key, const char *value) override {
return !mOldDesc ? NS_ERROR_NULL_POINTER
: mOldDesc->SetMetaDataElement(key, value);
}
NS_IMETHOD GetDiskStorageSizeInKB(uint32_t *aDiskStorageSize) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
// nsICacheEntryInfo
NS_IMETHOD GetKey(nsACString &aKey) override {
return mOldInfo->GetKey(aKey);
}
NS_IMETHOD GetCacheEntryId(uint64_t *aCacheEntryId) override {
*aCacheEntryId = mCacheEntryId;
return NS_OK;
}
NS_IMETHOD GetFetchCount(int32_t *aFetchCount) override {
return mOldInfo->GetFetchCount(aFetchCount);
}
NS_IMETHOD GetLastFetched(uint32_t *aLastFetched) override {
return mOldInfo->GetLastFetched(aLastFetched);
}
NS_IMETHOD GetLastModified(uint32_t *aLastModified) override {
return mOldInfo->GetLastModified(aLastModified);
}
NS_IMETHOD GetExpirationTime(uint32_t *aExpirationTime) override {
return mOldInfo->GetExpirationTime(aExpirationTime);
}
nsresult GetDataSize(uint32_t *aDataSize) {
return mOldInfo->GetDataSize(aDataSize);
}
NS_IMETHOD GetOnStartTime(uint64_t *aTime) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHOD GetOnStopTime(uint64_t *aTime) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHOD SetNetworkTimes(uint64_t aOnStartTime,
uint64_t aOnStopTime) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHOD GetLoadContextInfo(nsILoadContextInfo **aInfo) override {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHOD Dismiss() override { return NS_ERROR_NOT_IMPLEMENTED; }
NS_IMETHOD AsyncDoom(nsICacheEntryDoomCallback *listener) override;
NS_IMETHOD GetPersistent(bool *aPersistToDisk) override;
NS_IMETHOD GetIsForcedValid(bool *aIsForcedValid) override;
NS_IMETHOD ForceValidFor(uint32_t aSecondsToTheFuture) override;
NS_IMETHOD SetValid() override { return NS_OK; }
NS_IMETHOD MetaDataReady() override { return NS_OK; }
NS_IMETHOD Recreate(bool, nsICacheEntry **) override;
NS_IMETHOD GetDataSize(int64_t *size) override;
NS_IMETHOD GetAltDataSize(int64_t *size) override;
NS_IMETHOD GetAltDataType(nsACString &aType) override;
NS_IMETHOD OpenInputStream(int64_t offset, nsIInputStream **_retval) override;
NS_IMETHOD OpenOutputStream(int64_t offset, int64_t predictedSize,
nsIOutputStream **_retval) override;
NS_IMETHOD MaybeMarkValid() override;
NS_IMETHOD HasWriteAccess(bool aWriteOnly, bool *aWriteAccess) override;
NS_IMETHOD VisitMetaData(nsICacheEntryMetaDataVisitor *) override;
explicit _OldCacheEntryWrapper(nsICacheEntryDescriptor *desc);
explicit _OldCacheEntryWrapper(nsICacheEntryInfo *info);
private:
virtual ~_OldCacheEntryWrapper();
_OldCacheEntryWrapper() = delete;
nsICacheEntryDescriptor *mOldDesc; // ref holded in mOldInfo
nsCOMPtr<nsICacheEntryInfo> mOldInfo;
const uint64_t mCacheEntryId;
};
class _OldCacheLoad : public Runnable, public nsICacheListener {
public:
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIRUNNABLE
NS_DECL_NSICACHELISTENER
_OldCacheLoad(const nsACString &aScheme, const nsACString &aCacheKey,
nsICacheEntryOpenCallback *aCallback,
nsIApplicationCache *aAppCache, nsILoadContextInfo *aLoadInfo,
bool aWriteToDisk, uint32_t aFlags);
nsresult Start();
protected:
virtual ~_OldCacheLoad();
private:
void Check();
nsCOMPtr<nsIEventTarget> mCacheThread;
nsCString const mScheme;
nsCString const mCacheKey;
nsCOMPtr<nsICacheEntryOpenCallback> mCallback;
nsCOMPtr<nsILoadContextInfo> mLoadInfo;
uint32_t const mFlags;
bool const mWriteToDisk : 1;
bool mNew : 1;
bool mOpening : 1;
bool mSync : 1;
nsCOMPtr<nsICacheEntry> mCacheEntry;
nsresult mStatus;
uint32_t mRunCount;
nsCOMPtr<nsIApplicationCache> mAppCache;
mozilla::TimeStamp mLoadStart;
};
class _OldStorage : public nsICacheStorage {
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSICACHESTORAGE
public:
_OldStorage(nsILoadContextInfo *aInfo, bool aAllowDisk, bool aLookupAppCache,
bool aOfflineStorage, nsIApplicationCache *aAppCache);
private:
virtual ~_OldStorage();
nsresult AssembleCacheKey(nsIURI *aURI, nsACString const &aIdExtension,
nsACString &aCacheKey, nsACString &aScheme);
nsresult ChooseApplicationCache(const nsACString &cacheKey,
nsIApplicationCache **aCache);
nsCOMPtr<nsILoadContextInfo> mLoadInfo;
nsCOMPtr<nsIApplicationCache> mAppCache;
bool const mWriteToDisk : 1;
bool const mLookupAppCache : 1;
bool const mOfflineStorage : 1;
};
class _OldVisitCallbackWrapper : public nsICacheVisitor {
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSICACHEVISITOR
_OldVisitCallbackWrapper(char const *deviceID, nsICacheStorageVisitor *cb,
bool visitEntries, nsILoadContextInfo *aInfo)
: mCB(cb),
mVisitEntries(visitEntries),
mDeviceID(deviceID),
mLoadInfo(aInfo),
mHit(false) {}
private:
virtual ~_OldVisitCallbackWrapper();
nsCOMPtr<nsICacheStorageVisitor> mCB;
bool mVisitEntries;
char const *mDeviceID;
nsCOMPtr<nsILoadContextInfo> mLoadInfo;
bool mHit; // set to true when the device was found
};
class _OldGetDiskConsumption : public Runnable, public nsICacheVisitor {
public:
static nsresult Get(nsICacheStorageConsumptionObserver *aCallback);
private:
explicit _OldGetDiskConsumption(
nsICacheStorageConsumptionObserver *aCallback);
virtual ~_OldGetDiskConsumption() = default;
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSICACHEVISITOR
NS_DECL_NSIRUNNABLE
nsCOMPtr<nsICacheStorageConsumptionObserver> mCallback;
int64_t mSize;
};
} // namespace net
} // namespace mozilla
#endif