Changeset 235245 in webkit


Ignore:
Timestamp:
Aug 23, 2018 2:24:42 PM (6 years ago)
Author:
Aditya Keerthi
Message:

[iOS] Support the inputmode attribute on contenteditable elements
https://bugs.webkit.org/show_bug.cgi?id=188878

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/reflection-misc-expected.txt: Rebaseline.

Source/WebCore:

The inputmode attribute should apply to contenteditable elements, in addition to
textfield inputs and textareas.

Moved the inputmode attribute from HTMLInputElement.idl and
HTMLTextAreaElement.idl to HTMLElement.idl to reflect the specification.

Also moved all logic to convert between the InputMode enum and string values
into InputMode.cpp to avoid exposing unnecessary details to WebKit. Furthermore,
InputMode::Auto was renamed to InputMode::Unspecified to avoid confusion with the
specification.

Spec: https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute

Tests: fast/forms/inputmode-attribute-contenteditable.html

fast/forms/inputmode-attribute-input.html
fast/forms/inputmode-attribute-textarea.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::canonicalInputMode const):
(WebCore::HTMLElement::inputMode const):
(WebCore::HTMLElement::setInputMode):

  • html/HTMLElement.h:
  • html/HTMLElement.idl:
  • html/HTMLInputElement.idl:
  • html/HTMLTextAreaElement.idl:
  • html/HTMLTextFormControlElement.cpp:
  • html/HTMLTextFormControlElement.h:
  • html/InputMode.cpp: Renamed from Source/WebCore/html/InputModeNames.cpp.

(WebCore::inputModeForAttributeValue):
(WebCore::stringForInputMode):

  • html/InputMode.h: Renamed from Source/WebCore/html/InputModeNames.h.

Source/WebKit:

Ensured that the assistedNodeInformation for a contenteditable element reflects
the value of the element's inputmode attribute.

Moved logic to obtain the InputMode from the attribute value into WebCore.

  • Shared/AssistedNodeInformation.h:
  • UIProcess/ios/WKContentViewInteraction.mm:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getAssistedNodeInformation):

LayoutTests:

Added additional tests to verify the inputmode attribute is accessible on
HTMLElements.

  • fast/forms/inputmode-attribute-contenteditable-expected.txt: Added.
  • fast/forms/inputmode-attribute-contenteditable.html: Added.
  • fast/forms/inputmode-attribute-input-expected.txt: Renamed from LayoutTests/fast/forms/inputmode-attribute-expected.txt.
  • fast/forms/inputmode-attribute-input.html: Renamed from LayoutTests/fast/forms/inputmode-attribute.html.
  • fast/forms/inputmode-attribute-textarea-expected.txt: Added.
  • fast/forms/inputmode-attribute-textarea.html: Added.
  • js/dom/dom-static-property-for-in-iteration-expected.txt: Rebaseline.
Location:
trunk
Files:
4 added
18 edited
4 moved

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r235243 r235245  
     12018-08-23  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [iOS] Support the inputmode attribute on contenteditable elements
     4        https://bugs.webkit.org/show_bug.cgi?id=188878
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Added additional tests to verify the inputmode attribute is accessible on
     9        HTMLElements.
     10
     11        * fast/forms/inputmode-attribute-contenteditable-expected.txt: Added.
     12        * fast/forms/inputmode-attribute-contenteditable.html: Added.
     13        * fast/forms/inputmode-attribute-input-expected.txt: Renamed from LayoutTests/fast/forms/inputmode-attribute-expected.txt.
     14        * fast/forms/inputmode-attribute-input.html: Renamed from LayoutTests/fast/forms/inputmode-attribute.html.
     15        * fast/forms/inputmode-attribute-textarea-expected.txt: Added.
     16        * fast/forms/inputmode-attribute-textarea.html: Added.
     17        * js/dom/dom-static-property-for-in-iteration-expected.txt: Rebaseline.
     18
    1192018-08-22  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/LayoutTests/fast/forms/inputmode-attribute-input-expected.txt

    r235243 r235245  
    1 Test inputmode attribute
     1Test inputmode attribute on input
    22
    33
  • trunk/LayoutTests/fast/forms/inputmode-attribute-input.html

    r235243 r235245  
    33<body>
    44<script src="../../resources/js-test-pre.js"></script>
    5 <p>Test inputmode attribute</p>
     5<p>Test inputmode attribute on input</p>
    66<input id="input">
    77<div id=console></div>
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r235234 r235245  
     12018-08-23  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [iOS] Support the inputmode attribute on contenteditable elements
     4        https://bugs.webkit.org/show_bug.cgi?id=188878
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * web-platform-tests/html/dom/reflection-misc-expected.txt: Rebaseline.
     9
    1102018-08-23  Youenn Fablet  <youenn@apple.com>
    211
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-misc-expected.txt

    r230445 r235245  
    36173617PASS undefinedelement.tabIndex: IDL set to 2147483647
    36183618PASS undefinedelement.tabIndex: IDL set to -2147483648
    3619 FAIL undefinedelement.inputMode: typeof IDL attribute assert_equals: expected "string" but got "undefined"
    3620 FAIL undefinedelement.inputMode: IDL get with DOM attribute unset assert_equals: expected (string) "" but got (undefined) undefined
    3621 FAIL undefinedelement.inputMode: setAttribute() to "" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3622 FAIL undefinedelement.inputMode: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3623 FAIL undefinedelement.inputMode: setAttribute() to undefined assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3624 FAIL undefinedelement.inputMode: setAttribute() to 7 assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3625 FAIL undefinedelement.inputMode: setAttribute() to 1.5 assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3626 FAIL undefinedelement.inputMode: setAttribute() to true assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3627 FAIL undefinedelement.inputMode: setAttribute() to false assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3628 FAIL undefinedelement.inputMode: setAttribute() to object "[object Object]" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3629 FAIL undefinedelement.inputMode: setAttribute() to NaN assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3630 FAIL undefinedelement.inputMode: setAttribute() to Infinity assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3631 FAIL undefinedelement.inputMode: setAttribute() to -Infinity assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3632 FAIL undefinedelement.inputMode: setAttribute() to "\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3633 FAIL undefinedelement.inputMode: setAttribute() to null assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3634 FAIL undefinedelement.inputMode: setAttribute() to object "test-toString" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3635 FAIL undefinedelement.inputMode: setAttribute() to object "test-valueOf" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3636 FAIL undefinedelement.inputMode: setAttribute() to "none" assert_equals: IDL get expected (string) "none" but got (undefined) undefined
    3637 FAIL undefinedelement.inputMode: setAttribute() to "xnone" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3638 FAIL undefinedelement.inputMode: setAttribute() to "none\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3639 FAIL undefinedelement.inputMode: setAttribute() to "one" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3640 FAIL undefinedelement.inputMode: setAttribute() to "NONE" assert_equals: IDL get expected (string) "none" but got (undefined) undefined
    3641 FAIL undefinedelement.inputMode: setAttribute() to "text" assert_equals: IDL get expected (string) "text" but got (undefined) undefined
    3642 FAIL undefinedelement.inputMode: setAttribute() to "xtext" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3643 FAIL undefinedelement.inputMode: setAttribute() to "text\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3644 FAIL undefinedelement.inputMode: setAttribute() to "ext" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3645 FAIL undefinedelement.inputMode: setAttribute() to "TEXT" assert_equals: IDL get expected (string) "text" but got (undefined) undefined
    3646 FAIL undefinedelement.inputMode: setAttribute() to "tel" assert_equals: IDL get expected (string) "tel" but got (undefined) undefined
    3647 FAIL undefinedelement.inputMode: setAttribute() to "xtel" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3648 FAIL undefinedelement.inputMode: setAttribute() to "tel\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3649 FAIL undefinedelement.inputMode: setAttribute() to "el" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3650 FAIL undefinedelement.inputMode: setAttribute() to "TEL" assert_equals: IDL get expected (string) "tel" but got (undefined) undefined
    3651 FAIL undefinedelement.inputMode: setAttribute() to "url" assert_equals: IDL get expected (string) "url" but got (undefined) undefined
    3652 FAIL undefinedelement.inputMode: setAttribute() to "xurl" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3653 FAIL undefinedelement.inputMode: setAttribute() to "url\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3654 FAIL undefinedelement.inputMode: setAttribute() to "rl" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3655 FAIL undefinedelement.inputMode: setAttribute() to "URL" assert_equals: IDL get expected (string) "url" but got (undefined) undefined
    3656 FAIL undefinedelement.inputMode: setAttribute() to "email" assert_equals: IDL get expected (string) "email" but got (undefined) undefined
    3657 FAIL undefinedelement.inputMode: setAttribute() to "xemail" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3658 FAIL undefinedelement.inputMode: setAttribute() to "email\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3659 FAIL undefinedelement.inputMode: setAttribute() to "mail" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3660 FAIL undefinedelement.inputMode: setAttribute() to "EMAIL" assert_equals: IDL get expected (string) "email" but got (undefined) undefined
    3661 FAIL undefinedelement.inputMode: setAttribute() to "numeric" assert_equals: IDL get expected (string) "numeric" but got (undefined) undefined
    3662 FAIL undefinedelement.inputMode: setAttribute() to "xnumeric" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3663 FAIL undefinedelement.inputMode: setAttribute() to "numeric\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3664 FAIL undefinedelement.inputMode: setAttribute() to "umeric" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3665 FAIL undefinedelement.inputMode: setAttribute() to "NUMERIC" assert_equals: IDL get expected (string) "numeric" but got (undefined) undefined
    3666 FAIL undefinedelement.inputMode: setAttribute() to "decimal" assert_equals: IDL get expected (string) "decimal" but got (undefined) undefined
    3667 FAIL undefinedelement.inputMode: setAttribute() to "xdecimal" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3668 FAIL undefinedelement.inputMode: setAttribute() to "decimal\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3669 FAIL undefinedelement.inputMode: setAttribute() to "ecimal" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3670 FAIL undefinedelement.inputMode: setAttribute() to "DECIMAL" assert_equals: IDL get expected (string) "decimal" but got (undefined) undefined
    3671 FAIL undefinedelement.inputMode: setAttribute() to "search" assert_equals: IDL get expected (string) "search" but got (undefined) undefined
    3672 FAIL undefinedelement.inputMode: setAttribute() to "xsearch" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3673 FAIL undefinedelement.inputMode: setAttribute() to "search\0" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3674 FAIL undefinedelement.inputMode: setAttribute() to "earch" assert_equals: IDL get expected (string) "" but got (undefined) undefined
    3675 FAIL undefinedelement.inputMode: setAttribute() to "SEARCH" assert_equals: IDL get expected (string) "search" but got (undefined) undefined
    3676 FAIL undefinedelement.inputMode: IDL set to "" assert_equals: getAttribute() expected "" but got "SEARCH"
    3677 FAIL undefinedelement.inputMode: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "SEARCH"
    3678 FAIL undefinedelement.inputMode: IDL set to undefined assert_equals: getAttribute() expected "undefined" but got "SEARCH"
    3679 FAIL undefinedelement.inputMode: IDL set to 7 assert_equals: getAttribute() expected "7" but got "SEARCH"
    3680 FAIL undefinedelement.inputMode: IDL set to 1.5 assert_equals: getAttribute() expected "1.5" but got "SEARCH"
    3681 FAIL undefinedelement.inputMode: IDL set to true assert_equals: getAttribute() expected "true" but got "SEARCH"
    3682 FAIL undefinedelement.inputMode: IDL set to false assert_equals: getAttribute() expected "false" but got "SEARCH"
    3683 FAIL undefinedelement.inputMode: IDL set to object "[object Object]" assert_equals: getAttribute() expected "[object Object]" but got "SEARCH"
    3684 FAIL undefinedelement.inputMode: IDL set to NaN assert_equals: getAttribute() expected "NaN" but got "SEARCH"
    3685 FAIL undefinedelement.inputMode: IDL set to Infinity assert_equals: getAttribute() expected "Infinity" but got "SEARCH"
    3686 FAIL undefinedelement.inputMode: IDL set to -Infinity assert_equals: getAttribute() expected "-Infinity" but got "SEARCH"
    3687 FAIL undefinedelement.inputMode: IDL set to "\0" assert_equals: getAttribute() expected "\0" but got "SEARCH"
    3688 FAIL undefinedelement.inputMode: IDL set to null assert_equals: IDL get expected (string) "" but got (object) null
    3689 FAIL undefinedelement.inputMode: IDL set to object "test-toString" assert_equals: getAttribute() expected "test-toString" but got "SEARCH"
    3690 FAIL undefinedelement.inputMode: IDL set to object "test-valueOf" assert_equals: getAttribute() expected "test-valueOf" but got "SEARCH"
    3691 FAIL undefinedelement.inputMode: IDL set to "none" assert_equals: getAttribute() expected "none" but got "SEARCH"
    3692 FAIL undefinedelement.inputMode: IDL set to "xnone" assert_equals: getAttribute() expected "xnone" but got "SEARCH"
    3693 FAIL undefinedelement.inputMode: IDL set to "none\0" assert_equals: getAttribute() expected "none\0" but got "SEARCH"
    3694 FAIL undefinedelement.inputMode: IDL set to "one" assert_equals: getAttribute() expected "one" but got "SEARCH"
    3695 FAIL undefinedelement.inputMode: IDL set to "NONE" assert_equals: getAttribute() expected "NONE" but got "SEARCH"
    3696 FAIL undefinedelement.inputMode: IDL set to "text" assert_equals: getAttribute() expected "text" but got "SEARCH"
    3697 FAIL undefinedelement.inputMode: IDL set to "xtext" assert_equals: getAttribute() expected "xtext" but got "SEARCH"
    3698 FAIL undefinedelement.inputMode: IDL set to "text\0" assert_equals: getAttribute() expected "text\0" but got "SEARCH"
    3699 FAIL undefinedelement.inputMode: IDL set to "ext" assert_equals: getAttribute() expected "ext" but got "SEARCH"
    3700 FAIL undefinedelement.inputMode: IDL set to "TEXT" assert_equals: getAttribute() expected "TEXT" but got "SEARCH"
    3701 FAIL undefinedelement.inputMode: IDL set to "tel" assert_equals: getAttribute() expected "tel" but got "SEARCH"
    3702 FAIL undefinedelement.inputMode: IDL set to "xtel" assert_equals: getAttribute() expected "xtel" but got "SEARCH"
    3703 FAIL undefinedelement.inputMode: IDL set to "tel\0" assert_equals: getAttribute() expected "tel\0" but got "SEARCH"
    3704 FAIL undefinedelement.inputMode: IDL set to "el" assert_equals: getAttribute() expected "el" but got "SEARCH"
    3705 FAIL undefinedelement.inputMode: IDL set to "TEL" assert_equals: getAttribute() expected "TEL" but got "SEARCH"
    3706 FAIL undefinedelement.inputMode: IDL set to "url" assert_equals: getAttribute() expected "url" but got "SEARCH"
    3707 FAIL undefinedelement.inputMode: IDL set to "xurl" assert_equals: getAttribute() expected "xurl" but got "SEARCH"
    3708 FAIL undefinedelement.inputMode: IDL set to "url\0" assert_equals: getAttribute() expected "url\0" but got "SEARCH"
    3709 FAIL undefinedelement.inputMode: IDL set to "rl" assert_equals: getAttribute() expected "rl" but got "SEARCH"
    3710 FAIL undefinedelement.inputMode: IDL set to "URL" assert_equals: getAttribute() expected "URL" but got "SEARCH"
    3711 FAIL undefinedelement.inputMode: IDL set to "email" assert_equals: getAttribute() expected "email" but got "SEARCH"
    3712 FAIL undefinedelement.inputMode: IDL set to "xemail" assert_equals: getAttribute() expected "xemail" but got "SEARCH"
    3713 FAIL undefinedelement.inputMode: IDL set to "email\0" assert_equals: getAttribute() expected "email\0" but got "SEARCH"
    3714 FAIL undefinedelement.inputMode: IDL set to "mail" assert_equals: getAttribute() expected "mail" but got "SEARCH"
    3715 FAIL undefinedelement.inputMode: IDL set to "EMAIL" assert_equals: getAttribute() expected "EMAIL" but got "SEARCH"
    3716 FAIL undefinedelement.inputMode: IDL set to "numeric" assert_equals: getAttribute() expected "numeric" but got "SEARCH"
    3717 FAIL undefinedelement.inputMode: IDL set to "xnumeric" assert_equals: getAttribute() expected "xnumeric" but got "SEARCH"
    3718 FAIL undefinedelement.inputMode: IDL set to "numeric\0" assert_equals: getAttribute() expected "numeric\0" but got "SEARCH"
    3719 FAIL undefinedelement.inputMode: IDL set to "umeric" assert_equals: getAttribute() expected "umeric" but got "SEARCH"
    3720 FAIL undefinedelement.inputMode: IDL set to "NUMERIC" assert_equals: getAttribute() expected "NUMERIC" but got "SEARCH"
    3721 FAIL undefinedelement.inputMode: IDL set to "decimal" assert_equals: getAttribute() expected "decimal" but got "SEARCH"
    3722 FAIL undefinedelement.inputMode: IDL set to "xdecimal" assert_equals: getAttribute() expected "xdecimal" but got "SEARCH"
    3723 FAIL undefinedelement.inputMode: IDL set to "decimal\0" assert_equals: getAttribute() expected "decimal\0" but got "SEARCH"
    3724 FAIL undefinedelement.inputMode: IDL set to "ecimal" assert_equals: getAttribute() expected "ecimal" but got "SEARCH"
    3725 FAIL undefinedelement.inputMode: IDL set to "DECIMAL" assert_equals: getAttribute() expected "DECIMAL" but got "SEARCH"
    3726 FAIL undefinedelement.inputMode: IDL set to "search" assert_equals: getAttribute() expected "search" but got "SEARCH"
    3727 FAIL undefinedelement.inputMode: IDL set to "xsearch" assert_equals: getAttribute() expected "xsearch" but got "SEARCH"
    3728 FAIL undefinedelement.inputMode: IDL set to "search\0" assert_equals: getAttribute() expected "search\0" but got "SEARCH"
    3729 FAIL undefinedelement.inputMode: IDL set to "earch" assert_equals: getAttribute() expected "earch" but got "SEARCH"
    3730 FAIL undefinedelement.inputMode: IDL set to "SEARCH" assert_equals: IDL get expected "search" but got "SEARCH"
     3619PASS undefinedelement.inputMode: typeof IDL attribute
     3620PASS undefinedelement.inputMode: IDL get with DOM attribute unset
     3621PASS undefinedelement.inputMode: setAttribute() to ""
     3622PASS undefinedelement.inputMode: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo "
     3623PASS undefinedelement.inputMode: setAttribute() to undefined
     3624PASS undefinedelement.inputMode: setAttribute() to 7
     3625PASS undefinedelement.inputMode: setAttribute() to 1.5
     3626PASS undefinedelement.inputMode: setAttribute() to true
     3627PASS undefinedelement.inputMode: setAttribute() to false
     3628PASS undefinedelement.inputMode: setAttribute() to object "[object Object]"
     3629PASS undefinedelement.inputMode: setAttribute() to NaN
     3630PASS undefinedelement.inputMode: setAttribute() to Infinity
     3631PASS undefinedelement.inputMode: setAttribute() to -Infinity
     3632PASS undefinedelement.inputMode: setAttribute() to "\0"
     3633PASS undefinedelement.inputMode: setAttribute() to null
     3634PASS undefinedelement.inputMode: setAttribute() to object "test-toString"
     3635PASS undefinedelement.inputMode: setAttribute() to object "test-valueOf"
     3636FAIL undefinedelement.inputMode: setAttribute() to "none" assert_equals: IDL get expected "none" but got ""
     3637PASS undefinedelement.inputMode: setAttribute() to "xnone"
     3638PASS undefinedelement.inputMode: setAttribute() to "none\0"
     3639PASS undefinedelement.inputMode: setAttribute() to "one"
     3640FAIL undefinedelement.inputMode: setAttribute() to "NONE" assert_equals: IDL get expected "none" but got ""
     3641PASS undefinedelement.inputMode: setAttribute() to "text"
     3642PASS undefinedelement.inputMode: setAttribute() to "xtext"
     3643PASS undefinedelement.inputMode: setAttribute() to "text\0"
     3644PASS undefinedelement.inputMode: setAttribute() to "ext"
     3645PASS undefinedelement.inputMode: setAttribute() to "TEXT"
     3646PASS undefinedelement.inputMode: setAttribute() to "tel"
     3647PASS undefinedelement.inputMode: setAttribute() to "xtel"
     3648PASS undefinedelement.inputMode: setAttribute() to "tel\0"
     3649PASS undefinedelement.inputMode: setAttribute() to "el"
     3650PASS undefinedelement.inputMode: setAttribute() to "TEL"
     3651PASS undefinedelement.inputMode: setAttribute() to "url"
     3652PASS undefinedelement.inputMode: setAttribute() to "xurl"
     3653PASS undefinedelement.inputMode: setAttribute() to "url\0"
     3654PASS undefinedelement.inputMode: setAttribute() to "rl"
     3655PASS undefinedelement.inputMode: setAttribute() to "URL"
     3656PASS undefinedelement.inputMode: setAttribute() to "email"
     3657PASS undefinedelement.inputMode: setAttribute() to "xemail"
     3658PASS undefinedelement.inputMode: setAttribute() to "email\0"
     3659PASS undefinedelement.inputMode: setAttribute() to "mail"
     3660PASS undefinedelement.inputMode: setAttribute() to "EMAIL"
     3661PASS undefinedelement.inputMode: setAttribute() to "numeric"
     3662PASS undefinedelement.inputMode: setAttribute() to "xnumeric"
     3663PASS undefinedelement.inputMode: setAttribute() to "numeric\0"
     3664PASS undefinedelement.inputMode: setAttribute() to "umeric"
     3665PASS undefinedelement.inputMode: setAttribute() to "NUMERIC"
     3666PASS undefinedelement.inputMode: setAttribute() to "decimal"
     3667PASS undefinedelement.inputMode: setAttribute() to "xdecimal"
     3668PASS undefinedelement.inputMode: setAttribute() to "decimal\0"
     3669PASS undefinedelement.inputMode: setAttribute() to "ecimal"
     3670PASS undefinedelement.inputMode: setAttribute() to "DECIMAL"
     3671PASS undefinedelement.inputMode: setAttribute() to "search"
     3672PASS undefinedelement.inputMode: setAttribute() to "xsearch"
     3673PASS undefinedelement.inputMode: setAttribute() to "search\0"
     3674PASS undefinedelement.inputMode: setAttribute() to "earch"
     3675PASS undefinedelement.inputMode: setAttribute() to "SEARCH"
     3676PASS undefinedelement.inputMode: IDL set to ""
     3677PASS undefinedelement.inputMode: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo "
     3678PASS undefinedelement.inputMode: IDL set to undefined
     3679PASS undefinedelement.inputMode: IDL set to 7
     3680PASS undefinedelement.inputMode: IDL set to 1.5
     3681PASS undefinedelement.inputMode: IDL set to true
     3682PASS undefinedelement.inputMode: IDL set to false
     3683PASS undefinedelement.inputMode: IDL set to object "[object Object]"
     3684PASS undefinedelement.inputMode: IDL set to NaN
     3685PASS undefinedelement.inputMode: IDL set to Infinity
     3686PASS undefinedelement.inputMode: IDL set to -Infinity
     3687PASS undefinedelement.inputMode: IDL set to "\0"
     3688PASS undefinedelement.inputMode: IDL set to null
     3689PASS undefinedelement.inputMode: IDL set to object "test-toString"
     3690PASS undefinedelement.inputMode: IDL set to object "test-valueOf"
     3691FAIL undefinedelement.inputMode: IDL set to "none" assert_equals: IDL get expected "none" but got ""
     3692PASS undefinedelement.inputMode: IDL set to "xnone"
     3693PASS undefinedelement.inputMode: IDL set to "none\0"
     3694PASS undefinedelement.inputMode: IDL set to "one"
     3695FAIL undefinedelement.inputMode: IDL set to "NONE" assert_equals: IDL get expected "none" but got ""
     3696PASS undefinedelement.inputMode: IDL set to "text"
     3697PASS undefinedelement.inputMode: IDL set to "xtext"
     3698PASS undefinedelement.inputMode: IDL set to "text\0"
     3699PASS undefinedelement.inputMode: IDL set to "ext"
     3700PASS undefinedelement.inputMode: IDL set to "TEXT"
     3701PASS undefinedelement.inputMode: IDL set to "tel"
     3702PASS undefinedelement.inputMode: IDL set to "xtel"
     3703PASS undefinedelement.inputMode: IDL set to "tel\0"
     3704PASS undefinedelement.inputMode: IDL set to "el"
     3705PASS undefinedelement.inputMode: IDL set to "TEL"
     3706PASS undefinedelement.inputMode: IDL set to "url"
     3707PASS undefinedelement.inputMode: IDL set to "xurl"
     3708PASS undefinedelement.inputMode: IDL set to "url\0"
     3709PASS undefinedelement.inputMode: IDL set to "rl"
     3710PASS undefinedelement.inputMode: IDL set to "URL"
     3711PASS undefinedelement.inputMode: IDL set to "email"
     3712PASS undefinedelement.inputMode: IDL set to "xemail"
     3713PASS undefinedelement.inputMode: IDL set to "email\0"
     3714PASS undefinedelement.inputMode: IDL set to "mail"
     3715PASS undefinedelement.inputMode: IDL set to "EMAIL"
     3716PASS undefinedelement.inputMode: IDL set to "numeric"
     3717PASS undefinedelement.inputMode: IDL set to "xnumeric"
     3718PASS undefinedelement.inputMode: IDL set to "numeric\0"
     3719PASS undefinedelement.inputMode: IDL set to "umeric"
     3720PASS undefinedelement.inputMode: IDL set to "NUMERIC"
     3721PASS undefinedelement.inputMode: IDL set to "decimal"
     3722PASS undefinedelement.inputMode: IDL set to "xdecimal"
     3723PASS undefinedelement.inputMode: IDL set to "decimal\0"
     3724PASS undefinedelement.inputMode: IDL set to "ecimal"
     3725PASS undefinedelement.inputMode: IDL set to "DECIMAL"
     3726PASS undefinedelement.inputMode: IDL set to "search"
     3727PASS undefinedelement.inputMode: IDL set to "xsearch"
     3728PASS undefinedelement.inputMode: IDL set to "search\0"
     3729PASS undefinedelement.inputMode: IDL set to "earch"
     3730PASS undefinedelement.inputMode: IDL set to "SEARCH"
    37313731(Note: missing tests for types tokenlist.)
  • trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt

    r229818 r235245  
    5252PASS a["outerText"] is nerget
    5353PASS a["webkitdropzone"] is
     54PASS a["inputMode"] is
    5455PASS a["style"] is [object CSSStyleDeclaration]
    5556PASS a["onabort"] is null
  • trunk/Source/WebCore/ChangeLog

    r235233 r235245  
     12018-08-23  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [iOS] Support the inputmode attribute on contenteditable elements
     4        https://bugs.webkit.org/show_bug.cgi?id=188878
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        The inputmode attribute should apply to contenteditable elements, in addition to
     9        textfield inputs and textareas.
     10
     11        Moved the inputmode attribute from HTMLInputElement.idl and
     12        HTMLTextAreaElement.idl to HTMLElement.idl to reflect the specification.
     13
     14        Also moved all logic to convert between the InputMode enum and string values
     15        into InputMode.cpp to avoid exposing unnecessary details to WebKit. Furthermore,
     16        InputMode::Auto was renamed to InputMode::Unspecified to avoid confusion with the
     17        specification.
     18
     19        Spec: https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute
     20
     21        Tests: fast/forms/inputmode-attribute-contenteditable.html
     22               fast/forms/inputmode-attribute-input.html
     23               fast/forms/inputmode-attribute-textarea.html
     24
     25        * Sources.txt:
     26        * WebCore.xcodeproj/project.pbxproj:
     27        * html/HTMLElement.cpp:
     28        (WebCore::HTMLElement::canonicalInputMode const):
     29        (WebCore::HTMLElement::inputMode const):
     30        (WebCore::HTMLElement::setInputMode):
     31        * html/HTMLElement.h:
     32        * html/HTMLElement.idl:
     33        * html/HTMLInputElement.idl:
     34        * html/HTMLTextAreaElement.idl:
     35        * html/HTMLTextFormControlElement.cpp:
     36        * html/HTMLTextFormControlElement.h:
     37        * html/InputMode.cpp: Renamed from Source/WebCore/html/InputModeNames.cpp.
     38        (WebCore::inputModeForAttributeValue):
     39        (WebCore::stringForInputMode):
     40        * html/InputMode.h: Renamed from Source/WebCore/html/InputModeNames.h.
     41
    1422018-08-23  Eric Carlson  <eric.carlson@apple.com>
    243
  • trunk/Source/WebCore/Sources.txt

    r235223 r235245  
    10571057html/ImageDocument.cpp
    10581058html/ImageInputType.cpp
    1059 html/InputModeNames.cpp
     1059html/InputMode.cpp
    10601060html/InputType.cpp
    10611061html/InputTypeNames.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r235230 r235245  
    47934793                E52CF54D20A268AC00DADA27 /* DataListSuggestionsClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E52CF54C20A268AC00DADA27 /* DataListSuggestionsClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    47944794                E52CF54F20A35A2800DADA27 /* DataListSuggestionPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = E52CF54E20A35A2800DADA27 /* DataListSuggestionPicker.h */; settings = {ATTRIBUTES = (Private, ); }; };
    4795                 E52EFDF42112875A00AD282A /* InputModeNames.h in Headers */ = {isa = PBXBuildFile; fileRef = E52EFDF22112875A00AD282A /* InputModeNames.h */; settings = {ATTRIBUTES = (Private, ); }; };
     4795                E52EFDF42112875A00AD282A /* InputMode.h in Headers */ = {isa = PBXBuildFile; fileRef = E52EFDF22112875A00AD282A /* InputMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
    47964796                E58B45BA20AD07DD00991025 /* DataListButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = E58B45B820AD07DD00991025 /* DataListButtonElement.h */; };
    47974797                E58B45BB20AD07DD00991025 /* DataListButtonElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E58B45B920AD07DD00991025 /* DataListButtonElement.cpp */; };
     
    1444114441                E52CF54C20A268AC00DADA27 /* DataListSuggestionsClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DataListSuggestionsClient.h; sourceTree = "<group>"; };
    1444214442                E52CF54E20A35A2800DADA27 /* DataListSuggestionPicker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DataListSuggestionPicker.h; sourceTree = "<group>"; };
    14443                 E52EFDF22112875A00AD282A /* InputModeNames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InputModeNames.h; sourceTree = "<group>"; };
    14444                 E52EFDF32112875A00AD282A /* InputModeNames.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InputModeNames.cpp; sourceTree = "<group>"; };
     14443                E52EFDF22112875A00AD282A /* InputMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InputMode.h; sourceTree = "<group>"; };
     14444                E52EFDF32112875A00AD282A /* InputMode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InputMode.cpp; sourceTree = "<group>"; };
    1444514445                E55F4979151B888000BB67DB /* LengthFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LengthFunctions.cpp; sourceTree = "<group>"; };
    1444614446                E58B45B820AD07DD00991025 /* DataListButtonElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DataListButtonElement.h; sourceTree = "<group>"; };
     
    2064520645                                F55B3D8D1251F12D003EF269 /* ImageInputType.cpp */,
    2064620646                                F55B3D8E1251F12D003EF269 /* ImageInputType.h */,
    20647                                 E52EFDF32112875A00AD282A /* InputModeNames.cpp */,
    20648                                 E52EFDF22112875A00AD282A /* InputModeNames.h */,
     20647                                E52EFDF32112875A00AD282A /* InputMode.cpp */,
     20648                                E52EFDF22112875A00AD282A /* InputMode.h */,
    2064920649                                37E3524A12450C5200BAF5D9 /* InputType.cpp */,
    2065020650                                37E3524C12450C6600BAF5D9 /* InputType.h */,
     
    2827928279                                510A58E51BAA40B100C19282 /* InProcessIDBServer.h in Headers */,
    2828028280                                2EB767571DA19BDF003E23B5 /* InputEvent.h in Headers */,
    28281                                 E52EFDF42112875A00AD282A /* InputModeNames.h in Headers */,
     28281                                E52EFDF42112875A00AD282A /* InputMode.h in Headers */,
    2828228282                                37E3524D12450C6600BAF5D9 /* InputType.h in Headers */,
    2828328283                                C348612415FDE21E007A1CC9 /* InputTypeNames.h in Headers */,
  • trunk/Source/WebCore/html/HTMLElement.cpp

    r234808 r235245  
    10871087#endif
    10881088
     1089InputMode HTMLElement::canonicalInputMode() const
     1090{
     1091    return inputModeForAttributeValue(attributeWithoutSynchronization(inputmodeAttr));
     1092}
     1093
     1094const AtomicString& HTMLElement::inputMode() const
     1095{
     1096    return stringForInputMode(canonicalInputMode());
     1097}
     1098
     1099void HTMLElement::setInputMode(const AtomicString& value)
     1100{
     1101    setAttributeWithoutSynchronization(inputmodeAttr, value);
     1102}
     1103
    10891104} // namespace WebCore
    10901105
  • trunk/Source/WebCore/html/HTMLElement.h

    r229694 r235245  
    2727#endif
    2828
     29#include "InputMode.h"
    2930#include "StyledElement.h"
    3031
     
    108109#endif
    109110
     111    WEBCORE_EXPORT InputMode canonicalInputMode() const;
     112    const AtomicString& inputMode() const;
     113    void setInputMode(const AtomicString& value);
     114
    110115protected:
    111116    HTMLElement(const QualifiedName& tagName, Document&, ConstructionType);
  • trunk/Source/WebCore/html/HTMLElement.idl

    r222429 r235245  
    6868    // FIXME: We are the only browser to support this now that Blink dropped it (http://crbug.com/688943).
    6969    [CEReactions, Reflect] attribute DOMString webkitdropzone;
     70
     71    attribute DOMString inputMode;
    7072};
    7173
  • trunk/Source/WebCore/html/HTMLInputElement.idl

    r235201 r235245  
    4343    attribute unsigned long height;
    4444    attribute boolean indeterminate;
    45     attribute DOMString inputMode;
    4645    [Conditional=DATALIST_ELEMENT] readonly attribute HTMLElement list;
    4746    [Reflect] attribute DOMString max;
  • trunk/Source/WebCore/html/HTMLTextAreaElement.idl

    r235201 r235245  
    6060
    6161    attribute DOMString autocomplete;
    62     attribute DOMString inputMode;
    6362};
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp

    r235201 r235245  
    4040#include "HTMLNames.h"
    4141#include "HTMLParserIdioms.h"
    42 #include "InputModeNames.h"
    4342#include "LayoutDisallowedScope.h"
    4443#include "Logging.h"
     
    675674}
    676675#endif
    677 
    678 String HTMLTextFormControlElement::inputMode() const
    679 {
    680     const AtomicString& inputMode = attributeWithoutSynchronization(inputmodeAttr);
    681     if (equalIgnoringASCIICase(inputMode, InputModeNames::text()))
    682         return InputModeNames::text();
    683     if (equalIgnoringASCIICase(inputMode, InputModeNames::tel()))
    684         return InputModeNames::tel();
    685     if (equalIgnoringASCIICase(inputMode, InputModeNames::url()))
    686         return InputModeNames::url();
    687     if (equalIgnoringASCIICase(inputMode, InputModeNames::email()))
    688         return InputModeNames::email();
    689     if (equalIgnoringASCIICase(inputMode, InputModeNames::numeric()))
    690         return InputModeNames::numeric();
    691     if (equalIgnoringASCIICase(inputMode, InputModeNames::decimal()))
    692         return InputModeNames::decimal();
    693     if (equalIgnoringASCIICase(inputMode, InputModeNames::search()))
    694         return InputModeNames::search();
    695 
    696     return emptyString();
    697 }
    698 
    699 void HTMLTextFormControlElement::setInputMode(const String& value)
    700 {
    701     setAttributeWithoutSynchronization(inputmodeAttr, value);
    702 }
    703676
    704677static void getNextSoftBreak(RootInlineBox*& line, Node*& breakNode, unsigned& breakOffset)
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.h

    r235201 r235245  
    9999#endif
    100100
    101     WEBCORE_EXPORT String inputMode() const;
    102     void setInputMode(const String&);
    103 
    104101protected:
    105102    HTMLTextFormControlElement(const QualifiedName&, Document&, HTMLFormElement*);
  • trunk/Source/WebCore/html/InputMode.cpp

    r235243 r235245  
    2525
    2626#include "config.h"
    27 #include "InputModeNames.h"
     27#include "InputMode.h"
    2828
    2929#include <wtf/NeverDestroyed.h>
    3030
    3131namespace WebCore {
     32
     33InputMode inputModeForAttributeValue(const AtomicString& value)
     34{
     35    if (equalIgnoringASCIICase(value, InputModeNames::text()))
     36        return InputMode::Text;
     37    if (equalIgnoringASCIICase(value, InputModeNames::tel()))
     38        return InputMode::Telephone;
     39    if (equalIgnoringASCIICase(value, InputModeNames::url()))
     40        return InputMode::Url;
     41    if (equalIgnoringASCIICase(value, InputModeNames::email()))
     42        return InputMode::Email;
     43    if (equalIgnoringASCIICase(value, InputModeNames::numeric()))
     44        return InputMode::Numeric;
     45    if (equalIgnoringASCIICase(value, InputModeNames::decimal()))
     46        return InputMode::Decimal;
     47    if (equalIgnoringASCIICase(value, InputModeNames::search()))
     48        return InputMode::Search;
     49
     50    return InputMode::Unspecified;
     51}
     52
     53const AtomicString& stringForInputMode(InputMode mode)
     54{
     55    switch (mode) {
     56    case InputMode::Unspecified:
     57        return emptyAtom();
     58    case InputMode::Text:
     59        return InputModeNames::text();
     60    case InputMode::Telephone:
     61        return InputModeNames::tel();
     62    case InputMode::Url:
     63        return InputModeNames::url();
     64    case InputMode::Email:
     65        return InputModeNames::email();
     66    case InputMode::Numeric:
     67        return InputModeNames::numeric();
     68    case InputMode::Decimal:
     69        return InputModeNames::decimal();
     70    case InputMode::Search:
     71        return InputModeNames::search();
     72    }
     73}
    3274
    3375namespace InputModeNames {
  • trunk/Source/WebCore/html/InputMode.h

    r235243 r235245  
    3030namespace WebCore {
    3131
     32enum class InputMode : uint8_t {
     33    Unspecified,
     34    Text,
     35    Telephone,
     36    Url,
     37    Email,
     38    Numeric,
     39    Decimal,
     40    Search
     41};
     42
     43InputMode inputModeForAttributeValue(const AtomicString&);
     44const AtomicString& stringForInputMode(InputMode);
     45
    3246namespace InputModeNames {
    3347
    34 WEBCORE_EXPORT const AtomicString& text();
    35 WEBCORE_EXPORT const AtomicString& tel();
    36 WEBCORE_EXPORT const AtomicString& url();
    37 WEBCORE_EXPORT const AtomicString& email();
    38 WEBCORE_EXPORT const AtomicString& numeric();
    39 WEBCORE_EXPORT const AtomicString& decimal();
    40 WEBCORE_EXPORT const AtomicString& search();
     48const AtomicString& text();
     49const AtomicString& tel();
     50const AtomicString& url();
     51const AtomicString& email();
     52const AtomicString& numeric();
     53const AtomicString& decimal();
     54const AtomicString& search();
    4155
    4256} // namespace InputModeNames
  • trunk/Source/WebKit/ChangeLog

    r235243 r235245  
     12018-08-23  Aditya Keerthi  <akeerthi@apple.com>
     2
     3        [iOS] Support the inputmode attribute on contenteditable elements
     4        https://bugs.webkit.org/show_bug.cgi?id=188878
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Ensured that the assistedNodeInformation for a contenteditable element reflects
     9        the value of the element's inputmode attribute.
     10
     11        Moved logic to obtain the InputMode from the attribute value into WebCore.
     12
     13        * Shared/AssistedNodeInformation.h:
     14        * UIProcess/ios/WKContentViewInteraction.mm:
     15        * WebProcess/WebPage/ios/WebPageIOS.mm:
     16        (WebKit::WebPage::getAssistedNodeInformation):
     17
    1182018-08-22  Ryosuke Niwa  <rniwa@webkit.org>
    219
  • trunk/Source/WebKit/Shared/AssistedNodeInformation.h

    r235201 r235245  
    3030#include <WebCore/Autofill.h>
    3131#include <WebCore/Color.h>
     32#include <WebCore/InputMode.h>
    3233#include <WebCore/IntRect.h>
    3334#include <WebCore/URL.h>
     
    5859    Color
    5960#endif
    60 };
    61 
    62 enum class InputMode : uint8_t {
    63     Auto,
    64     Text,
    65     Telephone,
    66     Url,
    67     Email,
    68     Numeric,
    69     Decimal,
    70     Search
    7161};
    7262
     
    122112    AutocapitalizeType autocapitalizeType { AutocapitalizeTypeDefault };
    123113    InputType elementType { InputType::None };
    124     InputMode inputMode { InputMode::Auto };
     114    WebCore::InputMode inputMode { WebCore::InputMode::Unspecified };
    125115    String formAction;
    126116    Vector<OptionItem> selectOptions;
  • trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

    r235201 r235245  
    7676#import <WebCore/DataDetection.h>
    7777#import <WebCore/FloatQuad.h>
     78#import <WebCore/InputMode.h>
    7879#import <WebCore/LocalizedStrings.h>
    7980#import <WebCore/NotImplemented.h>
     
    35493550
    35503551    switch (_assistedNodeInformation.inputMode) {
    3551     case InputMode::Auto:
     3552    case InputMode::Unspecified:
    35523553        switch (_assistedNodeInformation.elementType) {
    35533554        case InputType::Phone:
  • trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

    r235205 r235245  
    8888#import <WebCore/HistoryItem.h>
    8989#import <WebCore/HitTestResult.h>
    90 #import <WebCore/InputModeNames.h>
     90#import <WebCore/InputMode.h>
    9191#import <WebCore/KeyboardEvent.h>
    9292#import <WebCore/LibWebRTCProvider.h>
     
    23152315}
    23162316
    2317 static InputMode inputModeForAssistedNode(const Node& node)
    2318 {
    2319     const AtomicString& inputMode = downcast<HTMLTextFormControlElement>(node).inputMode();
    2320     if (inputMode == InputModeNames::text())
    2321         return InputMode::Text;
    2322     if (inputMode == InputModeNames::tel())
    2323         return InputMode::Telephone;
    2324     if (inputMode == InputModeNames::url())
    2325         return InputMode::Url;
    2326     if (inputMode == InputModeNames::email())
    2327         return InputMode::Email;
    2328     if (inputMode == InputModeNames::numeric())
    2329         return InputMode::Numeric;
    2330     if (inputMode == InputModeNames::decimal())
    2331         return InputMode::Decimal;
    2332     if (inputMode == InputModeNames::search())
    2333         return InputMode::Search;
    2334 
    2335     return InputMode::Auto;
    2336 }
    2337 
    23382317void WebPage::getAssistedNodeInformation(AssistedNodeInformation& information)
    23392318{
     
    24412420        information.autofillFieldName = WebCore::toAutofillFieldName(element.autofillData().fieldName);
    24422421        information.placeholder = element.attributeWithoutSynchronization(HTMLNames::placeholderAttr);
    2443         information.inputMode = inputModeForAssistedNode(element);
     2422        information.inputMode = element.canonicalInputMode();
    24442423    } else if (is<HTMLInputElement>(*m_assistedNode)) {
    24452424        HTMLInputElement& element = downcast<HTMLInputElement>(*m_assistedNode);
     
    24992478#endif
    25002479
    2501         information.inputMode = inputModeForAssistedNode(element);
     2480        information.inputMode = element.canonicalInputMode();
    25022481        information.isReadOnly = element.isReadOnly();
    25032482        information.value = element.value();
     
    25102489            information.isAutocorrect = assistedElement.shouldAutocorrect();
    25112490            information.autocapitalizeType = assistedElement.autocapitalizeType();
     2491            information.inputMode = assistedElement.canonicalInputMode();
    25122492        } else {
    25132493            information.isAutocorrect = true;
Note: See TracChangeset for help on using the changeset viewer.