Changeset 164094 in webkit


Ignore:
Timestamp:
Feb 13, 2014 10:04:27 PM (10 years ago)
Author:
mitz@apple.com
Message:

[Cocoa] Expose the bundle form client
https://bugs.webkit.org/show_bug.cgi?id=128792

Reviewed by Anders Carlsson.

  • WebKit2.xcodeproj/project.pbxproj: Added new file.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Added.
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(didFocusTextField): Implemented this WKBundlePageFormClient callback by calling the form
delegate.
(setUpFormClient): Added. Initializes the form client with the above function.
(-[WKWebProcessPlugInBrowserContextController _formDelegate]): Added this getter.
(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Added. Initializes or
clears the form client.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

Declared _formDelegate property.

Location:
trunk/Source/WebKit2
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r164093 r164094  
     12014-02-13  Dan Bernstein  <mitz@apple.com>
     2
     3        [Cocoa] Expose the bundle form client
     4        https://bugs.webkit.org/show_bug.cgi?id=128792
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * WebKit2.xcodeproj/project.pbxproj: Added new file.
     9        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Added.
     10        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
     11        (didFocusTextField): Implemented this WKBundlePageFormClient callback by calling the form
     12        delegate.
     13        (setUpFormClient): Added. Initializes the form client with the above function.
     14        (-[WKWebProcessPlugInBrowserContextController _formDelegate]): Added this getter.
     15        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Added. Initializes or
     16        clears the form client.
     17        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:
     18        Declared _formDelegate property.
     19
    1202014-02-13  Dan Bernstein  <mitz@apple.com>
    221
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r164054 r164094  
    599599                37948408150C4B9700E52CE9 /* WKRenderLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37948406150C4B9600E52CE9 /* WKRenderLayer.cpp */; };
    600600                37948409150C4B9700E52CE9 /* WKRenderLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 37948407150C4B9600E52CE9 /* WKRenderLayer.h */; settings = {ATTRIBUTES = (Private, ); }; };
     601                3795789C18AD4F1900B9ED2E /* WKWebProcessPlugInFormDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3795789B18AD4F1100B9ED2E /* WKWebProcessPlugInFormDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    601602                37C4C08618149C5B003688B9 /* WKBackForwardListItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37C4C08418149C5B003688B9 /* WKBackForwardListItem.mm */; };
    602603                37C4C08718149C5B003688B9 /* WKBackForwardListItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C4C08518149C5B003688B9 /* WKBackForwardListItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
     
    23092310                37948406150C4B9600E52CE9 /* WKRenderLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKRenderLayer.cpp; sourceTree = "<group>"; };
    23102311                37948407150C4B9600E52CE9 /* WKRenderLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKRenderLayer.h; sourceTree = "<group>"; };
     2312                3795789B18AD4F1100B9ED2E /* WKWebProcessPlugInFormDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInFormDelegatePrivate.h; sourceTree = "<group>"; };
    23112313                37C4C08418149C5B003688B9 /* WKBackForwardListItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKBackForwardListItem.mm; sourceTree = "<group>"; };
    23122314                37C4C08518149C5B003688B9 /* WKBackForwardListItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBackForwardListItem.h; sourceTree = "<group>"; };
     
    41094111                        isa = PBXGroup;
    41104112                        children = (
     4113                                3795789B18AD4F1100B9ED2E /* WKWebProcessPlugInFormDelegatePrivate.h */,
    41114114                                1F0181691858DC1500F92884 /* WKWebProcessPlugInFrame.h */,
    41124115                                1F01816A1858DC1500F92884 /* WKWebProcessPlugInFrame.mm */,
     
    67966799                                BC4A6297147313A0006C681A /* WKConnectionRef.h in Headers */,
    67976800                                BCB9E24B1120E15C00A137E0 /* WKContext.h in Headers */,
     6801                                3795789C18AD4F1900B9ED2E /* WKWebProcessPlugInFormDelegatePrivate.h in Headers */,
    67986802                                51A555F6128C6C47009ABCEC /* WKContextMenuItem.h in Headers */,
    67996803                                51A55601128C6D92009ABCEC /* WKContextMenuItemTypes.h in Headers */,
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm

    r163448 r164094  
    4343#import "WKWebProcessPluginFrameInternal.h"
    4444#import "WKWebProcessPlugInInternal.h"
     45#import "WKWebProcessPlugInFormDelegatePrivate.h"
    4546#import "WKWebProcessPlugInLoadDelegate.h"
     47#import "WKWebProcessPlugInNodeHandleInternal.h"
    4648#import "WKWebProcessPlugInPageGroupInternal.h"
    4749#import "WKWebProcessPlugInScriptWorldInternal.h"
     
    5860    API::ObjectStorage<WebPage> _page;
    5961    WeakObjCPtr<id <WKWebProcessPlugInLoadDelegate>> _loadDelegate;
     62    WeakObjCPtr<id <WKWebProcessPlugInFormDelegatePrivate>> _formDelegate;
    6063   
    6164    RetainPtr<WKRemoteObjectRegistry> _remoteObjectRegistry;
     
    204207}
    205208
     209static void didFocusTextField(WKBundlePageRef page, WKBundleNodeHandleRef htmlInputElementHandleRef, WKBundleFrameRef frameRef, const void* clientInfo)
     210{
     211    WKWebProcessPlugInBrowserContextController *controller = (WKWebProcessPlugInBrowserContextController *)clientInfo;
     212    auto formDelegate = controller->_formDelegate.get();
     213
     214    if ([formDelegate respondsToSelector:@selector(_webProcessPlugInBrowserContextController:didFocusTextField:inFrame:)])
     215        [formDelegate _webProcessPlugInBrowserContextController:controller didFocusTextField:wrapper(*toImpl(htmlInputElementHandleRef)) inFrame:wrapper(*toImpl(frameRef))];
     216}
     217
     218static void setUpFormClient(WKWebProcessPlugInBrowserContextController *contextController, WebPage& page)
     219{
     220    WKBundlePageFormClientV2 client;
     221    memset(&client, 0, sizeof(client));
     222
     223    client.base.version = 2;
     224    client.base.clientInfo = contextController;
     225    client.didFocusTextField = didFocusTextField;
     226
     227    page.initializeInjectedBundleFormClient(&client.base);
     228}
     229
    206230- (id <WKWebProcessPlugInLoadDelegate>)loadDelegate
    207231{
     
    301325}
    302326
     327- (id <WKWebProcessPlugInFormDelegatePrivate>)_formDelegate
     328{
     329    return _formDelegate.getAutoreleased();
     330}
     331
     332- (void)_setFormDelegate:(id <WKWebProcessPlugInFormDelegatePrivate>)formDelegate
     333{
     334    _formDelegate = formDelegate;
     335
     336    if (formDelegate)
     337        setUpFormClient(self, *_page);
     338    else
     339        _page->initializeInjectedBundleFormClient(nullptr);
     340}
     341
    303342@end
    304343
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h

    r160787 r164094  
    3232@class WKBrowsingContextHandle;
    3333@class WKRemoteObjectRegistry;
     34@protocol WKWebProcessPlugInFormDelegatePrivate;
    3435
    3536@interface WKWebProcessPlugInBrowserContextController (Private)
     
    4142@property (nonatomic, readonly) WKRemoteObjectRegistry *remoteObjectRegistry;
    4243
     44@property (weak, setter=_setFormDelegate:) id <WKWebProcessPlugInFormDelegatePrivate> _formDelegate;
     45
    4346+ (instancetype)lookUpBrowsingContextFromHandle:(WKBrowsingContextHandle *)handle;
    4447
Note: See TracChangeset for help on using the changeset viewer.