blob: 41f97e99b41172aa240cc0cdf1e0ad02b9535857 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "platform/network/ResourceLoadTiming.h"
#include "platform/TraceEvent.h"
namespace blink {
ResourceLoadTiming::ResourceLoadTiming()
: m_requestTime(0)
, m_proxyStart(0)
, m_proxyEnd(0)
, m_dnsStart(0)
, m_dnsEnd(0)
, m_connectStart(0)
, m_connectEnd(0)
, m_workerStart(0)
, m_workerReady(0)
, m_sendStart(0)
, m_sendEnd(0)
, m_receiveHeadersEnd(0)
, m_sslStart(0)
, m_sslEnd(0)
, m_pushStart(0)
, m_pushEnd(0)
{
}
PassRefPtr<ResourceLoadTiming> ResourceLoadTiming::create()
{
return adoptRef(new ResourceLoadTiming);
}
PassRefPtr<ResourceLoadTiming> ResourceLoadTiming::deepCopy()
{
RefPtr<ResourceLoadTiming> timing = create();
timing->m_requestTime = m_requestTime;
timing->m_proxyStart = m_proxyStart;
timing->m_proxyEnd = m_proxyEnd;
timing->m_dnsStart = m_dnsStart;
timing->m_dnsEnd = m_dnsEnd;
timing->m_connectStart = m_connectStart;
timing->m_connectEnd = m_connectEnd;
timing->m_workerStart = m_workerStart;
timing->m_workerReady = m_workerReady;
timing->m_sendStart = m_sendStart;
timing->m_sendEnd = m_sendEnd;
timing->m_receiveHeadersEnd = m_receiveHeadersEnd;
timing->m_sslStart = m_sslStart;
timing->m_sslEnd = m_sslEnd;
timing->m_pushStart = m_pushStart;
timing->m_pushEnd = m_pushEnd;
return timing.release();
}
bool ResourceLoadTiming::operator==(const ResourceLoadTiming& other) const
{
return m_requestTime == other.m_requestTime
&& m_proxyStart == other.m_proxyStart
&& m_proxyEnd == other.m_proxyEnd
&& m_dnsStart == other.m_dnsStart
&& m_dnsEnd == other.m_dnsEnd
&& m_connectStart == other.m_connectStart
&& m_connectEnd == other.m_connectEnd
&& m_workerStart == other.m_workerStart
&& m_workerReady == other.m_workerReady
&& m_sendStart == other.m_sendStart
&& m_sendEnd == other.m_sendEnd
&& m_receiveHeadersEnd == other.m_receiveHeadersEnd
&& m_sslStart == other.m_sslStart
&& m_sslEnd == other.m_sslEnd
&& m_pushStart == other.m_pushStart
&& m_pushEnd == other.m_pushEnd;
}
bool ResourceLoadTiming::operator!=(const ResourceLoadTiming& other) const
{
return !(*this == other);
}
void ResourceLoadTiming::setDnsStart(double dnsStart)
{
m_dnsStart = dnsStart;
}
void ResourceLoadTiming::setRequestTime(double requestTime)
{
m_requestTime = requestTime;
}
void ResourceLoadTiming::setProxyStart(double proxyStart)
{
m_proxyStart = proxyStart;
}
void ResourceLoadTiming::setProxyEnd(double proxyEnd)
{
m_proxyEnd = proxyEnd;
}
void ResourceLoadTiming::setDnsEnd(double dnsEnd)
{
m_dnsEnd = dnsEnd;
}
void ResourceLoadTiming::setConnectStart(double connectStart)
{
m_connectStart = connectStart;
}
void ResourceLoadTiming::setConnectEnd(double connectEnd)
{
m_connectEnd = connectEnd;
}
void ResourceLoadTiming::setWorkerStart(double workerStart)
{
m_workerStart = workerStart;
}
void ResourceLoadTiming::setWorkerReady(double workerReady)
{
m_workerReady = workerReady;
}
void ResourceLoadTiming::setSendStart(double sendStart)
{
TRACE_EVENT_MARK_WITH_TIMESTAMP0("blink.user_timing", "requestStart", sendStart);
m_sendStart = sendStart;
}
void ResourceLoadTiming::setSendEnd(double sendEnd)
{
m_sendEnd = sendEnd;
}
void ResourceLoadTiming::setReceiveHeadersEnd(double receiveHeadersEnd)
{
m_receiveHeadersEnd = receiveHeadersEnd;
}
void ResourceLoadTiming::setSslStart(double sslStart)
{
m_sslStart = sslStart;
}
void ResourceLoadTiming::setSslEnd(double sslEnd)
{
m_sslEnd = sslEnd;
}
void ResourceLoadTiming::setPushStart(double pushStart)
{
m_pushStart = pushStart;
}
void ResourceLoadTiming::setPushEnd(double pushEnd)
{
m_pushEnd = pushEnd;
}
double ResourceLoadTiming::calculateMillisecondDelta(double time) const
{
return time ? (time - m_requestTime) * 1000 : -1;
}
} // namespace blink