tor-browser

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

QuotaRequests.h (2724B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef mozilla_dom_quota_UsageRequest_h
      8 #define mozilla_dom_quota_UsageRequest_h
      9 
     10 #include "ErrorList.h"
     11 #include "nsCOMPtr.h"
     12 #include "nsCycleCollectionParticipant.h"
     13 #include "nsIPrincipal.h"
     14 #include "nsIQuotaRequests.h"
     15 #include "nsISupports.h"
     16 
     17 class nsIQuotaCallback;
     18 class nsIQuotaUsageCallback;
     19 class nsIVariant;
     20 
     21 namespace mozilla::dom::quota {
     22 
     23 class QuotaUsageRequestChild;
     24 
     25 class RequestBase : public nsIQuotaRequestBase {
     26 protected:
     27  nsCOMPtr<nsIPrincipal> mPrincipal;
     28 
     29  nsresult mResultCode;
     30  bool mHaveResultOrErrorCode;
     31 
     32 public:
     33  void AssertIsOnOwningThread() const
     34 #ifdef DEBUG
     35      ;
     36 #else
     37  {
     38  }
     39 #endif
     40 
     41  void SetError(nsresult aRv);
     42 
     43  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     44  NS_DECL_NSIQUOTAREQUESTBASE
     45  NS_DECL_CYCLE_COLLECTION_CLASS(RequestBase)
     46 
     47 protected:
     48  RequestBase();
     49 
     50  RequestBase(nsIPrincipal* aPrincipal);
     51 
     52  virtual ~RequestBase() { AssertIsOnOwningThread(); }
     53 
     54  virtual void FireCallback() = 0;
     55 };
     56 
     57 class UsageRequest final : public RequestBase, public nsIQuotaUsageRequest {
     58  nsCOMPtr<nsIQuotaUsageCallback> mCallback;
     59 
     60  nsCOMPtr<nsIVariant> mResult;
     61 
     62  QuotaUsageRequestChild* mBackgroundActor;
     63 
     64  bool mCanceled;
     65 
     66 public:
     67  explicit UsageRequest(nsIQuotaUsageCallback* aCallback);
     68 
     69  UsageRequest(nsIPrincipal* aPrincipal, nsIQuotaUsageCallback* aCallback);
     70 
     71  void SetBackgroundActor(QuotaUsageRequestChild* aBackgroundActor);
     72 
     73  void ClearBackgroundActor() {
     74    AssertIsOnOwningThread();
     75 
     76    mBackgroundActor = nullptr;
     77  }
     78 
     79  void SetResult(nsIVariant* aResult);
     80 
     81  NS_DECL_ISUPPORTS_INHERITED
     82  NS_FORWARD_NSIQUOTAREQUESTBASE(RequestBase::)
     83  NS_DECL_NSIQUOTAUSAGEREQUEST
     84  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(UsageRequest, RequestBase)
     85 
     86 private:
     87  ~UsageRequest();
     88 
     89  virtual void FireCallback() override;
     90 };
     91 
     92 class Request final : public RequestBase, public nsIQuotaRequest {
     93  nsCOMPtr<nsIQuotaCallback> mCallback;
     94 
     95  nsCOMPtr<nsIVariant> mResult;
     96 
     97 public:
     98  Request();
     99 
    100  explicit Request(nsIPrincipal* aPrincipal);
    101 
    102  explicit Request(nsIQuotaCallback* aCallback);
    103 
    104  void SetResult(nsIVariant* aResult);
    105 
    106  NS_DECL_ISUPPORTS_INHERITED
    107  NS_FORWARD_NSIQUOTAREQUESTBASE(RequestBase::)
    108  NS_DECL_NSIQUOTAREQUEST
    109  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(Request, RequestBase)
    110 
    111 private:
    112  ~Request();
    113 
    114  virtual void FireCallback() override;
    115 };
    116 
    117 }  // namespace mozilla::dom::quota
    118 
    119 #endif  // mozilla_dom_quota_UsageRequest_h