OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 #include "core/inspector/ScriptCallStack.h" | 47 #include "core/inspector/ScriptCallStack.h" |
48 #include "modules/websockets/CloseEvent.h" | 48 #include "modules/websockets/CloseEvent.h" |
49 #include "platform/Logging.h" | 49 #include "platform/Logging.h" |
50 #include "platform/blob/BlobData.h" | 50 #include "platform/blob/BlobData.h" |
51 #include "platform/heap/Handle.h" | 51 #include "platform/heap/Handle.h" |
52 #include "platform/weborigin/KnownPorts.h" | 52 #include "platform/weborigin/KnownPorts.h" |
53 #include "platform/weborigin/SecurityOrigin.h" | 53 #include "platform/weborigin/SecurityOrigin.h" |
54 #include "public/platform/Platform.h" | 54 #include "public/platform/Platform.h" |
55 #include "wtf/ArrayBuffer.h" | 55 #include "wtf/ArrayBuffer.h" |
56 #include "wtf/ArrayBufferView.h" | 56 #include "wtf/ArrayBufferView.h" |
| 57 #include "wtf/Assertions.h" |
57 #include "wtf/HashSet.h" | 58 #include "wtf/HashSet.h" |
58 #include "wtf/PassOwnPtr.h" | 59 #include "wtf/PassOwnPtr.h" |
59 #include "wtf/StdLibExtras.h" | 60 #include "wtf/StdLibExtras.h" |
60 #include "wtf/text/CString.h" | 61 #include "wtf/text/CString.h" |
61 #include "wtf/text/StringBuilder.h" | 62 #include "wtf/text/StringBuilder.h" |
62 #include "wtf/text/WTFString.h" | 63 #include "wtf/text/WTFString.h" |
63 | 64 |
64 using namespace std; | 65 using namespace std; |
65 | 66 |
66 namespace WebCore { | 67 namespace WebCore { |
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
628 RefPtr<RawData> rawData = RawData::create(); | 629 RefPtr<RawData> rawData = RawData::create(); |
629 binaryData->swap(*rawData->mutableData()); | 630 binaryData->swap(*rawData->mutableData()); |
630 OwnPtr<BlobData> blobData = BlobData::create(); | 631 OwnPtr<BlobData> blobData = BlobData::create(); |
631 blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile); | 632 blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile); |
632 RefPtrWillBeRawPtr<Blob> blob = Blob::create(BlobDataHandle::create(blob
Data.release(), size)); | 633 RefPtrWillBeRawPtr<Blob> blob = Blob::create(BlobDataHandle::create(blob
Data.release(), size)); |
633 m_eventQueue->dispatch(MessageEvent::create(blob.release(), SecurityOrig
in::create(m_url)->toString())); | 634 m_eventQueue->dispatch(MessageEvent::create(blob.release(), SecurityOrig
in::create(m_url)->toString())); |
634 break; | 635 break; |
635 } | 636 } |
636 | 637 |
637 case BinaryTypeArrayBuffer: | 638 case BinaryTypeArrayBuffer: |
638 m_eventQueue->dispatch(MessageEvent::create(ArrayBuffer::create(binaryDa
ta->data(), binaryData->size()), SecurityOrigin::create(m_url)->toString())); | 639 RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(binaryData->data()
, binaryData->size()); |
| 640 if (!arrayBuffer) { |
| 641 // Failed to allocate an ArrayBuffer. We need to crash the renderer |
| 642 // since there's no way defined in the spec to tell this to the |
| 643 // user. |
| 644 CRASH(); |
| 645 } |
| 646 m_eventQueue->dispatch(MessageEvent::create(arrayBuffer.release(), Secur
ityOrigin::create(m_url)->toString())); |
639 break; | 647 break; |
640 } | 648 } |
641 } | 649 } |
642 | 650 |
643 void WebSocket::didReceiveMessageError() | 651 void WebSocket::didReceiveMessageError() |
644 { | 652 { |
645 WTF_LOG(Network, "WebSocket %p didReceiveMessageError()", this); | 653 WTF_LOG(Network, "WebSocket %p didReceiveMessageError()", this); |
646 m_state = CLOSED; | 654 m_state = CLOSED; |
647 m_eventQueue->dispatch(Event::create(EventTypeNames::error)); | 655 m_eventQueue->dispatch(Event::create(EventTypeNames::error)); |
648 } | 656 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 return overhead; | 696 return overhead; |
689 } | 697 } |
690 | 698 |
691 void WebSocket::trace(Visitor* visitor) | 699 void WebSocket::trace(Visitor* visitor) |
692 { | 700 { |
693 visitor->trace(m_channel); | 701 visitor->trace(m_channel); |
694 visitor->trace(m_eventQueue); | 702 visitor->trace(m_eventQueue); |
695 } | 703 } |
696 | 704 |
697 } // namespace WebCore | 705 } // namespace WebCore |
OLD | NEW |