Changeset 228053 in webkit
- Timestamp:
- Feb 4, 2018 6:18:37 PM (6 years ago)
- Location:
- branches/safari-605-branch
- Files:
-
- 4 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-605-branch/LayoutTests/ChangeLog
r228020 r228053 1 2018-02-04 Jason Marcell <jmarcell@apple.com> 2 3 Cherry-pick r227926. rdar://problem/37145475 4 5 2018-01-31 Ryosuke Niwa <rniwa@webkit.org> 6 7 Release assertion in Performance::resourceTimingBufferFullTimerFired when the resource timing buffer is shrunk 8 https://bugs.webkit.org/show_bug.cgi?id=182319 9 <rdar://problem/36904312> 10 11 Reviewed by Chris Dumez. 12 13 Added regression tests for shrinking the resoruce timing buffer and queuing a new resource timing entry while 14 resourcetimingbufferfull event is being dispatched. 15 16 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry-expected.txt: Added. 17 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry.html: Added. 18 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash-expected.txt: Added. 19 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html: Added. 20 21 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash-expected.txt: Added. 22 * http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html: Added. 23 1 24 2018-02-02 Ryan Haddad <ryanhaddad@apple.com> 2 25 -
branches/safari-605-branch/Source/WebCore/ChangeLog
r227923 r228053 1 2018-02-04 Jason Marcell <jmarcell@apple.com> 2 3 Cherry-pick r227926. rdar://problem/37145475 4 5 2018-01-31 Ryosuke Niwa <rniwa@webkit.org> 6 7 Release assertion in Performance::resourceTimingBufferFullTimerFired when the resource timing buffer is shrunk 8 https://bugs.webkit.org/show_bug.cgi?id=182319 9 <rdar://problem/36904312> 10 11 Reviewed by Chris Dumez. 12 13 The crash was caused by a wrong release assertion. Handle author scripts shrinking the resource timing buffer 14 while resourcetimingbufferfull event is being dispatched. 15 16 Also fixed a bug that a superflous resourcetimingbufferfull event will be fired when new resource timing entries 17 are queued while resourcetimingbufferfull event is being dispatched. 18 19 Test: http/tests/performance/performance-resource-timing-resourcetimingbufferfull-queue-resource-entry.html 20 http/tests/performance/performance-resource-timing-resourcetimingbufferfull-shrinking-buffer-crash.html 21 22 * page/Performance.cpp: 23 (WebCore::Performance::resourceTimingBufferFullTimerFired): 24 1 25 2018-01-31 Jason Marcell <jmarcell@apple.com> 2 26 -
branches/safari-605-branch/Source/WebCore/page/Performance.cpp
r226688 r228053 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.