Changeset 33006 in webkit


Ignore:
Timestamp:
May 9, 2008 1:14:29 PM (16 years ago)
Author:
weinig@apple.com
Message:

WebCore:

2008-05-09 Adam Barth <abarth-webkit@adambarth.com>

Reviewed by Sam Weinig.

https://bugs.webkit.org/show_bug.cgi?id=18771

Make postMessage generate an event on the window instead of the
document.

Test: http/tests/messaging/cross-domain-message-event-dispatch.html

  • dom/EventTargetNode.cpp: (WebCore::EventTargetNode::dispatchWindowEvent):
  • dom/EventTargetNode.h:
  • page/DOMWindow.cpp: (WebCore::DOMWindow::postMessageTimerFired):

LayoutTests:

2008-05-09 Adam Barth <abarth-webkit@adambarth.com>

Reviewed by Sam Weinig.

Update tests to listen for message events on the window instead of
the document. Also, added a test that the event is sent to the
window and not to the document.

  • http/tests/messaging/cross-domain-message-event-dispatch-expected.txt: Added.
  • http/tests/messaging/cross-domain-message-event-dispatch.html: Added.
  • http/tests/messaging/cross-domain-message-send.html:
  • http/tests/messaging/resources/cross-domain-message-receive.html:
  • http/tests/security/cross-frame-access-delete.html:
  • http/tests/security/cross-frame-access-history-put.html:
  • http/tests/security/cross-frame-access-location-put.html:
  • http/tests/security/postMessage/delivery-order.html:
  • http/tests/security/postMessage/invalid-origin-throws-exception.html:
  • http/tests/security/postMessage/javascript-page-still-sends-origin.html:
  • http/tests/security/postMessage/origin-unaffected-by-base-tag.html:
  • http/tests/security/postMessage/origin-unaffected-by-document-domain.html:
  • http/tests/security/postMessage/resources/post-message-listener.html:
  • http/tests/security/postMessage/target-origin.html:
  • http/tests/security/resources/cross-frame-iframe-for-delete-test.html:
  • http/tests/security/resources/cross-frame-iframe-for-history-put-test.html:
  • http/tests/security/resources/cross-frame-iframe-for-location-put-test.html:
  • http/tests/security/xss-eval.html:
Location:
trunk
Files:
2 added
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r32992 r33006  
     12008-05-09  Adam Barth  <abarth-webkit@adambarth.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Update tests to listen for message events on the window instead of
     6        the document.  Also, added a test that the event is sent to the
     7        window and not to the document.
     8
     9        * http/tests/messaging/cross-domain-message-event-dispatch-expected.txt: Added.
     10        * http/tests/messaging/cross-domain-message-event-dispatch.html: Added.
     11        * http/tests/messaging/cross-domain-message-send.html:
     12        * http/tests/messaging/resources/cross-domain-message-receive.html:
     13        * http/tests/security/cross-frame-access-delete.html:
     14        * http/tests/security/cross-frame-access-history-put.html:
     15        * http/tests/security/cross-frame-access-location-put.html:
     16        * http/tests/security/postMessage/delivery-order.html:
     17        * http/tests/security/postMessage/invalid-origin-throws-exception.html:
     18        * http/tests/security/postMessage/javascript-page-still-sends-origin.html:
     19        * http/tests/security/postMessage/origin-unaffected-by-base-tag.html:
     20        * http/tests/security/postMessage/origin-unaffected-by-document-domain.html:
     21        * http/tests/security/postMessage/resources/post-message-listener.html:
     22        * http/tests/security/postMessage/target-origin.html:
     23        * http/tests/security/resources/cross-frame-iframe-for-delete-test.html:
     24        * http/tests/security/resources/cross-frame-iframe-for-history-put-test.html:
     25        * http/tests/security/resources/cross-frame-iframe-for-location-put-test.html:
     26        * http/tests/security/xss-eval.html:
     27
    1282008-05-08  Dan Bernstein  <mitz@apple.com>
    229
  • trunk/LayoutTests/http/tests/messaging/cross-domain-message-send.html

    r32922 r33006  
    2424}
    2525
    26 document.addEventListener('message', receiver, false);
     26addEventListener('message', receiver, false);
    2727
    2828   
  • trunk/LayoutTests/http/tests/messaging/resources/cross-domain-message-receive.html

    r32922 r33006  
    1414}
    1515
    16 document.addEventListener('message', receiver, false);
     16addEventListener('message', receiver, false);
    1717
    1818</script>
  • trunk/LayoutTests/http/tests/security/cross-frame-access-delete.html

    r32922 r33006  
    1414                deleteTest();
    1515        }
    16         document.addEventListener('message', receiver, false);
     16        addEventListener('message', receiver, false);
    1717
    1818        deleteTest = function()
  • trunk/LayoutTests/http/tests/security/cross-frame-access-history-put.html

    r32922 r33006  
    2929                setTest();
    3030        }
    31         document.addEventListener('message', receiver, false);
     31        addEventListener('message', receiver, false);
    3232
    3333        setTest = function()
  • trunk/LayoutTests/http/tests/security/cross-frame-access-location-put.html

    r32922 r33006  
    2929                setTest();
    3030        }
    31         document.addEventListener('message', receiver, false);
     31        addEventListener('message', receiver, false);
    3232
    3333        setTest = function()
  • trunk/LayoutTests/http/tests/security/postMessage/delivery-order.html

    r32922 r33006  
    99}
    1010
    11 document.addEventListener('message', recv, false);
     11addEventListener('message', recv, false);
    1212
    1313function test() {
  • trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html

    r32922 r33006  
    99}
    1010 
    11 document.addEventListener("message", recv, false);
     11addEventListener("message", recv, false);
    1212
    1313function tryPostMessage(origin) {
  • trunk/LayoutTests/http/tests/security/postMessage/javascript-page-still-sends-origin.html

    r32597 r33006  
    1717}
    1818
    19 document.addEventListener("message", recv, false);
     19addEventListener("message", recv, false);
    2020
    2121</script>
  • trunk/LayoutTests/http/tests/security/postMessage/origin-unaffected-by-base-tag.html

    r32922 r33006  
    99}
    1010
    11 document.addEventListener("message", recv, false);
     11addEventListener("message", recv, false);
    1212
    1313function test() {
  • trunk/LayoutTests/http/tests/security/postMessage/origin-unaffected-by-document-domain.html

    r32922 r33006  
    99}
    1010
    11 document.addEventListener("message", recv, false);
     11addEventListener("message", recv, false);
    1212
    1313function test() {
  • trunk/LayoutTests/http/tests/security/postMessage/resources/post-message-listener.html

    r32922 r33006  
    99}
    1010
    11 document.addEventListener("message", recv, false);
     11addEventListener("message", recv, false);
    1212</script>
    1313</body>
  • trunk/LayoutTests/http/tests/security/postMessage/target-origin.html

    r32922 r33006  
    99}
    1010
    11 document.addEventListener("message", recv, false);
     11addEventListener("message", recv, false);
    1212
    1313function tryPostMessage(win, origin) {
  • trunk/LayoutTests/http/tests/security/resources/cross-frame-iframe-for-delete-test.html

    r32922 r33006  
    88                setCheck();
    99        }
    10         document.addEventListener('message', receiver, false);
     10        addEventListener('message', receiver, false);
    1111
    1212        window.onload = function()
  • trunk/LayoutTests/http/tests/security/resources/cross-frame-iframe-for-history-put-test.html

    r32922 r33006  
    1515                setCheck();
    1616        }
    17         document.addEventListener('message', receiver, false);
     17        addEventListener('message', receiver, false);
    1818
    1919        window.onload = function()
  • trunk/LayoutTests/http/tests/security/resources/cross-frame-iframe-for-location-put-test.html

    r32922 r33006  
    1414                setCheck();
    1515        }
    16         document.addEventListener('message', receiver, false);
     16        addEventListener('message', receiver, false);
    1717
    1818        window.onload = function()
  • trunk/LayoutTests/http/tests/security/xss-eval.html

    r32922 r33006  
    2626}
    2727
    28 document.addEventListener("message", function()
     28addEventListener("message", function()
    2929{
    3030    shouldBe("eval.call(frames[0], 'document')", (function() { try { return eval.call(frames[0], 'document'); } catch(e) { return e.name; } })(), "EvalError");
  • trunk/WebCore/ChangeLog

    r33003 r33006  
     12008-05-09  Adam Barth  <abarth-webkit@adambarth.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=18771
     6
     7        Make postMessage generate an event on the window instead of the
     8        document.
     9
     10        Test: http/tests/messaging/cross-domain-message-event-dispatch.html
     11
     12        * dom/EventTargetNode.cpp:
     13        (WebCore::EventTargetNode::dispatchWindowEvent):
     14        * dom/EventTargetNode.h:
     15        * page/DOMWindow.cpp:
     16        (WebCore::DOMWindow::postMessageTimerFired):
     17
    1182008-05-09  Tor Arne Vestbø  <tavestbo@trolltech.com>
    219
  • trunk/WebCore/dom/EventTargetNode.cpp

    r31767 r33006  
    137137}
    138138
    139 void EventTargetNode::dispatchWindowEvent(const AtomicString &eventType, bool canBubbleArg, bool cancelableArg)
    140 {
    141     ASSERT(!eventDispatchForbidden());
    142     ExceptionCode ec = 0;
    143     RefPtr<Event> evt = new Event(eventType, canBubbleArg, cancelableArg);
     139void EventTargetNode::dispatchWindowEvent(PassRefPtr<Event> e)
     140{
     141    ASSERT(!eventDispatchForbidden());
     142    RefPtr<Event> evt(e);
    144143    RefPtr<Document> doc = document();
    145144    evt->setTarget(doc);
    146145    doc->handleWindowEvent(evt.get(), true);
    147146    doc->handleWindowEvent(evt.get(), false);
     147}
     148
     149void EventTargetNode::dispatchWindowEvent(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg)
     150{
     151    ASSERT(!eventDispatchForbidden());
     152    RefPtr<Document> doc = document();
     153    dispatchWindowEvent(new Event(eventType, canBubbleArg, cancelableArg));
    148154   
    149155    if (eventType == loadEvent) {
     
    155161            RefPtr<Event> ownerEvent = new Event(eventType, false, cancelableArg);
    156162            ownerEvent->setTarget(ownerElement);
     163            ExceptionCode ec = 0;
    157164            ownerElement->dispatchGenericEvent(ownerElement, ownerEvent.release(), ec, true);
    158165        }
  • trunk/WebCore/dom/EventTargetNode.h

    r31699 r33006  
    5353
    5454    bool dispatchSubtreeModifiedEvent();
     55    void dispatchWindowEvent(PassRefPtr<Event>);
    5556    void dispatchWindowEvent(const AtomicString& eventType, bool canBubble, bool cancelable);
    5657    bool dispatchUIEvent(const AtomicString& eventType, int detail = 0, PassRefPtr<Event> underlyingEvent = 0);
  • trunk/WebCore/page/DOMWindow.cpp

    r32968 r33006  
    396396    }
    397397
    398     ExceptionCode ec;
    399     document()->dispatchEvent(timer->event(), ec, true);
     398    document()->dispatchWindowEvent(timer->event());
    400399}
    401400#endif
Note: See TracChangeset for help on using the changeset viewer.