1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* 28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2009 Google Inc. All rights reserved. 38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Redistribution and use in source and binary forms, with or without 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modification, are permitted provided that the following conditions are 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * met: 78f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions of source code must retain the above copyright 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * notice, this list of conditions and the following disclaimer. 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions in binary form must reproduce the above 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * copyright notice, this list of conditions and the following disclaimer 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in the documentation and/or other materials provided with the 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * distribution. 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Neither the name of Google Inc. nor the names of its 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contributors may be used to endorse or promote products derived from 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this software without specific prior written permission. 178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebElement.h" 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "Element.h" 3521939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "RenderBoxModelObject.h" 3621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "RenderObject.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/PassRefPtr.h> 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 390617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "WebNamedNodeMap.h" 400617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace WebCore; 42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockbool WebElement::isFormControlElement() const 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return constUnwrap<Element>()->isFormControlElement(); 488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} 49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 50a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochbool WebElement::isTextFormControlElement() const 51a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 52a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return constUnwrap<Element>()->isTextFormControl(); 53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 54a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 55d0825bca7fe65beaee391d30da42e937db621564Steve BlockWebString WebElement::tagName() const 56d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 57d0825bca7fe65beaee391d30da42e937db621564Steve Block return constUnwrap<Element>()->tagName(); 58d0825bca7fe65beaee391d30da42e937db621564Steve Block} 59d0825bca7fe65beaee391d30da42e937db621564Steve Block 60d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool WebElement::hasTagName(const WebString& tagName) const 61d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 62d0825bca7fe65beaee391d30da42e937db621564Steve Block return equalIgnoringCase(constUnwrap<Element>()->tagName(), 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block tagName.operator String()); 64d0825bca7fe65beaee391d30da42e937db621564Steve Block} 65d0825bca7fe65beaee391d30da42e937db621564Steve Block 66d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool WebElement::hasAttribute(const WebString& attrName) const 67d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 68d0825bca7fe65beaee391d30da42e937db621564Steve Block return constUnwrap<Element>()->hasAttribute(attrName); 69d0825bca7fe65beaee391d30da42e937db621564Steve Block} 70d0825bca7fe65beaee391d30da42e937db621564Steve Block 71d0825bca7fe65beaee391d30da42e937db621564Steve BlockWebString WebElement::getAttribute(const WebString& attrName) const 72d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 73d0825bca7fe65beaee391d30da42e937db621564Steve Block return constUnwrap<Element>()->getAttribute(attrName); 74d0825bca7fe65beaee391d30da42e937db621564Steve Block} 75d0825bca7fe65beaee391d30da42e937db621564Steve Block 76d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool WebElement::setAttribute(const WebString& attrName, const WebString& attrValue) 77d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 78d0825bca7fe65beaee391d30da42e937db621564Steve Block ExceptionCode exceptionCode = 0; 79d0825bca7fe65beaee391d30da42e937db621564Steve Block unwrap<Element>()->setAttribute(attrName, attrValue, exceptionCode); 80d0825bca7fe65beaee391d30da42e937db621564Steve Block return !exceptionCode; 81d0825bca7fe65beaee391d30da42e937db621564Steve Block} 82d0825bca7fe65beaee391d30da42e937db621564Steve Block 830617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenWebNamedNodeMap WebElement::attributes() const 840617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{ 850617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebNamedNodeMap(m_private->attributes()); 860617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen} 870617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 88d0825bca7fe65beaee391d30da42e937db621564Steve BlockWebString WebElement::innerText() const 89d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 90d0825bca7fe65beaee391d30da42e937db621564Steve Block return constUnwrap<Element>()->innerText(); 91d0825bca7fe65beaee391d30da42e937db621564Steve Block} 92d0825bca7fe65beaee391d30da42e937db621564Steve Block 932bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebNode WebElement::shadowRoot() 942bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return adoptRef(static_cast<Node*>(unwrap<Element>()->shadowRoot())); 962bde8e466a4451c7319e3a072d118917957d6554Steve Block} 972bde8e466a4451c7319e3a072d118917957d6554Steve Block 985ddde30071f639962dd557c453f2ad01f8f0fd00Kristian MonsenWebString WebElement::computeInheritedLanguage() const 995ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen{ 1005ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return WebString(constUnwrap<Element>()->computeInheritedLanguage()); 1015ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} 1025ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebElement::WebElement(const PassRefPtr<Element>& elem) 104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block : WebNode(elem) 105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebElement& WebElement::operator=(const PassRefPtr<Element>& elem) 109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private = elem; 111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return *this; 112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 114dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebElement::operator PassRefPtr<Element>() const 115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return static_cast<Element*>(m_private.get()); 117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} // namespace WebKit 120