dom/base/PerformanceResourceTiming.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     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/. */
     6 #ifndef mozilla_dom_PerformanceResourceTiming_h___
     7 #define mozilla_dom_PerformanceResourceTiming_h___
     9 #include "nsCOMPtr.h"
    10 #include "nsPerformance.h"
    11 #include "nsIChannel.h"
    12 #include "nsITimedChannel.h"
    13 #include "nsDOMNavigationTiming.h"
    14 #include "PerformanceEntry.h"
    16 namespace mozilla {
    17 namespace dom {
    19 // http://www.w3.org/TR/resource-timing/#performanceresourcetiming
    20 class PerformanceResourceTiming MOZ_FINAL : public PerformanceEntry
    21 {
    22 public:
    23   typedef mozilla::TimeStamp TimeStamp;
    25   NS_DECL_ISUPPORTS_INHERITED
    26   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(
    27       PerformanceResourceTiming,
    28       PerformanceEntry)
    30   PerformanceResourceTiming(nsPerformanceTiming* aPerformanceTiming,
    31                             nsPerformance* aPerformance);
    32   virtual ~PerformanceResourceTiming();
    34   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
    37   virtual DOMHighResTimeStamp StartTime() const;
    39   virtual DOMHighResTimeStamp Duration() const
    40   {
    41     return ResponseEnd() - StartTime();
    42   }
    44   void GetInitiatorType(nsAString& aInitiatorType) const
    45   {
    46     aInitiatorType = mInitiatorType;
    47   }
    49   void SetInitiatorType(const nsAString& aInitiatorType)
    50   {
    51     mInitiatorType = aInitiatorType;
    52   }
    54   DOMHighResTimeStamp FetchStart() const {
    55     return mTiming
    56         ? mTiming->FetchStartHighRes()
    57         : 0;
    58   }
    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   }
    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   }
    76   DOMHighResTimeStamp DomainLookupStart() const {
    77     return mTiming && mTiming->IsSameOriginAsReferral()
    78         ? mTiming->DomainLookupStartHighRes()
    79         : 0;
    80   }
    82   DOMHighResTimeStamp DomainLookupEnd() const {
    83     return mTiming && mTiming->IsSameOriginAsReferral()
    84         ? mTiming->DomainLookupEndHighRes()
    85         : 0;
    86   }
    88   DOMHighResTimeStamp ConnectStart() const {
    89     return mTiming && mTiming->IsSameOriginAsReferral()
    90         ? mTiming->ConnectStartHighRes()
    91         : 0;
    92   }
    94   DOMHighResTimeStamp ConnectEnd() const {
    95     return mTiming && mTiming->IsSameOriginAsReferral()
    96         ? mTiming->ConnectEndHighRes()
    97         : 0;
    98   }
   100   DOMHighResTimeStamp RequestStart() const {
   101     return mTiming && mTiming->IsSameOriginAsReferral()
   102         ? mTiming->RequestStartHighRes()
   103         : 0;
   104   }
   106   DOMHighResTimeStamp ResponseStart() const {
   107     return mTiming && mTiming->IsSameOriginAsReferral()
   108         ? mTiming->ResponseStartHighRes()
   109         : 0;
   110   }
   112   DOMHighResTimeStamp ResponseEnd() const {
   113     return mTiming
   114         ? mTiming->ResponseEndHighRes()
   115         : 0;
   116   }
   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   }
   125 protected:
   126   nsString mInitiatorType;
   127   nsRefPtr<nsPerformanceTiming> mTiming;
   128 };
   130 } // namespace dom
   131 } // namespace mozilla
   133 #endif /* mozilla_dom_PerformanceResourceTiming_h___ */

mercurial