nsAboutCacheEntry.h (2807B)
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/. */ 5 6 #ifndef nsAboutCacheEntry_h__ 7 #define nsAboutCacheEntry_h__ 8 9 #include "nsIAboutModule.h" 10 #include "nsICacheEntryOpenCallback.h" 11 #include "nsICacheEntry.h" 12 #include "nsIStreamListener.h" 13 #include "nsString.h" 14 #include "nsCOMPtr.h" 15 #include "nsIChannel.h" 16 17 class nsIAsyncOutputStream; 18 class nsIInputStream; 19 class nsILoadContextInfo; 20 class nsIURI; 21 22 class nsAboutCacheEntry final : public nsIAboutModule { 23 public: 24 NS_DECL_ISUPPORTS 25 NS_DECL_NSIABOUTMODULE 26 27 private: 28 virtual ~nsAboutCacheEntry() = default; 29 30 class Channel final : public nsICacheEntryOpenCallback, 31 public nsICacheEntryMetaDataVisitor, 32 public nsIStreamListener, 33 public nsIChannel { 34 public: 35 NS_DECL_ISUPPORTS 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) 42 43 Channel() = default; 44 45 private: 46 virtual ~Channel() = default; 47 48 public: 49 [[nodiscard]] nsresult Init(nsIURI* uri, nsILoadInfo* aLoadInfo); 50 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); 59 void CloseContent(); 60 61 [[nodiscard]] static nsresult PrintCacheData( 62 nsIInputStream* aInStream, void* aClosure, const char* aFromSegment, 63 uint32_t aToOffset, uint32_t aCount, uint32_t* aWriteCount); 64 65 private: 66 nsCString mStorageName, mEnhanceId; 67 nsCOMPtr<nsILoadContextInfo> mLoadInfo; 68 nsCOMPtr<nsIURI> mCacheURI; 69 70 nsCString* mBuffer{nullptr}; 71 nsCOMPtr<nsIAsyncOutputStream> mOutputStream; 72 bool mWaitingForData{false}; 73 uint32_t mHexDumpState{0}; 74 75 nsCOMPtr<nsIChannel> mChannel; 76 }; 77 }; 78 79 #define NS_ABOUT_CACHE_ENTRY_MODULE_CID \ 80 {/* 7fa5237d-b0eb-438f-9e50-ca0166e63788 */ \ 81 0x7fa5237d, \ 82 0xb0eb, \ 83 0x438f, \ 84 {0x9e, 0x50, 0xca, 0x01, 0x66, 0xe6, 0x37, 0x88}} 85 86 #endif // nsAboutCacheEntry_h__