Diff
Modified: trunk/Source/WebKit/ChangeLog (272626 => 272627)
--- trunk/Source/WebKit/ChangeLog 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/ChangeLog 2021-02-10 01:28:04 UTC (rev 272627)
@@ -1,3 +1,39 @@
+2021-02-09 Alex Christensen <[email protected]>
+
+ Use CompletionHandler instead of UnsignedCallback
+ https://bugs.webkit.org/show_bug.cgi?id=221631
+
+ Reviewed by Chris Dumez.
+
+ * UIProcess/Cocoa/WebViewImpl.mm:
+ (WebKit::WebViewImpl::characterIndexForPoint):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::replaceMatches):
+ (WebKit::WebPageProxy::characterIndexForPointAsync):
+ (WebKit::WebPageProxy::unsignedCallback): Deleted.
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]):
+ (-[WKContentView beginSelectionInDirection:completionHandler:]):
+ (-[WKContentView updateSelectionWithExtentPoint:completionHandler:]):
+ (-[WKContentView updateSelectionWithExtentPoint:withBoundary:completionHandler:]):
+ * UIProcess/ios/WebPageProxyIOS.mm:
+ (WebKit::WebPageProxy::beginSelectionInDirection):
+ (WebKit::WebPageProxy::updateSelectionWithExtentPoint):
+ (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
+ * UIProcess/mac/WKTextFinderClient.mm:
+ (-[WKTextFinderClient replaceMatches:withString:inSelectionOnly:resultCollector:]):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::replaceMatches):
+ (WebKit::WebPage::characterIndexForPointAsync):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+ * WebProcess/WebPage/ios/WebPageIOS.mm:
+ (WebKit::WebPage::beginSelectionInDirection):
+ (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
+ (WebKit::WebPage::updateSelectionWithExtentPoint):
+
2021-02-09 Peng Liu <[email protected]>
[GPUP] Run ImageDecoderAVFObjC in the GPU Process
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2021-02-10 01:28:04 UTC (rev 272627)
@@ -5081,10 +5081,8 @@
});
}
-void WebViewImpl::characterIndexForPoint(NSPoint point, void(^completionHandlerPtr)(NSUInteger))
+void WebViewImpl::characterIndexForPoint(NSPoint point, void(^completionHandler)(NSUInteger))
{
- auto completionHandler = adoptNS([completionHandlerPtr copy]);
-
LOG(TextInput, "characterIndexForPoint:(%f, %f)", point.x, point.y);
NSWindow *window = [m_view window];
@@ -5095,17 +5093,11 @@
ALLOW_DEPRECATED_DECLARATIONS_END
point = [m_view convertPoint:point fromView:nil]; // the point is relative to the main frame
- m_page->characterIndexForPointAsync(WebCore::IntPoint(point), [completionHandler](uint64_t result, WebKit::CallbackBase::Error error) {
- void (^completionHandlerBlock)(NSUInteger) = (void (^)(NSUInteger))completionHandler.get();
- if (error != WebKit::CallbackBase::Error::None) {
- LOG(TextInput, " ...characterIndexForPoint failed.");
- completionHandlerBlock(0);
- return;
- }
+ m_page->characterIndexForPointAsync(WebCore::IntPoint(point), [completionHandler = makeBlockPtr(completionHandler)](uint64_t result) {
if (result == notFound)
result = NSNotFound;
LOG(TextInput, " -> characterIndexForPoint returned %lu", result);
- completionHandlerBlock(result);
+ completionHandler(result);
});
}
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-02-10 01:28:04 UTC (rev 272627)
@@ -4016,15 +4016,9 @@
send(Messages::WebPage::CountStringMatches(string, options, maxMatchCount));
}
-void WebPageProxy::replaceMatches(Vector<uint32_t>&& matchIndices, const String& replacementText, bool selectionOnly, Function<void(uint64_t, CallbackBase::Error)>&& callback)
+void WebPageProxy::replaceMatches(Vector<uint32_t>&& matchIndices, const String& replacementText, bool selectionOnly, CompletionHandler<void(uint64_t)>&& callback)
{
- if (!hasRunningProcess()) {
- callback(0, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callback), m_process->throttler().backgroundActivity("WebPageProxy::replaceMatches"_s));
- send(Messages::WebPage::ReplaceMatches(WTFMove(matchIndices), replacementText, selectionOnly, callbackID));
+ sendWithAsyncReply(Messages::WebPage::ReplaceMatches(WTFMove(matchIndices), replacementText, selectionOnly), WTFMove(callback));
}
void WebPageProxy::launchInitialProcessIfNecessary()
@@ -7161,18 +7155,6 @@
callback->invalidate();
}
-void WebPageProxy::unsignedCallback(uint64_t result, CallbackID callbackID)
-{
- auto callback = m_callbacks.take<UnsignedCallback>(callbackID);
- if (!callback) {
- // FIXME: Log error or assert.
- // this can validly happen if a load invalidated the callback, though
- return;
- }
-
- callback->performCallbackWithReturnValue(result);
-}
-
void WebPageProxy::editorStateChanged(const EditorState& editorState)
{
updateEditorState(editorState);
@@ -8952,15 +8934,9 @@
sendWithAsyncReply(Messages::WebPage::GetSelectedRangeAsync(), WTFMove(callbackFunction));
}
-void WebPageProxy::characterIndexForPointAsync(const WebCore::IntPoint& point, WTF::Function<void (uint64_t, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::characterIndexForPointAsync(const WebCore::IntPoint& point, CompletionHandler<void(uint64_t)>&& callbackFunction)
{
- if (!hasRunningProcess()) {
- callbackFunction(0, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::characterIndexForPointAsync"_s));
- send(Messages::WebPage::CharacterIndexForPointAsync(point, callbackID));
+ sendWithAsyncReply(Messages::WebPage::CharacterIndexForPointAsync(point), WTFMove(callbackFunction));
}
void WebPageProxy::firstRectForCharacterRangeAsync(const EditingRange& range, CompletionHandler<void(const WebCore::IntRect&, const EditingRange&)>&& callbackFunction)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-02-10 01:28:04 UTC (rev 272627)
@@ -379,7 +379,6 @@
enum class WebContentMode : uint8_t;
typedef GenericCallback<API::Data*> DataCallback;
-typedef GenericCallback<uint64_t> UnsignedCallback;
typedef GenericCallback<const String&> StringCallback;
#if HAVE(VISIBILITY_PROPAGATION_VIEW)
@@ -768,9 +767,9 @@
void selectPositionAtPoint(const WebCore::IntPoint, bool isInteractingWithFocusedElement, CompletionHandler<void()>&&);
void selectPositionAtBoundaryWithDirection(const WebCore::IntPoint, WebCore::TextGranularity, WebCore::SelectionDirection, bool isInteractingWithFocusedElement, CompletionHandler<void()>&&);
void moveSelectionAtBoundaryWithDirection(WebCore::TextGranularity, WebCore::SelectionDirection, CompletionHandler<void()>&&);
- void beginSelectionInDirection(WebCore::SelectionDirection, WTF::Function<void (uint64_t, CallbackBase::Error)>&&);
- void updateSelectionWithExtentPoint(const WebCore::IntPoint, bool isInteractingWithFocusedElement, RespectSelectionAnchor, WTF::Function<void(uint64_t, CallbackBase::Error)>&&);
- void updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint, WebCore::TextGranularity, bool isInteractingWithFocusedElement, WTF::Function<void(uint64_t, CallbackBase::Error)>&&);
+ void beginSelectionInDirection(WebCore::SelectionDirection, CompletionHandler<void(bool)>&&);
+ void updateSelectionWithExtentPoint(const WebCore::IntPoint, bool isInteractingWithFocusedElement, RespectSelectionAnchor, CompletionHandler<void(bool)>&&);
+ void updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint, WebCore::TextGranularity, bool isInteractingWithFocusedElement, CompletionHandler<void(bool)>&&);
void requestAutocorrectionData(const String& textForAutocorrection, CompletionHandler<void(WebAutocorrectionData)>&&);
void applyAutocorrection(const String& correction, const String& originalText, WTF::Function<void (const String&, CallbackBase::Error)>&&);
bool applyAutocorrection(const String& correction, const String& originalText);
@@ -879,7 +878,7 @@
void hasMarkedText(CompletionHandler<void(bool)>&&);
void getMarkedRangeAsync(CompletionHandler<void(const EditingRange&)>&&);
void getSelectedRangeAsync(CompletionHandler<void(const EditingRange&)>&&);
- void characterIndexForPointAsync(const WebCore::IntPoint&, WTF::Function<void (uint64_t, CallbackBase::Error)>&&);
+ void characterIndexForPointAsync(const WebCore::IntPoint&, CompletionHandler<void(uint64_t)>&&);
void firstRectForCharacterRangeAsync(const EditingRange&, CompletionHandler<void(const WebCore::IntRect&, const EditingRange&)>&&);
void setCompositionAsync(const String& text, const Vector<WebCore::CompositionUnderline>&, const Vector<WebCore::CompositionHighlight>&, const EditingRange& selectionRange, const EditingRange& replacementRange);
void confirmCompositionAsync();
@@ -1112,7 +1111,7 @@
void didGetImageForFindMatch(const ShareableBitmap::Handle& contentImageHandle, uint32_t matchIndex);
void hideFindUI();
void countStringMatches(const String&, OptionSet<FindOptions>, unsigned maxMatchCount);
- void replaceMatches(Vector<uint32_t>&& matchIndices, const String& replacementText, bool selectionOnly, Function<void(uint64_t, CallbackBase::Error)>&&);
+ void replaceMatches(Vector<uint32_t>&& matchIndices, const String& replacementText, bool selectionOnly, CompletionHandler<void(uint64_t)>&&);
void didCountStringMatches(const String&, uint32_t matchCount);
void setTextIndicator(const WebCore::TextIndicatorData&, uint64_t /* WebCore::TextIndicatorWindowLifetime */ lifetime = 0 /* Permanent */);
void setTextIndicatorAnimationProgress(float);
@@ -2160,7 +2159,6 @@
void imageCallback(const ShareableBitmap::Handle&, CallbackID);
void stringCallback(const String&, CallbackID);
void invalidateStringCallback(CallbackID);
- void unsignedCallback(uint64_t, CallbackID);
#if ENABLE(APPLICATION_MANIFEST)
void applicationManifestCallback(const Optional<WebCore::ApplicationManifest>&, CallbackID);
#endif
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-02-10 01:28:04 UTC (rev 272627)
@@ -168,7 +168,6 @@
ImageCallback(WebKit::ShareableBitmap::Handle bitmapHandle, WebKit::CallbackID callbackID)
StringCallback(String resultString, WebKit::CallbackID callbackID)
InvalidateStringCallback(WebKit::CallbackID callbackID)
- UnsignedCallback(uint64_t result, WebKit::CallbackID callbackID)
#if ENABLE(APPLICATION_MANIFEST)
ApplicationManifestCallback(Optional<WebCore::ApplicationManifest> manifest, WebKit::CallbackID callbackID)
#endif
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-02-10 01:28:04 UTC (rev 272627)
@@ -4267,35 +4267,25 @@
{
_usingGestureForSelection = YES;
++_suppressNonEditableSingleTapTextInteractionCount;
- UIWKSelectionCompletionHandler selectionHandler = [completionHandler copy];
- RetainPtr<WKContentView> view = self;
-
- _page->selectTextWithGranularityAtPoint(WebCore::IntPoint(point), toWKTextGranularity(granularity), self._hasFocusedElement, [view, selectionHandler] {
+ _page->selectTextWithGranularityAtPoint(WebCore::IntPoint(point), toWKTextGranularity(granularity), self._hasFocusedElement, [view = retainPtr(self), selectionHandler = makeBlockPtr(completionHandler)] {
selectionHandler();
view->_usingGestureForSelection = NO;
--view->_suppressNonEditableSingleTapTextInteractionCount;
- [selectionHandler release];
});
}
- (void)beginSelectionInDirection:(UITextDirection)direction completionHandler:(void (^)(BOOL endIsMoving))completionHandler
{
- UIWKSelectionWithDirectionCompletionHandler selectionHandler = [completionHandler copy];
-
- _page->beginSelectionInDirection(toWKSelectionDirection(direction), [selectionHandler](bool endIsMoving, WebKit::CallbackBase::Error error) {
+ _page->beginSelectionInDirection(toWKSelectionDirection(direction), [selectionHandler = makeBlockPtr(completionHandler)] (bool endIsMoving) {
selectionHandler(endIsMoving);
- [selectionHandler release];
});
}
- (void)updateSelectionWithExtentPoint:(CGPoint)point completionHandler:(void (^)(BOOL endIsMoving))completionHandler
{
- UIWKSelectionWithDirectionCompletionHandler selectionHandler = [completionHandler copy];
-
auto respectSelectionAnchor = self.interactionAssistant._wk_hasFloatingCursor ? WebKit::RespectSelectionAnchor::Yes : WebKit::RespectSelectionAnchor::No;
- _page->updateSelectionWithExtentPoint(WebCore::IntPoint(point), self._hasFocusedElement, respectSelectionAnchor, [selectionHandler](bool endIsMoving, WebKit::CallbackBase::Error error) {
+ _page->updateSelectionWithExtentPoint(WebCore::IntPoint(point), self._hasFocusedElement, respectSelectionAnchor, [selectionHandler = makeBlockPtr(completionHandler)](bool endIsMoving) {
selectionHandler(endIsMoving);
- [selectionHandler release];
});
}
@@ -4304,7 +4294,7 @@
UIWKSelectionWithDirectionCompletionHandler selectionHandler = [completionHandler copy];
++_suppressNonEditableSingleTapTextInteractionCount;
- _page->updateSelectionWithExtentPointAndBoundary(WebCore::IntPoint(point), toWKTextGranularity(granularity), self._hasFocusedElement, [selectionHandler, protectedSelf = retainPtr(self)] (bool endIsMoving, WebKit::CallbackBase::Error error) {
+ _page->updateSelectionWithExtentPointAndBoundary(WebCore::IntPoint(point), toWKTextGranularity(granularity), self._hasFocusedElement, [selectionHandler, protectedSelf = retainPtr(self)] (bool endIsMoving) {
selectionHandler(endIsMoving);
[selectionHandler release];
--protectedSelf->_suppressNonEditableSingleTapTextInteractionCount;
Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2021-02-10 01:28:04 UTC (rev 272627)
@@ -495,39 +495,19 @@
});
}
-void WebPageProxy::beginSelectionInDirection(WebCore::SelectionDirection direction, WTF::Function<void (uint64_t, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::beginSelectionInDirection(WebCore::SelectionDirection direction, CompletionHandler<void(bool)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(0, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::beginSelectionInDirection"_s));
- m_process->send(Messages::WebPage::BeginSelectionInDirection(direction, callbackID), m_webPageID);
+ sendWithAsyncReply(Messages::WebPage::BeginSelectionInDirection(direction), WTFMove(callback));
}
-void WebPageProxy::updateSelectionWithExtentPoint(const WebCore::IntPoint point, bool isInteractingWithFocusedElement, RespectSelectionAnchor respectSelectionAnchor, WTF::Function<void(uint64_t, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::updateSelectionWithExtentPoint(const WebCore::IntPoint point, bool isInteractingWithFocusedElement, RespectSelectionAnchor respectSelectionAnchor, CompletionHandler<void(bool)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(0, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::updateSelectionWithExtentPoint"_s));
- m_process->send(Messages::WebPage::UpdateSelectionWithExtentPoint(point, isInteractingWithFocusedElement, respectSelectionAnchor, callbackID), m_webPageID);
-
+ sendWithAsyncReply(Messages::WebPage::UpdateSelectionWithExtentPoint(point, isInteractingWithFocusedElement, respectSelectionAnchor), WTFMove(callback));
}
-void WebPageProxy::updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint point, WebCore::TextGranularity granularity, bool isInteractingWithFocusedElement, WTF::Function<void(uint64_t, CallbackBase::Error)>&& callbackFunction)
+void WebPageProxy::updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint point, WebCore::TextGranularity granularity, bool isInteractingWithFocusedElement, CompletionHandler<void(bool)>&& callback)
{
- if (!hasRunningProcess()) {
- callbackFunction(0, CallbackBase::Error::Unknown);
- return;
- }
-
- auto callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivity("WebPageProxy::updateSelectionWithExtentPointAndBoundary"_s));
- m_process->send(Messages::WebPage::UpdateSelectionWithExtentPointAndBoundary(point, granularity, isInteractingWithFocusedElement, callbackID), m_webPageID);
-
+ sendWithAsyncReply(Messages::WebPage::UpdateSelectionWithExtentPointAndBoundary(point, granularity, isInteractingWithFocusedElement), WTFMove(callback));
}
void WebPageProxy::requestDictationContext(CompletionHandler<void(const String&, const String&, const String&)>&& callbackFunction)
Modified: trunk/Source/WebKit/UIProcess/mac/WKTextFinderClient.mm (272626 => 272627)
--- trunk/Source/WebKit/UIProcess/mac/WKTextFinderClient.mm 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/UIProcess/mac/WKTextFinderClient.mm 2021-02-10 01:28:04 UTC (rev 272627)
@@ -196,8 +196,8 @@
if ([match isKindOfClass:WKTextFinderMatch.class])
matchIndices.uncheckedAppend([(WKTextFinderMatch *)match index]);
}
- _page->replaceMatches(WTFMove(matchIndices), replacementText, selectionOnly, [collector = makeBlockPtr(resultCollector)] (uint64_t numberOfReplacements, auto error) {
- collector(error == WebKit::CallbackBase::Error::None ? numberOfReplacements : 0);
+ _page->replaceMatches(WTFMove(matchIndices), replacementText, selectionOnly, [collector = makeBlockPtr(resultCollector)] (uint64_t numberOfReplacements) {
+ collector(numberOfReplacements);
});
}
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (272626 => 272627)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-02-10 01:28:04 UTC (rev 272627)
@@ -4417,10 +4417,10 @@
findController().countStringMatches(string, options, maxMatchCount);
}
-void WebPage::replaceMatches(const Vector<uint32_t>& matchIndices, const String& replacementText, bool selectionOnly, CallbackID callbackID)
+void WebPage::replaceMatches(const Vector<uint32_t>& matchIndices, const String& replacementText, bool selectionOnly, CompletionHandler<void(uint64_t)>&& completionHandler)
{
auto numberOfReplacements = findController().replaceMatches(matchIndices, replacementText, selectionOnly);
- send(Messages::WebPageProxy::UnsignedCallback(numberOfReplacements, callbackID));
+ completionHandler(numberOfReplacements);
}
void WebPage::didChangeSelectedIndexForActivePopupMenu(int32_t newIndex)
@@ -5593,7 +5593,7 @@
completionHandler(EditingRange::fromRange(frame, frame.selection().selection().toNormalizedRange()));
}
-void WebPage::characterIndexForPointAsync(const WebCore::IntPoint& point, CallbackID callbackID)
+void WebPage::characterIndexForPointAsync(const WebCore::IntPoint& point, CompletionHandler<void(uint64_t)>&& completionHandler)
{
constexpr OptionSet<HitTestRequest::RequestType> hitType { HitTestRequest::ReadOnly, HitTestRequest::Active, HitTestRequest::DisallowUserAgentShadowContent, HitTestRequest::AllowChildFrameContent };
auto result = m_page->mainFrame().eventHandler().hitTestResultAtPoint(point, hitType);
@@ -5600,7 +5600,7 @@
auto& frame = result.innerNonSharedNode() ? *result.innerNodeFrame() : m_page->focusController().focusedOrMainFrame();
auto range = frame.rangeForPoint(result.roundedPointInInnerNodeFrame());
auto editingRange = EditingRange::fromRange(frame, range);
- send(Messages::WebPageProxy::UnsignedCallback(editingRange.location, callbackID));
+ completionHandler(editingRange.location);
}
void WebPage::firstRectForCharacterRangeAsync(const EditingRange& editingRange, CompletionHandler<void(const WebCore::IntRect&, const EditingRange&)>&& completionHandler)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (272626 => 272627)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-02-10 01:28:04 UTC (rev 272627)
@@ -742,9 +742,9 @@
void selectPositionAtBoundaryWithDirection(const WebCore::IntPoint&, WebCore::TextGranularity, WebCore::SelectionDirection, bool isInteractingWithFocusedElement, CompletionHandler<void()>&&);
void moveSelectionAtBoundaryWithDirection(WebCore::TextGranularity, WebCore::SelectionDirection, CompletionHandler<void()>&&);
void selectPositionAtPoint(const WebCore::IntPoint&, bool isInteractingWithFocusedElement, CompletionHandler<void()>&&);
- void beginSelectionInDirection(WebCore::SelectionDirection, CallbackID);
- void updateSelectionWithExtentPoint(const WebCore::IntPoint&, bool isInteractingWithFocusedElement, RespectSelectionAnchor, CallbackID);
- void updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint&, WebCore::TextGranularity, bool isInteractingWithFocusedElement, CallbackID);
+ void beginSelectionInDirection(WebCore::SelectionDirection, CompletionHandler<void(bool)>&&);
+ void updateSelectionWithExtentPoint(const WebCore::IntPoint&, bool isInteractingWithFocusedElement, RespectSelectionAnchor, CompletionHandler<void(bool)>&&);
+ void updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint&, WebCore::TextGranularity, bool isInteractingWithFocusedElement, CompletionHandler<void(bool)>&&);
void requestDictationContext(CompletionHandler<void(const String&, const String&, const String&)>&&);
void replaceDictatedText(const String& oldText, const String& newText);
@@ -893,7 +893,7 @@
void hasMarkedText(CompletionHandler<void(bool)>&&);
void getMarkedRangeAsync(CompletionHandler<void(const EditingRange&)>&&);
void getSelectedRangeAsync(CompletionHandler<void(const EditingRange&)>&&);
- void characterIndexForPointAsync(const WebCore::IntPoint&, CallbackID);
+ void characterIndexForPointAsync(const WebCore::IntPoint&, CompletionHandler<void(uint64_t)>&&);
void firstRectForCharacterRangeAsync(const EditingRange&, CompletionHandler<void(const WebCore::IntRect&, const EditingRange&)>&&);
void setCompositionAsync(const String& text, const Vector<WebCore::CompositionUnderline>&, const Vector<WebCore::CompositionHighlight>&, const EditingRange& selectionRange, const EditingRange& replacementRange);
void confirmCompositionAsync();
@@ -1648,7 +1648,7 @@
void indicateFindMatch(uint32_t matchIndex);
void hideFindUI();
void countStringMatches(const String&, OptionSet<FindOptions>, uint32_t maxMatchCount);
- void replaceMatches(const Vector<uint32_t>& matchIndices, const String& replacementText, bool selectionOnly, CallbackID);
+ void replaceMatches(const Vector<uint32_t>& matchIndices, const String& replacementText, bool selectionOnly, CompletionHandler<void(uint64_t)>&&);
#if USE(COORDINATED_GRAPHICS)
void sendViewportAttributesChanged(const WebCore::ViewportArguments&);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (272626 => 272627)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2021-02-10 01:28:04 UTC (rev 272627)
@@ -75,9 +75,9 @@
SelectPositionAtBoundaryWithDirection(WebCore::IntPoint point, enum:uint8_t WebCore::TextGranularity granularity, enum:uint8_t WebCore::SelectionDirection direction, bool isInteractingWithFocusedElement) -> () Async
MoveSelectionAtBoundaryWithDirection(enum:uint8_t WebCore::TextGranularity granularity, enum:uint8_t WebCore::SelectionDirection direction) -> () Async
SelectPositionAtPoint(WebCore::IntPoint point, bool isInteractingWithFocusedElement) -> () Async
- BeginSelectionInDirection(enum:uint8_t WebCore::SelectionDirection direction, WebKit::CallbackID callbackID)
- UpdateSelectionWithExtentPoint(WebCore::IntPoint point, bool isInteractingWithFocusedElement, enum:bool WebKit::RespectSelectionAnchor respectSelectionAnchor, WebKit::CallbackID callbackID)
- UpdateSelectionWithExtentPointAndBoundary(WebCore::IntPoint point, enum:uint8_t WebCore::TextGranularity granularity, bool isInteractingWithFocusedElement, WebKit::CallbackID callbackID)
+ BeginSelectionInDirection(enum:uint8_t WebCore::SelectionDirection direction) -> (bool endIsMoving) Async
+ UpdateSelectionWithExtentPoint(WebCore::IntPoint point, bool isInteractingWithFocusedElement, enum:bool WebKit::RespectSelectionAnchor respectSelectionAnchor) -> (bool endIsMoving) Async
+ UpdateSelectionWithExtentPointAndBoundary(WebCore::IntPoint point, enum:uint8_t WebCore::TextGranularity granularity, bool isInteractingWithFocusedElement) -> (bool endIsMoving) Async
RequestDictationContext() -> (String selectedText, String textBefore, String textAfter) Async
ReplaceDictatedText(String oldText, String newText)
ReplaceSelectedText(String oldText, String newText)
@@ -306,7 +306,7 @@
IndicateFindMatch(uint32_t matchIndex)
HideFindUI()
CountStringMatches(String string, OptionSet<WebKit::FindOptions> findOptions, unsigned maxMatchCount)
- ReplaceMatches(Vector<uint32_t> matchIndices, String replacementText, bool selectionOnly, WebKit::CallbackID callbackID)
+ ReplaceMatches(Vector<uint32_t> matchIndices, String replacementText, bool selectionOnly) -> (uint64_t numberOfReplacements) Async
AddMIMETypeWithCustomContentProvider(String mimeType)
@@ -457,7 +457,7 @@
HasMarkedText() -> (bool hasMarkedText) Async
GetMarkedRangeAsync() -> (struct WebKit::EditingRange range) Async
GetSelectedRangeAsync() -> (struct WebKit::EditingRange range) Async
- CharacterIndexForPointAsync(WebCore::IntPoint point, WebKit::CallbackID callbackID);
+ CharacterIndexForPointAsync(WebCore::IntPoint point) -> (uint64_t location) Async
FirstRectForCharacterRangeAsync(struct WebKit::EditingRange range) -> (WebCore::IntRect rect, struct WebKit::EditingRange actualRange) Async
SetCompositionAsync(String text, Vector<WebCore::CompositionUnderline> underlines, Vector<WebCore::CompositionHighlight> highlights, struct WebKit::EditingRange selectionRange, struct WebKit::EditingRange replacementRange)
ConfirmCompositionAsync()
Modified: trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (272626 => 272627)
--- trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm 2021-02-10 01:19:33 UTC (rev 272626)
+++ trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm 2021-02-10 01:28:04 UTC (rev 272627)
@@ -2156,22 +2156,20 @@
}
-void WebPage::beginSelectionInDirection(WebCore::SelectionDirection direction, CallbackID callbackID)
+void WebPage::beginSelectionInDirection(WebCore::SelectionDirection direction, CompletionHandler<void(bool)>&& completionHandler)
{
m_selectionAnchor = direction == SelectionDirection::Left ? Start : End;
- send(Messages::WebPageProxy::UnsignedCallback(m_selectionAnchor == Start, callbackID));
+ completionHandler(m_selectionAnchor == Start);
}
-void WebPage::updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint& point, WebCore::TextGranularity granularity, bool isInteractingWithFocusedElement, CallbackID callbackID)
+void WebPage::updateSelectionWithExtentPointAndBoundary(const WebCore::IntPoint& point, WebCore::TextGranularity granularity, bool isInteractingWithFocusedElement, CompletionHandler<void(bool)>&& callback)
{
auto& frame = m_page->focusController().focusedOrMainFrame();
auto position = visiblePositionInFocusedNodeForPoint(frame, point, isInteractingWithFocusedElement);
auto newRange = rangeForGranularityAtPoint(frame, point, granularity, isInteractingWithFocusedElement);
- if (position.isNull() || !m_initialSelection || !newRange) {
- send(Messages::WebPageProxy::UnsignedCallback(false, callbackID));
- return;
- }
+ if (position.isNull() || !m_initialSelection || !newRange)
+ return callback(false);
auto initialSelectionStartPosition = makeDeprecatedLegacyPosition(m_initialSelection->start);
auto initialSelectionEndPosition = makeDeprecatedLegacyPosition(m_initialSelection->end);
@@ -2186,18 +2184,16 @@
if (auto range = makeSimpleRange(selectionStart, selectionEnd))
frame.selection().setSelectedRange(range, Affinity::Upstream, WebCore::FrameSelection::ShouldCloseTyping::Yes, UserTriggered);
- send(Messages::WebPageProxy::UnsignedCallback(selectionStart == initialSelectionStartPosition, callbackID));
+ callback(selectionStart == initialSelectionStartPosition);
}
-void WebPage::updateSelectionWithExtentPoint(const WebCore::IntPoint& point, bool isInteractingWithFocusedElement, RespectSelectionAnchor respectSelectionAnchor, CallbackID callbackID)
+void WebPage::updateSelectionWithExtentPoint(const WebCore::IntPoint& point, bool isInteractingWithFocusedElement, RespectSelectionAnchor respectSelectionAnchor, CompletionHandler<void(bool)>&& callback)
{
auto& frame = m_page->focusController().focusedOrMainFrame();
auto position = visiblePositionInFocusedNodeForPoint(frame, point, isInteractingWithFocusedElement);
- if (position.isNull()) {
- send(Messages::WebPageProxy::UnsignedCallback(false, callbackID));
- return;
- }
+ if (position.isNull())
+ return callback(false);
VisiblePosition selectionStart;
VisiblePosition selectionEnd;
@@ -2235,7 +2231,7 @@
if (auto range = makeSimpleRange(selectionStart, selectionEnd))
frame.selection().setSelectedRange(range, Affinity::Upstream, WebCore::FrameSelection::ShouldCloseTyping::Yes, UserTriggered);
- send(Messages::WebPageProxy::UnsignedCallback(m_selectionAnchor == Start, callbackID));
+ callback(m_selectionAnchor == Start);
}
void WebPage::requestDictationContext(CompletionHandler<void(const String&, const String&, const String&)>&& completionHandler)