Skip to content
  • tkent@chromium.org's avatar
    Support localized numbers in <input type=number> · c945b6c5
    tkent@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=42484
    
    Reviewed by Dimitri Glazkov.
    
    Source/WebCore:
    
    This change adds support of localized numbers in <input type=number>.
    This affects only the UI, and not HTMLInputElement::value.
    
    - Remove the keyboard input restriction feature because it is hard to
      retrieve characters usable for localized numbers in ICU.
    
    - Separate convertFromVisibleValue() from sanitizeValue().
      sanitizeValue() is used for not only converting a renderer value to a
      DOM value.
    
    - Implement LocalizedNumber functions for ICU and NSNumberFormatter.
      It is used only in Chromium for now.
    
    Test: manual-tests/input-number-localization.html
    
    * WebCore.gypi: Use LocalizedNumberICU.cpp.
    * WebCore.xcodeproj/project.pbxproj:
      Add LocalizedNumberMac.mm and remove LocalizedNumberNone.cpp.
    * dom/InputElement.h: Introduce convertFromVisibleValue().
    * html/HTMLInputElement.cpp:
    (WebCore::HTMLInputElement::convertFromVisibleValue):
    * html/HTMLInputElement.h:
    * html/InputType.cpp:
    (WebCore::InputType::convertFromVisibleValue):
    * html/InputType.h:
    * html/NumberInputType.cpp: Remove isHTMLNumberCharacter(),
      isNumberCharacter(), and handleBeforeTextInsertedEvent() because we
      remove the keyboard input restriction feature for type=number.
    (WebCore::NumberInputType::convertFromVisibleValue):
    (WebCore::NumberInputType::sanitizeValue):
    * html/NumberInputType.h:
    * manual-tests/input-number-localization.html: Add a manual test because
      the behavior depends on the current locale.
    * platform/text/LocalizedNumber.h: Remove isLocalizedNumberCharacter().
    * platform/text/LocalizedNumberICU.cpp:
      Implement LocalizedNumber functions with ICU NumberFormat.
    (WebCore::createFormatterForCurrentLocale):
    (WebCore::parseLocalizedNumber):
    (WebCore::formatLocalizedNumber):
    * platform/text/LocalizedNumberNone.cpp: Remove isLocalizedNumberCharacter().
    * platform/text/mac/LocalizedNumberMac.mm:
      Implement LocalizedNumber functions with NSNumberFormatter.
    (WebCore::parseLocalizedNumber):
    (WebCore::formatLocalizedNumber):
    * rendering/RenderTextControlSingleLine.cpp:
    (WebCore::RenderTextControlSingleLine::subtreeHasChanged):
    * wml/WMLInputElement.h:
    (WebCore::WMLInputElement::convertFromVisibleValue):
      Implemented as a function doing nothing.
    
    LayoutTests:
    
    Update an existing test because of removing the keyboard input
    restriction feature.
    
    * fast/forms/input-number-keyoperation-expected.txt:
    * fast/forms/script-tests/input-number-keyoperation.js:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@80096 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    c945b6c5