diff -r 000000000000 -r 6474c204b198 netwerk/base/src/nsLoadGroup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/base/src/nsLoadGroup.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,95 @@ +/* -*- 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 "pldhash.h" +#include "mozilla/TimeStamp.h" + +class nsILoadGroupConnectionInfo; +class nsITimedChannel; + +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: + + nsLoadGroup(nsISupports* outer); + + nsresult Init(); + +protected: + virtual ~nsLoadGroup(); + + nsresult MergeLoadFlags(nsIRequest *aRequest, nsLoadFlags& flags); + +private: + void TelemetryReport(); + void TelemetryReportChannel(nsITimedChannel *timedChannel, + bool defaultRequest); + +protected: + uint32_t mForegroundCount; + uint32_t mLoadFlags; + uint32_t mDefaultLoadFlags; + + nsCOMPtr mLoadGroup; // load groups can contain load groups + nsCOMPtr mCallbacks; + nsCOMPtr mConnectionInfo; + + nsCOMPtr 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; +}; + +#endif // nsLoadGroup_h__