void MainThreadWebSocketChannel::didCloseSocketStream(SocketStreamHandle* handle) { WTF_LOG(Network, "MainThreadWebSocketChannel %p didCloseSocketStream()", this); if (m_identifier && m_document) { TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "WebSocketDestroy", "data", InspectorWebSocketEvent::data(m_document, m_identifier)); TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), "CallStack", "stack", InspectorCallStackEvent::currentCallStack()); // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. InspectorInstrumentation::didCloseWebSocket(m_document, m_identifier); } ASSERT_UNUSED(handle, handle == m_handle || !m_handle); // Show error message on JS console if this is unexpected connection close // during opening handshake. if (!m_hasCalledDisconnectOnHandle && m_handshake->mode() == WebSocketHandshake::Incomplete && m_document) { const String message = "WebSocket connection to '" + m_handshake->url().elidedString() + "' failed: Connection closed before receiving a handshake response"; m_document->addConsoleMessage(ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message, m_sourceURLAtConstruction, m_lineNumberAtConstruction)); } m_state = ChannelClosed; if (m_closingTimer.isActive()) m_closingTimer.stop(); if (m_outgoingFrameQueueStatus != OutgoingFrameQueueClosed) abortOutgoingFrameQueue(); if (m_handle) { WebSocketChannelClient* client = m_client; m_client = nullptr; clearDocument(); m_handle = nullptr; if (client) client->didClose(m_receivedClosingHandshake ? WebSocketChannelClient::ClosingHandshakeComplete : WebSocketChannelClient::ClosingHandshakeIncomplete, m_closeEventCode, m_closeEventReason); } deref(); }
void WebSocketChannel::didClose(SocketStreamHandle* handle) { LOG(Network, "WebSocketChannel %p didClose", this); ASSERT_UNUSED(handle, handle == m_handle || !m_handle); m_closed = true; if (m_handle) { m_unhandledBufferedAmount = m_handle->bufferedAmount(); if (m_suspended) return; WebSocketChannelClient* client = m_client; m_client = 0; m_context = 0; m_handle = 0; if (client) client->didClose(m_unhandledBufferedAmount); } deref(); }
void WebSocketChannel::didClose(SocketStreamHandle* handle) { LOG(Network, "WebSocketChannel %p didClose", this); #if ENABLE(INSPECTOR) if (m_context) if (InspectorController* controller = m_context->inspectorController()) controller->didCloseWebSocket(identifier()); #endif ASSERT_UNUSED(handle, handle == m_handle || !m_handle); m_closed = true; if (m_handle) { m_unhandledBufferedAmount = m_handle->bufferedAmount(); if (m_suspended) return; WebSocketChannelClient* client = m_client; m_client = 0; m_context = 0; m_handle = 0; if (client) client->didClose(m_unhandledBufferedAmount); } deref(); }
void WebSocketChannel::didCloseSocketStream(SocketStreamHandle* handle) { LOG(Network, "WebSocketChannel %p didCloseSocketStream()", this); if (m_identifier && m_document) InspectorInstrumentation::didCloseWebSocket(m_document, m_identifier); ASSERT_UNUSED(handle, handle == m_handle || !m_handle); m_closed = true; if (m_closingTimer.isActive()) m_closingTimer.stop(); if (m_outgoingFrameQueueStatus != OutgoingFrameQueueClosed) abortOutgoingFrameQueue(); if (m_handle) { m_unhandledBufferedAmount = m_handle->bufferedAmount(); if (m_suspended) return; WebSocketChannelClient* client = m_client; m_client = 0; m_document = 0; m_handle = 0; if (client) client->didClose(m_unhandledBufferedAmount, m_receivedClosingHandshake ? WebSocketChannelClient::ClosingHandshakeComplete : WebSocketChannelClient::ClosingHandshakeIncomplete, m_closeEventCode, m_closeEventReason); } deref(); }