| Index: Source/WebKit/chromium/tests/EventListenerTest.cpp
|
| diff --git a/Source/WebKit/chromium/tests/EventListenerTest.cpp b/Source/WebKit/chromium/tests/EventListenerTest.cpp
|
| deleted file mode 100644
|
| index 629540f5fcea2823b443b1c3e7b5f39bb6d883a9..0000000000000000000000000000000000000000
|
| --- a/Source/WebKit/chromium/tests/EventListenerTest.cpp
|
| +++ /dev/null
|
| @@ -1,253 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2012 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are
|
| - * met:
|
| - *
|
| - * * Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * * Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following disclaimer
|
| - * in the documentation and/or other materials provided with the
|
| - * distribution.
|
| - * * Neither the name of Google Inc. nor the names of its
|
| - * contributors may be used to endorse or promote products derived from
|
| - * this software without specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#include "config.h"
|
| -
|
| -#include "FrameTestHelpers.h"
|
| -#include "URLTestHelpers.h"
|
| -#include "WebDOMEvent.h"
|
| -#include "WebDOMEventListener.h"
|
| -#include "WebDOMMutationEvent.h"
|
| -#include "WebDocument.h"
|
| -#include "WebElement.h"
|
| -#include "WebFrame.h"
|
| -#include "WebScriptSource.h"
|
| -#include "WebView.h"
|
| -#include <gtest/gtest.h>
|
| -#include <public/Platform.h>
|
| -#include <public/WebUnitTestSupport.h>
|
| -
|
| -using namespace WebKit;
|
| -
|
| -namespace {
|
| -
|
| -class TestWebDOMEventListener : public WebDOMEventListener {
|
| -public:
|
| - TestWebDOMEventListener() { }
|
| - virtual ~TestWebDOMEventListener() { }
|
| -
|
| - virtual void handleEvent(const WebDOMEvent& event) OVERRIDE
|
| - {
|
| - m_events.push_back(event);
|
| - }
|
| -
|
| - size_t eventCount() const { return m_events.size(); }
|
| -
|
| - WebDOMEvent eventAt(int index) const { return m_events.at(index); }
|
| -
|
| - void clearEvents() { m_events.clear(); }
|
| -
|
| -private:
|
| - std::vector<WebDOMEvent> m_events;
|
| -};
|
| -
|
| -class WebDOMEventListenerTest : public testing::Test {
|
| -public:
|
| - WebDOMEventListenerTest()
|
| - : m_webView(0)
|
| - {
|
| - }
|
| -
|
| - virtual void SetUp() OVERRIDE
|
| - {
|
| - std::string baseURL("http://www.example.com/");
|
| - std::string fileName("listener/mutation_event_listener.html");
|
| - bool executeScript = true;
|
| - URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL.c_str()), WebString::fromUTF8(fileName.c_str()));
|
| - m_webView = FrameTestHelpers::createWebViewAndLoad(baseURL + fileName, executeScript);
|
| - }
|
| -
|
| - virtual void TearDown() OVERRIDE
|
| - {
|
| - m_webView->close();
|
| - Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
|
| - }
|
| -
|
| - WebFrame* mainFrame() const
|
| - {
|
| - return m_webView->mainFrame();
|
| - }
|
| -
|
| - WebDocument document() const
|
| - {
|
| - return mainFrame()->document();
|
| - }
|
| -
|
| - void executeScript(const char* code)
|
| - {
|
| - mainFrame()->executeScript(WebScriptSource(WebString::fromUTF8(code)));
|
| - }
|
| -
|
| -
|
| - static WebString GetNodeID(const WebNode& node)
|
| - {
|
| - if (node.nodeType() != WebNode::ElementNode)
|
| - return WebString();
|
| - WebElement element = node.toConst<WebElement>();
|
| - return element.getAttribute("id");
|
| - }
|
| -
|
| -protected:
|
| - WebView* m_webView;
|
| -};
|
| -
|
| -
|
| -// Tests that the right mutation events are fired when a node is added/removed.
|
| -// Note that the DOMSubtreeModified event is fairly vage, it only tells you
|
| -// something changed for the target node.
|
| -TEST_F(WebDOMEventListenerTest, NodeAddedRemovedMutationEvent)
|
| -{
|
| - TestWebDOMEventListener eventListener;
|
| - document().addEventListener("DOMSubtreeModified", &eventListener, false);
|
| -
|
| - // Test adding a node.
|
| - executeScript("addElement('newNode')");
|
| - ASSERT_EQ(1U, eventListener.eventCount());
|
| - WebDOMEvent event = eventListener.eventAt(0);
|
| - ASSERT_TRUE(event.isMutationEvent());
|
| - // No need to check any of the MutationEvent, WebKit does not set any.
|
| - EXPECT_EQ("DIV", event.target().nodeName());
|
| - EXPECT_EQ("topDiv", GetNodeID(event.target()));
|
| - eventListener.clearEvents();
|
| -
|
| - // Test removing a node.
|
| - executeScript("removeNode('div1')");
|
| - ASSERT_EQ(1U, eventListener.eventCount());
|
| - event = eventListener.eventAt(0);
|
| - ASSERT_TRUE(event.isMutationEvent());
|
| - EXPECT_EQ("DIV", event.target().nodeName());
|
| - EXPECT_EQ("topDiv", GetNodeID(event.target()));
|
| -}
|
| -
|
| -// Tests the right mutation event is fired when a text node is modified.
|
| -TEST_F(WebDOMEventListenerTest, TextNodeModifiedMutationEvent)
|
| -{
|
| - TestWebDOMEventListener eventListener;
|
| - document().addEventListener("DOMSubtreeModified", &eventListener, false);
|
| - executeScript("changeText('div2', 'Hello')");
|
| - ASSERT_EQ(1U, eventListener.eventCount());
|
| - WebDOMEvent event = eventListener.eventAt(0);
|
| - ASSERT_TRUE(event.isMutationEvent());
|
| - ASSERT_EQ(WebNode::TextNode, event.target().nodeType());
|
| -}
|
| -
|
| -// Tests the right mutation events are fired when an attribute is added/removed.
|
| -TEST_F(WebDOMEventListenerTest, AttributeMutationEvent)
|
| -{
|
| - TestWebDOMEventListener eventListener;
|
| - document().addEventListener("DOMSubtreeModified", &eventListener, false);
|
| - executeScript("document.getElementById('div2').setAttribute('myAttr',"
|
| - "'some value')");
|
| - ASSERT_EQ(1U, eventListener.eventCount());
|
| - WebDOMEvent event = eventListener.eventAt(0);
|
| - ASSERT_TRUE(event.isMutationEvent());
|
| - EXPECT_EQ("DIV", event.target().nodeName());
|
| - EXPECT_EQ("div2", GetNodeID(event.target()));
|
| - eventListener.clearEvents();
|
| -
|
| - executeScript("document.getElementById('div2').removeAttribute('myAttr')");
|
| - ASSERT_EQ(1U, eventListener.eventCount());
|
| - event = eventListener.eventAt(0);
|
| - ASSERT_TRUE(event.isMutationEvent());
|
| - EXPECT_EQ("DIV", event.target().nodeName());
|
| - EXPECT_EQ("div2", GetNodeID(event.target()));
|
| -}
|
| -
|
| -// Tests destroying WebDOMEventListener and triggering events, we shouldn't
|
| -// crash.
|
| -TEST_F(WebDOMEventListenerTest, FireEventDeletedListener)
|
| -{
|
| - TestWebDOMEventListener* eventListener = new TestWebDOMEventListener();
|
| - document().addEventListener("DOMSubtreeModified", eventListener, false);
|
| - delete eventListener;
|
| - executeScript("addElement('newNode')"); // That should fire an event.
|
| -}
|
| -
|
| -// Tests registering several events on the same WebDOMEventListener and
|
| -// triggering events.
|
| -TEST_F(WebDOMEventListenerTest, SameListenerMultipleEvents)
|
| -{
|
| - TestWebDOMEventListener eventListener;
|
| - const WebString kDOMSubtreeModifiedType("DOMSubtreeModified");
|
| - const WebString kDOMNodeRemovedType("DOMNodeRemoved");
|
| - document().addEventListener(kDOMSubtreeModifiedType, &eventListener, false);
|
| - WebElement div1Elem = document().getElementById("div1");
|
| - div1Elem.addEventListener(kDOMNodeRemovedType, &eventListener, false);
|
| -
|
| - // Trigger a DOMSubtreeModified event by adding a node.
|
| - executeScript("addElement('newNode')");
|
| - ASSERT_EQ(1U, eventListener.eventCount());
|
| - WebDOMEvent event = eventListener.eventAt(0);
|
| - ASSERT_TRUE(event.isMutationEvent());
|
| - EXPECT_EQ("DIV", event.target().nodeName());
|
| - EXPECT_EQ("topDiv", GetNodeID(event.target()));
|
| - eventListener.clearEvents();
|
| -
|
| - // Trigger for both event listener by removing the div1 node.
|
| - executeScript("removeNode('div1')");
|
| - ASSERT_EQ(2U, eventListener.eventCount());
|
| - // Not sure if the order of the events is important. Assuming no specific
|
| - // order.
|
| - WebString type1 = eventListener.eventAt(0).type();
|
| - WebString type2 = eventListener.eventAt(1).type();
|
| - EXPECT_TRUE(type1 == kDOMSubtreeModifiedType || type1 == kDOMNodeRemovedType);
|
| - EXPECT_TRUE(type2 == kDOMSubtreeModifiedType || type2 == kDOMNodeRemovedType);
|
| - EXPECT_TRUE(type1 != type2);
|
| -}
|
| -
|
| -// Tests removing event listeners.
|
| -TEST_F(WebDOMEventListenerTest, RemoveEventListener)
|
| -{
|
| - TestWebDOMEventListener eventListener;
|
| - const WebString kDOMSubtreeModifiedType("DOMSubtreeModified");
|
| - // Adding twice the same listener for the same event, should be supported.
|
| - document().addEventListener(kDOMSubtreeModifiedType, &eventListener, false);
|
| - document().addEventListener(kDOMSubtreeModifiedType, &eventListener, false);
|
| -
|
| - // Add a node, that should trigger 2 events.
|
| - executeScript("addElement('newNode')");
|
| - EXPECT_EQ(2U, eventListener.eventCount());
|
| - eventListener.clearEvents();
|
| -
|
| - // Remove one listener and trigger an event again.
|
| - document().removeEventListener(
|
| - kDOMSubtreeModifiedType, &eventListener, false);
|
| - executeScript("addElement('newerNode')");
|
| - EXPECT_EQ(1U, eventListener.eventCount());
|
| - eventListener.clearEvents();
|
| -
|
| - // Remove the last listener and trigger yet another event.
|
| - document().removeEventListener(
|
| - kDOMSubtreeModifiedType, &eventListener, false);
|
| - executeScript("addElement('newererNode')");
|
| - EXPECT_EQ(0U, eventListener.eventCount());
|
| -}
|
| -
|
| -} // namespace
|
|
|