1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nsAboutCacheEntry_h__
7 #define nsAboutCacheEntry_h__
9 #include "nsIAboutModule.h"
10 #include "nsICacheEntryOpenCallback.h"
11 #include "nsICacheEntry.h"
12 #include "nsIStreamListener.h"
15 #include "nsIChannel.h"
17 class nsIAsyncOutputStream
;
19 class nsILoadContextInfo
;
22 class nsAboutCacheEntry final
: public nsIAboutModule
{
25 NS_DECL_NSIABOUTMODULE
28 virtual ~nsAboutCacheEntry() = default;
30 class Channel final
: public nsICacheEntryOpenCallback
,
31 public nsICacheEntryMetaDataVisitor
,
32 public nsIStreamListener
,
36 NS_DECL_NSICACHEENTRYOPENCALLBACK
37 NS_DECL_NSICACHEENTRYMETADATAVISITOR
38 NS_DECL_NSIREQUESTOBSERVER
39 NS_DECL_NSISTREAMLISTENER
40 NS_FORWARD_SAFE_NSICHANNEL(mChannel
)
41 NS_FORWARD_SAFE_NSIREQUEST(mChannel
)
46 virtual ~Channel() = default;
49 [[nodiscard
]] nsresult
Init(nsIURI
* uri
, nsILoadInfo
* aLoadInfo
);
51 [[nodiscard
]] nsresult
GetContentStream(nsIURI
*, nsIInputStream
**);
52 [[nodiscard
]] nsresult
OpenCacheEntry(nsIURI
*);
53 [[nodiscard
]] nsresult
OpenCacheEntry();
54 [[nodiscard
]] nsresult
WriteCacheEntryDescription(nsICacheEntry
*);
55 [[nodiscard
]] nsresult
WriteCacheEntryUnavailable();
56 [[nodiscard
]] nsresult
ParseURI(nsIURI
* uri
, nsACString
& storageName
,
57 nsILoadContextInfo
** loadInfo
,
58 nsCString
& enahnceID
, nsIURI
** cacheUri
);
61 [[nodiscard
]] static nsresult
PrintCacheData(
62 nsIInputStream
* aInStream
, void* aClosure
, const char* aFromSegment
,
63 uint32_t aToOffset
, uint32_t aCount
, uint32_t* aWriteCount
);
66 nsCString mStorageName
, mEnhanceId
;
67 nsCOMPtr
<nsILoadContextInfo
> mLoadInfo
;
68 nsCOMPtr
<nsIURI
> mCacheURI
;
70 nsCString
* mBuffer
{nullptr};
71 nsCOMPtr
<nsIAsyncOutputStream
> mOutputStream
;
72 bool mWaitingForData
{false};
73 uint32_t mHexDumpState
{0};
75 nsCOMPtr
<nsIChannel
> mChannel
;
79 #define NS_ABOUT_CACHE_ENTRY_MODULE_CID \
80 { /* 7fa5237d-b0eb-438f-9e50-ca0166e63788 */ \
81 0x7fa5237d, 0xb0eb, 0x438f, { \
82 0x9e, 0x50, 0xca, 0x01, 0x66, 0xe6, 0x37, 0x88 \
86 #endif // nsAboutCacheEntry_h__