Changeset 260063 in webkit
- Timestamp:
- Apr 14, 2020 2:30:15 AM (4 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r260061 r260063 1 2020-04-14 Youenn Fablet <youenn@apple.com> 2 3 WebSocketChannel should remove itself from its manager map 4 https://bugs.webkit.org/show_bug.cgi?id=210424 5 6 Reviewed by Alex Christensen. 7 8 WebSocketChannelManager was never removing any entry from its map. 9 To fix this, the manager is now keeping a WeakPtr to each channel. 10 When the channel is destroyed, it will remove itself from its channel manager. 11 12 * WebProcess/Network/WebSocketChannel.cpp: 13 (WebKit::WebSocketChannel::WebSocketChannel): 14 (WebKit::WebSocketChannel::~WebSocketChannel): 15 * WebProcess/Network/WebSocketChannel.h: 16 * WebProcess/Network/WebSocketChannelManager.cpp: 17 (WebKit::WebSocketChannelManager::addChannel): 18 (WebKit::WebSocketChannelManager::createWebSocketChannel): Deleted. 19 * WebProcess/Network/WebSocketChannelManager.h: 20 (WebKit::WebSocketChannelManager::removeChannel): 21 * WebProcess/Network/WebSocketProvider.cpp: 22 (WebKit::WebSocketProvider::createWebSocketChannel): 23 1 24 2020-04-14 Youenn Fablet <youenn@apple.com> 2 25 -
trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.cpp
r260054 r260063 76 76 , m_inspector(document) 77 77 { 78 WebProcess::singleton().webSocketChannelManager().addChannel(*this); 78 79 } 79 80 80 81 WebSocketChannel::~WebSocketChannel() 81 82 { 83 WebProcess::singleton().webSocketChannelManager().removeChannel(*this); 82 84 } 83 85 -
trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h
r256890 r260063 43 43 namespace WebKit { 44 44 45 class WebSocketChannel : public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::ThreadableWebSocketChannel, public RefCounted<WebSocketChannel> {45 class WebSocketChannel : public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::ThreadableWebSocketChannel, public RefCounted<WebSocketChannel>, public CanMakeWeakPtr<WebSocketChannel> { 46 46 public: 47 47 static Ref<WebSocketChannel> create(WebCore::Document&, WebCore::WebSocketChannelClient&); -
trunk/Source/WebKit/WebProcess/Network/WebSocketChannelManager.cpp
r256303 r260063 29 29 namespace WebKit { 30 30 31 RefPtr<WebCore::ThreadableWebSocketChannel> WebSocketChannelManager::createWebSocketChannel(WebCore::Document& document, WebCore::WebSocketChannelClient& client)31 void WebSocketChannelManager::addChannel(WebSocketChannel& channel) 32 32 { 33 auto channel = WebSocketChannel::create(document, client); 34 m_channels.add(channel->identifier(), channel.copyRef()); 35 return channel; 33 ASSERT(!m_channels.contains(channel.identifier())); 34 m_channels.add(channel.identifier(), makeWeakPtr(channel)); 36 35 } 37 36 -
trunk/Source/WebKit/WebProcess/Network/WebSocketChannelManager.h
r256303 r260063 43 43 public: 44 44 WebSocketChannelManager() = default; 45 RefPtr<WebCore::ThreadableWebSocketChannel> createWebSocketChannel(WebCore::Document&, WebCore::WebSocketChannelClient&);46 45 47 46 void networkProcessCrashed(); 48 47 void didReceiveMessage(IPC::Connection&, IPC::Decoder&); 49 48 49 void addChannel(WebSocketChannel&); 50 void removeChannel(WebSocketChannel& channel) { m_channels.remove(channel.identifier() ); } 51 50 52 private: 51 HashMap<WebSocketIdentifier, Ref<WebSocketChannel>> m_channels;53 HashMap<WebSocketIdentifier, WeakPtr<WebSocketChannel>> m_channels; 52 54 }; 53 55 -
trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.cpp
r250079 r260063 32 32 #include "WebSocketProvider.h" 33 33 34 #include "WebProcess.h"35 34 #include "WebSocketChannelManager.h" 36 35 #include "WebSocketStream.h" … … 47 46 RefPtr<ThreadableWebSocketChannel> WebSocketProvider::createWebSocketChannel(Document& document, WebSocketChannelClient& client) 48 47 { 49 return Web Process::singleton().webSocketChannelManager().createWebSocketChannel(document, client);48 return WebSocketChannel::create(document, client); 50 49 } 51 50
Note: See TracChangeset
for help on using the changeset viewer.