1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebInputElement.h" 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "HTMLInputElement.h" 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "HTMLNames.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebString.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/PassRefPtr.h> 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace WebCore; 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 4368513a70bcd92384395513322f1b801e7bf9c729Steve Blockbool WebInputElement::isTextField() const 4468513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 4568513a70bcd92384395513322f1b801e7bf9c729Steve Block return constUnwrap<HTMLInputElement>()->isTextField(); 4668513a70bcd92384395513322f1b801e7bf9c729Steve Block} 4768513a70bcd92384395513322f1b801e7bf9c729Steve Block 4868513a70bcd92384395513322f1b801e7bf9c729Steve Blockbool WebInputElement::isText() const 4968513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 5068513a70bcd92384395513322f1b801e7bf9c729Steve Block return constUnwrap<HTMLInputElement>()->isText(); 5168513a70bcd92384395513322f1b801e7bf9c729Steve Block} 5268513a70bcd92384395513322f1b801e7bf9c729Steve Block 5368513a70bcd92384395513322f1b801e7bf9c729Steve Blockbool WebInputElement::isPasswordField() const 5468513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 5568513a70bcd92384395513322f1b801e7bf9c729Steve Block return constUnwrap<HTMLInputElement>()->isPasswordField(); 5668513a70bcd92384395513322f1b801e7bf9c729Steve Block} 5768513a70bcd92384395513322f1b801e7bf9c729Steve Block 5868513a70bcd92384395513322f1b801e7bf9c729Steve Blockbool WebInputElement::isImageButton() const 5968513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 6068513a70bcd92384395513322f1b801e7bf9c729Steve Block return constUnwrap<HTMLInputElement>()->isImageButton(); 6168513a70bcd92384395513322f1b801e7bf9c729Steve Block} 6268513a70bcd92384395513322f1b801e7bf9c729Steve Block 63d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool WebInputElement::autoComplete() const 64d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 65d0825bca7fe65beaee391d30da42e937db621564Steve Block return constUnwrap<HTMLInputElement>()->autoComplete(); 66d0825bca7fe65beaee391d30da42e937db621564Steve Block} 67d0825bca7fe65beaee391d30da42e937db621564Steve Block 68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockint WebInputElement::maxLength() const 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return constUnwrap<HTMLInputElement>()->maxLength(); 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 728a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 738a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockbool WebInputElement::isActivatedSubmit() const 748a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{ 758a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block return constUnwrap<HTMLInputElement>()->isActivatedSubmit(); 768a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block} 778a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebInputElement::setActivatedSubmit(bool activated) 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unwrap<HTMLInputElement>()->setActivatedSubmit(activated); 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenint WebInputElement::size() const 846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return constUnwrap<HTMLInputElement>()->size(); 866c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 876c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 8828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid WebInputElement::setValue(const WebString& value, bool sendChangeEvent) 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 9028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu unwrap<HTMLInputElement>()->setValue(value, sendChangeEvent); 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 93643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebInputElement::value() const 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return constUnwrap<HTMLInputElement>()->value(); 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 98e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid WebInputElement::setSuggestedValue(const WebString& value) 99e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 100e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke unwrap<HTMLInputElement>()->setSuggestedValue(value); 101e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 102e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 103e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeWebString WebInputElement::suggestedValue() const 104e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 105e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return constUnwrap<HTMLInputElement>()->suggestedValue(); 106e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 107e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 108545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochvoid WebInputElement::setPlaceholder(const WebString& value) 109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 110545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch unwrap<HTMLInputElement>()->setPlaceholder(value); 111545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 112545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 113545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochWebString WebInputElement::placeholder() const 114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return constUnwrap<HTMLInputElement>()->placeholder(); 116545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 117545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochbool WebInputElement::isAutofilled() const 119545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 120545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return constUnwrap<HTMLInputElement>()->isAutofilled(); 121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 122545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebInputElement::setAutofilled(bool autoFilled) 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unwrap<HTMLInputElement>()->setAutofilled(autoFilled); 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebInputElement::setSelectionRange(int start, int end) 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unwrap<HTMLInputElement>()->setSelectionRange(start, end); 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 13328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuint WebInputElement::selectionStart() const 134e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 13528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return constUnwrap<HTMLInputElement>()->selectionStart(); 136e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 137e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 13828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuint WebInputElement::selectionEnd() const 139e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 14028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return constUnwrap<HTMLInputElement>()->selectionEnd(); 141e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 142e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 1435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenbool WebInputElement::isValidValue(const WebString& value) const 1445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen{ 1455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return constUnwrap<HTMLInputElement>()->isValidValue(value); 1465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} 1475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 14881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochbool WebInputElement::isChecked() const 14981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 15081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return constUnwrap<HTMLInputElement>()->checked(); 15181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 15281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1532fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockint WebInputElement::defaultMaxLength() 1542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 1552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return HTMLInputElement::s_maximumLength; 1562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 1574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 158dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInputElement::WebInputElement(const PassRefPtr<HTMLInputElement>& elem) 159dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block : WebFormControlElement(elem) 160dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 161dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 162dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 163dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInputElement& WebInputElement::operator=(const PassRefPtr<HTMLInputElement>& elem) 164dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 165dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private = elem; 166dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return *this; 167dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 168dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 169dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInputElement::operator PassRefPtr<HTMLInputElement>() const 170dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 171dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return static_cast<HTMLInputElement*>(m_private.get()); 172dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 173dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1742fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockWebInputElement* toWebInputElement(WebElement* webElement) 1752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 1762bde8e466a4451c7319e3a072d118917957d6554Steve Block InputElement* inputElement = webElement->unwrap<Element>()->toInputElement(); 1772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!inputElement) 1782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return 0; 1792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(webElement->unwrap<Element>()->isHTMLElement()); 1812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return static_cast<WebInputElement*>(webElement); 1832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 1842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 186