Changeset 49488 in webkit


Ignore:
Timestamp:
Oct 12, 2009 6:44:18 PM (15 years ago)
Author:
ukai@chromium.org
Message:

WebCore: JavaScript bindings of WebSocket addEventListener/removeEventListener
https://bugs.webkit.org/show_bug.cgi?id=29841

Patch by Fumitoshi Ukai <ukai@chromium.org> on 2009-10-06
Reviewed by NOBODY (OOPS!).

Test: fast/websockets/websocket-event-target.html

  • bindings/js/JSWebSocketCustom.cpp:

(WebCore::JSWebSocket::addEventListener):
(WebCore::JSWebSocket::removeEventListener):

  • bindings/v8/custom/V8CustomBinding.h:
  • bindings/v8/custom/V8WebSocketCustom.cpp:

(WebCore::CALLBACK_FUNC_DECL):

  • websockets/WebSocket.idl:

WebKitTools: Enable experimentalWebSocket in DumpRenderTree for LayoutTest.
https://bugs.webkit.org/show_bug.cgi?id=29841

Patch by Fumitoshi Ukai <ukai@chromium.org> on 2009-10-06
Reviewed by NOBODY (OOPS!).

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetDefaultsToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetDefaultsToConsistentValues):

LayoutTests: Add a test to verify WebSocket's EventTarget methods.
https://bugs.webkit.org/show_bug.cgi?id=29841

Patch by Fumitoshi Ukai <ukai@chromium.org> on 2009-10-06
Reviewed by NOBODY (OOPS!).

  • fast/websockets/script-tests/TEMPLATE.html: Copied from LayoutTests/fast/canvas/script-tests/TEMPLATE.html.
  • fast/websockets/script-tests/websocket-event-target.js: Added.

(openListener):
(messageListener):
(closeListener):

  • fast/websockets/websocket-event-target-expected.txt: Added.
  • fast/websockets/websocket-event-target.html: Added.
Location:
trunk
Files:
6 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r49487 r49488  
     12009-10-12  Fumitoshi Ukai  <ukai@chromium.org>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Add a test to verify WebSocket's EventTarget methods.
     6        https://bugs.webkit.org/show_bug.cgi?id=29841
     7
     8        * fast/websockets/script-tests/TEMPLATE.html: Copied from LayoutTests/fast/canvas/script-tests/TEMPLATE.html.
     9        * fast/websockets/script-tests/websocket-event-target.js: Added.
     10        (openListener):
     11        (messageListener):
     12        (closeListener):
     13        * fast/websockets/websocket-event-target-expected.txt: Added.
     14        * fast/websockets/websocket-event-target.html: Added.
     15
    1162009-10-12  Sam Weinig  <sam@webkit.org>
    217
  • trunk/WebCore/ChangeLog

    r49487 r49488  
     12009-10-12  Fumitoshi Ukai  <ukai@chromium.org>
     2
     3        Reviewed by Sam Weinig.
     4
     5        JavaScript bindings of WebSocket addEventListener/removeEventListener
     6        https://bugs.webkit.org/show_bug.cgi?id=29841
     7
     8        Test: fast/websockets/websocket-event-target.html
     9
     10        * bindings/js/JSWebSocketCustom.cpp:
     11        (WebCore::JSWebSocket::addEventListener):
     12        (WebCore::JSWebSocket::removeEventListener):
     13        * bindings/v8/custom/V8CustomBinding.h:
     14        * bindings/v8/custom/V8WebSocketCustom.cpp:
     15        (WebCore::CALLBACK_FUNC_DECL):
     16        * websockets/WebSocket.idl:
     17
    1182009-10-12  Sam Weinig  <sam@webkit.org>
    219
  • trunk/WebCore/bindings/js/JSWebSocketCustom.cpp

    r48701 r49488  
    3737
    3838#include "KURL.h"
     39#include "JSEventListener.h"
    3940#include "WebSocket.h"
    4041#include "NotImplemented.h"
     
    6061}
    6162
    62 // FIXME: implement addEventListener/removeEventListener.
     63JSValue JSWebSocket::addEventListener(ExecState* exec, const ArgList& args)
     64{
     65    JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
     66    if (!globalObject)
     67        return jsUndefined();
     68
     69    JSValue listener = args.at(1);
     70    if (!listener.isObject())
     71        return jsUndefined();
     72
     73    impl()->addEventListener(args.at(0).toString(exec), JSEventListener::create(asObject(listener), false), args.at(2).toBoolean(exec));
     74    return jsUndefined();
     75}
     76
     77JSValue JSWebSocket::removeEventListener(ExecState* exec, const ArgList& args)
     78{
     79    JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
     80    if (!globalObject)
     81        return jsUndefined();
     82
     83    JSValue listener = args.at(1);
     84    if (!listener.isObject())
     85        return jsUndefined();
     86
     87    impl()->removeEventListener(args.at(0).toString(exec), JSEventListener::create(asObject(listener), false).get(), args.at(2).toBoolean(exec));
     88    return jsUndefined();
     89}
    6390
    6491}  // namespace WebCore
  • trunk/WebCore/bindings/v8/custom/V8CustomBinding.h

    r49234 r49488  
    628628        DECLARE_PROPERTY_ACCESSOR(WebSocketOnclose);
    629629        DECLARE_CALLBACK(WebSocketConstructor);
     630        DECLARE_CALLBACK(WebSocketAddEventListener);
     631        DECLARE_CALLBACK(WebSocketRemoveEventListener);
    630632        DECLARE_CALLBACK(WebSocketSend);
    631633        DECLARE_CALLBACK(WebSocketClose);
  • trunk/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp

    r49086 r49488  
    4545namespace WebCore {
    4646
    47 // ??? AddEventListener, RemoveEventListener
     47CALLBACK_FUNC_DECL(WebSocketAddEventListener)
     48{
     49    INC_STATS("DOM.WebSocket.addEventListener()");
     50    WebSocket* webSocket = V8DOMWrapper::convertToNativeObject<WebSocket>(V8ClassIndex::WEBSOCKET, args.Holder());
     51
     52    RefPtr<EventListener> listener = V8DOMWrapper::getEventListener(webSocket, args[1], false, ListenerFindOrCreate);
     53    if (listener) {
     54        String type = toWebCoreString(args[0]);
     55        bool useCapture = args[2]->BooleanValue();
     56        webSocket->addEventListener(type, listener, useCapture);
     57
     58        createHiddenDependency(args.Holder(), args[1], V8Custom::kWebSocketCacheIndex);
     59    }
     60    return v8::Undefined();
     61}
     62
     63CALLBACK_FUNC_DECL(WebSocketRemoveEventListener)
     64{
     65    INC_STATS("DOM.WebSocket.removeEventListener()");
     66    WebSocket* webSocket = V8DOMWrapper::convertToNativeObject<WebSocket>(V8ClassIndex::WEBSOCKET, args.Holder());
     67
     68    RefPtr<EventListener> listener = V8DOMWrapper::getEventListener(webSocket, args[1], false, ListenerFindOnly);
     69    if (listener) {
     70        String type = toWebCoreString(args[0]);
     71        bool useCapture = args[2]->BooleanValue();
     72        webSocket->removeEventListener(type, listener.get(), useCapture);
     73        removeHiddenDependency(args.Holder(), args[1], V8Custom::kWebSocketCacheIndex);
     74    }
     75    return v8::Undefined();
     76}
    4877
    4978CALLBACK_FUNC_DECL(WebSocketConstructor)
  • trunk/WebCore/websockets/WebSocket.idl

    r48701 r49488  
    5656
    5757        // EventTarget interface
    58         // [Custom] void addEventListener(in DOMString type,
    59         //   in EventListener listener,
    60         //   in boolean useCapture);
    61         // [Custom] void removeEventListener(in DOMString type,
    62         //   in EventListener listener,
    63         //   in boolean useCapture);
    64         // boolean dispatchEvent(in Event evt)
    65         //   raises(EventException);
     58        [Custom] void addEventListener(in DOMString type,
     59                                       in EventListener listener,
     60                                       in boolean useCapture);
     61        [Custom] void removeEventListener(in DOMString type,
     62                                          in EventListener listener,
     63                                          in boolean useCapture);
     64        boolean dispatchEvent(in Event evt)
     65            raises(EventException);
    6666    };
    6767}
  • trunk/WebKitTools/ChangeLog

    r49485 r49488  
     12009-10-12  Fumitoshi Ukai  <ukai@chromium.org>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Enable experimentalWebSocket in DumpRenderTree for LayoutTest.
     6        https://bugs.webkit.org/show_bug.cgi?id=29841
     7
     8        * DumpRenderTree/mac/DumpRenderTree.mm:
     9        (resetDefaultsToConsistentValues):
     10        * DumpRenderTree/win/DumpRenderTree.cpp:
     11        (resetDefaultsToConsistentValues):
     12
    1132009-10-12  Yaar Schnitman  <yaar@chromium.org>
    214
  • trunk/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm

    r49411 r49488  
    410410    [preferences setXSSAuditorEnabled:NO];
    411411    [preferences setExperimentalNotificationsEnabled:NO];
    412     [preferences setExperimentalWebSocketsEnabled:NO];
     412    [preferences setExperimentalWebSocketsEnabled:YES];
    413413    [preferences setPluginAllowedRunTime:1];
    414414
  • trunk/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp

    r49299 r49488  
    738738        prefsPrivate->setDeveloperExtrasEnabled(FALSE);
    739739        prefsPrivate->setExperimentalNotificationsEnabled(TRUE);
    740         prefsPrivate->setExperimentalWebSocketsEnabled(FALSE);
     740        prefsPrivate->setExperimentalWebSocketsEnabled(TRUE);
    741741        prefsPrivate->setShouldPaintNativeControls(FALSE); // FIXME - need to make DRT pass with Windows native controls <http://bugs.webkit.org/show_bug.cgi?id=25592>
    742742        prefsPrivate->setXSSAuditorEnabled(FALSE);
Note: See TracChangeset for help on using the changeset viewer.