dom/base/PerformanceResourceTiming.h

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:0801fe35ff6f
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 #ifndef mozilla_dom_PerformanceResourceTiming_h___
7 #define mozilla_dom_PerformanceResourceTiming_h___
8
9 #include "nsCOMPtr.h"
10 #include "nsPerformance.h"
11 #include "nsIChannel.h"
12 #include "nsITimedChannel.h"
13 #include "nsDOMNavigationTiming.h"
14 #include "PerformanceEntry.h"
15
16 namespace mozilla {
17 namespace dom {
18
19 // http://www.w3.org/TR/resource-timing/#performanceresourcetiming
20 class PerformanceResourceTiming MOZ_FINAL : public PerformanceEntry
21 {
22 public:
23 typedef mozilla::TimeStamp TimeStamp;
24
25 NS_DECL_ISUPPORTS_INHERITED
26 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(
27 PerformanceResourceTiming,
28 PerformanceEntry)
29
30 PerformanceResourceTiming(nsPerformanceTiming* aPerformanceTiming,
31 nsPerformance* aPerformance);
32 virtual ~PerformanceResourceTiming();
33
34 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
35
36
37 virtual DOMHighResTimeStamp StartTime() const;
38
39 virtual DOMHighResTimeStamp Duration() const
40 {
41 return ResponseEnd() - StartTime();
42 }
43
44 void GetInitiatorType(nsAString& aInitiatorType) const
45 {
46 aInitiatorType = mInitiatorType;
47 }
48
49 void SetInitiatorType(const nsAString& aInitiatorType)
50 {
51 mInitiatorType = aInitiatorType;
52 }
53
54 DOMHighResTimeStamp FetchStart() const {
55 return mTiming
56 ? mTiming->FetchStartHighRes()
57 : 0;
58 }
59
60 DOMHighResTimeStamp RedirectStart() const {
61 // We have to check if all the redirect URIs had the same origin (since
62 // there is no check in RedirectEndHighRes())
63 return mTiming && mTiming->IsSameOriginAsReferral()
64 ? mTiming->RedirectStartHighRes()
65 : 0;
66 }
67
68 DOMHighResTimeStamp RedirectEnd() const {
69 // We have to check if all the redirect URIs had the same origin (since
70 // there is no check in RedirectEndHighRes())
71 return mTiming && mTiming->IsSameOriginAsReferral()
72 ? mTiming->RedirectEndHighRes()
73 : 0;
74 }
75
76 DOMHighResTimeStamp DomainLookupStart() const {
77 return mTiming && mTiming->IsSameOriginAsReferral()
78 ? mTiming->DomainLookupStartHighRes()
79 : 0;
80 }
81
82 DOMHighResTimeStamp DomainLookupEnd() const {
83 return mTiming && mTiming->IsSameOriginAsReferral()
84 ? mTiming->DomainLookupEndHighRes()
85 : 0;
86 }
87
88 DOMHighResTimeStamp ConnectStart() const {
89 return mTiming && mTiming->IsSameOriginAsReferral()
90 ? mTiming->ConnectStartHighRes()
91 : 0;
92 }
93
94 DOMHighResTimeStamp ConnectEnd() const {
95 return mTiming && mTiming->IsSameOriginAsReferral()
96 ? mTiming->ConnectEndHighRes()
97 : 0;
98 }
99
100 DOMHighResTimeStamp RequestStart() const {
101 return mTiming && mTiming->IsSameOriginAsReferral()
102 ? mTiming->RequestStartHighRes()
103 : 0;
104 }
105
106 DOMHighResTimeStamp ResponseStart() const {
107 return mTiming && mTiming->IsSameOriginAsReferral()
108 ? mTiming->ResponseStartHighRes()
109 : 0;
110 }
111
112 DOMHighResTimeStamp ResponseEnd() const {
113 return mTiming
114 ? mTiming->ResponseEndHighRes()
115 : 0;
116 }
117
118 DOMHighResTimeStamp SecureConnectionStart() const
119 {
120 // This measurement is not available for Navigation Timing either.
121 // There is a different bug submitted for it.
122 return 0;
123 }
124
125 protected:
126 nsString mInitiatorType;
127 nsRefPtr<nsPerformanceTiming> mTiming;
128 };
129
130 } // namespace dom
131 } // namespace mozilla
132
133 #endif /* mozilla_dom_PerformanceResourceTiming_h___ */

mercurial