OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * Copyright (C) 2012 Intel Inc. All rights reserved. | 3 * Copyright (C) 2012 Intel Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
44 #include "core/timing/PerformanceResourceTiming.h" | 44 #include "core/timing/PerformanceResourceTiming.h" |
45 #include "core/timing/PerformanceUserTiming.h" | 45 #include "core/timing/PerformanceUserTiming.h" |
46 #include "platform/RuntimeEnabledFeatures.h" | 46 #include "platform/RuntimeEnabledFeatures.h" |
47 #include "platform/network/ResourceTimingInfo.h" | 47 #include "platform/network/ResourceTimingInfo.h" |
48 #include "platform/weborigin/SecurityOrigin.h" | 48 #include "platform/weborigin/SecurityOrigin.h" |
49 #include "wtf/CurrentTime.h" | 49 #include "wtf/CurrentTime.h" |
50 #include <algorithm> | 50 #include <algorithm> |
51 | 51 |
52 namespace blink { | 52 namespace blink { |
53 | 53 |
54 namespace { | |
Yoav Weiss
2016/11/22 10:46:32
Is there a reason you picked an extra namespace ra
panicker
2016/11/22 18:31:28
you mean a global static here? I believe anonymous
sunjian
2016/11/22 22:04:42
Acknowledged.
| |
55 | |
56 PerformanceNavigationTiming::PerformanceNavigationType getNavigationType(Navigat ionType type, | |
57 Document* document) { | |
58 if (document && | |
59 document->pageVisibilityState() == PageVisibilityStatePrerender) { | |
60 return PerformanceNavigationTiming::KTypePrerender; | |
61 } | |
62 switch (type) { | |
Yoav Weiss
2016/11/22 10:46:32
What's the reason for translating enums from Navig
panicker
2016/11/22 18:31:28
These are both defined in separate specs for NT1 a
sunjian
2016/11/22 22:04:42
Agree. So i could have added prerender type at a l
panicker
2016/11/22 22:20:50
I may have misunderstood, Yoav I think you were re
| |
63 case NavigationTypeReload: | |
64 return PerformanceNavigationTiming::KTypeReload; | |
65 case NavigationTypeBackForward: | |
66 return PerformanceNavigationTiming::KTypeBackForward; | |
67 default: | |
kinuko
2016/11/22 03:05:22
Prefer not using default but listing up actual enu
sunjian
2016/11/22 22:04:42
Done.
| |
68 return PerformanceNavigationTiming::KTypeNavigate; | |
69 } | |
70 } | |
71 } | |
kinuko
2016/11/22 03:05:22
nit: } // namespace
sunjian
2016/11/22 22:04:42
Done.
| |
72 | |
54 using PerformanceObserverVector = HeapVector<Member<PerformanceObserver>>; | 73 using PerformanceObserverVector = HeapVector<Member<PerformanceObserver>>; |
55 | 74 |
56 static const size_t defaultResourceTimingBufferSize = 150; | 75 static const size_t defaultResourceTimingBufferSize = 150; |
57 static const size_t defaultFrameTimingBufferSize = 150; | 76 static const size_t defaultFrameTimingBufferSize = 150; |
58 | 77 |
59 PerformanceBase::PerformanceBase(double timeOrigin) | 78 PerformanceBase::PerformanceBase(double timeOrigin) |
60 : m_frameTimingBufferSize(defaultFrameTimingBufferSize), | 79 : m_frameTimingBufferSize(defaultFrameTimingBufferSize), |
61 m_resourceTimingBufferSize(defaultResourceTimingBufferSize), | 80 m_resourceTimingBufferSize(defaultResourceTimingBufferSize), |
62 m_userTiming(nullptr), | 81 m_userTiming(nullptr), |
63 m_timeOrigin(timeOrigin), | 82 m_timeOrigin(timeOrigin), |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
329 if (!resourceLoadTiming) | 348 if (!resourceLoadTiming) |
330 return; | 349 return; |
331 double lastRedirectEndTime = documentLoadTiming.redirectEnd(); | 350 double lastRedirectEndTime = documentLoadTiming.redirectEnd(); |
332 double finishTime = documentLoadTiming.loadEventEnd(); | 351 double finishTime = documentLoadTiming.loadEventEnd(); |
333 | 352 |
334 // TODO(sunjian) Implement transfer size. crbug/663187 | 353 // TODO(sunjian) Implement transfer size. crbug/663187 |
335 unsigned long long transferSize = 0; | 354 unsigned long long transferSize = 0; |
336 unsigned long long encodedBodyLength = finalResponse.encodedBodyLength(); | 355 unsigned long long encodedBodyLength = finalResponse.encodedBodyLength(); |
337 unsigned long long decodedBodyLength = finalResponse.decodedBodyLength(); | 356 unsigned long long decodedBodyLength = finalResponse.decodedBodyLength(); |
338 bool didReuseConnection = finalResponse.connectionReused(); | 357 bool didReuseConnection = finalResponse.connectionReused(); |
358 PerformanceNavigationTiming::PerformanceNavigationType type = | |
359 getNavigationType(documentLoader->getNavigationType(), frame->document()); | |
339 | 360 |
340 m_navigationTiming = new PerformanceNavigationTiming( | 361 m_navigationTiming = new PerformanceNavigationTiming( |
341 timeOrigin(), documentLoadTiming.unloadEventStart(), | 362 timeOrigin(), documentLoadTiming.unloadEventStart(), |
342 documentLoadTiming.unloadEventEnd(), documentLoadTiming.loadEventStart(), | 363 documentLoadTiming.unloadEventEnd(), documentLoadTiming.loadEventStart(), |
343 documentLoadTiming.loadEventEnd(), documentLoadTiming.redirectCount(), | 364 documentLoadTiming.loadEventEnd(), documentLoadTiming.redirectCount(), |
344 documentTiming ? documentTiming->domInteractive() : 0, | 365 documentTiming ? documentTiming->domInteractive() : 0, |
345 documentTiming ? documentTiming->domContentLoadedEventStart() : 0, | 366 documentTiming ? documentTiming->domContentLoadedEventStart() : 0, |
346 documentTiming ? documentTiming->domContentLoadedEventEnd() : 0, | 367 documentTiming ? documentTiming->domContentLoadedEventEnd() : 0, |
347 documentTiming ? documentTiming->domComplete() : 0, | 368 documentTiming ? documentTiming->domComplete() : 0, type, |
348 documentLoader->getNavigationType(), documentLoadTiming.redirectStart(), | 369 documentLoadTiming.redirectStart(), documentLoadTiming.redirectEnd(), |
349 documentLoadTiming.redirectEnd(), documentLoadTiming.fetchStart(), | 370 documentLoadTiming.fetchStart(), documentLoadTiming.responseEnd(), |
350 documentLoadTiming.responseEnd(), | |
351 documentLoadTiming.hasCrossOriginRedirect(), | 371 documentLoadTiming.hasCrossOriginRedirect(), |
352 documentLoadTiming.hasSameOriginAsPreviousDocument(), resourceLoadTiming, | 372 documentLoadTiming.hasSameOriginAsPreviousDocument(), resourceLoadTiming, |
353 lastRedirectEndTime, finishTime, transferSize, encodedBodyLength, | 373 lastRedirectEndTime, finishTime, transferSize, encodedBodyLength, |
354 decodedBodyLength, didReuseConnection); | 374 decodedBodyLength, didReuseConnection); |
355 notifyObserversOfEntry(*m_navigationTiming); | 375 notifyObserversOfEntry(*m_navigationTiming); |
356 } | 376 } |
357 | 377 |
358 void PerformanceBase::addResourceTimingBuffer(PerformanceEntry& entry) { | 378 void PerformanceBase::addResourceTimingBuffer(PerformanceEntry& entry) { |
359 m_resourceTimingBuffer.append(&entry); | 379 m_resourceTimingBuffer.append(&entry); |
360 | 380 |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
529 visitor->trace(m_resourceTimingBuffer); | 549 visitor->trace(m_resourceTimingBuffer); |
530 visitor->trace(m_navigationTiming); | 550 visitor->trace(m_navigationTiming); |
531 visitor->trace(m_userTiming); | 551 visitor->trace(m_userTiming); |
532 visitor->trace(m_observers); | 552 visitor->trace(m_observers); |
533 visitor->trace(m_activeObservers); | 553 visitor->trace(m_activeObservers); |
534 visitor->trace(m_suspendedObservers); | 554 visitor->trace(m_suspendedObservers); |
535 EventTargetWithInlineData::trace(visitor); | 555 EventTargetWithInlineData::trace(visitor); |
536 } | 556 } |
537 | 557 |
538 } // namespace blink | 558 } // namespace blink |
OLD | NEW |