Changeset 191228 in webkit


Ignore:
Timestamp:
Oct 16, 2015 4:47:10 PM (9 years ago)
Author:
Wenson Hsieh
Message:

Add a WKWebView input delegate SPI
https://bugs.webkit.org/show_bug.cgi?id=149646

Reviewed by Dan Bernstein.

Renames the existing _WKFormDelegate to _WKInputDelegate and adds a new delegate SPI method
-[_WKInputDelegate _webView:focusShouldStartInputSession:] that allows clients to allow or
disallow showing up the keyboard. To make this decision, clients are given a
_WKFocusedElementInfo, which contains information about the focused element prior to the
keyboard showing up so the client will be able to override default assistance behavior.

While the information contained in a _WKFocusedElementInfo currently seems like overkill for
_webView:focusShouldStartInputSession, our intentions are to give WebKit clients control over more
details of how node assistance works, such as being able to use a custom editor for certain
types of nodes.

  • Shared/API/Cocoa/WebKitPrivate.h: Added new header _WKFocusedElementInfo.h.
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _inputDelegate]):
(-[WKWebView _formDelegate]):
(-[WKWebView _setInputDelegate:]):
(-[WKWebView _setFormDelegate:]):
(-[WKWebView initWithFrame:configuration:]): Deleted canAssistOnProgrammaticFocus flag.
(-[WKWebView canAssistOnProgrammaticFocus]): Ditto.
(-[WKWebView setCanAssistOnProgrammaticFocus:]): Ditto.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]): Deleted.
(-[WKWebViewConfiguration _canAssistOnProgrammaticFocus]): Deleted canAssistOnProgrammaticFocus flag.
(-[WKWebViewConfiguration _setCanAssistOnProgrammaticFocus:]): Ditto.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKFocusedElementInfo.h: Added.
  • UIProcess/API/Cocoa/_WKFormDelegate.h:
  • UIProcess/API/Cocoa/_WKInputDelegate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKFocusedElementInfo initWithAssistedNodeInformation:isInteracting:]):
(-[WKFocusedElementInfo type]):
(-[WKFocusedElementInfo value]):
(-[WKFocusedElementInfo isUserInitiated]):
(-[WKContentView accessoryAutoFill]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]): If the input delegate responds to

shouldStartInputSession, consult it to see if we should bring up the keyboard; otherwise, use our default behavior.

  • WebKit2.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit2
Files:
1 added
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r191216 r191228  
     12015-10-16  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Add a WKWebView input delegate SPI
     4        https://bugs.webkit.org/show_bug.cgi?id=149646
     5
     6        Reviewed by Dan Bernstein.
     7
     8        Renames the existing _WKFormDelegate to _WKInputDelegate and adds a new delegate SPI method
     9        -[_WKInputDelegate _webView:focusShouldStartInputSession:] that allows clients to allow or
     10        disallow showing up the keyboard. To make this decision, clients are given a
     11        _WKFocusedElementInfo, which contains information about the focused element prior to the
     12        keyboard showing up so the client will be able to override default assistance behavior.
     13
     14        While the information contained in a _WKFocusedElementInfo currently seems like overkill for
     15        _webView:focusShouldStartInputSession, our intentions are to give WebKit clients control over more
     16        details of how node assistance works, such as being able to use a custom editor for certain
     17        types of nodes.
     18
     19        * Shared/API/Cocoa/WebKitPrivate.h: Added new header _WKFocusedElementInfo.h.
     20        * UIProcess/API/Cocoa/WKWebView.h:
     21        * UIProcess/API/Cocoa/WKWebView.mm:
     22        (-[WKWebView _inputDelegate]):
     23        (-[WKWebView _formDelegate]):
     24        (-[WKWebView _setInputDelegate:]):
     25        (-[WKWebView _setFormDelegate:]):
     26        (-[WKWebView initWithFrame:configuration:]): Deleted canAssistOnProgrammaticFocus flag.
     27        (-[WKWebView canAssistOnProgrammaticFocus]): Ditto.
     28        (-[WKWebView setCanAssistOnProgrammaticFocus:]): Ditto.
     29        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
     30        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
     31        (-[WKWebViewConfiguration init]): Deleted.
     32        (-[WKWebViewConfiguration _canAssistOnProgrammaticFocus]): Deleted canAssistOnProgrammaticFocus flag.
     33        (-[WKWebViewConfiguration _setCanAssistOnProgrammaticFocus:]): Ditto.
     34        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     35        * UIProcess/API/Cocoa/_WKFocusedElementInfo.h: Added.
     36        * UIProcess/API/Cocoa/_WKFormDelegate.h:
     37        * UIProcess/API/Cocoa/_WKInputDelegate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h.
     38        * UIProcess/ios/WKContentViewInteraction.mm:
     39        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isInteracting:]):
     40        (-[WKFocusedElementInfo type]):
     41        (-[WKFocusedElementInfo value]):
     42        (-[WKFocusedElementInfo isUserInitiated]):
     43        (-[WKContentView accessoryAutoFill]):
     44        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]): If the input delegate responds to
     45            shouldStartInputSession, consult it to see if we should bring up the keyboard; otherwise, use our default behavior.
     46        * WebKit2.xcodeproj/project.pbxproj:
     47
    1482015-10-16  Simon Fraser  <simon.fraser@apple.com>
    249
  • trunk/Source/WebKit2/Shared/API/Cocoa/WebKitPrivate.h

    r188891 r191228  
    3232#import <WebKit/_WKActivatedElementInfo.h>
    3333#import <WebKit/_WKElementAction.h>
     34#import <WebKit/_WKFocusedElementInfo.h>
    3435#import <WebKit/_WKFormDelegate.h>
    3536#import <WebKit/_WKFormInputSession.h>
     37#import <WebKit/_WKInputDelegate.h>
    3638#import <WebKit/_WKProcessPoolConfiguration.h>
    3739#import <WebKit/_WKThumbnailView.h>
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h

    r190278 r191228  
    242242 */
    243243@property (nonatomic, readonly, strong) UIScrollView *scrollView;
    244 
    245 /*! @abstract A Boolean value indicating whether programmatic focus on
    246  an element is allowed to trigger assistance.
    247  */
    248 @property (nonatomic) BOOL canAssistOnProgrammaticFocus;
    249244#endif
    250245
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r191183 r191228  
    7575#import "_WKFindDelegate.h"
    7676#import "_WKFormDelegate.h"
     77#import "_WKInputDelegate.h"
    7778#import "_WKRemoteObjectRegistryInternal.h"
    7879#import "_WKSessionStateInternal.h"
     
    160161    _WKRenderingProgressEvents _observedRenderingProgressEvents;
    161162
    162     WebKit::WeakObjCPtr<id <_WKFormDelegate>> _formDelegate;
     163    WebKit::WeakObjCPtr<id <_WKInputDelegate>> _inputDelegate;
    163164
    164165#if PLATFORM(IOS)
     
    213214    RetainPtr<CGPDFDocumentRef> _printedDocument;
    214215    Vector<std::function<void ()>> _snapshotsDeferredDuringResize;
    215 
    216     BOOL _canAssistOnProgrammaticFocus;
    217216#endif
    218217#if PLATFORM(MAC)
     
    367366
    368367    [[_configuration _contentProviderRegistry] addPage:*_page];
    369 
    370     [self setCanAssistOnProgrammaticFocus:[_configuration canAssistOnProgrammaticFocus]];
    371368#endif
    372369
     
    723720{
    724721    return _scrollView.get();
    725 }
    726 
    727 - (BOOL)canAssistOnProgrammaticFocus
    728 {
    729     return _canAssistOnProgrammaticFocus;
    730 }
    731 
    732 - (void)setCanAssistOnProgrammaticFocus:(BOOL)canAssistOnProgrammaticFocus
    733 {
    734     _canAssistOnProgrammaticFocus = canAssistOnProgrammaticFocus;
    735722}
    736723
     
    24772464}
    24782465
     2466- (id <_WKInputDelegate>)_inputDelegate
     2467{
     2468    return _inputDelegate.getAutoreleased();
     2469}
     2470
    24792471- (id <_WKFormDelegate>)_formDelegate
    24802472{
    2481     return _formDelegate.getAutoreleased();
    2482 }
    2483 
    2484 - (void)_setFormDelegate:(id <_WKFormDelegate>)formDelegate
    2485 {
    2486     _formDelegate = formDelegate;
     2473    return (id <_WKFormDelegate>)[self _inputDelegate];
     2474}
     2475
     2476- (void)_setInputDelegate:(id <_WKInputDelegate>)inputDelegate
     2477{
     2478    _inputDelegate = inputDelegate;
    24872479
    24882480    class FormClient : public API::FormClient {
     
    25042496            }
    25052497
    2506             auto formDelegate = m_webView->_formDelegate.get();
    2507 
    2508             if (![formDelegate respondsToSelector:@selector(_webView:willSubmitFormValues:userObject:submissionHandler:)]) {
     2498            auto inputDelegate = m_webView->_inputDelegate.get();
     2499
     2500            if (![inputDelegate respondsToSelector:@selector(_webView:willSubmitFormValues:userObject:submissionHandler:)]) {
    25092501                listener->continueSubmission();
    25102502                return;
     
    25282520
    25292521            RefPtr<WebKit::WebFormSubmissionListenerProxy> localListener = WTF::move(listener);
    2530             RefPtr<WebKit::CompletionHandlerCallChecker> checker = WebKit::CompletionHandlerCallChecker::create(formDelegate.get(), @selector(_webView:willSubmitFormValues:userObject:submissionHandler:));
    2531             [formDelegate _webView:m_webView willSubmitFormValues:valueMap.get() userObject:userObject submissionHandler:[localListener, checker] {
     2522            RefPtr<WebKit::CompletionHandlerCallChecker> checker = WebKit::CompletionHandlerCallChecker::create(inputDelegate.get(), @selector(_webView:willSubmitFormValues:userObject:submissionHandler:));
     2523            [inputDelegate _webView:m_webView willSubmitFormValues:valueMap.get() userObject:userObject submissionHandler:[localListener, checker] {
    25322524                checker->didCallCompletionHandler();
    25332525                localListener->continueSubmission();
     
    25392531    };
    25402532
    2541     if (formDelegate)
     2533    if (inputDelegate)
    25422534        _page->setFormClient(std::make_unique<FormClient>(self));
    25432535    else
    25442536        _page->setFormClient(nullptr);
     2537}
     2538
     2539- (void)_setFormDelegate:(id <_WKFormDelegate>)formDelegate
     2540{
     2541    [self _setInputDelegate:(id <_WKInputDelegate>)formDelegate];
    25452542}
    25462543
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.h

    r190278 r191228  
    120120@property (nonatomic) BOOL allowsPictureInPictureMediaPlayback WK_AVAILABLE(NA, 9_0);
    121121
    122 /*! @abstract A Boolean value indicating whether programmatic focus on
    123  an element is allowed to trigger assistance.
    124  @discussion The default value is NO.
    125  */
    126 @property (nonatomic) BOOL canAssistOnProgrammaticFocus;
    127 
    128122#endif
    129123
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm

    r190278 r191228  
    113113    _inlineMediaPlaybackRequiresPlaysInlineAttribute = !_allowsInlineMediaPlayback;
    114114    _mediaDataLoadsAutomatically = NO;
    115     _canAssistOnProgrammaticFocus = NO;
    116115#endif
    117116
     
    366365    _mediaDataLoadsAutomatically = mediaDataLoadsAutomatically;
    367366}
    368 
    369 - (BOOL)_canAssistOnProgrammaticFocus
    370 {
    371     return _canAssistOnProgrammaticFocus;
    372 }
    373 
    374 - (void)_setCanAssistOnProgrammaticFocus:(BOOL)canAssistOnProgrammaticFocus
    375 {
    376     _canAssistOnProgrammaticFocus = canAssistOnProgrammaticFocus;
    377 }
    378367#endif
    379368
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r191183 r191228  
    5959@protocol _WKFindDelegate;
    6060@protocol _WKFormDelegate;
     61@protocol _WKInputDelegate;
    6162
    6263@interface WKWebView (WKPrivate)
     
    217218- (void)_hideFindUI;
    218219
    219 @property (nonatomic, weak, setter=_setFormDelegate:) id <_WKFormDelegate> _formDelegate;
     220@property (nonatomic, weak, setter=_setFormDelegate:) id <_WKFormDelegate> _formDelegate WK_DEPRECATED(10_10, WK_MAC_TBA, 8_0, WK_IOS_TBA, "use _inputDelegate");
     221@property (nonatomic, weak, setter=_setInputDelegate:) id <_WKInputDelegate> _inputDelegate WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    220222
    221223@property (nonatomic, readonly, getter=_isDisplayingStandaloneImageDocument) BOOL _displayingStandaloneImageDocument;
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKFormDelegate.h

    r168541 r191228  
    2828#if WK_API_ENABLED
    2929
    30 #import <Foundation/Foundation.h>
     30#import <WebKit/_WKInputDelegate.h>
    3131
    32 @class WKWebView;
    33 @protocol _WKFormInputSession;
    34 
    35 @protocol _WKFormDelegate <NSObject>
    36 
    37 @optional
    38 
    39 - (void)_webView:(WKWebView *)webView didStartInputSession:(id <_WKFormInputSession>)inputSession;
    40 - (void)_webView:(WKWebView *)webView willSubmitFormValues:(NSDictionary *)values userObject:(NSObject <NSSecureCoding> *)userObject submissionHandler:(void (^)(void))submissionHandler;
    41 
    42 #if TARGET_OS_IPHONE
    43 - (void)_webView:(WKWebView *)webView accessoryViewCustomButtonTappedInFormInputSession:(id <_WKFormInputSession>)inputSession;
    44 - (BOOL)_webView:(WKWebView *)webView hasSuggestionsForCurrentStringInInputSession:(id <_WKFormInputSession>)inputSession;
    45 - (NSArray *)_webView:(WKWebView *)webView suggestionsForString:(NSString *)string inInputSession:(id <_WKFormInputSession>)inputSession;
    46 #endif
    47 
     32/**
     33 * We are transitioning _WKFormDelegate to _WKInputDelegate. This header is here temporarily for source compatibility and
     34 * should be removed when we are ready to make the switch.
     35 */
     36@protocol _WKFormDelegate <_WKInputDelegate>
    4837@end
    4938
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKInputDelegate.h

    r191225 r191228  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3131
    3232@class WKWebView;
     33@protocol _WKFocusedElementInfo;
    3334@protocol _WKFormInputSession;
    3435
    35 @protocol _WKFormDelegate <NSObject>
     36@protocol _WKInputDelegate <NSObject>
    3637
    3738@optional
     
    4142
    4243#if TARGET_OS_IPHONE
     44- (BOOL)_webView:(WKWebView *)webView focusShouldStartInputSession:(id <_WKFocusedElementInfo>)info;
    4345- (void)_webView:(WKWebView *)webView accessoryViewCustomButtonTappedInFormInputSession:(id <_WKFormInputSession>)inputSession;
    4446- (BOOL)_webView:(WKWebView *)webView hasSuggestionsForCurrentStringInInputSession:(id <_WKFormInputSession>)inputSession;
  • trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm

    r191072 r191228  
    5454#import "WebProcessProxy.h"
    5555#import "_WKActivatedElementInfoInternal.h"
    56 #import "_WKFormDelegate.h"
     56#import "_WKFocusedElementInfo.h"
    5757#import "_WKFormInputSession.h"
     58#import "_WKInputDelegate.h"
    5859#import <CoreText/CTFont.h>
    5960#import <CoreText/CTFontDescriptor.h>
     
    276277}
    277278
     279@end
     280
     281@interface WKFocusedElementInfo : NSObject <_WKFocusedElementInfo>
     282- (instancetype)initWithAssistedNodeInformation:(const AssistedNodeInformation&)information isUserInitiated:(BOOL)isUserInitiated;
     283@end
     284
     285@implementation WKFocusedElementInfo {
     286    WKInputType _type;
     287    RetainPtr<NSString> _value;
     288    BOOL _isUserInitiated;
     289}
     290
     291- (instancetype)initWithAssistedNodeInformation:(const AssistedNodeInformation&)information isUserInitiated:(BOOL)isUserInitiated
     292{
     293    if (!(self = [super init]))
     294        return nil;
     295
     296    switch (information.elementType) {
     297    case WebKit::InputType::ContentEditable:
     298        _type = WKInputTypeContentEditable;
     299        break;
     300    case WebKit::InputType::Text:
     301        _type = WKInputTypeText;
     302        break;
     303    case WebKit::InputType::Password:
     304        _type = WKInputTypePassword;
     305        break;
     306    case WebKit::InputType::TextArea:
     307        _type = WKInputTypeTextArea;
     308        break;
     309    case WebKit::InputType::Search:
     310        _type = WKInputTypeSearch;
     311        break;
     312    case WebKit::InputType::Email:
     313        _type = WKInputTypeEmail;
     314        break;
     315    case WebKit::InputType::URL:
     316        _type = WKInputTypeURL;
     317        break;
     318    case WebKit::InputType::Phone:
     319        _type = WKInputTypePhone;
     320        break;
     321    case WebKit::InputType::Number:
     322        _type = WKInputTypeNumber;
     323        break;
     324    case WebKit::InputType::NumberPad:
     325        _type = WKInputTypeNumberPad;
     326        break;
     327    case WebKit::InputType::Date:
     328        _type = WKInputTypeDate;
     329        break;
     330    case WebKit::InputType::DateTime:
     331        _type = WKInputTypeDateTime;
     332        break;
     333    case WebKit::InputType::DateTimeLocal:
     334        _type = WKInputTypeDateTimeLocal;
     335        break;
     336    case WebKit::InputType::Month:
     337        _type = WKInputTypeMonth;
     338        break;
     339    case WebKit::InputType::Week:
     340        _type = WKInputTypeWeek;
     341        break;
     342    case WebKit::InputType::Time:
     343        _type = WKInputTypeTime;
     344        break;
     345    case WebKit::InputType::Select:
     346        _type = WKInputTypeSelect;
     347        break;
     348    case WebKit::InputType::None:
     349        _type = WKInputTypeNone;
     350        break;
     351    }
     352    _value = information.value;
     353    _isUserInitiated = isUserInitiated;
     354    return self;
     355}
     356
     357- (WKInputType)type
     358{
     359    return _type;
     360}
     361
     362- (NSString *)value
     363{
     364    return _value.get();
     365}
     366
     367- (BOOL)isUserInitiated
     368{
     369    return _isUserInitiated;
     370}
    278371@end
    279372
     
    22592352- (void)accessoryAutoFill
    22602353{
    2261     id <_WKFormDelegate> formDelegate = [_webView _formDelegate];
    2262     if ([formDelegate respondsToSelector:@selector(_webView:accessoryViewCustomButtonTappedInFormInputSession:)])
    2263         [formDelegate _webView:_webView accessoryViewCustomButtonTappedInFormInputSession:_formInputSession.get()];
     2354    id <_WKInputDelegate> inputDelegate = [_webView _inputDelegate];
     2355    if ([inputDelegate respondsToSelector:@selector(_webView:accessoryViewCustomButtonTappedInFormInputSession:)])
     2356        [inputDelegate _webView:_webView accessoryViewCustomButtonTappedInFormInputSession:_formInputSession.get()];
    22642357}
    22652358
     
    30293122- (void)_startAssistingNode:(const AssistedNodeInformation&)information userIsInteracting:(BOOL)userIsInteracting blurPreviousNode:(BOOL)blurPreviousNode userObject:(NSObject <NSSecureCoding> *)userObject
    30303123{
    3031     // FIXME: This is a temporary workaround for <rdar://problem/22126518>. The real fix will involve refactoring
    3032     // the way we assist programmatically focused nodes.
    3033     if (!userIsInteracting && !_textSelectionAssistant && !_webView.canAssistOnProgrammaticFocus)
     3124    id <_WKInputDelegate> inputDelegate = [_webView _inputDelegate];
     3125    BOOL shouldShowKeyboard;
     3126    if ([inputDelegate respondsToSelector:@selector(_webView:focusShouldStartInputSession:)]) {
     3127        RetainPtr<WKFocusedElementInfo> focusedElementInfo = adoptNS([[WKFocusedElementInfo alloc] initWithAssistedNodeInformation:information isUserInitiated:userIsInteracting]);
     3128        shouldShowKeyboard = [inputDelegate _webView:_webView focusShouldStartInputSession:focusedElementInfo.get()];
     3129    } else {
     3130        // The default behavior is to allow node assistance if the user is interacting or the keyboard is already active.
     3131        shouldShowKeyboard = userIsInteracting || _textSelectionAssistant;
     3132    }
     3133    if (!shouldShowKeyboard)
    30343134        return;
    30353135
     
    30743174    [_inputPeripheral beginEditing];
    30753175
    3076     id <_WKFormDelegate> formDelegate = [_webView _formDelegate];
    3077     if ([formDelegate respondsToSelector:@selector(_webView:didStartInputSession:)]) {
     3176    if ([inputDelegate respondsToSelector:@selector(_webView:didStartInputSession:)]) {
    30783177        _formInputSession = adoptNS([[WKFormInputSession alloc] initWithContentView:self userObject:userObject]);
    3079         [formDelegate _webView:_webView didStartInputSession:_formInputSession.get()];
     3178        [inputDelegate _webView:_webView didStartInputSession:_formInputSession.get()];
    30803179    }
    30813180}
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r191136 r191228  
    691691                2DF9EEEC1A7836EE00B6CFBE /* APINavigationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF9EEEA1A7836EE00B6CFBE /* APINavigationAction.h */; };
    692692                2DF9EEEE1A786EAD00B6CFBE /* APINavigationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF9EEED1A786EAD00B6CFBE /* APINavigationResponse.h */; };
     693                2E0B8A7A1BC59A590044B32D /* _WKFormDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0B8A791BC59A590044B32D /* _WKFormDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     694                2E7A944A1BBD97C300945547 /* _WKFocusedElementInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
    693695                31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31099971146C759B0029DEB9 /* WebNotificationClient.cpp */; };
    694696                310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31099968146C71F50029DEB9 /* WebNotificationClient.h */; };
     
    805807                37A5E01318BBF937000A081E /* _WKActivatedElementInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37A5E01118BBF937000A081E /* _WKActivatedElementInfo.mm */; };
    806808                37A5E01418BBF93F000A081E /* _WKActivatedElementInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A5E01218BBF937000A081E /* _WKActivatedElementInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
    807                 37A64E5518F38E3C00EB30F1 /* _WKFormDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A64E5418F38E3C00EB30F1 /* _WKFormDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     809                37A64E5518F38E3C00EB30F1 /* _WKInputDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A64E5418F38E3C00EB30F1 /* _WKInputDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    808810                37A64E5718F38F4600EB30F1 /* _WKFormInputSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A64E5618F38F4600EB30F1 /* _WKFormInputSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
    809811                37B5045219EEF31300CE2CF8 /* WKErrorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 37B5045119EEF31300CE2CF8 /* WKErrorPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    28482850                2DF9EEEA1A7836EE00B6CFBE /* APINavigationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APINavigationAction.h; sourceTree = "<group>"; };
    28492851                2DF9EEED1A786EAD00B6CFBE /* APINavigationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APINavigationResponse.h; sourceTree = "<group>"; };
     2852                2E0B8A791BC59A590044B32D /* _WKFormDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKFormDelegate.h; sourceTree = "<group>"; };
     2853                2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _WKFocusedElementInfo.h; sourceTree = "<group>"; };
    28502854                31099968146C71F50029DEB9 /* WebNotificationClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationClient.h; sourceTree = "<group>"; };
    28512855                31099971146C759B0029DEB9 /* WebNotificationClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationClient.cpp; sourceTree = "<group>"; };
     
    29662970                37A5E01118BBF937000A081E /* _WKActivatedElementInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKActivatedElementInfo.mm; sourceTree = "<group>"; };
    29672971                37A5E01218BBF937000A081E /* _WKActivatedElementInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKActivatedElementInfo.h; sourceTree = "<group>"; };
    2968                 37A64E5418F38E3C00EB30F1 /* _WKFormDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKFormDelegate.h; sourceTree = "<group>"; };
     2972                37A64E5418F38E3C00EB30F1 /* _WKInputDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKInputDelegate.h; sourceTree = "<group>"; };
    29692973                37A64E5618F38F4600EB30F1 /* _WKFormInputSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKFormInputSession.h; sourceTree = "<group>"; };
    29702974                37B5045119EEF31300CE2CF8 /* WKErrorPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKErrorPrivate.h; sourceTree = "<group>"; };
     
    53135317                                005D158E18E4C4EB00734619 /* _WKFindDelegate.h */,
    53145318                                2DEAC5CE1AC368BB00A195D8 /* _WKFindOptions.h */,
    5315                                 37A64E5418F38E3C00EB30F1 /* _WKFormDelegate.h */,
     5319                                2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */,
     5320                                2E0B8A791BC59A590044B32D /* _WKFormDelegate.h */,
    53165321                                37A64E5618F38F4600EB30F1 /* _WKFormInputSession.h */,
     5322                                37A64E5418F38E3C00EB30F1 /* _WKInputDelegate.h */,
    53175323                                2D790A9C1AD7050D00AB90B3 /* _WKLayoutMode.h */,
    53185324                                9323611D1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h */,
     
    75297535                                005D158F18E4C4EB00734619 /* _WKFindDelegate.h in Headers */,
    75307536                                2DEAC5CF1AC368BB00A195D8 /* _WKFindOptions.h in Headers */,
    7531                                 37A64E5518F38E3C00EB30F1 /* _WKFormDelegate.h in Headers */,
     7537                                2E7A944A1BBD97C300945547 /* _WKFocusedElementInfo.h in Headers */,
     7538                                2E0B8A7A1BC59A590044B32D /* _WKFormDelegate.h in Headers */,
    75327539                                37A64E5718F38F4600EB30F1 /* _WKFormInputSession.h in Headers */,
    75337540                                373D122318A473010066D9CC /* _WKFrameHandle.h in Headers */,
    75347541                                373D122718A473F60066D9CC /* _WKFrameHandleInternal.h in Headers */,
     7542                                37A64E5518F38E3C00EB30F1 /* _WKInputDelegate.h in Headers */,
    75357543                                2D790A9D1AD7050D00AB90B3 /* _WKLayoutMode.h in Headers */,
    75367544                                A118A9F31908B8EA00F7C92B /* _WKNSFileManagerExtras.h in Headers */,
Note: See TracChangeset for help on using the changeset viewer.