Chromium Code Reviews| 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 return entries; | 126 return entries; |
| 127 } | 127 } |
| 128 | 128 |
| 129 PerformanceEntryVector PerformanceBase::getEntriesByType( | 129 PerformanceEntryVector PerformanceBase::getEntriesByType( |
| 130 const String& entryType) { | 130 const String& entryType) { |
| 131 PerformanceEntryVector entries; | 131 PerformanceEntryVector entries; |
| 132 PerformanceEntry::EntryType type = | 132 PerformanceEntry::EntryType type = |
| 133 PerformanceEntry::toEntryTypeEnum(entryType); | 133 PerformanceEntry::toEntryTypeEnum(entryType); |
| 134 | 134 |
| 135 switch (type) { | 135 switch (type) { |
| 136 case PerformanceEntry::Invalid: | |
| 137 return entries; | |
| 138 case PerformanceEntry::LongTask: | |
| 139 // Unsupported for LongTask. Per the spec, Long task entries can only be | |
| 140 // accessed via Performance Observer. No separate buffer is maintained. | |
| 141 return entries; | |
| 142 case PerformanceEntry::Resource: | 136 case PerformanceEntry::Resource: |
| 143 for (const auto& resource : m_resourceTimingBuffer) | 137 for (const auto& resource : m_resourceTimingBuffer) |
| 144 entries.append(resource); | 138 entries.append(resource); |
| 145 break; | 139 break; |
| 146 case PerformanceEntry::Navigation: | 140 case PerformanceEntry::Navigation: |
| 147 if (m_navigationTiming) | 141 if (m_navigationTiming) |
| 148 entries.append(m_navigationTiming); | 142 entries.append(m_navigationTiming); |
| 149 break; | 143 break; |
| 150 case PerformanceEntry::Composite: | 144 case PerformanceEntry::Composite: |
| 151 case PerformanceEntry::Render: | 145 case PerformanceEntry::Render: |
| 152 for (const auto& frame : m_frameTimingBuffer) { | 146 for (const auto& frame : m_frameTimingBuffer) { |
| 153 if (type == frame->entryTypeEnum()) { | 147 if (type == frame->entryTypeEnum()) { |
| 154 entries.append(frame); | 148 entries.append(frame); |
| 155 } | 149 } |
| 156 } | 150 } |
| 157 break; | 151 break; |
| 158 case PerformanceEntry::Mark: | 152 case PerformanceEntry::Mark: |
| 159 if (m_userTiming) | 153 if (m_userTiming) |
| 160 entries.appendVector(m_userTiming->getMarks()); | 154 entries.appendVector(m_userTiming->getMarks()); |
| 161 break; | 155 break; |
| 162 case PerformanceEntry::Measure: | 156 case PerformanceEntry::Measure: |
| 163 if (m_userTiming) | 157 if (m_userTiming) |
| 164 entries.appendVector(m_userTiming->getMeasures()); | 158 entries.appendVector(m_userTiming->getMeasures()); |
| 165 break; | 159 break; |
| 160 // Unsupported for LongTask, TaskAttribution. | |
| 161 // Per the spec, these entries can only be accessed via | |
| 162 // Performance Observer. No separate buffer is maintained. | |
| 163 case PerformanceEntry::LongTask: | |
| 164 break; | |
| 165 case PerformanceEntry::TaskAttribution: | |
| 166 break; | |
| 167 case PerformanceEntry::Invalid: | |
| 168 break; | |
|
Yoav Weiss
2017/01/06 10:13:05
Hmm, this is according to spec: https://w3c.github
| |
| 166 } | 169 } |
| 167 | 170 |
| 168 std::sort(entries.begin(), entries.end(), | 171 std::sort(entries.begin(), entries.end(), |
| 169 PerformanceEntry::startTimeCompareLessThan); | 172 PerformanceEntry::startTimeCompareLessThan); |
| 170 return entries; | 173 return entries; |
| 171 } | 174 } |
| 172 | 175 |
| 173 PerformanceEntryVector PerformanceBase::getEntriesByName( | 176 PerformanceEntryVector PerformanceBase::getEntriesByName( |
| 174 const String& name, | 177 const String& name, |
| 175 const String& entryType) { | 178 const String& entryType) { |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 421 dispatchEvent(Event::create(EventTypeNames::frametimingbufferfull)); | 424 dispatchEvent(Event::create(EventTypeNames::frametimingbufferfull)); |
| 422 } | 425 } |
| 423 | 426 |
| 424 bool PerformanceBase::isFrameTimingBufferFull() { | 427 bool PerformanceBase::isFrameTimingBufferFull() { |
| 425 return m_frameTimingBuffer.size() >= m_frameTimingBufferSize; | 428 return m_frameTimingBuffer.size() >= m_frameTimingBufferSize; |
| 426 } | 429 } |
| 427 | 430 |
| 428 void PerformanceBase::addLongTaskTiming(double startTime, | 431 void PerformanceBase::addLongTaskTiming(double startTime, |
| 429 double endTime, | 432 double endTime, |
| 430 const String& name, | 433 const String& name, |
| 431 const String& culpritFrameSrc, | 434 const String& frameSrc, |
| 432 const String& culpritFrameId, | 435 const String& frameId, |
| 433 const String& culpritFrameName) { | 436 const String& frameName) { |
| 434 if (!hasObserverFor(PerformanceEntry::LongTask)) | 437 if (!hasObserverFor(PerformanceEntry::LongTask)) |
| 435 return; | 438 return; |
| 436 PerformanceEntry* entry = PerformanceLongTaskTiming::create( | 439 PerformanceEntry* entry = PerformanceLongTaskTiming::create( |
| 437 monotonicTimeToDOMHighResTimeStamp(startTime), | 440 monotonicTimeToDOMHighResTimeStamp(startTime), |
| 438 monotonicTimeToDOMHighResTimeStamp(endTime), name, culpritFrameSrc, | 441 monotonicTimeToDOMHighResTimeStamp(endTime), name, frameSrc, frameId, |
| 439 culpritFrameId, culpritFrameName); | 442 frameName); |
| 440 notifyObserversOfEntry(*entry); | 443 notifyObserversOfEntry(*entry); |
| 441 } | 444 } |
| 442 | 445 |
| 443 void PerformanceBase::mark(const String& markName, | 446 void PerformanceBase::mark(const String& markName, |
| 444 ExceptionState& exceptionState) { | 447 ExceptionState& exceptionState) { |
| 445 if (!m_userTiming) | 448 if (!m_userTiming) |
| 446 m_userTiming = UserTiming::create(*this); | 449 m_userTiming = UserTiming::create(*this); |
| 447 if (PerformanceEntry* entry = m_userTiming->mark(markName, exceptionState)) | 450 if (PerformanceEntry* entry = m_userTiming->mark(markName, exceptionState)) |
| 448 notifyObserversOfEntry(*entry); | 451 notifyObserversOfEntry(*entry); |
| 449 } | 452 } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 572 visitor->trace(m_resourceTimingBuffer); | 575 visitor->trace(m_resourceTimingBuffer); |
| 573 visitor->trace(m_navigationTiming); | 576 visitor->trace(m_navigationTiming); |
| 574 visitor->trace(m_userTiming); | 577 visitor->trace(m_userTiming); |
| 575 visitor->trace(m_observers); | 578 visitor->trace(m_observers); |
| 576 visitor->trace(m_activeObservers); | 579 visitor->trace(m_activeObservers); |
| 577 visitor->trace(m_suspendedObservers); | 580 visitor->trace(m_suspendedObservers); |
| 578 EventTargetWithInlineData::trace(visitor); | 581 EventTargetWithInlineData::trace(visitor); |
| 579 } | 582 } |
| 580 | 583 |
| 581 } // namespace blink | 584 } // namespace blink |
| OLD | NEW |