Changeset 104791 in webkit


Ignore:
Timestamp:
Jan 11, 2012 10:47:47 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Add WebArrayBuffer support in WebSocket to WebKit API.
https://bugs.webkit.org/show_bug.cgi?id=75080

Patch by Takashi Toyoshima <toyoshim@chromium.org> on 2012-01-11
Reviewed by Darin Fisher.

  • public/WebSocket.h: Add interface to send WebArrayBuffer, and set and get receiving binary object type.
  • public/WebSocketClient.h: Add interface to receive WebArrayBuffer.

(WebKit::WebSocketClient::didReceiveArrayBuffer):

  • src/WebSocketImpl.cpp: Add various binary types handling.

(WebKit::WebSocketImpl::WebSocketImpl):
(WebKit::WebSocketImpl::binaryType):
(WebKit::WebSocketImpl::setBinaryType):
(WebKit::WebSocketImpl::sendArrayBuffer):
(WebKit::WebSocketImpl::didReceiveBinaryData):

  • src/WebSocketImpl.h: Add methods to handle various binary types.
Location:
trunk/Source/WebKit/chromium
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/chromium/ChangeLog

    r104780 r104791  
     12012-01-11  Takashi Toyoshima  <toyoshim@chromium.org>
     2
     3        Add WebArrayBuffer support in WebSocket to WebKit API.
     4        https://bugs.webkit.org/show_bug.cgi?id=75080
     5
     6        Reviewed by Darin Fisher.
     7
     8        * public/WebSocket.h: Add interface to send WebArrayBuffer, and set and get receiving binary object type.
     9        * public/WebSocketClient.h: Add interface to receive WebArrayBuffer.
     10        (WebKit::WebSocketClient::didReceiveArrayBuffer):
     11        * src/WebSocketImpl.cpp: Add various binary types handling.
     12        (WebKit::WebSocketImpl::WebSocketImpl):
     13        (WebKit::WebSocketImpl::binaryType):
     14        (WebKit::WebSocketImpl::setBinaryType):
     15        (WebKit::WebSocketImpl::sendArrayBuffer):
     16        (WebKit::WebSocketImpl::didReceiveBinaryData):
     17        * src/WebSocketImpl.h: Add methods to handle various binary types.
     18
    1192012-01-11  Scott Violet  <sky@google.com>
    220
  • trunk/Source/WebKit/chromium/public/WebSocket.h

    r101122 r104791  
    11/*
    2  * Copyright (C) 2011 Google Inc.  All rights reserved.
     2 * Copyright (C) 2011, 2012 Google Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3939namespace WebKit {
    4040
     41class WebArrayBuffer;
    4142class WebData;
    4243class WebDocument;
     
    6162    };
    6263
     64    // FIXME: Remove BinaryTypeData after a switchover to other types.
     65    enum BinaryType {
     66        BinaryTypeBlob = 0,
     67        BinaryTypeArrayBuffer = 1,
     68        BinaryTypeData = 2 // Don't use it
     69    };
     70
    6371    WEBKIT_EXPORT static WebSocket* create(const WebDocument&, WebSocketClient*);
    6472    virtual ~WebSocket() { }
    6573
     74    // These functions come from binaryType attribute of the WebSocket API
     75    // specification. It specifies binary object type for receiving binary
     76    // frames representation. Receiving text frames are always mapped to
     77    // WebString type regardless of this attribute.
     78    // Default type must be BinaryTypeBlob, but currently is BinaryTypeData
     79    // for a switchover from WebData to WebArrayBuffer.
     80    // See also, The WebSocket API - http://www.w3.org/TR/websockets/ .
     81    virtual BinaryType binaryType() const = 0;
     82    virtual bool setBinaryType(BinaryType) = 0;
     83
    6684    virtual void connect(const WebURL&, const WebString& protocol) = 0;
    6785    virtual WebString subprotocol() = 0;
    68     virtual bool sendText(const WebString& message) = 0;
    69     virtual bool sendBinary(const WebData& binaryData) = 0;
     86    virtual bool sendText(const WebString&) = 0;
     87    virtual bool sendBinary(const WebData&) = 0;
     88    virtual bool sendArrayBuffer(const WebArrayBuffer&) = 0;
    7089    virtual unsigned long bufferedAmount() const = 0;
    7190    virtual void close(int code, const WebString& reason) = 0;
  • trunk/Source/WebKit/chromium/public/WebSocketClient.h

    r101614 r104791  
    11/*
    2  * Copyright (C) 2011 Google Inc.  All rights reserved.
     2 * Copyright (C) 2011, 2012 Google Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3737namespace WebKit {
    3838
     39class WebArrayBuffer;
    3940class WebString;
    4041
     
    5051    virtual void didReceiveMessage(const WebString& message) { }
    5152    virtual void didReceiveBinaryData(const WebData& binaryData) { }
     53    virtual void didReceiveArrayBuffer(const WebArrayBuffer& arrayBuffer) { }
    5254    virtual void didReceiveMessageError() { }
    5355    virtual void didUpdateBufferedAmount(unsigned long bufferedAmount) { }
  • trunk/Source/WebKit/chromium/src/WebSocketImpl.cpp

    r102044 r104791  
    11/*
    2  * Copyright (C) 2011 Google Inc. All rights reserved.
     2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3232#include "WebSocketImpl.h"
    3333
     34#include "ArrayBuffer.h"
    3435#include "Document.h"
    3536#include "KURL.h"
     
    4445#endif
    4546
    46 #include "platform/WebData.h"
     47#include "WebArrayBuffer.h"
    4748#include "WebDocument.h"
    4849#include "WebSocketClient.h"
     50#include "platform/WebData.h"
    4951#include "platform/WebString.h"
    5052#include "platform/WebURL.h"
     
    5456namespace WebKit {
    5557
     58// FIXME: Default m_binaryType must be Blob after supporting WebBlob.
    5659WebSocketImpl::WebSocketImpl(const WebDocument& document, WebSocketClient* client)
    5760    : m_client(client)
     61    , m_binaryType(BinaryTypeData)
    5862{
    5963#if ENABLE(WEB_SOCKETS)
     
    7377}
    7478
     79WebSocket::BinaryType WebSocketImpl::binaryType() const
     80{
     81    return m_binaryType;
     82}
     83
     84bool WebSocketImpl::setBinaryType(BinaryType binaryType)
     85{
     86    if (binaryType > BinaryTypeArrayBuffer)
     87        return false;
     88    m_binaryType = binaryType;
     89    return true;
     90}
     91
    7592void WebSocketImpl::connect(const WebURL& url, const WebString& protocol)
    7693{
     
    104121#if ENABLE(WEB_SOCKETS)
    105122    return m_private->send(binaryData.data(), binaryData.size());
     123#else
     124    ASSERT_NOT_REACHED();
     125#endif
     126}
     127
     128bool WebSocketImpl::sendArrayBuffer(const WebArrayBuffer& webArrayBuffer)
     129{
     130#if ENABLE(WEB_SOCKETS)
     131    return m_private->send(*PassRefPtr<ArrayBuffer>(webArrayBuffer));
    106132#else
    107133    ASSERT_NOT_REACHED();
     
    167193{
    168194#if ENABLE(WEB_SOCKETS)
    169     m_client->didReceiveBinaryData(WebData(binaryData->data(), binaryData->size()));
     195    switch (m_binaryType) {
     196    case BinaryTypeData:
     197    case BinaryTypeBlob: // FIXME: Handle Blob after supporting WebBlob.
     198        m_client->didReceiveBinaryData(WebData(binaryData->data(), binaryData->size()));
     199        break;
     200    case BinaryTypeArrayBuffer:
     201        m_client->didReceiveArrayBuffer(WebArrayBuffer(ArrayBuffer::create(binaryData->data(), binaryData->size())));
     202        break;
     203    }
    170204#else
    171205    ASSERT_NOT_REACHED();
  • trunk/Source/WebKit/chromium/src/WebSocketImpl.h

    r102044 r104791  
    11/*
    2  * Copyright (C) 2011 Google Inc.  All rights reserved.
     2 * Copyright (C) 2011, 2012 Google Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    5555    bool isNull() const { return !m_private; }
    5656
     57    BinaryType binaryType() const;
     58    virtual bool setBinaryType(BinaryType);
    5759    virtual void connect(const WebURL&, const WebString& protocol);
    5860    virtual WebString subprotocol();
    59     virtual bool sendText(const WebString& message);
    60     virtual bool sendBinary(const WebData& binaryData);
     61    virtual bool sendText(const WebString&);
     62    // FIXME: Remove sendBinary() after a switchover to other types.
     63    virtual bool sendBinary(const WebData&);
     64    virtual bool sendArrayBuffer(const WebArrayBuffer&);
    6165    virtual unsigned long bufferedAmount() const;
    6266    virtual void close(int code, const WebString& reason);
     
    7680    RefPtr<WebCore::WebSocketChannel> m_private;
    7781    WebSocketClient* m_client;
     82    BinaryType m_binaryType;
    7883};
    7984
Note: See TracChangeset for help on using the changeset viewer.