Home | History | Annotate | Download | only in websockets

Lines Matching refs:frame

39 #include "core/frame/LocalFrame.h"
97 if (m_document->frame() && !m_document->frame()->loader().mixedContentChecker()->canConnectInsecureWebSocket(m_document->securityOrigin(), url))
118 if (m_document->frame()) {
119 m_document->frame()->loader().client()->dispatchWillOpenSocketStream(m_handle.get());
328 const FramingOverhead& frame = m_framingOverheadQueue.first();
330 ASSERT(m_numConsumedBytesInCurrentFrame <= frame.frameDataSize());
331 size_t consumedInThisFrame = std::min(remain, frame.frameDataSize() - m_numConsumedBytesInCurrentFrame);
335 if (m_numConsumedBytesInCurrentFrame == frame.frameDataSize()) {
336 if (m_client && WebSocketFrame::isNonControlOpCode(frame.opcode())) {
339 // bytes in the middle of a frame.
340 m_client->didConsumeBufferedAmount(frame.originalPayloadLength());
461 const String message = "WebSocket extension \"x-webkit-deflate-frame\" is deprecated";
530 WebSocketFrame frame;
533 WebSocketFrame::ParseFrameResult result = WebSocketFrame::parseFrame(m_buffer.data(), m_buffer.size(), frame, frameEnd, errorString);
544 OwnPtr<InflateResultHolder> inflateResult = m_deflateFramer.inflate(frame);
549 if (!m_perMessageDeflate.inflate(frame)) {
554 // Validate the frame data.
555 if (WebSocketFrame::isReservedOpCode(frame.opCode)) {
556 failAsError("Unrecognized frame opcode: " + String::number(frame.opCode));
560 if (frame.compress || frame.reserved2 || frame.reserved3) {
561 failAsError("One or more reserved bits are on: reserved1 = " + String::number(frame.compress) + ", reserved2 = " + String::number(frame.reserved2) + ", reserved3 = " + String::number(frame.reserved3));
565 if (frame.masked) {
571 if (WebSocketFrame::isControlOpCode(frame.opCode) && !frame.final) {
572 failAsError("Received fragmented control frame: opcode = " + String::number(frame.opCode));
576 // All control frames must have a payload of 125 bytes or less, which means the frame must not contain
578 if (WebSocketFrame::isControlOpCode(frame.opCode) && WebSocketFrame::needsExtendedLengthField(frame.payloadLength)) {
579 failAsError("Received control frame having too long payload: " + String::number(frame.payloadLength) + " bytes");
583 // A new data frame is received before the previous continuous frame finishes.
585 if (m_hasContinuousFrame && frame.opCode != WebSocketFrame::OpCodeContinuation && !WebSocketFrame::isControlOpCode(frame.opCode)) {
590 InspectorInstrumentation::didReceiveWebSocketFrame(m_document, m_identifier, frame.opCode, frame.masked, frame.payload, frame.payloadLength);
592 switch (frame.opCode) {
594 // An unexpected continuation frame is received without any leading frame.
596 failAsError("Received unexpected continuation frame.");
599 m_continuousFrameData.append(frame.payload, frame.payloadLength);
601 if (frame.final) {
603 // so we should pretend that we have finished to read this frame and
617 failAsError("Could not decode a text frame as UTF-8.");
627 if (frame.final) {
629 if (frame.payloadLength)
630 message = String::fromUTF8(frame.payload, frame.payloadLength);
635 failAsError("Could not decode a text frame as UTF-8.");
642 m_continuousFrameData.append(frame.payload, frame.payloadLength);
648 if (frame.final) {
649 OwnPtr<Vector<char> > binaryData = adoptPtr(new Vector<char>(frame.payloadLength));
650 memcpy(binaryData->data(), frame.payload, frame.payloadLength);
657 m_continuousFrameData.append(frame.payload, frame.payloadLength);
663 if (!frame.payloadLength) {
665 } else if (frame.payloadLength == 1) {
667 failAsError("Received a broken close frame containing an invalid size body.");
670 unsigned char highByte = static_cast<unsigned char>(frame.payload[0]);
671 unsigned char lowByte = static_cast<unsigned char>(frame.payload[1]);
675 failAsError("Received a broken close frame containing a reserved status code.");
679 if (frame.payloadLength >= 3)
680 m_closeEventReason = String::fromUTF8(&frame.payload[2], frame.payloadLength - 2);
691 enqueueRawFrame(WebSocketFrame::OpCodePong, frame.payload, frame.payloadLength);
716 OwnPtr<QueuedFrame> frame = adoptPtr(new QueuedFrame);
717 frame->opCode = WebSocketFrame::OpCodeText;
718 frame->frameType = QueuedFrameTypeString;
719 frame->stringData = string;
720 m_outgoingFrameQueue.append(frame.release());
727 OwnPtr<QueuedFrame> frame = adoptPtr(new QueuedFrame);
728 frame->opCode = opCode;
729 frame->frameType = QueuedFrameTypeVector;
730 frame->vectorData.resize(dataLength);
732 memcpy(frame->vectorData.data(), data, dataLength);
733 m_outgoingFrameQueue.append(frame.release());
740 OwnPtr<QueuedFrame> frame = adoptPtr(new QueuedFrame);
741 frame->opCode = opCode;
742 frame->frameType = QueuedFrameTypeVector;
743 frame->vectorData.swap(*data);
744 m_outgoingFrameQueue.append(frame.release());
751 OwnPtr<QueuedFrame> frame = adoptPtr(new QueuedFrame);
752 frame->opCode = opCode;
753 frame->frameType = QueuedFrameTypeBlob;
754 frame->blobData = blobData;
755 m_outgoingFrameQueue.append(frame.release());
764 OwnPtr<QueuedFrame> frame = m_outgoingFrameQueue.takeFirst();
765 switch (frame->frameType) {
767 if (!sendFrame(frame->opCode, frame->stringData.data(), frame->stringData.length()))
768 failAsError("Failed to send WebSocket frame.");
773 if (!sendFrame(frame->opCode, frameframe->vectorData.size()))
774 failAsError("Failed to send WebSocket frame.");
784 m_blobLoader->start(m_document, frame->blobData);
785 m_outgoingFrameQueue.prepend(frame.release());
790 m_outgoingFrameQueue.prepend(frame.release());
797 if (!sendFrame(frame->opCode, static_cast<const char*>(result->data()), result->byteLength()))
798 failAsError("Failed to send WebSocket frame.");
833 WebSocketFrame frame(opCode, data, dataLength, WebSocketFrame::Final | WebSocketFrame::Masked);
834 InspectorInstrumentation::didSendWebSocketFrame(m_document, m_identifier, frame.opCode, frame.masked, frame.payload, frame.payloadLength);
836 OwnPtr<DeflateResultHolder> deflateResult = m_deflateFramer.deflate(frame);
842 if (!m_perMessageDeflate.deflate(frame)) {
848 frame.makeFrameData(frameData);