Changeset 227926 in webkit
- Timestamp:
- Jan 31, 2018 1:07:36 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r227920 r227926 1 2018-01-31 Ryosuke Niwa <rniwa@webkit.org> 2 3 Release assertion in Performance::resourceTimingBufferFullTimerFired when the resource timing buffer is shrunk 4 https://bugs.webkit.org/show_bug.cgi?id=182319 5 <rdar://problem/36904312> 6 7 Reviewed by Chris Dumez. 8 9 Added regression tests for shrinking the resoruce timing buffer and queuing a new resource timing entry while 10 resourcetimingbufferfull event is being dispatched. 11 12 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry-expected.txt: Added. 13 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry.html: Added. 14 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash-expected.txt: Added. 15 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html: Added. 16 17 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash-expected.txt: Added. 18 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html: Added. 19 1 20 2018-01-31 Matt Lewis <jlewis3@apple.com> 2 21 -
trunk/Source/WebCore/ChangeLog
r227909 r227926 1 2018-01-31 Ryosuke Niwa <rniwa@webkit.org> 2 3 Release assertion in Performance::resourceTimingBufferFullTimerFired when the resource timing buffer is shrunk 4 https://bugs.webkit.org/show_bug.cgi?id=182319 5 <rdar://problem/36904312> 6 7 Reviewed by Chris Dumez. 8 9 The crash was caused by a wrong release assertion. Handle author scripts shrinking the resource timing buffer 10 while resourcetimingbufferfull event is being dispatched. 11 12 Also fixed a bug that a superflous resourcetimingbufferfull event will be fired when new resource timing entries 13 are queued while resourcetimingbufferfull event is being dispatched. 14 15 Test: http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry.html 16 http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html 17 18 * page/Performance.cpp: 19 (WebCore::Performance::resourceTimingBufferFullTimerFired): 20 1 21 2018-01-31 Youenn Fablet <youenn@apple.com> 2 22 -
trunk/Source/WebCore/page/Performance.cpp
r226617 r227926 214 214 while (!m_backupResourceTimingBuffer.isEmpty()) { 215 215 auto backupBuffer = WTFMove(m_backupResourceTimingBuffer); 216 ASSERT(m_backupResourceTimingBuffer.isEmpty()); 216 217 217 218 m_resourceTimingBufferFullFlag = true; 218 219 dispatchEvent(Event::create(eventNames().resourcetimingbufferfullEvent, true, false)); 219 220 220 RELEASE_ASSERT(m_resourceTimingBufferSize >= m_resourceTimingBuffer.size()); 221 unsigned remainingBufferSize = m_resourceTimingBufferSize - m_resourceTimingBuffer.size(); 222 bool bufferIsStillFullAfterDispatchingEvent = !remainingBufferSize; 223 if (bufferIsStillFullAfterDispatchingEvent) { 221 if (m_resourceTimingBufferFullFlag) { 224 222 for (auto& entry : backupBuffer) 225 223 queueEntry(*entry); … … 227 225 for (auto& entry : m_backupResourceTimingBuffer) 228 226 queueEntry(*entry); 227 m_backupResourceTimingBuffer.clear(); 229 228 break; 230 229 } 231 230 232 unsigned i = 0; 231 // More entries may have added while dispatching resourcetimingbufferfull event. 232 backupBuffer.appendVector(m_backupResourceTimingBuffer); 233 m_backupResourceTimingBuffer.clear(); 234 233 235 for (auto& entry : backupBuffer) { 234 if ( i < remainingBufferSize) {236 if (!isResourceTimingBufferFull()) { 235 237 m_resourceTimingBuffer.append(entry.copyRef()); 236 238 queueEntry(*entry); 237 239 } else 238 240 m_backupResourceTimingBuffer.append(entry.copyRef()); 239 i++;240 241 } 241 242 }
Note: See TracChangeset
for help on using the changeset viewer.