Changeset 245073 in webkit
- Timestamp:
- May 8, 2019 3:48:31 PM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 2 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r245072 r245073 1 2019-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 1 34 2019-05-08 Timothy Hatcher <timothy@apple.com> 2 35 -
trunk/Source/WebKit/Shared/EditingRange.h
r242320 r245073 27 27 28 28 #include "ArgumentCoders.h" 29 #include <wtf/EnumTraits.h> 29 30 #include <wtf/RefPtr.h> 30 31 … … 92 93 }; 93 94 } 95 96 namespace WTF { 97 template<> 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 142 142 Shared/Cocoa/CompletionHandlerCallChecker.mm 143 143 Shared/Cocoa/DataDetectionResult.mm 144 Shared/Cocoa/InsertTextOptions.cpp 144 145 Shared/Cocoa/LoadParametersCocoa.mm 145 146 Shared/Cocoa/SandboxExtensionCocoa.mm -
trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm
r245072 r245073 37 37 #import "FullscreenClient.h" 38 38 #import "GenericCallback.h" 39 #import "InsertTextOptions.h" 39 40 #import "Logging.h" 40 41 #import "NativeWebGestureEvent.h" … … 4760 4761 if (!dictationAlternatives.isEmpty()) 4761 4762 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 } 4764 4771 } 4765 4772 … … 4958 4965 // FIXME: We should store the command to handle it after DOM event processing, as it's regular keyboard input now, not a composition. 4959 4966 if ([text length] == 1 && isASCII([text characterAtIndex:0])) 4960 m_page->insertTextAsync(text, replacementRange );4967 m_page->insertTextAsync(text, replacementRange, { }); 4961 4968 else 4962 4969 NSBeep(); -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r245072 r245073 189 189 #if PLATFORM(COCOA) 190 190 #include "AttributedString.h" 191 #include "InsertTextOptions.h" 191 192 #include "RemoteLayerTreeDrawingAreaProxy.h" 192 193 #include "RemoteLayerTreeScrollingPerformanceData.h" … … 7913 7914 } 7914 7915 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);7916 void 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); 7921 7922 } 7922 7923 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r245072 r245073 284 284 struct EditorState; 285 285 struct FrameInfoData; 286 struct InsertTextOptions; 286 287 struct InteractionInformationRequest; 287 288 struct LoadParameters; … … 764 765 765 766 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&&); 767 768 void getMarkedRangeAsync(WTF::Function<void (EditingRange, CallbackBase::Error)>&&); 768 769 void getSelectedRangeAsync(WTF::Function<void (EditingRange, CallbackBase::Error)>&&); -
trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
r245067 r245073 32 32 #import "DocumentEditingContext.h" 33 33 #import "EditableImageController.h" 34 #import "EditingRange.h"35 34 #import "InputViewUpdateDeferrer.h" 35 #import "InsertTextOptions.h" 36 36 #import "Logging.h" 37 37 #import "NativeWebKeyboardEvent.h" … … 4166 4166 - (void)insertText:(NSString *)aStringValue 4167 4167 { 4168 _page->insertTextAsync(aStringValue, WebKit::EditingRange() );4168 _page->insertTextAsync(aStringValue, WebKit::EditingRange(), { }); 4169 4169 } 4170 4170 -
trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm
r244897 r245073 33 33 #import "ColorSpaceData.h" 34 34 #import "DataReference.h" 35 #import "EditingRange.h"36 35 #import "EditorState.h" 36 #import "InsertTextOptions.h" 37 37 #import "MenuUtilities.h" 38 38 #import "NativeWebKeyboardEvent.h" … … 199 199 200 200 if (dictationAlternatives.isEmpty()) { 201 insertTextAsync(text, replacementRange, registerUndoGroup); 201 InsertTextOptions options; 202 options.registerUndoGroup = registerUndoGroup; 203 204 insertTextAsync(text, replacementRange, WTFMove(options)); 202 205 return; 203 206 } … … 205 208 process().send(Messages::WebPage::InsertDictatedTextAsync(text, replacementRange, dictationAlternatives, registerUndoGroup), m_pageID); 206 209 #else 207 insertTextAsync(text, replacementRange, registerUndoGroup); 210 InsertTextOptions options; 211 options.registerUndoGroup = registerUndoGroup; 212 213 insertTextAsync(text, replacementRange, WTFMove(options)); 208 214 #endif 209 215 } -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r245053 r245073 1596 1596 CE1A0BD61A48E6C60054EF74 /* TCCSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */; }; 1597 1597 CE1A0BD71A48E6C60054EF74 /* TextInputSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */; }; 1598 CE550E152283752200D28791 /* InsertTextOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = CE550E12228373C800D28791 /* InsertTextOptions.h */; }; 1598 1599 CE5B4C8821B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5B4C8621B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.h */; }; 1599 1600 CE70EE5D22442BD000E0AF0F /* WKFormPeripheralBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CE70EE5C22442BD000E0AF0F /* WKFormPeripheralBase.h */; }; … … 4505 4506 CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCCSPI.h; sourceTree = "<group>"; }; 4506 4507 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>"; }; 4507 4510 CE5B4C8621B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKSyntheticFlagsChangedWebEvent.h; path = ios/WKSyntheticFlagsChangedWebEvent.h; sourceTree = "<group>"; }; 4508 4511 CE5B4C8721B73D870022E64F /* WKSyntheticFlagsChangedWebEvent.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKSyntheticFlagsChangedWebEvent.mm; path = ios/WKSyntheticFlagsChangedWebEvent.mm; sourceTree = "<group>"; }; … … 6353 6356 C55F916C1C595E440029E92D /* DataDetectionResult.h */, 6354 6357 C55F916D1C595E440029E92D /* DataDetectionResult.mm */, 6358 CE550E132283744400D28791 /* InsertTextOptions.cpp */, 6359 CE550E12228373C800D28791 /* InsertTextOptions.h */, 6355 6360 2D1087621D2C641B00B85F82 /* LoadParametersCocoa.mm */, 6356 6361 CD2865EC2255562000606AC7 /* ProcessTaskStateObserver.h */, … … 9278 9283 BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */, 9279 9284 2DD45ADE1E5F8972006C355F /* InputViewUpdateDeferrer.h in Headers */, 9285 CE550E152283752200D28791 /* InsertTextOptions.h in Headers */, 9280 9286 A5E391FD2183C1F800C8FB31 /* InspectorTargetProxy.h in Headers */, 9281 9287 C5BCE5DF1C50766A00CDE3FA /* InteractionInformationAtPosition.h in Headers */, -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r245072 r245073 254 254 255 255 #if PLATFORM(COCOA) 256 #include "InsertTextOptions.h" 256 257 #include "PDFPlugin.h" 257 258 #include "PlaybackSessionManager.h" … … 5129 5130 } 5130 5131 5131 void WebPage::insertTextAsync(const String& text, const EditingRange& replacementEditingRange, bool registerUndoGroup, uint32_t editingRangeIsRelativeTo, bool suppressSelectionUpdate)5132 void WebPage::insertTextAsync(const String& text, const EditingRange& replacementEditingRange, InsertTextOptions&& options) 5132 5133 { 5133 5134 Frame& frame = m_page->focusController().focusedOrMainFrame(); … … 5137 5138 bool replacesText = false; 5138 5139 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); 5141 5142 frame.selection().setSelection(VisibleSelection(*replacementRange, SEL_DEFAULT_AFFINITY)); 5142 5143 replacesText = replacementEditingRange.length; … … 5144 5145 } 5145 5146 5146 if ( registerUndoGroup)5147 if (options.registerUndoGroup) 5147 5148 send(Messages::WebPageProxy::RegisterInsertionUndoGrouping()); 5148 5149 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r245072 r245073 253 253 254 254 struct AttributedString; 255 struct BackForwardListItemState; 255 256 struct DataDetectionResult; 256 struct BackForwardListItemState;257 257 struct EditorState; 258 struct InsertTextOptions; 258 259 struct InteractionInformationAtPosition; 259 260 struct InteractionInformationRequest; … … 786 787 787 788 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&&); 789 790 void getMarkedRangeAsync(CallbackID); 790 791 void getSelectedRangeAsync(CallbackID); -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in
r245072 r245073 433 433 434 434 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) 436 436 GetMarkedRangeAsync(WebKit::CallbackID callbackID) 437 437 GetSelectedRangeAsync(WebKit::CallbackID callbackID)
Note: See TracChangeset
for help on using the changeset viewer.