Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Side by Side Diff: third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp

Issue 2366253002: Remove ActiveDOMObject::stop() (Closed)
Patch Set: temp Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 unsigned short code; 99 unsigned short code;
100 String reason; 100 String reason;
101 }; 101 };
102 102
103 DocumentWebSocketChannel::BlobLoader::BlobLoader( 103 DocumentWebSocketChannel::BlobLoader::BlobLoader(
104 PassRefPtr<BlobDataHandle> blobDataHandle, 104 PassRefPtr<BlobDataHandle> blobDataHandle,
105 DocumentWebSocketChannel* channel) 105 DocumentWebSocketChannel* channel)
106 : m_channel(channel), 106 : m_channel(channel),
107 m_loader( 107 m_loader(
108 FileReaderLoader::create(FileReaderLoader::ReadAsArrayBuffer, this)) { 108 FileReaderLoader::create(FileReaderLoader::ReadAsArrayBuffer, this)) {
109 m_loader->start(channel->getExecutionContext(), std::move(blobDataHandle)); 109 m_loader->start(channel->document(), std::move(blobDataHandle));
110 } 110 }
111 111
112 void DocumentWebSocketChannel::BlobLoader::cancel() { 112 void DocumentWebSocketChannel::BlobLoader::cancel() {
113 m_loader->cancel(); 113 m_loader->cancel();
114 // didFail will be called immediately. 114 // didFail will be called immediately.
115 // |this| is deleted here. 115 // |this| is deleted here.
116 } 116 }
117 117
118 void DocumentWebSocketChannel::BlobLoader::didFinishLoading() { 118 void DocumentWebSocketChannel::BlobLoader::didFinishLoading() {
119 m_channel->didFinishLoadingBlob(m_loader->arrayBufferResult()); 119 m_channel->didFinishLoadingBlob(m_loader->arrayBufferResult());
120 // |this| is deleted here. 120 // |this| is deleted here.
121 } 121 }
122 122
123 void DocumentWebSocketChannel::BlobLoader::didFail( 123 void DocumentWebSocketChannel::BlobLoader::didFail(
124 FileError::ErrorCode errorCode) { 124 FileError::ErrorCode errorCode) {
125 m_channel->didFailLoadingBlob(errorCode); 125 m_channel->didFailLoadingBlob(errorCode);
126 // |this| is deleted here. 126 // |this| is deleted here.
127 } 127 }
128 128
129 DocumentWebSocketChannel::DocumentWebSocketChannel( 129 DocumentWebSocketChannel::DocumentWebSocketChannel(
130 Document* document, 130 Document* document,
131 WebSocketChannelClient* client, 131 WebSocketChannelClient* client,
132 std::unique_ptr<SourceLocation> location, 132 std::unique_ptr<SourceLocation> location,
133 WebSocketHandle* handle) 133 WebSocketHandle* handle)
134 : ContextLifecycleObserver(document), 134 : m_handle(wrapUnique(handle ? handle : new WebSocketHandleImpl())),
135 m_handle(wrapUnique(handle ? handle : new WebSocketHandleImpl())),
136 m_client(client), 135 m_client(client),
137 m_identifier(createUniqueIdentifier()), 136 m_identifier(createUniqueIdentifier()),
137 m_document(document),
138 m_sendingQuota(0), 138 m_sendingQuota(0),
139 m_receivedDataSizeForFlowControl( 139 m_receivedDataSizeForFlowControl(
140 receivedDataSizeForFlowControlHighWaterMark * 2) // initial quota 140 receivedDataSizeForFlowControlHighWaterMark * 2) // initial quota
141 , 141 ,
142 m_sentSizeOfTopMessage(0), 142 m_sentSizeOfTopMessage(0),
143 m_locationAtConstruction(std::move(location)) {} 143 m_locationAtConstruction(std::move(location)) {}
144 144
145 DocumentWebSocketChannel::~DocumentWebSocketChannel() { 145 DocumentWebSocketChannel::~DocumentWebSocketChannel() {
146 DCHECK(!m_blobLoader); 146 DCHECK(!m_blobLoader);
147 } 147 }
(...skipping 29 matching lines...) Expand all
177 177
178 if (document()->frame()) { 178 if (document()->frame()) {
179 // Initialize the WebSocketHandle with the frame's InterfaceProvider to 179 // Initialize the WebSocketHandle with the frame's InterfaceProvider to
180 // provide the WebSocket implementation with context about this frame. 180 // provide the WebSocket implementation with context about this frame.
181 // This is important so that the browser can show UI associated with 181 // This is important so that the browser can show UI associated with
182 // the WebSocket (e.g., for certificate errors). 182 // the WebSocket (e.g., for certificate errors).
183 m_handle->initialize(document()->frame()->interfaceProvider()); 183 m_handle->initialize(document()->frame()->interfaceProvider());
184 } else { 184 } else {
185 m_handle->initialize(Platform::current()->interfaceProvider()); 185 m_handle->initialize(Platform::current()->interfaceProvider());
186 } 186 }
187 m_handle->connect(url, protocols, getExecutionContext()->getSecurityOrigin(), 187 m_handle->connect(url, protocols, document()->getSecurityOrigin(),
188 document()->firstPartyForCookies(), document()->userAgent(), 188 document()->firstPartyForCookies(), document()->userAgent(),
189 this); 189 this);
190 190
191 flowControlIfNecessary(); 191 flowControlIfNecessary();
192 TRACE_EVENT_INSTANT1("devtools.timeline", "WebSocketCreate", 192 TRACE_EVENT_INSTANT1("devtools.timeline", "WebSocketCreate",
193 TRACE_EVENT_SCOPE_THREAD, "data", 193 TRACE_EVENT_SCOPE_THREAD, "data",
194 InspectorWebSocketCreateEvent::data( 194 InspectorWebSocketCreateEvent::data(
195 document(), m_identifier, url, protocol)); 195 document(), m_identifier, url, protocol));
196 InspectorInstrumentation::didCreateWebSocket(document(), m_identifier, url, 196 InspectorInstrumentation::didCreateWebSocket(document(), m_identifier, url,
197 protocol); 197 protocol);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 void DocumentWebSocketChannel::fail(const String& reason, 283 void DocumentWebSocketChannel::fail(const String& reason,
284 MessageLevel level, 284 MessageLevel level,
285 std::unique_ptr<SourceLocation> location) { 285 std::unique_ptr<SourceLocation> location) {
286 NETWORK_DVLOG(1) << this << " fail(" << reason << ")"; 286 NETWORK_DVLOG(1) << this << " fail(" << reason << ")";
287 // m_handle and m_client can be null here. 287 // m_handle and m_client can be null here.
288 288
289 InspectorInstrumentation::didReceiveWebSocketFrameError(document(), 289 InspectorInstrumentation::didReceiveWebSocketFrameError(document(),
290 m_identifier, reason); 290 m_identifier, reason);
291 const String message = "WebSocket connection to '" + m_url.elidedString() + 291 const String message = "WebSocket connection to '" + m_url.elidedString() +
292 "' failed: " + reason; 292 "' failed: " + reason;
293 getExecutionContext()->addConsoleMessage(ConsoleMessage::create( 293 document()->addConsoleMessage(ConsoleMessage::create(
294 JSMessageSource, level, message, std::move(location))); 294 JSMessageSource, level, message, std::move(location)));
295 295
296 if (m_client) 296 if (m_client)
297 m_client->didError(); 297 m_client->didError();
298 // |reason| is only for logging and should not be provided for scripts, 298 // |reason| is only for logging and should not be provided for scripts,
299 // hence close reason must be empty. 299 // hence close reason must be empty.
300 handleDidClose(false, CloseEventCodeAbnormalClosure, String()); 300 handleDidClose(false, CloseEventCodeAbnormalClosure, String());
301 // handleDidClose may delete this object. 301 // handleDidClose may delete this object.
302 } 302 }
303 303
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 WebSocketChannelClient* client = m_client; 440 WebSocketChannelClient* client = m_client;
441 m_client = nullptr; 441 m_client = nullptr;
442 WebSocketChannelClient::ClosingHandshakeCompletionStatus status = 442 WebSocketChannelClient::ClosingHandshakeCompletionStatus status =
443 wasClean ? WebSocketChannelClient::ClosingHandshakeComplete 443 wasClean ? WebSocketChannelClient::ClosingHandshakeComplete
444 : WebSocketChannelClient::ClosingHandshakeIncomplete; 444 : WebSocketChannelClient::ClosingHandshakeIncomplete;
445 client->didClose(status, code, reason); 445 client->didClose(status, code, reason);
446 // client->didClose may delete this object. 446 // client->didClose may delete this object.
447 } 447 }
448 448
449 Document* DocumentWebSocketChannel::document() { 449 Document* DocumentWebSocketChannel::document() {
450 // This context is always a Document. See the constructor. 450 return m_document;
451 ExecutionContext* context = getExecutionContext();
452 DCHECK(context->isDocument());
453 return toDocument(context);
454 } 451 }
455 452
456 void DocumentWebSocketChannel::didConnect(WebSocketHandle* handle, 453 void DocumentWebSocketChannel::didConnect(WebSocketHandle* handle,
457 const String& selectedProtocol, 454 const String& selectedProtocol,
458 const String& extensions) { 455 const String& extensions) {
459 NETWORK_DVLOG(1) << this << " didConnect(" << handle << ", " 456 NETWORK_DVLOG(1) << this << " didConnect(" << handle << ", "
460 << String(selectedProtocol) << ", " << String(extensions) 457 << String(selectedProtocol) << ", " << String(extensions)
461 << ")"; 458 << ")";
462 459
463 DCHECK(m_handle); 460 DCHECK(m_handle);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 } 643 }
647 // FIXME: Generate human-friendly reason message. 644 // FIXME: Generate human-friendly reason message.
648 failAsError("Failed to load Blob: error code = " + String::number(errorCode)); 645 failAsError("Failed to load Blob: error code = " + String::number(errorCode));
649 // |this| can be deleted here. 646 // |this| can be deleted here.
650 } 647 }
651 648
652 DEFINE_TRACE(DocumentWebSocketChannel) { 649 DEFINE_TRACE(DocumentWebSocketChannel) {
653 visitor->trace(m_blobLoader); 650 visitor->trace(m_blobLoader);
654 visitor->trace(m_messages); 651 visitor->trace(m_messages);
655 visitor->trace(m_client); 652 visitor->trace(m_client);
653 visitor->trace(m_document);
656 WebSocketChannel::trace(visitor); 654 WebSocketChannel::trace(visitor);
657 ContextLifecycleObserver::trace(visitor);
658 } 655 }
659 656
660 std::ostream& operator<<(std::ostream& ostream, 657 std::ostream& operator<<(std::ostream& ostream,
661 const DocumentWebSocketChannel* channel) { 658 const DocumentWebSocketChannel* channel) {
662 return ostream << "DocumentWebSocketChannel " 659 return ostream << "DocumentWebSocketChannel "
663 << static_cast<const void*>(channel); 660 << static_cast<const void*>(channel);
664 } 661 }
665 662
666 } // namespace blink 663 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698