| 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 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 m_autocomplete = Uninitialized; | 642 m_autocomplete = Uninitialized; |
| 643 else | 643 else |
| 644 m_autocomplete = On; | 644 m_autocomplete = On; |
| 645 } | 645 } |
| 646 } else if (name == typeAttr) | 646 } else if (name == typeAttr) |
| 647 updateType(); | 647 updateType(); |
| 648 else if (name == valueAttr) { | 648 else if (name == valueAttr) { |
| 649 // We only need to setChanged if the form is looking at the default valu
e right now. | 649 // We only need to setChanged if the form is looking at the default valu
e right now. |
| 650 if (!hasDirtyValue()) { | 650 if (!hasDirtyValue()) { |
| 651 updatePlaceholderVisibility(false); | 651 updatePlaceholderVisibility(false); |
| 652 setNeedsStyleRecalc(); | 652 setNeedsStyleRecalc(SubtreeStyleChange); |
| 653 } | 653 } |
| 654 setFormControlValueMatchesRenderer(false); | 654 setFormControlValueMatchesRenderer(false); |
| 655 setNeedsValidityCheck(); | 655 setNeedsValidityCheck(); |
| 656 m_valueAttributeWasUpdatedAfterParsing = !m_parsingInProgress; | 656 m_valueAttributeWasUpdatedAfterParsing = !m_parsingInProgress; |
| 657 m_inputTypeView->valueAttributeChanged(); | 657 m_inputTypeView->valueAttributeChanged(); |
| 658 } else if (name == checkedAttr) { | 658 } else if (name == checkedAttr) { |
| 659 // Another radio button in the same group might be checked by state | 659 // Another radio button in the same group might be checked by state |
| 660 // restore. We shouldn't call setChecked() even if this has the checked | 660 // restore. We shouldn't call setChecked() even if this has the checked |
| 661 // attribute. So, delay the setChecked() call until | 661 // attribute. So, delay the setChecked() call until |
| 662 // finishParsingChildren() is called if parsing is in progress. | 662 // finishParsingChildren() is called if parsing is in progress. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 681 } else if (name == onsearchAttr) { | 681 } else if (name == onsearchAttr) { |
| 682 // Search field and slider attributes all just cause updateFromElement t
o be called through style recalcing. | 682 // Search field and slider attributes all just cause updateFromElement t
o be called through style recalcing. |
| 683 setAttributeEventListener(EventTypeNames::search, createAttributeEventLi
stener(this, name, value)); | 683 setAttributeEventListener(EventTypeNames::search, createAttributeEventLi
stener(this, name, value)); |
| 684 } else if (name == resultsAttr) { | 684 } else if (name == resultsAttr) { |
| 685 int oldResults = m_maxResults; | 685 int oldResults = m_maxResults; |
| 686 m_maxResults = !value.isNull() ? std::min(value.toInt(), maxSavedResults
) : -1; | 686 m_maxResults = !value.isNull() ? std::min(value.toInt(), maxSavedResults
) : -1; |
| 687 // FIXME: Detaching just for maxResults change is not ideal. We should
figure out the right | 687 // FIXME: Detaching just for maxResults change is not ideal. We should
figure out the right |
| 688 // time to relayout for this change. | 688 // time to relayout for this change. |
| 689 if (m_maxResults != oldResults && (m_maxResults <= 0 || oldResults <= 0)
) | 689 if (m_maxResults != oldResults && (m_maxResults <= 0 || oldResults <= 0)
) |
| 690 lazyReattachIfAttached(); | 690 lazyReattachIfAttached(); |
| 691 setNeedsStyleRecalc(); | 691 setNeedsStyleRecalc(SubtreeStyleChange); |
| 692 UseCounter::count(document(), UseCounter::ResultsAttribute); | 692 UseCounter::count(document(), UseCounter::ResultsAttribute); |
| 693 } else if (name == incrementalAttr) { | 693 } else if (name == incrementalAttr) { |
| 694 setNeedsStyleRecalc(); | 694 setNeedsStyleRecalc(SubtreeStyleChange); |
| 695 UseCounter::count(document(), UseCounter::IncrementalAttribute); | 695 UseCounter::count(document(), UseCounter::IncrementalAttribute); |
| 696 } else if (name == minAttr) { | 696 } else if (name == minAttr) { |
| 697 m_inputTypeView->minOrMaxAttributeChanged(); | 697 m_inputTypeView->minOrMaxAttributeChanged(); |
| 698 m_inputType->sanitizeValueInResponseToMinOrMaxAttributeChange(); | 698 m_inputType->sanitizeValueInResponseToMinOrMaxAttributeChange(); |
| 699 setNeedsValidityCheck(); | 699 setNeedsValidityCheck(); |
| 700 UseCounter::count(document(), UseCounter::MinAttribute); | 700 UseCounter::count(document(), UseCounter::MinAttribute); |
| 701 } else if (name == maxAttr) { | 701 } else if (name == maxAttr) { |
| 702 m_inputTypeView->minOrMaxAttributeChanged(); | 702 m_inputTypeView->minOrMaxAttributeChanged(); |
| 703 setNeedsValidityCheck(); | 703 setNeedsValidityCheck(); |
| 704 UseCounter::count(document(), UseCounter::MaxAttribute); | 704 UseCounter::count(document(), UseCounter::MaxAttribute); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 859 return m_inputType->isTextType(); | 859 return m_inputType->isTextType(); |
| 860 } | 860 } |
| 861 | 861 |
| 862 void HTMLInputElement::setChecked(bool nowChecked, TextFieldEventBehavior eventB
ehavior) | 862 void HTMLInputElement::setChecked(bool nowChecked, TextFieldEventBehavior eventB
ehavior) |
| 863 { | 863 { |
| 864 if (checked() == nowChecked) | 864 if (checked() == nowChecked) |
| 865 return; | 865 return; |
| 866 | 866 |
| 867 m_reflectsCheckedAttribute = false; | 867 m_reflectsCheckedAttribute = false; |
| 868 m_isChecked = nowChecked; | 868 m_isChecked = nowChecked; |
| 869 setNeedsStyleRecalc(); | 869 setNeedsStyleRecalc(SubtreeStyleChange); |
| 870 | 870 |
| 871 if (CheckedRadioButtons* buttons = checkedRadioButtons()) | 871 if (CheckedRadioButtons* buttons = checkedRadioButtons()) |
| 872 buttons->updateCheckedState(this); | 872 buttons->updateCheckedState(this); |
| 873 if (renderer() && renderer()->style()->hasAppearance()) | 873 if (renderer() && renderer()->style()->hasAppearance()) |
| 874 RenderTheme::theme().stateChanged(renderer(), CheckedState); | 874 RenderTheme::theme().stateChanged(renderer(), CheckedState); |
| 875 | 875 |
| 876 setNeedsValidityCheck(); | 876 setNeedsValidityCheck(); |
| 877 | 877 |
| 878 // Ideally we'd do this from the render tree (matching | 878 // Ideally we'd do this from the render tree (matching |
| 879 // RenderTextView), but it's not possible to do it at the moment | 879 // RenderTextView), but it's not possible to do it at the moment |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 { | 971 { |
| 972 return m_suggestedValue; | 972 return m_suggestedValue; |
| 973 } | 973 } |
| 974 | 974 |
| 975 void HTMLInputElement::setSuggestedValue(const String& value) | 975 void HTMLInputElement::setSuggestedValue(const String& value) |
| 976 { | 976 { |
| 977 if (!m_inputType->canSetSuggestedValue()) | 977 if (!m_inputType->canSetSuggestedValue()) |
| 978 return; | 978 return; |
| 979 setFormControlValueMatchesRenderer(false); | 979 setFormControlValueMatchesRenderer(false); |
| 980 m_suggestedValue = sanitizeValue(value); | 980 m_suggestedValue = sanitizeValue(value); |
| 981 setNeedsStyleRecalc(); | 981 setNeedsStyleRecalc(SubtreeStyleChange); |
| 982 m_inputTypeView->updateView(); | 982 m_inputTypeView->updateView(); |
| 983 } | 983 } |
| 984 | 984 |
| 985 void HTMLInputElement::setEditingValue(const String& value) | 985 void HTMLInputElement::setEditingValue(const String& value) |
| 986 { | 986 { |
| 987 if (!renderer() || !isTextField()) | 987 if (!renderer() || !isTextField()) |
| 988 return; | 988 return; |
| 989 setInnerTextValue(value); | 989 setInnerTextValue(value); |
| 990 subtreeHasChanged(); | 990 subtreeHasChanged(); |
| 991 | 991 |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1658 { | 1658 { |
| 1659 int maxLength; | 1659 int maxLength; |
| 1660 if (!parseHTMLInteger(value, maxLength)) | 1660 if (!parseHTMLInteger(value, maxLength)) |
| 1661 maxLength = maximumLength; | 1661 maxLength = maximumLength; |
| 1662 if (maxLength < 0 || maxLength > maximumLength) | 1662 if (maxLength < 0 || maxLength > maximumLength) |
| 1663 maxLength = maximumLength; | 1663 maxLength = maximumLength; |
| 1664 int oldMaxLength = m_maxLength; | 1664 int oldMaxLength = m_maxLength; |
| 1665 m_maxLength = maxLength; | 1665 m_maxLength = maxLength; |
| 1666 if (oldMaxLength != maxLength) | 1666 if (oldMaxLength != maxLength) |
| 1667 updateValueIfNeeded(); | 1667 updateValueIfNeeded(); |
| 1668 setNeedsStyleRecalc(); | 1668 setNeedsStyleRecalc(SubtreeStyleChange); |
| 1669 setNeedsValidityCheck(); | 1669 setNeedsValidityCheck(); |
| 1670 } | 1670 } |
| 1671 | 1671 |
| 1672 void HTMLInputElement::updateValueIfNeeded() | 1672 void HTMLInputElement::updateValueIfNeeded() |
| 1673 { | 1673 { |
| 1674 String newValue = sanitizeValue(m_valueIfDirty); | 1674 String newValue = sanitizeValue(m_valueIfDirty); |
| 1675 ASSERT(!m_valueIfDirty.isNull() || newValue.isNull()); | 1675 ASSERT(!m_valueIfDirty.isNull() || newValue.isNull()); |
| 1676 if (newValue != m_valueIfDirty) | 1676 if (newValue != m_valueIfDirty) |
| 1677 setValue(newValue); | 1677 setValue(newValue); |
| 1678 } | 1678 } |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1872 } | 1872 } |
| 1873 | 1873 |
| 1874 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI) | 1874 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI) |
| 1875 PassRefPtr<RenderStyle> HTMLInputElement::customStyleForRenderer() | 1875 PassRefPtr<RenderStyle> HTMLInputElement::customStyleForRenderer() |
| 1876 { | 1876 { |
| 1877 return m_inputTypeView->customStyleForRenderer(originalStyleForRenderer()); | 1877 return m_inputTypeView->customStyleForRenderer(originalStyleForRenderer()); |
| 1878 } | 1878 } |
| 1879 #endif | 1879 #endif |
| 1880 | 1880 |
| 1881 } // namespace | 1881 } // namespace |
| OLD | NEW |