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

Side by Side Diff: Source/modules/websockets/NewWebSocketChannelImpl.cpp

Issue 36033003: Notify WebSocket connection failure, Blink side (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month 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 27 matching lines...) Expand all
38 #include "core/fileapi/Blob.h" 38 #include "core/fileapi/Blob.h"
39 #include "core/fileapi/FileError.h" 39 #include "core/fileapi/FileError.h"
40 #include "core/fileapi/FileReaderLoader.h" 40 #include "core/fileapi/FileReaderLoader.h"
41 #include "core/fileapi/FileReaderLoaderClient.h" 41 #include "core/fileapi/FileReaderLoaderClient.h"
42 #include "core/inspector/InspectorInstrumentation.h" 42 #include "core/inspector/InspectorInstrumentation.h"
43 #include "core/inspector/ScriptCallStack.h" 43 #include "core/inspector/ScriptCallStack.h"
44 #include "core/loader/UniqueIdentifier.h" 44 #include "core/loader/UniqueIdentifier.h"
45 #include "modules/websockets/WebSocketChannel.h" 45 #include "modules/websockets/WebSocketChannel.h"
46 #include "modules/websockets/WebSocketChannelClient.h" 46 #include "modules/websockets/WebSocketChannelClient.h"
47 #include "platform/Logging.h" 47 #include "platform/Logging.h"
48 #include "platform/NotImplemented.h"
48 #include "public/platform/Platform.h" 49 #include "public/platform/Platform.h"
49 #include "public/platform/WebSocketHandle.h" 50 #include "public/platform/WebSocketHandle.h"
50 #include "public/platform/WebString.h" 51 #include "public/platform/WebString.h"
51 #include "public/platform/WebURL.h" 52 #include "public/platform/WebURL.h"
52 #include "public/platform/WebVector.h" 53 #include "public/platform/WebVector.h"
53 #include "weborigin/SecurityOrigin.h" 54 #include "weborigin/SecurityOrigin.h"
54 #include "wtf/ArrayBuffer.h" 55 #include "wtf/ArrayBuffer.h"
55 #include "wtf/Vector.h" 56 #include "wtf/Vector.h"
56 #include "wtf/text/WTFString.h" 57 #include "wtf/text/WTFString.h"
57 58
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 handleDidClose(CloseEventCodeAbnormalClosure, String()); 255 handleDidClose(CloseEventCodeAbnormalClosure, String());
255 // handleDidClose may delete this object. 256 // handleDidClose may delete this object.
256 } 257 }
257 258
258 void NewWebSocketChannelImpl::disconnect() 259 void NewWebSocketChannelImpl::disconnect()
259 { 260 {
260 LOG(Network, "NewWebSocketChannelImpl %p disconnect()", this); 261 LOG(Network, "NewWebSocketChannelImpl %p disconnect()", this);
261 if (m_identifier) 262 if (m_identifier)
262 InspectorInstrumentation::didCloseWebSocket(document(), m_identifier); 263 InspectorInstrumentation::didCloseWebSocket(document(), m_identifier);
263 abortAsyncOperations(); 264 abortAsyncOperations();
264 if (m_handle)
265 m_handle->close(CloseEventCodeAbnormalClosure, "");
266 m_handle.clear(); 265 m_handle.clear();
267 m_client = 0; 266 m_client = 0;
268 m_identifier = 0; 267 m_identifier = 0;
269 } 268 }
270 269
271 void NewWebSocketChannelImpl::suspend() 270 void NewWebSocketChannelImpl::suspend()
272 { 271 {
273 LOG(Network, "NewWebSocketChannelImpl %p suspend()", this); 272 LOG(Network, "NewWebSocketChannelImpl %p suspend()", this);
274 } 273 }
275 274
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 } 385 }
387 // FIXME: We should have Request / Response information to be output. 386 // FIXME: We should have Request / Response information to be output.
388 // InspectorInstrumentation::willSendWebSocketHandshakeRequest(document(), m _identifier, ""); 387 // InspectorInstrumentation::willSendWebSocketHandshakeRequest(document(), m _identifier, "");
389 // InspectorInstrumentation::didReceiveWebSocketHandshakeResponse(document() , m_identifier, ""); 388 // InspectorInstrumentation::didReceiveWebSocketHandshakeResponse(document() , m_identifier, "");
390 389
391 m_subprotocol = selectedProtocol; 390 m_subprotocol = selectedProtocol;
392 m_extensions = extensions; 391 m_extensions = extensions;
393 m_client->didConnect(); 392 m_client->didConnect();
394 } 393 }
395 394
395 void NewWebSocketChannelImpl::didFail(WebSocketHandle* handle, const WebKit::Web String& message)
396 {
397 LOG(Network, "NewWebSocketChannelImpl %p didFail(%p, %s)", this, handle, mes sage.utf8().data());
398 // FIXME: Hande the failure correctly.
399 // CloseEventCodeAbnormalClosure is the closing code for the closure
400 // without sending or receiving a Close control frame.
401 didClose(handle, false, CloseEventCodeAbnormalClosure, WebKit::WebString());
402 // |this| may be deleted.
403 }
404
396 void NewWebSocketChannelImpl::didReceiveData(WebSocketHandle* handle, bool fin, WebSocketHandle::MessageType type, const char* data, size_t size) 405 void NewWebSocketChannelImpl::didReceiveData(WebSocketHandle* handle, bool fin, WebSocketHandle::MessageType type, const char* data, size_t size)
397 { 406 {
398 LOG(Network, "NewWebSocketChannelImpl %p didReceiveData(%p, %d, %d, (%p, %zu ))", this, handle, fin, type, data, size); 407 LOG(Network, "NewWebSocketChannelImpl %p didReceiveData(%p, %d, %d, (%p, %zu ))", this, handle, fin, type, data, size);
399 ASSERT(m_handle); 408 ASSERT(m_handle);
400 ASSERT(handle == m_handle); 409 ASSERT(handle == m_handle);
401 ASSERT(m_client); 410 ASSERT(m_client);
402 // Non-final frames cannot be empty. 411 // Non-final frames cannot be empty.
403 ASSERT(fin || size); 412 ASSERT(fin || size);
404 switch (type) { 413 switch (type) {
405 case WebSocketHandle::MessageTypeText: 414 case WebSocketHandle::MessageTypeText:
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 } else { 446 } else {
438 m_client->didReceiveMessage(message); 447 m_client->didReceiveMessage(message);
439 } 448 }
440 } else { 449 } else {
441 OwnPtr<Vector<char> > binaryData = adoptPtr(new Vector<char>); 450 OwnPtr<Vector<char> > binaryData = adoptPtr(new Vector<char>);
442 binaryData->swap(m_receivingMessageData); 451 binaryData->swap(m_receivingMessageData);
443 m_client->didReceiveBinaryData(binaryData.release()); 452 m_client->didReceiveBinaryData(binaryData.release());
444 } 453 }
445 } 454 }
446 455
447 void NewWebSocketChannelImpl::didClose(WebSocketHandle* handle, unsigned short c ode, const WebKit::WebString& reason) 456 void NewWebSocketChannelImpl::didClose(WebSocketHandle* handle, bool wasClean, u nsigned short code, const WebKit::WebString& reason)
448 { 457 {
449 LOG(Network, "NewWebSocketChannelImpl %p didClose(%p, %u, %s)", this, handle , code, String(reason).utf8().data()); 458 // FIXME: Use |wasClean| appropriately.
459 LOG(Network, "NewWebSocketChannelImpl %p didClose(%p, %d, %u, %s)", this, ha ndle, wasClean, code, String(reason).utf8().data());
450 ASSERT(m_handle); 460 ASSERT(m_handle);
451 m_handle.clear(); 461 m_handle.clear();
452 if (m_identifier) { 462 if (m_identifier) {
453 InspectorInstrumentation::didCloseWebSocket(document(), m_identifier); 463 InspectorInstrumentation::didCloseWebSocket(document(), m_identifier);
454 m_identifier = 0; 464 m_identifier = 0;
455 } 465 }
456 466
457 // FIXME: Maybe we should notify an error to m_client for some didClose mess ages. 467 // FIXME: Maybe we should notify an error to m_client for some didClose mess ages.
458 handleDidClose(code, reason); 468 handleDidClose(code, reason);
459 // handleDidClose may delete this object. 469 // handleDidClose may delete this object.
(...skipping 16 matching lines...) Expand all
476 if (errorCode == FileError::ABORT_ERR) { 486 if (errorCode == FileError::ABORT_ERR) {
477 // The error is caused by cancel(). 487 // The error is caused by cancel().
478 return; 488 return;
479 } 489 }
480 // FIXME: Generate human-friendly reason message. 490 // FIXME: Generate human-friendly reason message.
481 failAsError("Failed to load Blob: error code = " + String::number(errorCode) ); 491 failAsError("Failed to load Blob: error code = " + String::number(errorCode) );
482 // |this| can be deleted here. 492 // |this| can be deleted here.
483 } 493 }
484 494
485 } // namespace WebCore 495 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/modules/websockets/NewWebSocketChannelImpl.h ('k') | public/platform/WebSocketHandleClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698