diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /netwerk/base/nsLoadGroup.h | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'netwerk/base/nsLoadGroup.h')
-rw-r--r-- | netwerk/base/nsLoadGroup.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/netwerk/base/nsLoadGroup.h b/netwerk/base/nsLoadGroup.h new file mode 100644 index 0000000000..055e1804d6 --- /dev/null +++ b/netwerk/base/nsLoadGroup.h @@ -0,0 +1,111 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsLoadGroup_h__ +#define nsLoadGroup_h__ + +#include "nsILoadGroup.h" +#include "nsILoadGroupChild.h" +#include "nsIObserver.h" +#include "nsCOMPtr.h" +#include "nsWeakReference.h" +#include "nsISupportsPriority.h" +#include "PLDHashTable.h" +#include "mozilla/TimeStamp.h" + +class nsIRequestContext; +class nsIRequestContextService; +class nsITimedChannel; + +namespace mozilla { +namespace net { + +class nsLoadGroup : public nsILoadGroup, + public nsILoadGroupChild, + public nsIObserver, + public nsISupportsPriority, + public nsSupportsWeakReference { + public: + NS_DECL_ISUPPORTS + + //////////////////////////////////////////////////////////////////////////// + // nsIRequest methods: + NS_DECL_NSIREQUEST + + //////////////////////////////////////////////////////////////////////////// + // nsILoadGroup methods: + NS_DECL_NSILOADGROUP + + //////////////////////////////////////////////////////////////////////////// + // nsILoadGroupChild methods: + NS_DECL_NSILOADGROUPCHILD + + //////////////////////////////////////////////////////////////////////////// + // nsISupportsPriority methods: + NS_DECL_NSISUPPORTSPRIORITY + + //////////////////////////////////////////////////////////////////////////// + // nsIObserver methods: + NS_DECL_NSIOBSERVER + + //////////////////////////////////////////////////////////////////////////// + // nsLoadGroup methods: + + nsLoadGroup(); + + nsresult Init(); + nsresult InitWithRequestContextId(const uint64_t& aRequestContextId); + + void SetGroupObserver(nsIRequestObserver* aObserver, + bool aIncludeBackgroundRequests); + + protected: + virtual ~nsLoadGroup(); + + nsresult MergeLoadFlags(nsIRequest* aRequest, nsLoadFlags& flags); + nsresult MergeDefaultLoadFlags(nsIRequest* aRequest, nsLoadFlags& flags); + + private: + void TelemetryReport(); + void TelemetryReportChannel(nsITimedChannel* timedChannel, + bool defaultRequest); + + nsresult RemoveRequestFromHashtable(nsIRequest* aRequest, nsresult aStatus); + nsresult NotifyRemovalObservers(nsIRequest* aRequest, nsresult aStatus); + + protected: + uint32_t mForegroundCount{0}; + uint32_t mLoadFlags{LOAD_NORMAL}; + uint32_t mDefaultLoadFlags{0}; + int32_t mPriority{PRIORITY_NORMAL}; + + nsCOMPtr<nsILoadGroup> mLoadGroup; // load groups can contain load groups + nsCOMPtr<nsIInterfaceRequestor> mCallbacks; + nsCOMPtr<nsIRequestContext> mRequestContext; + nsCOMPtr<nsIRequestContextService> mRequestContextService; + + nsCOMPtr<nsIRequest> mDefaultLoadRequest; + PLDHashTable mRequests; + + nsWeakPtr mObserver; + nsWeakPtr mParentLoadGroup; + + nsresult mStatus{NS_OK}; + bool mIsCanceling{false}; + bool mDefaultLoadIsTimed{false}; + bool mBrowsingContextDiscarded{false}; + bool mExternalRequestContext{false}; + bool mNotifyObserverAboutBackgroundRequests{false}; + + /* Telemetry */ + mozilla::TimeStamp mDefaultRequestCreationTime; + uint32_t mTimedRequests{0}; + uint32_t mCachedRequests{0}; +}; + +} // namespace net +} // namespace mozilla + +#endif // nsLoadGroup_h__ |