diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /netwerk/base/nsLoadGroup.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | uxp-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz |
Add m-esr52 at 52.6.0
Diffstat (limited to 'netwerk/base/nsLoadGroup.h')
-rw-r--r-- | netwerk/base/nsLoadGroup.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/netwerk/base/nsLoadGroup.h b/netwerk/base/nsLoadGroup.h new file mode 100644 index 0000000000..da89ca1b39 --- /dev/null +++ b/netwerk/base/nsLoadGroup.h @@ -0,0 +1,105 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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 "nsPILoadGroupInternal.h" +#include "nsAgg.h" +#include "nsCOMPtr.h" +#include "nsWeakPtr.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 nsISupportsPriority, + public nsSupportsWeakReference, + public nsPILoadGroupInternal +{ +public: + NS_DECL_AGGREGATED + + //////////////////////////////////////////////////////////////////////////// + // nsIRequest methods: + NS_DECL_NSIREQUEST + + //////////////////////////////////////////////////////////////////////////// + // nsILoadGroup methods: + NS_DECL_NSILOADGROUP + NS_DECL_NSPILOADGROUPINTERNAL + + //////////////////////////////////////////////////////////////////////////// + // nsILoadGroupChild methods: + NS_DECL_NSILOADGROUPCHILD + + //////////////////////////////////////////////////////////////////////////// + // nsISupportsPriority methods: + NS_DECL_NSISUPPORTSPRIORITY + + //////////////////////////////////////////////////////////////////////////// + // nsLoadGroup methods: + + explicit nsLoadGroup(nsISupports* outer); + virtual ~nsLoadGroup(); + + nsresult Init(); + +protected: + nsresult MergeLoadFlags(nsIRequest *aRequest, nsLoadFlags& flags); + nsresult MergeDefaultLoadFlags(nsIRequest *aRequest, nsLoadFlags& flags); + +private: + void TelemetryReport(); + void TelemetryReportChannel(nsITimedChannel *timedChannel, + bool defaultRequest); + +protected: + uint32_t mForegroundCount; + uint32_t mLoadFlags; + uint32_t mDefaultLoadFlags; + + 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; + int32_t mPriority; + bool mIsCanceling; + + /* Telemetry */ + mozilla::TimeStamp mDefaultRequestCreationTime; + bool mDefaultLoadIsTimed; + uint32_t mTimedRequests; + uint32_t mCachedRequests; + + /* For nsPILoadGroupInternal */ + uint32_t mTimedNonCachedRequestsUntilOnEndPageLoad; + + nsCString mUserAgentOverrideCache; +}; + +} // namespace net +} // namespace mozilla + +#endif // nsLoadGroup_h__ |