[Extra zoom mode] Implement number pad UI when editing `tel` and `number` inputs
authorwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Feb 2018 21:44:02 +0000 (21:44 +0000)
committerwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Feb 2018 21:44:02 +0000 (21:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=182472
<rdar://problem/35143057>

Reviewed by Tim Horton.

Source/WebCore:

Adds a localized string for the "Done" button text in extra zoomed form controls.

* English.lproj/Localizable.strings:
* platform/LocalizedStrings.cpp:
(WebCore::formControlDoneButtonTitle):
* platform/LocalizedStrings.h:

Source/WebKit:

Allows the user to edit numeric input types using a number pad. See below comments for more detail.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingKeyboard]):
(-[WKContentView _stopAssistingNode]):

Dismiss the number pad, if it is present.

(-[WKContentView dismissNumberPadViewController:]):
(-[WKContentView presentNumberPadViewController:]):

Add new helpers for showing and hiding the number pad view controller.

(-[WKContentView presentViewControllerForAssistedNode:]):
(-[WKContentView textInputController:didRequestDismissalWithAction:]):

Dismiss the number pad, if it is present.

(-[WKContentView focusedFormControlControllerDidBeginEditing:]):
(-[WKContentView shouldPresentTextInputViewController:]): Deleted.

Remove -shouldPresentTextInputViewController and replace it with -presentViewControllerForAssistedNode:, which
presents the appropriate view controller given "assisted" node information.

* UIProcess/ios/forms/WKNumberPadView.h: Added.
* UIProcess/ios/forms/WKNumberPadView.mm: Added.
* UIProcess/ios/forms/WKNumberPadViewController.h: Added.
* UIProcess/ios/forms/WKNumberPadViewController.mm: Added.

Add "WebKitAdditions harness" files for the new number pad view and view controller classes.

* WebKit.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228121 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
Source/WebCore/ChangeLog
Source/WebCore/English.lproj/Localizable.strings
Source/WebCore/platform/LocalizedStrings.cpp
Source/WebCore/platform/LocalizedStrings.h
Source/WebKit/ChangeLog
Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
Source/WebKit/UIProcess/ios/forms/WKNumberPadView.h [new file with mode: 0644]
Source/WebKit/UIProcess/ios/forms/WKNumberPadView.mm [new file with mode: 0644]
Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.h [new file with mode: 0644]
Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.mm [new file with mode: 0644]
Source/WebKit/WebKit.xcodeproj/project.pbxproj

index 08287f8..4c6ab70 100644 (file)
@@ -1,3 +1,18 @@
+2018-02-05  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [Extra zoom mode] Implement number pad UI when editing `tel` and `number` inputs
+        https://bugs.webkit.org/show_bug.cgi?id=182472
+        <rdar://problem/35143057>
+
+        Reviewed by Tim Horton.
+
+        Adds a localized string for the "Done" button text in extra zoomed form controls.
+
+        * English.lproj/Localizable.strings:
+        * platform/LocalizedStrings.cpp:
+        (WebCore::formControlDoneButtonTitle):
+        * platform/LocalizedStrings.h:
+
 2018-02-05  John Wilander  <wilander@apple.com>
 
         Build fix for r228115, simple naming issue succeeded —> success.
index 17c6b02..eb41473 100644 (file)
 /* Text of button that exits element fullscreen. */
 "Done" = "Done";
 
+/* Title of the Done button for zoomed form controls. */
+"Done (extra zoomed form controls)" = "Done";
+
 /* Download Audio To Disk context menu item */
 "Download Audio" = "Download Audio";
 
index 80fd4e2..0f9f698 100644 (file)
@@ -1031,6 +1031,11 @@ String webCryptoMasterKeyKeychainComment()
 
 #if ENABLE(EXTRA_ZOOM_MODE)
 
+String formControlDoneButtonTitle()
+{
+    return WEB_UI_STRING("Done (extra zoomed form controls)", "Title of the Done button for zoomed form controls.");
+}
+
 String formControlCancelButtonTitle()
 {
     return WEB_UI_STRING("Cancel", "Title of the Cancel button for zoomed form controls.");
index c2116f2..0e2fb0c 100644 (file)
@@ -317,7 +317,7 @@ namespace WebCore {
 
 #if ENABLE(EXTRA_ZOOM_MODE)
     WEBCORE_EXPORT String formControlCancelButtonTitle();
-    WEBCORE_EXPORT String formControlSubmitButtonTitle();
+    WEBCORE_EXPORT String formControlDoneButtonTitle();
     WEBCORE_EXPORT String formControlHideButtonTitle();
     WEBCORE_EXPORT String formControlGoButtonTitle();
     WEBCORE_EXPORT String formControlSearchButtonTitle();
index 1533fe7..8df8914 100644 (file)
@@ -1,3 +1,45 @@
+2018-02-05  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [Extra zoom mode] Implement number pad UI when editing `tel` and `number` inputs
+        https://bugs.webkit.org/show_bug.cgi?id=182472
+        <rdar://problem/35143057>
+
+        Reviewed by Tim Horton.
+
+        Allows the user to edit numeric input types using a number pad. See below comments for more detail.
+
+        * UIProcess/ios/WKContentViewInteraction.h:
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView _startAssistingKeyboard]):
+        (-[WKContentView _stopAssistingNode]):
+
+        Dismiss the number pad, if it is present.
+
+        (-[WKContentView dismissNumberPadViewController:]):
+        (-[WKContentView presentNumberPadViewController:]):
+
+        Add new helpers for showing and hiding the number pad view controller.
+
+        (-[WKContentView presentViewControllerForAssistedNode:]):
+        (-[WKContentView textInputController:didRequestDismissalWithAction:]):
+
+        Dismiss the number pad, if it is present.
+
+        (-[WKContentView focusedFormControlControllerDidBeginEditing:]):
+        (-[WKContentView shouldPresentTextInputViewController:]): Deleted.
+
+        Remove -shouldPresentTextInputViewController and replace it with -presentViewControllerForAssistedNode:, which
+        presents the appropriate view controller given "assisted" node information.
+
+        * UIProcess/ios/forms/WKNumberPadView.h: Added.
+        * UIProcess/ios/forms/WKNumberPadView.mm: Added.
+        * UIProcess/ios/forms/WKNumberPadViewController.h: Added.
+        * UIProcess/ios/forms/WKNumberPadViewController.mm: Added.
+
+        Add "WebKitAdditions harness" files for the new number pad view and view controller classes.
+
+        * WebKit.xcodeproj/project.pbxproj:
+
 2018-02-05  Youenn Fablet  <youenn@apple.com>
 
         Add logging to CacheStorageEngineConnection
index 818143a..97b133d 100644 (file)
@@ -85,6 +85,7 @@ class WebPageProxy;
 
 #if ENABLE(EXTRA_ZOOM_MODE)
 @class WKFocusedFormControlViewController;
+@class WKNumberPadViewController;
 @class WKTextInputViewController;
 #endif
 
@@ -245,6 +246,7 @@ struct WKAutoCorrectionData {
 #if ENABLE(EXTRA_ZOOM_MODE)
     RetainPtr<WKTextInputViewController> _textInputViewController;
     RetainPtr<WKFocusedFormControlViewController> _focusedFormControlViewController;
+    RetainPtr<WKNumberPadViewController> _numberPadViewController;
 #endif
 }
 
index 894753b..5757944 100644 (file)
@@ -47,6 +47,7 @@
 #import "WKImagePreviewViewController.h"
 #import "WKInspectorNodeSearchGestureRecognizer.h"
 #import "WKNSURLExtras.h"
+#import "WKNumberPadViewController.h"
 #import "WKPreviewActionItemIdentifiers.h"
 #import "WKPreviewActionItemInternal.h"
 #import "WKPreviewElementInfoInternal.h"
@@ -3931,8 +3932,8 @@ static NSString *contentTypeFromFieldName(WebCore::AutofillFieldName fieldName)
     [self useSelectionAssistantWithGranularity:WKSelectionGranularityCharacter];
 
 #if ENABLE(EXTRA_ZOOM_MODE)
-    if (!_isChangingFocus && [self shouldPresentTextInputViewController:_assistedNodeInformation])
-        [self presentTextInputViewController:YES];
+    if (!_isChangingFocus)
+        [self presentViewControllerForAssistedNode:_assistedNodeInformation];
 #else
     [self reloadInputViews];
 #endif
@@ -4088,6 +4089,7 @@ static bool isAssistableInputType(InputType type)
 
 #if ENABLE(EXTRA_ZOOM_MODE)
     [self dismissTextInputViewController:YES];
+    [self dismissNumberPadViewController:YES];
     if (!_isChangingFocus)
         [self dismissFocusedFormControlViewController:[_focusedFormControlViewController isVisible]];
 #endif
@@ -4111,6 +4113,15 @@ static bool isAssistableInputType(InputType type)
     [[UIViewController _viewControllerForFullScreenPresentationFromView:self] presentViewController:_focusedFormControlViewController.get() animated:animated completion:nil];
 }
 
+- (void)dismissNumberPadViewController:(BOOL)animated
+{
+    if (!_numberPadViewController)
+        return;
+
+    auto numberPadViewController = WTFMove(_numberPadViewController);
+    [numberPadViewController dismissViewControllerAnimated:animated completion:nil];
+}
+
 - (void)dismissFocusedFormControlViewController:(BOOL)animated
 {
     if (!_focusedFormControlViewController)
@@ -4120,7 +4131,17 @@ static bool isAssistableInputType(InputType type)
     _focusedFormControlViewController = nil;
 }
 
-- (BOOL)shouldPresentTextInputViewController:(const AssistedNodeInformation&)info
+- (void)presentNumberPadViewController:(BOOL)animated
+{
+    if (_numberPadViewController)
+        return;
+
+    _numberPadViewController = adoptNS([[WKNumberPadViewController alloc] initWithText:_assistedNodeInformation.value textSuggestions:@[]]);
+    [_numberPadViewController setDelegate:self];
+    [_focusedFormControlViewController presentViewController:_numberPadViewController.get() animated:animated completion:nil];
+}
+
+- (void)presentViewControllerForAssistedNode:(const AssistedNodeInformation&)info
 {
     switch (info.elementType) {
     case InputType::ContentEditable:
@@ -4130,9 +4151,15 @@ static bool isAssistableInputType(InputType type)
     case InputType::Search:
     case InputType::Email:
     case InputType::URL:
-        return true;
+        [self presentTextInputViewController:YES];
+        break;
+    case InputType::Number:
+    case InputType::NumberPad:
+    case InputType::Phone:
+        [self presentNumberPadViewController:YES];
+        break;
     default:
-        return false;
+        break;
     }
 }
 
@@ -4177,6 +4204,7 @@ static bool isAssistableInputType(InputType type)
 
     [_focusedFormControlViewController show:NO];
     [self dismissTextInputViewController:YES];
+    [self dismissNumberPadViewController:YES];
 }
 
 - (void)focusedFormControlControllerDidSubmit:(WKFocusedFormControlViewController *)controller
@@ -4192,8 +4220,7 @@ static bool isAssistableInputType(InputType type)
 
 - (void)focusedFormControlControllerDidBeginEditing:(WKFocusedFormControlViewController *)controller
 {
-    if ([self shouldPresentTextInputViewController:_assistedNodeInformation])
-        [self presentTextInputViewController:YES];
+    [self presentViewControllerForAssistedNode:_assistedNodeInformation];
 }
 
 - (CGRect)highlightedRectForFocusedFormControlController:(WKFocusedFormControlViewController *)controller inCoordinateSpace:(id <UICoordinateSpace>)coordinateSpace
diff --git a/Source/WebKit/UIProcess/ios/forms/WKNumberPadView.h b/Source/WebKit/UIProcess/ios/forms/WKNumberPadView.h
new file mode 100644 (file)
index 0000000..babc45c
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKNumberPadViewAdditions.h>
+#endif
diff --git a/Source/WebKit/UIProcess/ios/forms/WKNumberPadView.mm b/Source/WebKit/UIProcess/ios/forms/WKNumberPadView.mm
new file mode 100644 (file)
index 0000000..7ac13da
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "WKNumberPadView.h"
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKNumberPadViewAdditions.mm>
+#endif
diff --git a/Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.h b/Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.h
new file mode 100644 (file)
index 0000000..0ff01e5
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKNumberPadViewControllerAdditions.h>
+#endif
diff --git a/Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.mm b/Source/WebKit/UIProcess/ios/forms/WKNumberPadViewController.mm
new file mode 100644 (file)
index 0000000..4ee85c0
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WKNumberPadViewController.h"
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKNumberPadViewControllerAdditions.mm>
+#endif
index ddfbe8a..eb5e2c6 100644 (file)
                2E5C770E1FA7D429005932C3 /* APIAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E5C770C1FA7D429005932C3 /* APIAttachment.h */; };
                2E5C770F1FA7D429005932C3 /* APIAttachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E5C770D1FA7D429005932C3 /* APIAttachment.cpp */; };
                2E7A944A1BBD97C300945547 /* _WKFocusedElementInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               2EA7B3D12026CEF8009CE5AC /* WKNumberPadViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EA7B3CF2026CEF8009CE5AC /* WKNumberPadViewController.h */; };
+               2EA7B3D22026CEF8009CE5AC /* WKNumberPadViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EA7B3D02026CEF8009CE5AC /* WKNumberPadViewController.mm */; };
+               2EA7B3D52026CF23009CE5AC /* WKNumberPadView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EA7B3D32026CF23009CE5AC /* WKNumberPadView.h */; };
+               2EA7B3D62026CF23009CE5AC /* WKNumberPadView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EA7B3D42026CF23009CE5AC /* WKNumberPadView.mm */; };
                2F809DD71FBD1BC9005FE63A /* TouchBarMenuItemData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2F809DD51FBD1BC9005FE63A /* TouchBarMenuItemData.cpp */; };
                2F8336861FA139DF00C6E080 /* TouchBarMenuData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD43B911FA006A10083F51C /* TouchBarMenuData.h */; };
                2F8336871FA13A1E00C6E080 /* TouchBarMenuData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FD43B921FA006A30083F51C /* TouchBarMenuData.cpp */; };
                2E5C770C1FA7D429005932C3 /* APIAttachment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = APIAttachment.h; sourceTree = "<group>"; };
                2E5C770D1FA7D429005932C3 /* APIAttachment.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = APIAttachment.cpp; sourceTree = "<group>"; };
                2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _WKFocusedElementInfo.h; sourceTree = "<group>"; };
+               2EA7B3CF2026CEF8009CE5AC /* WKNumberPadViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKNumberPadViewController.h; path = ios/forms/WKNumberPadViewController.h; sourceTree = "<group>"; };
+               2EA7B3D02026CEF8009CE5AC /* WKNumberPadViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKNumberPadViewController.mm; path = ios/forms/WKNumberPadViewController.mm; sourceTree = "<group>"; };
+               2EA7B3D32026CF23009CE5AC /* WKNumberPadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKNumberPadView.h; path = ios/forms/WKNumberPadView.h; sourceTree = "<group>"; };
+               2EA7B3D42026CF23009CE5AC /* WKNumberPadView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKNumberPadView.mm; path = ios/forms/WKNumberPadView.mm; sourceTree = "<group>"; };
                2F809DD51FBD1BC9005FE63A /* TouchBarMenuItemData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TouchBarMenuItemData.cpp; sourceTree = "<group>"; };
                2F809DD91FBD1BF2005FE63A /* TouchBarMenuItemData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TouchBarMenuItemData.h; sourceTree = "<group>"; };
                2FD43B911FA006A10083F51C /* TouchBarMenuData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchBarMenuData.h; sourceTree = "<group>"; };
                                C57193B918C149D0002D0F12 /* WKFormSelectPicker.mm */,
                                0F08CF531D63C14000B48DF1 /* WKFormSelectPopover.h */,
                                C57193BA18C149D0002D0F12 /* WKFormSelectPopover.mm */,
+                               2EA7B3D32026CF23009CE5AC /* WKNumberPadView.h */,
+                               2EA7B3D42026CF23009CE5AC /* WKNumberPadView.mm */,
+                               2EA7B3CF2026CEF8009CE5AC /* WKNumberPadViewController.h */,
+                               2EA7B3D02026CEF8009CE5AC /* WKNumberPadViewController.mm */,
                                2E16B69F2016E680008996D6 /* WKTextFormControlViewController.h */,
                                2E16B6A02016E680008996D6 /* WKTextFormControlViewController.mm */,
                                2E16B6C82017B768008996D6 /* WKTextInputViewController.h */,
                                37183D57182F4E700080C811 /* WKNSURLExtras.h in Headers */,
                                37BF2F061947DEB400723C48 /* WKNSURLRequest.h in Headers */,
                                BC407602124FF0270068F20A /* WKNumber.h in Headers */,
+                               2EA7B3D52026CF23009CE5AC /* WKNumberPadView.h in Headers */,
+                               2EA7B3D12026CEF8009CE5AC /* WKNumberPadViewController.h in Headers */,
                                7CD5EBB91746A15B000C1C45 /* WKObjCTypeWrapperRef.h in Headers */,
                                378E1A40181EDA010031007A /* WKObject.h in Headers */,
                                1ACC50F21CBC381D003C7D03 /* WKOpenPanelParameters.h in Headers */,
                                37183D56182F4E700080C811 /* WKNSURLExtras.mm in Sources */,
                                37BF2F071947DEB400723C48 /* WKNSURLRequest.mm in Sources */,
                                BC407601124FF0270068F20A /* WKNumber.cpp in Sources */,
+                               2EA7B3D62026CF23009CE5AC /* WKNumberPadView.mm in Sources */,
+                               2EA7B3D22026CEF8009CE5AC /* WKNumberPadViewController.mm in Sources */,
                                7CD5EBB81746A15B000C1C45 /* WKObjCTypeWrapperRef.mm in Sources */,
                                374436881820E7240049579F /* WKObject.mm in Sources */,
                                1ACC50F11CBC381D003C7D03 /* WKOpenPanelParameters.mm in Sources */,