mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-04 06:17:30 +09:00
DevTools - network - implement the secureConnectionStart property for the PerformanceTiming
https://github.com/MoonchildProductions/moebius/pull/116 ("/testing" and "/toolkit" in in the previous commit)
This commit is contained in:
parent
38e95f9e35
commit
54f2e6eafd
32 changed files with 263 additions and 13 deletions
|
|
@ -200,7 +200,7 @@ PerformanceMainThread::IsPerformanceTimingAttribute(const nsAString& aName)
|
|||
static const char* attributes[] =
|
||||
{"navigationStart", "unloadEventStart", "unloadEventEnd", "redirectStart",
|
||||
"redirectEnd", "fetchStart", "domainLookupStart", "domainLookupEnd",
|
||||
"connectStart", "connectEnd", "requestStart", "responseStart",
|
||||
"connectStart", "secureConnectionStart", "connectEnd", "requestStart", "responseStart",
|
||||
"responseEnd", "domLoading", "domInteractive",
|
||||
"domContentLoadedEventStart", "domContentLoadedEventEnd", "domComplete",
|
||||
"loadEventStart", "loadEventEnd", nullptr};
|
||||
|
|
@ -249,6 +249,9 @@ PerformanceMainThread::GetPerformanceTimingFromString(const nsAString& aProperty
|
|||
if (aProperty.EqualsLiteral("connectStart")) {
|
||||
return Timing()->ConnectStart();
|
||||
}
|
||||
if (aProperty.EqualsLiteral("secureConnectionStart")) {
|
||||
return Timing()->SecureConnectionStart();
|
||||
}
|
||||
if (aProperty.EqualsLiteral("connectEnd")) {
|
||||
return Timing()->ConnectEnd();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,9 +128,9 @@ public:
|
|||
|
||||
DOMHighResTimeStamp SecureConnectionStart() const
|
||||
{
|
||||
// This measurement is not available for Navigation Timing either.
|
||||
// There is a different bug submitted for it.
|
||||
return 0;
|
||||
return mTiming && mTiming->TimingAllowed()
|
||||
? mTiming->SecureConnectionStartHighRes()
|
||||
: 0;
|
||||
}
|
||||
|
||||
virtual const PerformanceResourceTiming* ToResourceTiming() const override
|
||||
|
|
|
|||
|
|
@ -63,12 +63,40 @@ PerformanceTiming::InitializeTimingInfo(nsITimedChannel* aChannel)
|
|||
aChannel->GetDomainLookupStart(&mDomainLookupStart);
|
||||
aChannel->GetDomainLookupEnd(&mDomainLookupEnd);
|
||||
aChannel->GetConnectStart(&mConnectStart);
|
||||
aChannel->GetSecureConnectionStart(&mSecureConnectionStart);
|
||||
aChannel->GetConnectEnd(&mConnectEnd);
|
||||
aChannel->GetRequestStart(&mRequestStart);
|
||||
aChannel->GetResponseStart(&mResponseStart);
|
||||
aChannel->GetCacheReadStart(&mCacheReadStart);
|
||||
aChannel->GetResponseEnd(&mResponseEnd);
|
||||
aChannel->GetCacheReadEnd(&mCacheReadEnd);
|
||||
|
||||
// the performance timing api essentially requires that the event timestamps
|
||||
// are >= asyncOpen().. but in truth the browser engages in a number of
|
||||
// speculative activities that sometimes mean connections and lookups begin
|
||||
// earlier. Workaround that here by just using asyncOpen as the minimum
|
||||
// timestamp for dns and connection info.
|
||||
if (!mAsyncOpen.IsNull()) {
|
||||
if (!mDomainLookupStart.IsNull() && mDomainLookupStart < mAsyncOpen) {
|
||||
mDomainLookupStart = mAsyncOpen;
|
||||
}
|
||||
|
||||
if (!mDomainLookupEnd.IsNull() && mDomainLookupEnd < mAsyncOpen) {
|
||||
mDomainLookupEnd = mAsyncOpen;
|
||||
}
|
||||
|
||||
if (!mConnectStart.IsNull() && mConnectStart < mAsyncOpen) {
|
||||
mConnectStart = mAsyncOpen;
|
||||
}
|
||||
|
||||
if (!mSecureConnectionStart.IsNull() && mSecureConnectionStart < mAsyncOpen) {
|
||||
mSecureConnectionStart = mAsyncOpen;
|
||||
}
|
||||
|
||||
if (!mConnectEnd.IsNull() && mConnectEnd < mAsyncOpen) {
|
||||
mConnectEnd = mAsyncOpen;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -273,6 +301,22 @@ PerformanceTiming::ConnectStart()
|
|||
return static_cast<int64_t>(ConnectStartHighRes());
|
||||
}
|
||||
|
||||
DOMHighResTimeStamp
|
||||
PerformanceTiming::SecureConnectionStartHighRes()
|
||||
{
|
||||
if (!nsContentUtils::IsPerformanceTimingEnabled() || !IsInitialized()) {
|
||||
return mZeroTime;
|
||||
}
|
||||
return mSecureConnectionStart.IsNull() ? mZeroTime
|
||||
: TimeStampToDOMHighRes(mSecureConnectionStart);
|
||||
}
|
||||
|
||||
DOMTimeMilliSec
|
||||
PerformanceTiming::SecureConnectionStart()
|
||||
{
|
||||
return static_cast<int64_t>(SecureConnectionStartHighRes());
|
||||
}
|
||||
|
||||
DOMHighResTimeStamp
|
||||
PerformanceTiming::ConnectEndHighRes()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ public:
|
|||
DOMHighResTimeStamp DomainLookupStartHighRes();
|
||||
DOMHighResTimeStamp DomainLookupEndHighRes();
|
||||
DOMHighResTimeStamp ConnectStartHighRes();
|
||||
DOMHighResTimeStamp SecureConnectionStartHighRes();
|
||||
DOMHighResTimeStamp ConnectEndHighRes();
|
||||
DOMHighResTimeStamp RequestStartHighRes();
|
||||
DOMHighResTimeStamp ResponseStartHighRes();
|
||||
|
|
@ -173,6 +174,7 @@ public:
|
|||
DOMTimeMilliSec DomainLookupStart();
|
||||
DOMTimeMilliSec DomainLookupEnd();
|
||||
DOMTimeMilliSec ConnectStart();
|
||||
DOMTimeMilliSec SecureConnectionStart();
|
||||
DOMTimeMilliSec ConnectEnd();
|
||||
DOMTimeMilliSec RequestStart();
|
||||
DOMTimeMilliSec ResponseStart();
|
||||
|
|
@ -255,6 +257,7 @@ private:
|
|||
TimeStamp mDomainLookupStart;
|
||||
TimeStamp mDomainLookupEnd;
|
||||
TimeStamp mConnectStart;
|
||||
TimeStamp mSecureConnectionStart;
|
||||
TimeStamp mConnectEnd;
|
||||
TimeStamp mRequestStart;
|
||||
TimeStamp mResponseStart;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue