Changeset 196313 in webkit
- Timestamp:
- Feb 9, 2016 9:40:43 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r196136 r196313 847 847 Modules/indexeddb/IDBOpenDBRequest.cpp 848 848 Modules/indexeddb/IDBRequest.cpp 849 Modules/indexeddb/IDBRequestCompletionEvent.cpp 849 850 Modules/indexeddb/IDBTransaction.cpp 850 851 Modules/indexeddb/IDBVersionChangeEvent.cpp -
trunk/Source/WebCore/ChangeLog
r196308 r196313 1 2016-02-09 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: IDBOpenDBRequests leak. 4 https://bugs.webkit.org/show_bug.cgi?id=154032 5 6 Reviewed by Alex Christensen. 7 8 No new tests (Currently untestable). 9 10 * CMakeLists.txt: 11 * WebCore.xcodeproj/project.pbxproj: 12 13 Add a simple Event subclass that holds a ref to an IDBRequest, to make sure that we 14 drop the last ref to the request after its last event fires or is otherwise destroyed: 15 * Modules/indexeddb/IDBRequestCompletionEvent.cpp: Added. 16 (WebCore::IDBRequestCompletionEvent::IDBRequestCompletionEvent): 17 * Modules/indexeddb/IDBRequestCompletionEvent.h: Added. 18 (WebCore::IDBRequestCompletionEvent::create): 19 20 * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp: 21 (WebCore::IDBClient::IDBOpenDBRequest::onError): IDBRequestCompletionEvent instead of Event. 22 (WebCore::IDBClient::IDBOpenDBRequest::fireSuccessAfterVersionChangeCommit): Ditto. 23 (WebCore::IDBClient::IDBOpenDBRequest::fireErrorAfterVersionChangeCompletion): Ditto. 24 (WebCore::IDBClient::IDBOpenDBRequest::onSuccess): Ditto. 25 26 * Modules/indexeddb/client/IDBTransactionImpl.cpp: 27 (WebCore::IDBClient::IDBTransaction::dispatchEvent): After setting up the request's 28 completion event to fire, clear the back-ref to the request. 29 1 30 2016-02-09 Commit Queue <commit-queue@webkit.org> 2 31 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp
r194904 r196313 31 31 #include "IDBDatabaseImpl.h" 32 32 #include "IDBError.h" 33 #include "IDBRequestCompletionEvent.h" 33 34 #include "IDBResultData.h" 34 35 #include "IDBTransactionImpl.h" … … 66 67 { 67 68 m_domError = DOMError::create(data.error().name()); 68 enqueueEvent( Event::create(eventNames().errorEvent, true, true));69 enqueueEvent(IDBRequestCompletionEvent::create(eventNames().errorEvent, true, true, *this)); 69 70 } 70 71 … … 85 86 m_transaction->addRequest(*this); 86 87 87 auto event = Event::create(eventNames().successEvent, false, false);88 auto event = IDBRequestCompletionEvent::create(eventNames().successEvent, false, false, *this); 88 89 m_openDatabaseSuccessEvent = &event.get(); 89 90 … … 102 103 103 104 m_transaction->addRequest(*this); 104 enqueueEvent( Event::create(eventNames().errorEvent, true, true));105 enqueueEvent(IDBRequestCompletionEvent::create(eventNames().errorEvent, true, true, *this)); 105 106 } 106 107 … … 126 127 m_readyState = IDBRequestReadyState::Done; 127 128 128 enqueueEvent( Event::create(eventNames().successEvent, false, false));129 enqueueEvent(IDBRequestCompletionEvent::create(eventNames().successEvent, false, false, *this)); 129 130 } 130 131 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp
r195443 r196313 443 443 m_openDBRequest->fireSuccessAfterVersionChangeCommit(); 444 444 } 445 446 m_openDBRequest = nullptr; 445 447 } 446 448 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r196281 r196313 1980 1980 5141298E1C5FD83A0059E714 /* JSIDBCursorWithValueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5141298D1C5FD7E90059E714 /* JSIDBCursorWithValueCustom.cpp */; }; 1981 1981 514129901C601ACC0059E714 /* ScopeGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 5141298F1C601A890059E714 /* ScopeGuard.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1982 514129981C6976900059E714 /* IDBRequestCompletionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514129961C6976150059E714 /* IDBRequestCompletionEvent.cpp */; }; 1983 514129991C6976900059E714 /* IDBRequestCompletionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 514129971C6976150059E714 /* IDBRequestCompletionEvent.h */; }; 1982 1984 5145B1091BC48E2E00E86219 /* IDBResourceIdentifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5145B1071BC4890B00E86219 /* IDBResourceIdentifier.cpp */; }; 1983 1985 5145B10A1BC48E2E00E86219 /* IDBResourceIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 5145B1081BC4890B00E86219 /* IDBResourceIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 9475 9477 5141298D1C5FD7E90059E714 /* JSIDBCursorWithValueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBCursorWithValueCustom.cpp; sourceTree = "<group>"; }; 9476 9478 5141298F1C601A890059E714 /* ScopeGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScopeGuard.h; sourceTree = "<group>"; }; 9479 514129961C6976150059E714 /* IDBRequestCompletionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBRequestCompletionEvent.cpp; sourceTree = "<group>"; }; 9480 514129971C6976150059E714 /* IDBRequestCompletionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBRequestCompletionEvent.h; sourceTree = "<group>"; }; 9477 9481 5145B1071BC4890B00E86219 /* IDBResourceIdentifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBResourceIdentifier.cpp; sourceTree = "<group>"; }; 9478 9482 5145B1081BC4890B00E86219 /* IDBResourceIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBResourceIdentifier.h; sourceTree = "<group>"; }; … … 19482 19486 51645B4F1B9F889B00F789CE /* IDBRequest.h */, 19483 19487 51D719A3181106E00016DC51 /* IDBRequest.idl */, 19488 514129961C6976150059E714 /* IDBRequestCompletionEvent.cpp */, 19489 514129971C6976150059E714 /* IDBRequestCompletionEvent.h */, 19484 19490 510A326E18318431003C5326 /* IDBServerConnection.h */, 19485 19491 51645B501B9F889B00F789CE /* IDBTransaction.cpp */, … … 27609 27615 AB7170890B3118080017123E /* SearchPopupMenu.h in Headers */, 27610 27616 0E7058F41BC5CEDA0045A507 /* SearchPopupMenuCocoa.h in Headers */, 27617 514129991C6976900059E714 /* IDBRequestCompletionEvent.h in Headers */, 27611 27618 976F36EB14686225005E93B4 /* SecurityContext.h in Headers */, 27612 27619 BCD0E0FB0E972C3500265DEA /* SecurityOrigin.h in Headers */, … … 28818 28825 BE88E0D81715D2A200658D98 /* AudioTrack.cpp in Sources */, 28819 28826 BE88E0DB1715D2A200658D98 /* AudioTrackList.cpp in Sources */, 28827 514129981C6976900059E714 /* IDBRequestCompletionEvent.cpp in Sources */, 28820 28828 CDE3A85717F6020400C5BE20 /* AudioTrackPrivateAVFObjC.mm in Sources */, 28821 28829 CD54A762180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.