1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/**
2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is free software; you can redistribute it and/or
5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modify it under the terms of the GNU Library General Public
6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * License as published by the Free Software Foundation; either
7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * version 2 of the License, or (at your option) any later version.
8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is distributed in the hope that it will be useful,
10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Library General Public License for more details.
13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * You should have received a copy of the GNU Library General Public License
15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Boston, MA 02110-1301, USA.
18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project *
19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */
20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "config.h"
22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WML)
24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLEventHandlingElement.h"
25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLCardElement.h"
27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLDoElement.h"
28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLIntrinsicEventHandler.h"
29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLOptionElement.h"
30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLTaskElement.h"
31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLTemplateElement.h"
32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLNames.h"
33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore {
35635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
36635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectusing namespace WMLNames;
37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectWMLEventHandlingElement::WMLEventHandlingElement()
39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectWMLEventHandlingElement::~WMLEventHandlingElement()
43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid WMLEventHandlingElement::createEventHandlerIfNeeded()
47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (!m_eventHandler)
49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        m_eventHandler.set(new WMLIntrinsicEventHandler);
50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid WMLEventHandlingElement::registerDoElement(WMLDoElement* doElement, Document* document)
53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    Vector<WMLDoElement*>::iterator it = m_doElements.begin();
55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    Vector<WMLDoElement*>::iterator end = m_doElements.end();
56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    for (; it != end; ++it) {
58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        if ((*it)->name() == doElement->name()) {
59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            reportWMLError(document, WMLErrorDuplicatedDoElement);
60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project            return;
61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        }
62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    }
63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    ASSERT(m_doElements.find(doElement) == WTF::notFound);
65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    m_doElements.append(doElement);
66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    doElement->setActive(true);
67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid WMLEventHandlingElement::deregisterDoElement(WMLDoElement* doElement)
700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    doElement->setActive(false);
720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    size_t position = m_doElements.find(doElement);
740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (position == WTF::notFound)
750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        return;
760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    m_doElements.remove(position);
780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
80635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectWMLEventHandlingElement* toWMLEventHandlingElement(WMLElement* element)
81635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
82635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (!element->isWMLElement())
83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return 0;
84635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    if (element->hasTagName(cardTag))
86635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return static_cast<WMLCardElement*>(element);
87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    else if (element->hasTagName(optionTag))
88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return static_cast<WMLOptionElement*>(element);
89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    else if (element->hasTagName(templateTag))
90635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        return static_cast<WMLTemplateElement*>(element);
91635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
92635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    return 0;
93635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
94635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}
96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
97635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif
98