1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/base/PerformanceResourceTiming.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,133 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#ifndef mozilla_dom_PerformanceResourceTiming_h___ 1.10 +#define mozilla_dom_PerformanceResourceTiming_h___ 1.11 + 1.12 +#include "nsCOMPtr.h" 1.13 +#include "nsPerformance.h" 1.14 +#include "nsIChannel.h" 1.15 +#include "nsITimedChannel.h" 1.16 +#include "nsDOMNavigationTiming.h" 1.17 +#include "PerformanceEntry.h" 1.18 + 1.19 +namespace mozilla { 1.20 +namespace dom { 1.21 + 1.22 +// http://www.w3.org/TR/resource-timing/#performanceresourcetiming 1.23 +class PerformanceResourceTiming MOZ_FINAL : public PerformanceEntry 1.24 +{ 1.25 +public: 1.26 + typedef mozilla::TimeStamp TimeStamp; 1.27 + 1.28 + NS_DECL_ISUPPORTS_INHERITED 1.29 + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED( 1.30 + PerformanceResourceTiming, 1.31 + PerformanceEntry) 1.32 + 1.33 + PerformanceResourceTiming(nsPerformanceTiming* aPerformanceTiming, 1.34 + nsPerformance* aPerformance); 1.35 + virtual ~PerformanceResourceTiming(); 1.36 + 1.37 + virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; 1.38 + 1.39 + 1.40 + virtual DOMHighResTimeStamp StartTime() const; 1.41 + 1.42 + virtual DOMHighResTimeStamp Duration() const 1.43 + { 1.44 + return ResponseEnd() - StartTime(); 1.45 + } 1.46 + 1.47 + void GetInitiatorType(nsAString& aInitiatorType) const 1.48 + { 1.49 + aInitiatorType = mInitiatorType; 1.50 + } 1.51 + 1.52 + void SetInitiatorType(const nsAString& aInitiatorType) 1.53 + { 1.54 + mInitiatorType = aInitiatorType; 1.55 + } 1.56 + 1.57 + DOMHighResTimeStamp FetchStart() const { 1.58 + return mTiming 1.59 + ? mTiming->FetchStartHighRes() 1.60 + : 0; 1.61 + } 1.62 + 1.63 + DOMHighResTimeStamp RedirectStart() const { 1.64 + // We have to check if all the redirect URIs had the same origin (since 1.65 + // there is no check in RedirectEndHighRes()) 1.66 + return mTiming && mTiming->IsSameOriginAsReferral() 1.67 + ? mTiming->RedirectStartHighRes() 1.68 + : 0; 1.69 + } 1.70 + 1.71 + DOMHighResTimeStamp RedirectEnd() const { 1.72 + // We have to check if all the redirect URIs had the same origin (since 1.73 + // there is no check in RedirectEndHighRes()) 1.74 + return mTiming && mTiming->IsSameOriginAsReferral() 1.75 + ? mTiming->RedirectEndHighRes() 1.76 + : 0; 1.77 + } 1.78 + 1.79 + DOMHighResTimeStamp DomainLookupStart() const { 1.80 + return mTiming && mTiming->IsSameOriginAsReferral() 1.81 + ? mTiming->DomainLookupStartHighRes() 1.82 + : 0; 1.83 + } 1.84 + 1.85 + DOMHighResTimeStamp DomainLookupEnd() const { 1.86 + return mTiming && mTiming->IsSameOriginAsReferral() 1.87 + ? mTiming->DomainLookupEndHighRes() 1.88 + : 0; 1.89 + } 1.90 + 1.91 + DOMHighResTimeStamp ConnectStart() const { 1.92 + return mTiming && mTiming->IsSameOriginAsReferral() 1.93 + ? mTiming->ConnectStartHighRes() 1.94 + : 0; 1.95 + } 1.96 + 1.97 + DOMHighResTimeStamp ConnectEnd() const { 1.98 + return mTiming && mTiming->IsSameOriginAsReferral() 1.99 + ? mTiming->ConnectEndHighRes() 1.100 + : 0; 1.101 + } 1.102 + 1.103 + DOMHighResTimeStamp RequestStart() const { 1.104 + return mTiming && mTiming->IsSameOriginAsReferral() 1.105 + ? mTiming->RequestStartHighRes() 1.106 + : 0; 1.107 + } 1.108 + 1.109 + DOMHighResTimeStamp ResponseStart() const { 1.110 + return mTiming && mTiming->IsSameOriginAsReferral() 1.111 + ? mTiming->ResponseStartHighRes() 1.112 + : 0; 1.113 + } 1.114 + 1.115 + DOMHighResTimeStamp ResponseEnd() const { 1.116 + return mTiming 1.117 + ? mTiming->ResponseEndHighRes() 1.118 + : 0; 1.119 + } 1.120 + 1.121 + DOMHighResTimeStamp SecureConnectionStart() const 1.122 + { 1.123 + // This measurement is not available for Navigation Timing either. 1.124 + // There is a different bug submitted for it. 1.125 + return 0; 1.126 + } 1.127 + 1.128 +protected: 1.129 + nsString mInitiatorType; 1.130 + nsRefPtr<nsPerformanceTiming> mTiming; 1.131 +}; 1.132 + 1.133 +} // namespace dom 1.134 +} // namespace mozilla 1.135 + 1.136 +#endif /* mozilla_dom_PerformanceResourceTiming_h___ */