+2018-03-20 Wenson Hsieh <wenson_hsieh@apple.com>
+
+ [Extra zoom mode] Adopt updated input view controller machinery for text input
+ https://bugs.webkit.org/show_bug.cgi?id=183765
+ <rdar://problem/36926269>
+
+ Reviewed by Tim Horton.
+
+ Adopt new classes for extra zoomed text inputs. Massage WKTextInputViewController into WKTextInputListView-
+ Controller and introduce WKFormControlListViewController, the eventual replacement for the base class
+ WKTextFormControlViewController that will act as the base class of all list-view-controller-based input UI in
+ extra zoom mode.
+
+ * UIProcess/ios/WKContentViewInteraction.h:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView presentTextInputViewController:]):
+ (-[WKContentView dismissTextInputViewController:]):
+ (-[WKContentView focusedFormControllerDidUpdateSuggestions:]):
+ (-[WKContentView _wheelChangedWithEvent:]):
+ * UIProcess/ios/forms/WKFormControlListViewController.h: Copied from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.h.
+ * UIProcess/ios/forms/WKFormControlListViewController.mm: Renamed from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.mm.
+ * UIProcess/ios/forms/WKTextInputListViewController.h: Copied from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.h.
+ * UIProcess/ios/forms/WKTextInputListViewController.mm: Renamed from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.h.
+ * WebKit.xcodeproj/project.pbxproj:
+
2018-03-19 Megan Gardner <megan_gardner@apple.com>
Clear style colors when setting default appearance
@class WKFocusedFormControlViewController;
@class WKNumberPadViewController;
@class WKSelectMenuViewController;
-@class WKTextInputViewController;
+@class WKTextInputListViewController;
@class WKTimePickerViewController;
#endif
#if ENABLE(EXTRA_ZOOM_MODE)
RetainPtr<WKDatePickerViewController> _datePickerViewController;
- RetainPtr<WKTextInputViewController> _textInputViewController;
+ RetainPtr<WKTextInputListViewController> _textInputListViewController;
RetainPtr<WKFocusedFormControlViewController> _focusedFormControlViewController;
RetainPtr<WKNumberPadViewController> _numberPadViewController;
RetainPtr<WKSelectMenuViewController> _selectMenuViewController;
#import "WKDatePickerViewController.h"
#import "WKError.h"
#import "WKFocusedFormControlViewController.h"
+#import "WKFormControlListViewController.h"
#import "WKFormInputControl.h"
#import "WKFormSelectControl.h"
#import "WKImagePreviewViewController.h"
#import "WKPreviewActionItemInternal.h"
#import "WKPreviewElementInfoInternal.h"
#import "WKSelectMenuViewController.h"
-#import "WKTextInputViewController.h"
+#import "WKTextInputListViewController.h"
#import "WKTimePickerViewController.h"
#import "WKUIDelegatePrivate.h"
#import "WKWebViewConfiguration.h"
#if ENABLE(EXTRA_ZOOM_MODE)
-@interface WKContentView (ExtraZoomMode) <WKTextFormControlViewControllerDelegate, WKFocusedFormControlViewControllerDelegate, WKSelectMenuViewControllerDelegate>
+@interface WKContentView (ExtraZoomMode) <WKTextFormControlViewControllerDelegate, WKFocusedFormControlViewControllerDelegate, WKSelectMenuViewControllerDelegate, WKFormControlListViewControllerDelegate>
@end
#endif
- (void)presentTextInputViewController:(BOOL)animated
{
- if (_textInputViewController)
+ if (_textInputListViewController)
return;
- _textInputViewController = adoptNS([[WKTextInputViewController alloc] initWithText:_assistedNodeInformation.value textSuggestions:@[ ]]);
- [_textInputViewController setDelegate:self];
- [_textInputViewController setUsesPasswordEntryMode:_assistedNodeInformation.elementType == InputType::Password || [_formInputSession forceSecureTextEntry]];
- [_focusedFormControlViewController presentViewController:_textInputViewController.get() animated:animated completion:nil];
-
- [_textInputViewController setSuggestions:[_focusedFormControlViewController suggestions]];
+ _textInputListViewController = adoptNS([[WKTextInputListViewController alloc] initWithDelegate:self]);
+ [_focusedFormControlViewController presentViewController:_textInputListViewController.get() animated:animated completion:nil];
}
- (void)dismissTextInputViewController:(BOOL)animated
{
- if (!_textInputViewController)
+ if (!_textInputListViewController)
return;
- auto textInputViewController = WTFMove(_textInputViewController);
- [textInputViewController dismissViewControllerAnimated:animated completion:nil];
+ auto textInputListViewController = WTFMove(_textInputListViewController);
+ [textInputListViewController dismissViewControllerAnimated:animated completion:nil];
}
- (void)textInputController:(WKTextFormControlViewController *)controller didCommitText:(NSString *)text
- (void)focusedFormControllerDidUpdateSuggestions:(WKFocusedFormControlViewController *)controller
{
- [_textInputViewController setSuggestions:controller.suggestions];
+ [_textInputListViewController reloadTextSuggestions];
}
#pragma mark - WKSelectMenuViewControllerDelegate
if ([_numberPadViewController handleWheelEvent:event])
return;
- if ([_textInputViewController handleWheelEvent:event])
- return;
-
if ([_selectMenuViewController handleWheelEvent:event])
return;
#endif
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKContentViewInteractionAdditions.mm>
+#endif
+
@end
@implementation WKContentView (WKTesting)
#pragma once
-#if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/WKTextInputViewControllerAdditions.h>)
-#import <WebKitAdditions/WKTextInputViewControllerAdditions.h>
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKFormControlListViewControllerAdditions.h>
#endif
*/
#include "config.h"
-#include "WKTextInputViewController.h"
+#include "WKFormControlListViewController.h"
-#if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/WKTextInputViewControllerAdditions.mm>)
-#import <WebKitAdditions/WKTextInputViewControllerAdditions.mm>
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKFormControlListViewControllerAdditions.mm>
#endif
--- /dev/null
+/*
+ * 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/WKTextInputListViewControllerAdditions.h>
+#endif
--- /dev/null
+/*
+ * 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 "WKTextInputListViewController.h"
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/WKTextInputListViewControllerAdditions.mm>
+#endif
2E16B6A720171693008996D6 /* WKTextFormControlViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E16B6A02016E680008996D6 /* WKTextFormControlViewController.mm */; };
2E16B6B82017AB9C008996D6 /* WKFocusedFormControlViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E16B6B62017AB9C008996D6 /* WKFocusedFormControlViewController.h */; };
2E16B6B92017AB9C008996D6 /* WKFocusedFormControlViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E16B6B72017AB9C008996D6 /* WKFocusedFormControlViewController.mm */; };
- 2E16B6CA2017B768008996D6 /* WKTextInputViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E16B6C82017B768008996D6 /* WKTextInputViewController.h */; };
- 2E16B6CB2017B768008996D6 /* WKTextInputViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E16B6C92017B768008996D6 /* WKTextInputViewController.mm */; };
2E16B6CE2017B7AD008996D6 /* WKFocusedFormControlView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E16B6CC2017B7AB008996D6 /* WKFocusedFormControlView.mm */; };
2E16B6CF2017B7AD008996D6 /* WKFocusedFormControlView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E16B6CD2017B7AC008996D6 /* WKFocusedFormControlView.h */; };
2E16B6D42017BA37008996D6 /* WKTextSuggestionButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E16B6D22017BA37008996D6 /* WKTextSuggestionButton.h */; };
F44DFEB31E9E752F0038D196 /* WebIconUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = F44DFEB11E9E752F0038D196 /* WebIconUtilities.mm */; };
F496A4311F58A272004C1757 /* DragDropInteractionState.h in Headers */ = {isa = PBXBuildFile; fileRef = F496A42F1F58A272004C1757 /* DragDropInteractionState.h */; };
F496A4321F58A272004C1757 /* DragDropInteractionState.mm in Sources */ = {isa = PBXBuildFile; fileRef = F496A4301F58A272004C1757 /* DragDropInteractionState.mm */; };
+ F4D5F51D206087A10038BBA8 /* WKTextInputListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F4D5F519206087A00038BBA8 /* WKTextInputListViewController.h */; };
+ F4D5F51E206087A10038BBA8 /* WKTextInputListViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4D5F51A206087A10038BBA8 /* WKTextInputListViewController.mm */; };
+ F4D5F51F206087A10038BBA8 /* WKFormControlListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F4D5F51B206087A10038BBA8 /* WKFormControlListViewController.h */; };
+ F4D5F520206087A10038BBA8 /* WKFormControlListViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4D5F51C206087A10038BBA8 /* WKFormControlListViewController.mm */; };
F6113E25126CE1820057D0A7 /* APIUserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = F6113E24126CE1820057D0A7 /* APIUserContentURLPattern.h */; };
F6113E28126CE19B0057D0A7 /* WKUserContentURLPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */; };
F6113E29126CE19B0057D0A7 /* WKUserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = F6113E27126CE19B0057D0A7 /* WKUserContentURLPattern.h */; settings = {ATTRIBUTES = (Private, ); }; };
2E16B6A02016E680008996D6 /* WKTextFormControlViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTextFormControlViewController.mm; path = ios/forms/WKTextFormControlViewController.mm; sourceTree = "<group>"; };
2E16B6B62017AB9C008996D6 /* WKFocusedFormControlViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKFocusedFormControlViewController.h; path = ios/forms/WKFocusedFormControlViewController.h; sourceTree = "<group>"; };
2E16B6B72017AB9C008996D6 /* WKFocusedFormControlViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFocusedFormControlViewController.mm; path = ios/forms/WKFocusedFormControlViewController.mm; sourceTree = "<group>"; };
- 2E16B6C82017B768008996D6 /* WKTextInputViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKTextInputViewController.h; path = ios/forms/WKTextInputViewController.h; sourceTree = "<group>"; };
- 2E16B6C92017B768008996D6 /* WKTextInputViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTextInputViewController.mm; path = ios/forms/WKTextInputViewController.mm; sourceTree = "<group>"; };
2E16B6CC2017B7AB008996D6 /* WKFocusedFormControlView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFocusedFormControlView.mm; path = ios/forms/WKFocusedFormControlView.mm; sourceTree = "<group>"; };
2E16B6CD2017B7AC008996D6 /* WKFocusedFormControlView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFocusedFormControlView.h; path = ios/forms/WKFocusedFormControlView.h; sourceTree = "<group>"; };
2E16B6D22017BA37008996D6 /* WKTextSuggestionButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKTextSuggestionButton.h; path = ios/forms/WKTextSuggestionButton.h; sourceTree = "<group>"; };
F44DFEB11E9E752F0038D196 /* WebIconUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebIconUtilities.mm; path = ios/WebIconUtilities.mm; sourceTree = "<group>"; };
F496A42F1F58A272004C1757 /* DragDropInteractionState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DragDropInteractionState.h; path = ios/DragDropInteractionState.h; sourceTree = "<group>"; };
F496A4301F58A272004C1757 /* DragDropInteractionState.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = DragDropInteractionState.mm; path = ios/DragDropInteractionState.mm; sourceTree = "<group>"; };
+ F4D5F519206087A00038BBA8 /* WKTextInputListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKTextInputListViewController.h; path = ios/forms/WKTextInputListViewController.h; sourceTree = "<group>"; };
+ F4D5F51A206087A10038BBA8 /* WKTextInputListViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTextInputListViewController.mm; path = ios/forms/WKTextInputListViewController.mm; sourceTree = "<group>"; };
+ F4D5F51B206087A10038BBA8 /* WKFormControlListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFormControlListViewController.h; path = ios/forms/WKFormControlListViewController.h; sourceTree = "<group>"; };
+ F4D5F51C206087A10038BBA8 /* WKFormControlListViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFormControlListViewController.mm; path = ios/forms/WKFormControlListViewController.mm; sourceTree = "<group>"; };
F6113E24126CE1820057D0A7 /* APIUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIUserContentURLPattern.h; sourceTree = "<group>"; };
F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserContentURLPattern.cpp; sourceTree = "<group>"; };
F6113E27126CE19B0057D0A7 /* WKUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKUserContentURLPattern.h; sourceTree = "<group>"; };
2E16B6CC2017B7AB008996D6 /* WKFocusedFormControlView.mm */,
2E16B6B62017AB9C008996D6 /* WKFocusedFormControlViewController.h */,
2E16B6B72017AB9C008996D6 /* WKFocusedFormControlViewController.mm */,
+ F4D5F51B206087A10038BBA8 /* WKFormControlListViewController.h */,
+ F4D5F51C206087A10038BBA8 /* WKFormControlListViewController.mm */,
C54256AF18BEC18B00DE4179 /* WKFormInputControl.h */,
C54256B018BEC18B00DE4179 /* WKFormInputControl.mm */,
C54256B118BEC18B00DE4179 /* WKFormPeripheral.h */,
2EE4529B20292BD800D81777 /* WKSelectMenuViewController.mm */,
2E16B69F2016E680008996D6 /* WKTextFormControlViewController.h */,
2E16B6A02016E680008996D6 /* WKTextFormControlViewController.mm */,
- 2E16B6C82017B768008996D6 /* WKTextInputViewController.h */,
- 2E16B6C92017B768008996D6 /* WKTextInputViewController.mm */,
+ F4D5F519206087A00038BBA8 /* WKTextInputListViewController.h */,
+ F4D5F51A206087A10038BBA8 /* WKTextInputListViewController.mm */,
2E16B6D22017BA37008996D6 /* WKTextSuggestionButton.h */,
2E16B6D32017BA37008996D6 /* WKTextSuggestionButton.mm */,
2EB6FBFF203021960017E619 /* WKTimePickerViewController.h */,
37F623B812A57B6200E3FDF6 /* WKFindOptions.h in Headers */,
2E16B6CF2017B7AD008996D6 /* WKFocusedFormControlView.h in Headers */,
2E16B6B82017AB9C008996D6 /* WKFocusedFormControlViewController.h in Headers */,
+ F4D5F51F206087A10038BBA8 /* WKFormControlListViewController.h in Headers */,
C54256B518BEC18C00DE4179 /* WKFormInputControl.h in Headers */,
C54256B718BEC18C00DE4179 /* WKFormPeripheral.h in Headers */,
C54256B818BEC18C00DE4179 /* WKFormPopover.h in Headers */,
31D755C11D91B81500843BD1 /* WKTextChecker.h in Headers */,
2DD67A351BD861060053B251 /* WKTextFinderClient.h in Headers */,
2E16B6A12016E680008996D6 /* WKTextFormControlViewController.h in Headers */,
- 2E16B6CA2017B768008996D6 /* WKTextInputViewController.h in Headers */,
+ F4D5F51D206087A10038BBA8 /* WKTextInputListViewController.h in Headers */,
0FCB4E6818BBE3D9000FCFC9 /* WKTextInputWindowController.h in Headers */,
2E16B6D42017BA37008996D6 /* WKTextSuggestionButton.h in Headers */,
2EB6FC01203021960017E619 /* WKTimePickerViewController.h in Headers */,
A58B6F0918FCA733008CBA53 /* WKFileUploadPanel.mm in Sources */,
2E16B6CE2017B7AD008996D6 /* WKFocusedFormControlView.mm in Sources */,
2E16B6B92017AB9C008996D6 /* WKFocusedFormControlViewController.mm in Sources */,
+ F4D5F520206087A10038BBA8 /* WKFormControlListViewController.mm in Sources */,
C54256B618BEC18C00DE4179 /* WKFormInputControl.mm in Sources */,
C54256B918BEC18C00DE4179 /* WKFormPopover.mm in Sources */,
C57193BE18C14A44002D0F12 /* WKFormSelectControl.mm in Sources */,
31D755C21D91B81B00843BD1 /* WKTextChecker.cpp in Sources */,
2DD67A361BD861060053B251 /* WKTextFinderClient.mm in Sources */,
2E16B6A720171693008996D6 /* WKTextFormControlViewController.mm in Sources */,
- 2E16B6CB2017B768008996D6 /* WKTextInputViewController.mm in Sources */,
+ F4D5F51E206087A10038BBA8 /* WKTextInputListViewController.mm in Sources */,
0FCB4E6918BBE3D9000FCFC9 /* WKTextInputWindowController.mm in Sources */,
2E16B6D52017BA37008996D6 /* WKTextSuggestionButton.mm in Sources */,
2EB6FC02203021960017E619 /* WKTimePickerViewController.mm in Sources */,