Changeset 245073 in webkit


Ignore:
Timestamp:
May 8, 2019 3:48:31 PM (5 years ago)
Author:
dbates@webkit.org
Message:

Pass insertTextAsync options as a struct
https://bugs.webkit.org/show_bug.cgi?id=197710

Reviewed by Brent Fulgham.

WebPageProxy::insertTextAsync() is becoming unwieldy to work with given the large number of
optional arguments that can be passed to it. Let's pass a struct instead.

  • Shared/Cocoa/InsertTextOptions.cpp: Added.

(IPC::ArgumentCoder<WebKit::InsertTextOptions>::encode):
(IPC::ArgumentCoder<WebKit::InsertTextOptions>::decode):

  • Shared/Cocoa/InsertTextOptions.h: Added.
  • Shared/EditingRange.h: Add EnumTrait so that we can encode the EditingRangeIsRelativeTo

enumeration.

  • SourcesCocoa.txt: Add a new file.
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::insertText): Update code now that we pass a struct.
(WebKit::WebViewImpl::setMarkedText): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::insertTextAsync): Ditto.

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView insertText:]): Ditto.

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::insertDictatedTextAsync): Ditto.

  • WebKit.xcodeproj/project.pbxproj: Add new files.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::insertTextAsync): Ditto.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in: Ditto.
Location:
trunk/Source/WebKit
Files:
2 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r245072 r245073  
     12019-05-08  Daniel Bates  <dabates@apple.com>
     2
     3        Pass insertTextAsync options as a struct
     4        https://bugs.webkit.org/show_bug.cgi?id=197710
     5
     6        Reviewed by Brent Fulgham.
     7
     8        WebPageProxy::insertTextAsync() is becoming unwieldy to work with given the large number of
     9        optional arguments that can be passed to it. Let's pass a struct instead.
     10
     11        * Shared/Cocoa/InsertTextOptions.cpp: Added.
     12        (IPC::ArgumentCoder<WebKit::InsertTextOptions>::encode):
     13        (IPC::ArgumentCoder<WebKit::InsertTextOptions>::decode):
     14        * Shared/Cocoa/InsertTextOptions.h: Added.
     15        * Shared/EditingRange.h: Add EnumTrait so that we can encode the EditingRangeIsRelativeTo
     16        enumeration.
     17        * SourcesCocoa.txt: Add a new file.
     18        * UIProcess/Cocoa/WebViewImpl.mm:
     19        (WebKit::WebViewImpl::insertText): Update code now that we pass a struct.
     20        (WebKit::WebViewImpl::setMarkedText): Ditto.
     21        * UIProcess/WebPageProxy.cpp:
     22        (WebKit::WebPageProxy::insertTextAsync): Ditto.
     23        * UIProcess/WebPageProxy.h:
     24        * UIProcess/ios/WKContentViewInteraction.mm:
     25        (-[WKContentView insertText:]): Ditto.
     26        * UIProcess/mac/WebPageProxyMac.mm:
     27        (WebKit::WebPageProxy::insertDictatedTextAsync): Ditto.
     28        * WebKit.xcodeproj/project.pbxproj: Add new files.
     29        * WebProcess/WebPage/WebPage.cpp:
     30        (WebKit::WebPage::insertTextAsync): Ditto.
     31        * WebProcess/WebPage/WebPage.h:
     32        * WebProcess/WebPage/WebPage.messages.in: Ditto.
     33
    1342019-05-08  Timothy Hatcher  <timothy@apple.com>
    235
  • trunk/Source/WebKit/Shared/EditingRange.h

    r242320 r245073  
    2727
    2828#include "ArgumentCoders.h"
     29#include <wtf/EnumTraits.h>
    2930#include <wtf/RefPtr.h>
    3031
     
    9293};
    9394}
     95
     96namespace WTF {
     97template<> struct EnumTraits<WebKit::EditingRangeIsRelativeTo> {
     98    using values = EnumValues<WebKit::EditingRangeIsRelativeTo, WebKit::EditingRangeIsRelativeTo::EditableRoot, WebKit::EditingRangeIsRelativeTo::Paragraph>;
     99};
     100}
  • trunk/Source/WebKit/SourcesCocoa.txt

    r245044 r245073  
    142142Shared/Cocoa/CompletionHandlerCallChecker.mm
    143143Shared/Cocoa/DataDetectionResult.mm
     144Shared/Cocoa/InsertTextOptions.cpp
    144145Shared/Cocoa/LoadParametersCocoa.mm
    145146Shared/Cocoa/SandboxExtensionCocoa.mm
  • trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm

    r245072 r245073  
    3737#import "FullscreenClient.h"
    3838#import "GenericCallback.h"
     39#import "InsertTextOptions.h"
    3940#import "Logging.h"
    4041#import "NativeWebGestureEvent.h"
     
    47604761    if (!dictationAlternatives.isEmpty())
    47614762        m_page->insertDictatedTextAsync(eventText, replacementRange, dictationAlternatives, registerUndoGroup);
    4762     else
    4763         m_page->insertTextAsync(eventText, replacementRange, registerUndoGroup, m_isTextInsertionReplacingSoftSpace ? EditingRangeIsRelativeTo::Paragraph : EditingRangeIsRelativeTo::EditableRoot, m_isTextInsertionReplacingSoftSpace);
     4763    else {
     4764        InsertTextOptions options;
     4765        options.registerUndoGroup = registerUndoGroup;
     4766        options.editingRangeIsRelativeTo = m_isTextInsertionReplacingSoftSpace ? EditingRangeIsRelativeTo::Paragraph : EditingRangeIsRelativeTo::EditableRoot;
     4767        options.suppressSelectionUpdate = m_isTextInsertionReplacingSoftSpace;
     4768
     4769        m_page->insertTextAsync(eventText, replacementRange, WTFMove(options));
     4770    }
    47644771}
    47654772
     
    49584965        // FIXME: We should store the command to handle it after DOM event processing, as it's regular keyboard input now, not a composition.
    49594966        if ([text length] == 1 && isASCII([text characterAtIndex:0]))
    4960             m_page->insertTextAsync(text, replacementRange);
     4967            m_page->insertTextAsync(text, replacementRange, { });
    49614968        else
    49624969            NSBeep();
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r245072 r245073  
    189189#if PLATFORM(COCOA)
    190190#include "AttributedString.h"
     191#include "InsertTextOptions.h"
    191192#include "RemoteLayerTreeDrawingAreaProxy.h"
    192193#include "RemoteLayerTreeScrollingPerformanceData.h"
     
    79137914}
    79147915
    7915 void WebPageProxy::insertTextAsync(const String& text, const EditingRange& replacementRange, bool registerUndoGroup, EditingRangeIsRelativeTo editingRangeIsRelativeTo, bool suppressSelectionUpdate)
    7916 {
    7917     if (!hasRunningProcess())
    7918         return;
    7919 
    7920     process().send(Messages::WebPage::InsertTextAsync(text, replacementRange, registerUndoGroup, static_cast<uint32_t>(editingRangeIsRelativeTo), suppressSelectionUpdate), m_pageID);
     7916void WebPageProxy::insertTextAsync(const String& text, const EditingRange& replacementRange, InsertTextOptions&& options)
     7917{
     7918    if (!hasRunningProcess())
     7919        return;
     7920
     7921    process().send(Messages::WebPage::InsertTextAsync(text, replacementRange, WTFMove(options)), m_pageID);
    79217922}
    79227923
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r245072 r245073  
    284284struct EditorState;
    285285struct FrameInfoData;
     286struct InsertTextOptions;
    286287struct InteractionInformationRequest;
    287288struct LoadParameters;
     
    764765
    765766    void setTextAsync(const String&);
    766     void insertTextAsync(const String& text, const EditingRange& replacementRange, bool registerUndoGroup = false, EditingRangeIsRelativeTo = EditingRangeIsRelativeTo::EditableRoot, bool suppressSelectionUpdate = false);
     767    void insertTextAsync(const String& text, const EditingRange& replacementRange, InsertTextOptions&&);
    767768    void getMarkedRangeAsync(WTF::Function<void (EditingRange, CallbackBase::Error)>&&);
    768769    void getSelectedRangeAsync(WTF::Function<void (EditingRange, CallbackBase::Error)>&&);
  • trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

    r245067 r245073  
    3232#import "DocumentEditingContext.h"
    3333#import "EditableImageController.h"
    34 #import "EditingRange.h"
    3534#import "InputViewUpdateDeferrer.h"
     35#import "InsertTextOptions.h"
    3636#import "Logging.h"
    3737#import "NativeWebKeyboardEvent.h"
     
    41664166- (void)insertText:(NSString *)aStringValue
    41674167{
    4168     _page->insertTextAsync(aStringValue, WebKit::EditingRange());
     4168    _page->insertTextAsync(aStringValue, WebKit::EditingRange(), { });
    41694169}
    41704170
  • trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm

    r244897 r245073  
    3333#import "ColorSpaceData.h"
    3434#import "DataReference.h"
    35 #import "EditingRange.h"
    3635#import "EditorState.h"
     36#import "InsertTextOptions.h"
    3737#import "MenuUtilities.h"
    3838#import "NativeWebKeyboardEvent.h"
     
    199199
    200200    if (dictationAlternatives.isEmpty()) {
    201         insertTextAsync(text, replacementRange, registerUndoGroup);
     201        InsertTextOptions options;
     202        options.registerUndoGroup = registerUndoGroup;
     203
     204        insertTextAsync(text, replacementRange, WTFMove(options));
    202205        return;
    203206    }
     
    205208    process().send(Messages::WebPage::InsertDictatedTextAsync(text, replacementRange, dictationAlternatives, registerUndoGroup), m_pageID);
    206209#else
    207     insertTextAsync(text, replacementRange, registerUndoGroup);
     210    InsertTextOptions options;
     211    options.registerUndoGroup = registerUndoGroup;
     212
     213    insertTextAsync(text, replacementRange, WTFMove(options));
    208214#endif
    209215}
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r245053 r245073  
    15961596                CE1A0BD61A48E6C60054EF74 /* TCCSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */; };
    15971597                CE1A0BD71A48E6C60054EF74 /* TextInputSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */; };
     1598                CE550E152283752200D28791 /* InsertTextOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = CE550E12228373C800D28791 /* InsertTextOptions.h */; };
    15981599                CE5B4C8821B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5B4C8621B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.h */; };
    15991600                CE70EE5D22442BD000E0AF0F /* WKFormPeripheralBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CE70EE5C22442BD000E0AF0F /* WKFormPeripheralBase.h */; };
     
    45054506                CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCCSPI.h; sourceTree = "<group>"; };
    45064507                CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInputSPI.h; sourceTree = "<group>"; };
     4508                CE550E12228373C800D28791 /* InsertTextOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InsertTextOptions.h; sourceTree = "<group>"; };
     4509                CE550E132283744400D28791 /* InsertTextOptions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InsertTextOptions.cpp; sourceTree = "<group>"; };
    45074510                CE5B4C8621B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKSyntheticFlagsChangedWebEvent.h; path = ios/WKSyntheticFlagsChangedWebEvent.h; sourceTree = "<group>"; };
    45084511                CE5B4C8721B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKSyntheticFlagsChangedWebEvent.mm; path = ios/WKSyntheticFlagsChangedWebEvent.mm; sourceTree = "<group>"; };
     
    63536356                                C55F916C1C595E440029E92D /* DataDetectionResult.h */,
    63546357                                C55F916D1C595E440029E92D /* DataDetectionResult.mm */,
     6358                                CE550E132283744400D28791 /* InsertTextOptions.cpp */,
     6359                                CE550E12228373C800D28791 /* InsertTextOptions.h */,
    63556360                                2D1087621D2C641B00B85F82 /* LoadParametersCocoa.mm */,
    63566361                                CD2865EC2255562000606AC7 /* ProcessTaskStateObserver.h */,
     
    92789283                                BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */,
    92799284                                2DD45ADE1E5F8972006C355F /* InputViewUpdateDeferrer.h in Headers */,
     9285                                CE550E152283752200D28791 /* InsertTextOptions.h in Headers */,
    92809286                                A5E391FD2183C1F800C8FB31 /* InspectorTargetProxy.h in Headers */,
    92819287                                C5BCE5DF1C50766A00CDE3FA /* InteractionInformationAtPosition.h in Headers */,
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r245072 r245073  
    254254
    255255#if PLATFORM(COCOA)
     256#include "InsertTextOptions.h"
    256257#include "PDFPlugin.h"
    257258#include "PlaybackSessionManager.h"
     
    51295130}
    51305131
    5131 void WebPage::insertTextAsync(const String& text, const EditingRange& replacementEditingRange, bool registerUndoGroup, uint32_t editingRangeIsRelativeTo, bool suppressSelectionUpdate)
     5132void WebPage::insertTextAsync(const String& text, const EditingRange& replacementEditingRange, InsertTextOptions&& options)
    51325133{
    51335134    Frame& frame = m_page->focusController().focusedOrMainFrame();
     
    51375138    bool replacesText = false;
    51385139    if (replacementEditingRange.location != notFound) {
    5139         if (auto replacementRange = EditingRange::toRange(frame, replacementEditingRange, static_cast<EditingRangeIsRelativeTo>(editingRangeIsRelativeTo))) {
    5140             SetForScope<bool> isSelectingTextWhileInsertingAsynchronously(m_isSelectingTextWhileInsertingAsynchronously, suppressSelectionUpdate);
     5140        if (auto replacementRange = EditingRange::toRange(frame, replacementEditingRange, options.editingRangeIsRelativeTo)) {
     5141            SetForScope<bool> isSelectingTextWhileInsertingAsynchronously(m_isSelectingTextWhileInsertingAsynchronously, options.suppressSelectionUpdate);
    51415142            frame.selection().setSelection(VisibleSelection(*replacementRange, SEL_DEFAULT_AFFINITY));
    51425143            replacesText = replacementEditingRange.length;
     
    51445145    }
    51455146   
    5146     if (registerUndoGroup)
     5147    if (options.registerUndoGroup)
    51475148        send(Messages::WebPageProxy::RegisterInsertionUndoGrouping());
    51485149   
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r245072 r245073  
    253253
    254254struct AttributedString;
     255struct BackForwardListItemState;
    255256struct DataDetectionResult;
    256 struct BackForwardListItemState;
    257257struct EditorState;
     258struct InsertTextOptions;
    258259struct InteractionInformationAtPosition;
    259260struct InteractionInformationRequest;
     
    786787
    787788    void setTextAsync(const String&);
    788     void insertTextAsync(const String& text, const EditingRange& replacementRange, bool registerUndoGroup = false, uint32_t editingRangeIsRelativeTo = (uint32_t)EditingRangeIsRelativeTo::EditableRoot, bool suppressSelectionUpdate = false);
     789    void insertTextAsync(const String& text, const EditingRange& replacementRange, InsertTextOptions&&);
    789790    void getMarkedRangeAsync(CallbackID);
    790791    void getSelectedRangeAsync(CallbackID);
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in

    r245072 r245073  
    433433
    434434    SetTextAsync(String text)
    435     InsertTextAsync(String text, struct WebKit::EditingRange replacementRange, bool registerUndoGroup, uint32_t editingRangeIsRelativeTo, bool suppressSelectionUpdate)
     435    InsertTextAsync(String text, struct WebKit::EditingRange replacementRange, struct WebKit::InsertTextOptions options)
    436436    GetMarkedRangeAsync(WebKit::CallbackID callbackID)
    437437    GetSelectedRangeAsync(WebKit::CallbackID callbackID)
Note: See TracChangeset for help on using the changeset viewer.