Changeset 240931 in webkit
- Timestamp:
- Feb 4, 2019 10:51:19 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r240930 r240931 1 2019-02-04 Sihui Liu <sihui_liu@apple.com> 2 3 IndexedDB: leak WebIDBConnectionToServer in layout tests 4 https://bugs.webkit.org/show_bug.cgi?id=193688 5 <rdar://problem/47353263> 6 7 Reviewed by Geoffrey Garen. 8 9 Let IDBConnectionToServer keep a WeakPtr of IDBConnectionToServerDelegate. 10 11 * Modules/indexeddb/client/IDBConnectionToServer.cpp: 12 (WebCore::IDBClient::IDBConnectionToServer::IDBConnectionToServer): 13 * Modules/indexeddb/client/IDBConnectionToServer.h: 14 * Modules/indexeddb/client/IDBConnectionToServerDelegate.h: 15 1 16 2019-02-04 Youenn Fablet <youenn@apple.com> 2 17 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp
r233562 r240931 49 49 50 50 IDBConnectionToServer::IDBConnectionToServer(IDBConnectionToServerDelegate& delegate) 51 : m_delegate( delegate)51 : m_delegate(makeWeakPtr(delegate)) 52 52 , m_proxy(std::make_unique<IDBConnectionProxy>(*this)) 53 53 { -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h
r233562 r240931 147 147 void callResultFunctionWithErrorLater(ResultFunction, const IDBResourceIdentifier& requestIdentifier); 148 148 149 Ref<IDBConnectionToServerDelegate> m_delegate;149 WeakPtr<IDBConnectionToServerDelegate> m_delegate; 150 150 bool m_serverConnectionIsValid { true }; 151 151 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h
r223728 r240931 28 28 #if ENABLE(INDEXED_DATABASE) 29 29 30 #include <wtf/WeakPtr.h> 30 31 #include <wtf/text/WTFString.h> 31 32 … … 54 55 namespace IDBClient { 55 56 56 class IDBConnectionToServerDelegate {57 class IDBConnectionToServerDelegate : public CanMakeWeakPtr<IDBConnectionToServerDelegate> { 57 58 public: 58 59 virtual ~IDBConnectionToServerDelegate() = default; -
trunk/Source/WebKit/ChangeLog
r240929 r240931 1 2019-02-04 Sihui Liu <sihui_liu@apple.com> 2 3 IndexedDB: leak WebIDBConnectionToServer in layout tests 4 https://bugs.webkit.org/show_bug.cgi?id=193688 5 <rdar://problem/47353263> 6 7 Reviewed by Geoffrey Garen. 8 9 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 10 (WebKit::NetworkConnectionToWebProcess::didClose): 11 (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer): 12 (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer): Deleted. 13 * NetworkProcess/NetworkConnectionToWebProcess.h: 14 * NetworkProcess/NetworkConnectionToWebProcess.messages.in: 15 * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: 16 (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer): 17 1 18 2019-02-04 Antoine Quint <graouts@apple.com> 2 19 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r240696 r240931 264 264 for (auto& connection : idbConnections.values()) 265 265 connection->disconnectedFromWebProcess(); 266 266 267 267 m_webIDBConnections.clear(); 268 268 #endif … … 754 754 m_webIDBConnections.set(serverConnectionIdentifier, WebIDBConnectionToClient::create(m_networkProcess, m_connection.get(), serverConnectionIdentifier, sessionID)); 755 755 } 756 757 void NetworkConnectionToWebProcess::removeIDBConnectionToServer(uint64_t serverConnectionIdentifier)758 {759 ASSERT(m_webIDBConnections.contains(serverConnectionIdentifier));760 761 auto connection = m_webIDBConnections.take(serverConnectionIdentifier);762 connection->disconnectedFromWebProcess();763 }764 756 #endif 765 757 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
r240676 r240931 176 176 // Messages handlers (Modern IDB). 177 177 void establishIDBConnectionToServer(PAL::SessionID, uint64_t& serverConnectionIdentifier); 178 void removeIDBConnectionToServer(uint64_t serverConnectionIdentifier);179 178 #endif 180 179 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
r240676 r240931 80 80 #if ENABLE(INDEXED_DATABASE) 81 81 EstablishIDBConnectionToServer(PAL::SessionID sessionID) -> (uint64_t serverConnectionIdentifier) LegacySync 82 RemoveIDBConnectionToServer(uint64_t serverConnectionIdentifier)83 82 #endif 84 83 -
trunk/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp
r238283 r240931 65 65 m_isOpenInServer = sendSync(Messages::NetworkConnectionToWebProcess::EstablishIDBConnectionToServer(sessionID), Messages::NetworkConnectionToWebProcess::EstablishIDBConnectionToServer::Reply(m_identifier)); 66 66 67 // FIXME: This creates a reference cycle, so neither this object nor the IDBConnectionToServer will ever be deallocated.68 67 m_connectionToServer = IDBClient::IDBConnectionToServer::create(*this); 69 68 } … … 71 70 WebIDBConnectionToServer::~WebIDBConnectionToServer() 72 71 { 73 if (m_isOpenInServer)74 send(Messages::NetworkConnectionToWebProcess::RemoveIDBConnectionToServer(m_identifier));75 72 } 76 73
Note: See TracChangeset
for help on using the changeset viewer.