diff options
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 000000000..da89ca1b3 --- /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__ |