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