| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
| 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) | 7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) |
| 8 * Copyright (C) 2010 Google Inc. All rights reserved. | 8 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 9 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 9 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 10 * Copyright (C) 2012 Samsung Electronics. All rights reserved. | 10 * Copyright (C) 2012 Samsung Electronics. All rights reserved. |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 bool HTMLInputElement::shouldAutocomplete() const | 173 bool HTMLInputElement::shouldAutocomplete() const |
| 174 { | 174 { |
| 175 if (m_autocomplete != Uninitialized) | 175 if (m_autocomplete != Uninitialized) |
| 176 return m_autocomplete == On; | 176 return m_autocomplete == On; |
| 177 return HTMLTextFormControlElement::shouldAutocomplete(); | 177 return HTMLTextFormControlElement::shouldAutocomplete(); |
| 178 } | 178 } |
| 179 | 179 |
| 180 bool HTMLInputElement::isValidValue(const String& value) const | 180 bool HTMLInputElement::isValidValue(const String& value) const |
| 181 { | 181 { |
| 182 if (!m_inputType->canSetStringValue()) { | 182 if (!m_inputType->canSetStringValue()) { |
| 183 ASSERT_NOT_REACHED(); | 183 NOTREACHED(); |
| 184 return false; | 184 return false; |
| 185 } | 185 } |
| 186 return !m_inputType->typeMismatchFor(value) | 186 return !m_inputType->typeMismatchFor(value) |
| 187 && !m_inputType->stepMismatch(value) | 187 && !m_inputType->stepMismatch(value) |
| 188 && !m_inputType->rangeUnderflow(value) | 188 && !m_inputType->rangeUnderflow(value) |
| 189 && !m_inputType->rangeOverflow(value) | 189 && !m_inputType->rangeOverflow(value) |
| 190 && !tooLong(value, IgnoreDirtyFlag) | 190 && !tooLong(value, IgnoreDirtyFlag) |
| 191 && !tooShort(value, IgnoreDirtyFlag) | 191 && !tooShort(value, IgnoreDirtyFlag) |
| 192 && !m_inputType->patternMismatch(value) | 192 && !m_inputType->patternMismatch(value) |
| 193 && !m_inputType->valueMissing(value); | 193 && !m_inputType->valueMissing(value); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 layoutObject()->scrollRectToVisible(boundingBox()); | 346 layoutObject()->scrollRectToVisible(boundingBox()); |
| 347 if (document().frame()) | 347 if (document().frame()) |
| 348 document().frame()->selection().revealSelection(); | 348 document().frame()->selection().revealSelection(); |
| 349 } else { | 349 } else { |
| 350 HTMLTextFormControlElement::updateFocusAppearance(selectionBehavior); | 350 HTMLTextFormControlElement::updateFocusAppearance(selectionBehavior); |
| 351 } | 351 } |
| 352 } | 352 } |
| 353 | 353 |
| 354 void HTMLInputElement::beginEditing() | 354 void HTMLInputElement::beginEditing() |
| 355 { | 355 { |
| 356 ASSERT(document().isActive()); | 356 DCHECK(document().isActive()); |
| 357 if (!document().isActive()) | 357 if (!document().isActive()) |
| 358 return; | 358 return; |
| 359 | 359 |
| 360 if (!isTextField()) | 360 if (!isTextField()) |
| 361 return; | 361 return; |
| 362 | 362 |
| 363 document().frame()->spellChecker().didBeginEditing(this); | 363 document().frame()->spellChecker().didBeginEditing(this); |
| 364 } | 364 } |
| 365 | 365 |
| 366 void HTMLInputElement::endEditing() | 366 void HTMLInputElement::endEditing() |
| 367 { | 367 { |
| 368 ASSERT(document().isActive()); | 368 DCHECK(document().isActive()); |
| 369 if (!document().isActive()) | 369 if (!document().isActive()) |
| 370 return; | 370 return; |
| 371 | 371 |
| 372 if (!isTextField()) | 372 if (!isTextField()) |
| 373 return; | 373 return; |
| 374 | 374 |
| 375 LocalFrame* frame = document().frame(); | 375 LocalFrame* frame = document().frame(); |
| 376 frame->spellChecker().didEndEditingOnTextField(this); | 376 frame->spellChecker().didEndEditingOnTextField(this); |
| 377 frame->host()->chromeClient().didEndEditingOnTextField(*this); | 377 frame->host()->chromeClient().didEndEditingOnTextField(*this); |
| 378 } | 378 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 396 m_inputTypeView->handleBlurEvent(); | 396 m_inputTypeView->handleBlurEvent(); |
| 397 } | 397 } |
| 398 | 398 |
| 399 void HTMLInputElement::setType(const AtomicString& type) | 399 void HTMLInputElement::setType(const AtomicString& type) |
| 400 { | 400 { |
| 401 setAttribute(typeAttr, type); | 401 setAttribute(typeAttr, type); |
| 402 } | 402 } |
| 403 | 403 |
| 404 void HTMLInputElement::updateTouchEventHandlerRegistry() | 404 void HTMLInputElement::updateTouchEventHandlerRegistry() |
| 405 { | 405 { |
| 406 ASSERT(m_inputTypeView); | 406 DCHECK(m_inputTypeView); |
| 407 | 407 |
| 408 bool hasTouchEventHandler = m_inputTypeView->hasTouchEventHandler(); | 408 bool hasTouchEventHandler = m_inputTypeView->hasTouchEventHandler(); |
| 409 if (hasTouchEventHandler == !!m_hasTouchEventHandler) | 409 if (hasTouchEventHandler == !!m_hasTouchEventHandler) |
| 410 return; | 410 return; |
| 411 // If the Document is being or has been stopped, don't register any handlers
. | 411 // If the Document is being or has been stopped, don't register any handlers
. |
| 412 if (document().frameHost() && document().lifecycle().state() < DocumentLifec
ycle::Stopping) { | 412 if (document().frameHost() && document().lifecycle().state() < DocumentLifec
ycle::Stopping) { |
| 413 EventHandlerRegistry& registry = document().frameHost()->eventHandlerReg
istry(); | 413 EventHandlerRegistry& registry = document().frameHost()->eventHandlerReg
istry(); |
| 414 // TODO(dtapuska): Make this passive touch listener see crbug.com/584438 | 414 // TODO(dtapuska): Make this passive touch listener see crbug.com/584438 |
| 415 if (hasTouchEventHandler) | 415 if (hasTouchEventHandler) |
| 416 registry.didAddEventHandler(*this, EventHandlerRegistry::TouchStartO
rMoveEventBlocking); | 416 registry.didAddEventHandler(*this, EventHandlerRegistry::TouchStartO
rMoveEventBlocking); |
| 417 else | 417 else |
| 418 registry.didRemoveEventHandler(*this, EventHandlerRegistry::TouchSta
rtOrMoveEventBlocking); | 418 registry.didRemoveEventHandler(*this, EventHandlerRegistry::TouchSta
rtOrMoveEventBlocking); |
| 419 m_hasTouchEventHandler = hasTouchEventHandler; | 419 m_hasTouchEventHandler = hasTouchEventHandler; |
| 420 } | 420 } |
| 421 } | 421 } |
| 422 | 422 |
| 423 void HTMLInputElement::initializeTypeInParsing() | 423 void HTMLInputElement::initializeTypeInParsing() |
| 424 { | 424 { |
| 425 ASSERT(m_parsingInProgress); | 425 DCHECK(m_parsingInProgress); |
| 426 ASSERT(!m_inputType); | 426 DCHECK(!m_inputType); |
| 427 ASSERT(!m_inputTypeView); | 427 DCHECK(!m_inputTypeView); |
| 428 | 428 |
| 429 const AtomicString& newTypeName = InputType::normalizeTypeName(fastGetAttrib
ute(typeAttr)); | 429 const AtomicString& newTypeName = InputType::normalizeTypeName(fastGetAttrib
ute(typeAttr)); |
| 430 m_inputType = InputType::create(*this, newTypeName); | 430 m_inputType = InputType::create(*this, newTypeName); |
| 431 m_inputTypeView = m_inputType->createView(); | 431 m_inputTypeView = m_inputType->createView(); |
| 432 ensureUserAgentShadowRoot(); | 432 ensureUserAgentShadowRoot(); |
| 433 | 433 |
| 434 updateTouchEventHandlerRegistry(); | 434 updateTouchEventHandlerRegistry(); |
| 435 | 435 |
| 436 setNeedsWillValidateCheck(); | 436 setNeedsWillValidateCheck(); |
| 437 | 437 |
| 438 m_inputType->warnIfValueIsInvalid(fastGetAttribute(valueAttr).getString()); | 438 m_inputType->warnIfValueIsInvalid(fastGetAttribute(valueAttr).getString()); |
| 439 | 439 |
| 440 m_inputTypeView->updateView(); | 440 m_inputTypeView->updateView(); |
| 441 setTextAsOfLastFormControlChangeEvent(value()); | 441 setTextAsOfLastFormControlChangeEvent(value()); |
| 442 setChangedSinceLastFormControlChangeEvent(false); | 442 setChangedSinceLastFormControlChangeEvent(false); |
| 443 } | 443 } |
| 444 | 444 |
| 445 void HTMLInputElement::updateType() | 445 void HTMLInputElement::updateType() |
| 446 { | 446 { |
| 447 ASSERT(m_inputType); | 447 DCHECK(m_inputType); |
| 448 ASSERT(m_inputTypeView); | 448 DCHECK(m_inputTypeView); |
| 449 | 449 |
| 450 const AtomicString& newTypeName = InputType::normalizeTypeName(fastGetAttrib
ute(typeAttr)); | 450 const AtomicString& newTypeName = InputType::normalizeTypeName(fastGetAttrib
ute(typeAttr)); |
| 451 if (m_inputType->formControlType() == newTypeName) | 451 if (m_inputType->formControlType() == newTypeName) |
| 452 return; | 452 return; |
| 453 | 453 |
| 454 InputType* newType = InputType::create(*this, newTypeName); | 454 InputType* newType = InputType::create(*this, newTypeName); |
| 455 removeFromRadioButtonGroup(); | 455 removeFromRadioButtonGroup(); |
| 456 | 456 |
| 457 bool didStoreValue = m_inputType->storesValueSeparateFromAttribute(); | 457 bool didStoreValue = m_inputType->storesValueSeparateFromAttribute(); |
| 458 bool didRespectHeightAndWidth = m_inputType->shouldRespectHeightAndWidthAttr
ibutes(); | 458 bool didRespectHeightAndWidth = m_inputType->shouldRespectHeightAndWidthAttr
ibutes(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 482 } else { | 482 } else { |
| 483 if (!hasDirtyValue()) | 483 if (!hasDirtyValue()) |
| 484 m_inputType->warnIfValueIsInvalid(fastGetAttribute(valueAttr).getStr
ing()); | 484 m_inputType->warnIfValueIsInvalid(fastGetAttribute(valueAttr).getStr
ing()); |
| 485 updateValueIfNeeded(); | 485 updateValueIfNeeded(); |
| 486 } | 486 } |
| 487 | 487 |
| 488 m_needsToUpdateViewValue = true; | 488 m_needsToUpdateViewValue = true; |
| 489 m_inputTypeView->updateView(); | 489 m_inputTypeView->updateView(); |
| 490 | 490 |
| 491 if (didRespectHeightAndWidth != m_inputType->shouldRespectHeightAndWidthAttr
ibutes()) { | 491 if (didRespectHeightAndWidth != m_inputType->shouldRespectHeightAndWidthAttr
ibutes()) { |
| 492 ASSERT(elementData()); | 492 DCHECK(elementData()); |
| 493 AttributeCollection attributes = attributesWithoutUpdate(); | 493 AttributeCollection attributes = attributesWithoutUpdate(); |
| 494 if (const Attribute* height = attributes.find(heightAttr)) | 494 if (const Attribute* height = attributes.find(heightAttr)) |
| 495 HTMLTextFormControlElement::attributeChanged(heightAttr, height->val
ue(), height->value()); | 495 HTMLTextFormControlElement::attributeChanged(heightAttr, height->val
ue(), height->value()); |
| 496 if (const Attribute* width = attributes.find(widthAttr)) | 496 if (const Attribute* width = attributes.find(widthAttr)) |
| 497 HTMLTextFormControlElement::attributeChanged(widthAttr, width->value
(), width->value()); | 497 HTMLTextFormControlElement::attributeChanged(widthAttr, width->value
(), width->value()); |
| 498 if (const Attribute* align = attributes.find(alignAttr)) | 498 if (const Attribute* align = attributes.find(alignAttr)) |
| 499 HTMLTextFormControlElement::attributeChanged(alignAttr, align->value
(), align->value()); | 499 HTMLTextFormControlElement::attributeChanged(alignAttr, align->value
(), align->value()); |
| 500 } | 500 } |
| 501 | 501 |
| 502 if (document().focusedElement() == this) | 502 if (document().focusedElement() == this) |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 addHTMLLengthToStyle(style, CSSPropertyHeight, value); | 654 addHTMLLengthToStyle(style, CSSPropertyHeight, value); |
| 655 } else if (name == borderAttr && type() == InputTypeNames::image) { // FIXME
: Remove type check. | 655 } else if (name == borderAttr && type() == InputTypeNames::image) { // FIXME
: Remove type check. |
| 656 applyBorderAttributeToStyle(value, style); | 656 applyBorderAttributeToStyle(value, style); |
| 657 } else { | 657 } else { |
| 658 HTMLTextFormControlElement::collectStyleForPresentationAttribute(name, v
alue, style); | 658 HTMLTextFormControlElement::collectStyleForPresentationAttribute(name, v
alue, style); |
| 659 } | 659 } |
| 660 } | 660 } |
| 661 | 661 |
| 662 void HTMLInputElement::parseAttribute(const QualifiedName& name, const AtomicStr
ing& oldValue, const AtomicString& value) | 662 void HTMLInputElement::parseAttribute(const QualifiedName& name, const AtomicStr
ing& oldValue, const AtomicString& value) |
| 663 { | 663 { |
| 664 ASSERT(m_inputType); | 664 DCHECK(m_inputType); |
| 665 ASSERT(m_inputTypeView); | 665 DCHECK(m_inputTypeView); |
| 666 | 666 |
| 667 if (name == nameAttr) { | 667 if (name == nameAttr) { |
| 668 removeFromRadioButtonGroup(); | 668 removeFromRadioButtonGroup(); |
| 669 m_name = value; | 669 m_name = value; |
| 670 addToRadioButtonGroup(); | 670 addToRadioButtonGroup(); |
| 671 HTMLTextFormControlElement::parseAttribute(name, oldValue, value); | 671 HTMLTextFormControlElement::parseAttribute(name, oldValue, value); |
| 672 } else if (name == autocompleteAttr) { | 672 } else if (name == autocompleteAttr) { |
| 673 if (equalIgnoringCase(value, "off")) { | 673 if (equalIgnoringCase(value, "off")) { |
| 674 m_autocomplete = Off; | 674 m_autocomplete = Off; |
| 675 } else { | 675 } else { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 760 } else { | 760 } else { |
| 761 if (name == formactionAttr) | 761 if (name == formactionAttr) |
| 762 logUpdateAttributeIfIsolatedWorldAndInDocument("input", formactionAt
tr, oldValue, value); | 762 logUpdateAttributeIfIsolatedWorldAndInDocument("input", formactionAt
tr, oldValue, value); |
| 763 HTMLTextFormControlElement::parseAttribute(name, oldValue, value); | 763 HTMLTextFormControlElement::parseAttribute(name, oldValue, value); |
| 764 } | 764 } |
| 765 m_inputTypeView->attributeChanged(); | 765 m_inputTypeView->attributeChanged(); |
| 766 } | 766 } |
| 767 | 767 |
| 768 void HTMLInputElement::parserDidSetAttributes() | 768 void HTMLInputElement::parserDidSetAttributes() |
| 769 { | 769 { |
| 770 ASSERT(m_parsingInProgress); | 770 DCHECK(m_parsingInProgress); |
| 771 initializeTypeInParsing(); | 771 initializeTypeInParsing(); |
| 772 } | 772 } |
| 773 | 773 |
| 774 void HTMLInputElement::finishParsingChildren() | 774 void HTMLInputElement::finishParsingChildren() |
| 775 { | 775 { |
| 776 m_parsingInProgress = false; | 776 m_parsingInProgress = false; |
| 777 ASSERT(m_inputType); | 777 DCHECK(m_inputType); |
| 778 ASSERT(m_inputTypeView); | 778 DCHECK(m_inputTypeView); |
| 779 HTMLTextFormControlElement::finishParsingChildren(); | 779 HTMLTextFormControlElement::finishParsingChildren(); |
| 780 if (!m_stateRestored) { | 780 if (!m_stateRestored) { |
| 781 bool checked = hasAttribute(checkedAttr); | 781 bool checked = hasAttribute(checkedAttr); |
| 782 if (checked) | 782 if (checked) |
| 783 setChecked(checked); | 783 setChecked(checked); |
| 784 m_dirtyCheckedness = false; | 784 m_dirtyCheckedness = false; |
| 785 } | 785 } |
| 786 } | 786 } |
| 787 | 787 |
| 788 bool HTMLInputElement::layoutObjectIsNeeded(const ComputedStyle& style) | 788 bool HTMLInputElement::layoutObjectIsNeeded(const ComputedStyle& style) |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1105 if (std::isinf(newValue)) { | 1105 if (std::isinf(newValue)) { |
| 1106 exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(newVal
ue)); | 1106 exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(newVal
ue)); |
| 1107 return; | 1107 return; |
| 1108 } | 1108 } |
| 1109 m_inputType->setValueAsDouble(newValue, eventBehavior, exceptionState); | 1109 m_inputType->setValueAsDouble(newValue, eventBehavior, exceptionState); |
| 1110 } | 1110 } |
| 1111 | 1111 |
| 1112 void HTMLInputElement::setValueFromRenderer(const String& value) | 1112 void HTMLInputElement::setValueFromRenderer(const String& value) |
| 1113 { | 1113 { |
| 1114 // File upload controls will never use this. | 1114 // File upload controls will never use this. |
| 1115 ASSERT(type() != InputTypeNames::file); | 1115 DCHECK_NE(type(), InputTypeNames::file); |
| 1116 | 1116 |
| 1117 m_suggestedValue = String(); | 1117 m_suggestedValue = String(); |
| 1118 | 1118 |
| 1119 // Renderer and our event handler are responsible for sanitizing values. | 1119 // Renderer and our event handler are responsible for sanitizing values. |
| 1120 ASSERT(value == m_inputType->sanitizeUserInputValue(value) || m_inputType->s
anitizeUserInputValue(value).isEmpty()); | 1120 DCHECK(value == m_inputType->sanitizeUserInputValue(value) || m_inputType->s
anitizeUserInputValue(value).isEmpty()); |
| 1121 | 1121 |
| 1122 m_valueIfDirty = value; | 1122 m_valueIfDirty = value; |
| 1123 m_needsToUpdateViewValue = false; | 1123 m_needsToUpdateViewValue = false; |
| 1124 | 1124 |
| 1125 // Input event is fired by the Node::defaultEventHandler for editable contro
ls. | 1125 // Input event is fired by the Node::defaultEventHandler for editable contro
ls. |
| 1126 if (!isTextField()) | 1126 if (!isTextField()) |
| 1127 dispatchInputEvent(); | 1127 dispatchInputEvent(); |
| 1128 notifyFormStateChanged(); | 1128 notifyFormStateChanged(); |
| 1129 | 1129 |
| 1130 setNeedsValidityCheck(); | 1130 setNeedsValidityCheck(); |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1486 logAddElementIfIsolatedWorldAndInDocument("input", typeAttr, formactionAttr)
; | 1486 logAddElementIfIsolatedWorldAndInDocument("input", typeAttr, formactionAttr)
; |
| 1487 return InsertionShouldCallDidNotifySubtreeInsertions; | 1487 return InsertionShouldCallDidNotifySubtreeInsertions; |
| 1488 } | 1488 } |
| 1489 | 1489 |
| 1490 void HTMLInputElement::removedFrom(ContainerNode* insertionPoint) | 1490 void HTMLInputElement::removedFrom(ContainerNode* insertionPoint) |
| 1491 { | 1491 { |
| 1492 m_inputTypeView->closePopupView(); | 1492 m_inputTypeView->closePopupView(); |
| 1493 if (insertionPoint->isConnected() && !form()) | 1493 if (insertionPoint->isConnected() && !form()) |
| 1494 removeFromRadioButtonGroup(); | 1494 removeFromRadioButtonGroup(); |
| 1495 HTMLTextFormControlElement::removedFrom(insertionPoint); | 1495 HTMLTextFormControlElement::removedFrom(insertionPoint); |
| 1496 ASSERT(!isConnected()); | 1496 DCHECK(!isConnected()); |
| 1497 resetListAttributeTargetObserver(); | 1497 resetListAttributeTargetObserver(); |
| 1498 } | 1498 } |
| 1499 | 1499 |
| 1500 void HTMLInputElement::didMoveToNewDocument(Document& oldDocument) | 1500 void HTMLInputElement::didMoveToNewDocument(Document& oldDocument) |
| 1501 { | 1501 { |
| 1502 if (imageLoader()) | 1502 if (imageLoader()) |
| 1503 imageLoader()->elementDidMoveToNewDocument(); | 1503 imageLoader()->elementDidMoveToNewDocument(); |
| 1504 | 1504 |
| 1505 // FIXME: Remove type check. | 1505 // FIXME: Remove type check. |
| 1506 if (type() == InputTypeNames::radio) | 1506 if (type() == InputTypeNames::radio) |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1702 int minLength; | 1702 int minLength; |
| 1703 if (!parseHTMLInteger(value, minLength) || minLength < 0) | 1703 if (!parseHTMLInteger(value, minLength) || minLength < 0) |
| 1704 minLength = -1; | 1704 minLength = -1; |
| 1705 m_minLength = minLength; | 1705 m_minLength = minLength; |
| 1706 setNeedsValidityCheck(); | 1706 setNeedsValidityCheck(); |
| 1707 } | 1707 } |
| 1708 | 1708 |
| 1709 void HTMLInputElement::updateValueIfNeeded() | 1709 void HTMLInputElement::updateValueIfNeeded() |
| 1710 { | 1710 { |
| 1711 String newValue = sanitizeValue(m_valueIfDirty); | 1711 String newValue = sanitizeValue(m_valueIfDirty); |
| 1712 ASSERT(!m_valueIfDirty.isNull() || newValue.isNull()); | 1712 DCHECK(!m_valueIfDirty.isNull() || newValue.isNull()); |
| 1713 if (newValue != m_valueIfDirty) | 1713 if (newValue != m_valueIfDirty) |
| 1714 setValue(newValue); | 1714 setValue(newValue); |
| 1715 } | 1715 } |
| 1716 | 1716 |
| 1717 bool HTMLInputElement::supportsAutocapitalize() const | 1717 bool HTMLInputElement::supportsAutocapitalize() const |
| 1718 { | 1718 { |
| 1719 return m_inputType->supportsAutocapitalize(); | 1719 return m_inputType->supportsAutocapitalize(); |
| 1720 } | 1720 } |
| 1721 | 1721 |
| 1722 const AtomicString& HTMLInputElement::defaultAutocapitalize() const | 1722 const AtomicString& HTMLInputElement::defaultAutocapitalize() const |
| 1723 { | 1723 { |
| 1724 return m_inputType->defaultAutocapitalize(); | 1724 return m_inputType->defaultAutocapitalize(); |
| 1725 } | 1725 } |
| 1726 | 1726 |
| 1727 String HTMLInputElement::defaultToolTip() const | 1727 String HTMLInputElement::defaultToolTip() const |
| 1728 { | 1728 { |
| 1729 return m_inputType->defaultToolTip(*m_inputTypeView); | 1729 return m_inputType->defaultToolTip(*m_inputTypeView); |
| 1730 } | 1730 } |
| 1731 | 1731 |
| 1732 bool HTMLInputElement::shouldAppearIndeterminate() const | 1732 bool HTMLInputElement::shouldAppearIndeterminate() const |
| 1733 { | 1733 { |
| 1734 return m_inputType->shouldAppearIndeterminate(); | 1734 return m_inputType->shouldAppearIndeterminate(); |
| 1735 } | 1735 } |
| 1736 | 1736 |
| 1737 bool HTMLInputElement::isInRequiredRadioButtonGroup() | 1737 bool HTMLInputElement::isInRequiredRadioButtonGroup() |
| 1738 { | 1738 { |
| 1739 // FIXME: Remove type check. | 1739 // TODO(tkent): Remove type check. |
| 1740 ASSERT(type() == InputTypeNames::radio); | 1740 DCHECK_EQ(type(), InputTypeNames::radio); |
| 1741 if (RadioButtonGroupScope* scope = radioButtonGroupScope()) | 1741 if (RadioButtonGroupScope* scope = radioButtonGroupScope()) |
| 1742 return scope->isInRequiredGroup(this); | 1742 return scope->isInRequiredGroup(this); |
| 1743 return false; | 1743 return false; |
| 1744 } | 1744 } |
| 1745 | 1745 |
| 1746 HTMLInputElement* HTMLInputElement::checkedRadioButtonForGroup() | 1746 HTMLInputElement* HTMLInputElement::checkedRadioButtonForGroup() |
| 1747 { | 1747 { |
| 1748 if (checked()) | 1748 if (checked()) |
| 1749 return this; | 1749 return this; |
| 1750 if (RadioButtonGroupScope* scope = radioButtonGroupScope()) | 1750 if (RadioButtonGroupScope* scope = radioButtonGroupScope()) |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1949 { | 1949 { |
| 1950 return m_inputTypeView->hasFallbackContent(); | 1950 return m_inputTypeView->hasFallbackContent(); |
| 1951 } | 1951 } |
| 1952 | 1952 |
| 1953 void HTMLInputElement::setFilesFromPaths(const Vector<String>& paths) | 1953 void HTMLInputElement::setFilesFromPaths(const Vector<String>& paths) |
| 1954 { | 1954 { |
| 1955 return m_inputType->setFilesFromPaths(paths); | 1955 return m_inputType->setFilesFromPaths(paths); |
| 1956 } | 1956 } |
| 1957 | 1957 |
| 1958 } // namespace blink | 1958 } // namespace blink |
| OLD | NEW |