LCOV - code coverage report
Current view: top level - dom/performance - PerformanceResourceTiming.h (source / functions) Hit Total Coverage
Test: output.info Lines: 16 72 22.2 %
Date: 2017-07-14 16:53:18 Functions: 6 27 22.2 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef mozilla_dom_PerformanceResourceTiming_h___
       8             : #define mozilla_dom_PerformanceResourceTiming_h___
       9             : 
      10             : #include "nsCOMPtr.h"
      11             : #include "nsIChannel.h"
      12             : #include "nsITimedChannel.h"
      13             : #include "Performance.h"
      14             : #include "PerformanceEntry.h"
      15             : #include "PerformanceTiming.h"
      16             : 
      17             : namespace mozilla {
      18             : namespace dom {
      19             : 
      20             : // http://www.w3.org/TR/resource-timing/#performanceresourcetiming
      21             : class PerformanceResourceTiming final : public PerformanceEntry
      22             : {
      23             : public:
      24             :   typedef mozilla::TimeStamp TimeStamp;
      25             : 
      26             :   NS_DECL_ISUPPORTS_INHERITED
      27           2 :   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(
      28             :       PerformanceResourceTiming,
      29             :       PerformanceEntry)
      30             : 
      31             :   PerformanceResourceTiming(PerformanceTiming* aPerformanceTiming,
      32             :                             Performance* aPerformance,
      33             :                             const nsAString& aName);
      34             : 
      35             :   virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
      36             : 
      37             : 
      38             :   virtual DOMHighResTimeStamp StartTime() const override;
      39             : 
      40           0 :   virtual DOMHighResTimeStamp Duration() const override
      41             :   {
      42           0 :     return ResponseEnd() - StartTime();
      43             :   }
      44             : 
      45           0 :   void GetInitiatorType(nsAString& aInitiatorType) const
      46             :   {
      47           0 :     aInitiatorType = mInitiatorType;
      48           0 :   }
      49             : 
      50           2 :   void SetInitiatorType(const nsAString& aInitiatorType)
      51             :   {
      52           2 :     mInitiatorType = aInitiatorType;
      53           2 :   }
      54             : 
      55           0 :   void GetNextHopProtocol(nsAString& aNextHopProtocol) const
      56             :   {
      57           0 :     aNextHopProtocol = mNextHopProtocol;
      58           0 :   }
      59             : 
      60           2 :   void SetNextHopProtocol(const nsAString& aNextHopProtocol)
      61             :   {
      62           2 :     mNextHopProtocol = aNextHopProtocol;
      63           2 :   }
      64             : 
      65           0 :   DOMHighResTimeStamp FetchStart() const {
      66             :     return mTiming
      67           0 :         ? mTiming->FetchStartHighRes()
      68           0 :         : 0;
      69             :   }
      70             : 
      71           0 :   DOMHighResTimeStamp RedirectStart() const {
      72             :     // We have to check if all the redirect URIs had the same origin (since
      73             :     // there is no check in RedirectEndHighRes())
      74           0 :     return mTiming && mTiming->ShouldReportCrossOriginRedirect()
      75           0 :         ? mTiming->RedirectStartHighRes()
      76           0 :         : 0;
      77             :   }
      78             : 
      79           0 :   DOMHighResTimeStamp RedirectEnd() const {
      80             :     // We have to check if all the redirect URIs had the same origin (since
      81             :     // there is no check in RedirectEndHighRes())
      82           0 :     return mTiming && mTiming->ShouldReportCrossOriginRedirect()
      83           0 :         ? mTiming->RedirectEndHighRes()
      84           0 :         : 0;
      85             :   }
      86             : 
      87           0 :   DOMHighResTimeStamp DomainLookupStart() const {
      88           0 :     return mTiming && mTiming->TimingAllowed()
      89           0 :         ? mTiming->DomainLookupStartHighRes()
      90           0 :         : 0;
      91             :   }
      92             : 
      93           0 :   DOMHighResTimeStamp DomainLookupEnd() const {
      94           0 :     return mTiming && mTiming->TimingAllowed()
      95           0 :         ? mTiming->DomainLookupEndHighRes()
      96           0 :         : 0;
      97             :   }
      98             : 
      99           0 :   DOMHighResTimeStamp ConnectStart() const {
     100           0 :     return mTiming && mTiming->TimingAllowed()
     101           0 :         ? mTiming->ConnectStartHighRes()
     102           0 :         : 0;
     103             :   }
     104             : 
     105           0 :   DOMHighResTimeStamp ConnectEnd() const {
     106           0 :     return mTiming && mTiming->TimingAllowed()
     107           0 :         ? mTiming->ConnectEndHighRes()
     108           0 :         : 0;
     109             :   }
     110             : 
     111           0 :   DOMHighResTimeStamp RequestStart() const {
     112           0 :     return mTiming && mTiming->TimingAllowed()
     113           0 :         ? mTiming->RequestStartHighRes()
     114           0 :         : 0;
     115             :   }
     116             : 
     117           0 :   DOMHighResTimeStamp ResponseStart() const {
     118           0 :     return mTiming && mTiming->TimingAllowed()
     119           0 :         ? mTiming->ResponseStartHighRes()
     120           0 :         : 0;
     121             :   }
     122             : 
     123           0 :   DOMHighResTimeStamp ResponseEnd() const {
     124             :     return mTiming
     125           0 :         ? mTiming->ResponseEndHighRes()
     126           0 :         : 0;
     127             :   }
     128             : 
     129           0 :   DOMHighResTimeStamp SecureConnectionStart() const
     130             :   {
     131             :     // This measurement is not available for Navigation Timing either.
     132             :     // There is a different bug submitted for it.
     133           0 :     return 0;
     134             :   }
     135             : 
     136           0 :   virtual const PerformanceResourceTiming* ToResourceTiming() const override
     137             :   {
     138           0 :     return this;
     139             :   }
     140             : 
     141           0 :   uint64_t TransferSize() const
     142             :   {
     143           0 :     return mTiming && mTiming->TimingAllowed() ? mTransferSize : 0;
     144             :   }
     145             : 
     146           0 :   uint64_t EncodedBodySize() const
     147             :   {
     148           0 :     return mTiming && mTiming->TimingAllowed() ? mEncodedBodySize : 0;
     149             :   }
     150             : 
     151           0 :   uint64_t DecodedBodySize() const
     152             :   {
     153           0 :     return mTiming && mTiming->TimingAllowed() ? mDecodedBodySize : 0;
     154             :   }
     155             : 
     156           2 :   void SetEncodedBodySize(uint64_t aEncodedBodySize)
     157             :   {
     158           2 :     mEncodedBodySize = aEncodedBodySize;
     159           2 :   }
     160             : 
     161           2 :   void SetTransferSize(uint64_t aTransferSize)
     162             :   {
     163           2 :     mTransferSize = aTransferSize;
     164           2 :   }
     165             : 
     166           2 :   void SetDecodedBodySize(uint64_t aDecodedBodySize)
     167             :   {
     168           2 :     mDecodedBodySize = aDecodedBodySize;
     169           2 :   }
     170             : 
     171             : protected:
     172             :   virtual ~PerformanceResourceTiming();
     173             : 
     174             :   nsString mInitiatorType;
     175             :   nsString mNextHopProtocol;
     176             :   RefPtr<PerformanceTiming> mTiming;
     177             :   uint64_t mEncodedBodySize;
     178             :   uint64_t mTransferSize;
     179             :   uint64_t mDecodedBodySize;
     180             : };
     181             : 
     182             : } // namespace dom
     183             : } // namespace mozilla
     184             : 
     185             : #endif /* mozilla_dom_PerformanceResourceTiming_h___ */

Generated by: LCOV version 1.13