tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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__