Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Unified Text Replacement] Refactor UnifiedTextReplacementController methods to pass in a session type instead of separate parameters #28760

Merged
merged 1 commit into from
May 18, 2024

Conversation

rr-codes
Copy link
Contributor

@rr-codes rr-codes commented May 18, 2024

670f9c7

[Unified Text Replacement] Refactor UnifiedTextReplacementController methods to pass in a session type instead of separate parameters
https://bugs.webkit.org/show_bug.cgi?id=274356
rdar://128333023

Reviewed by Wenson Hsieh.

Work towards using more strongly typed objects instead of passing around UUIDs everywhere by
creating a new `WebUnifiedTextReplacementSessionData` type and using that, similar to the existing
`WebUnifiedTextReplacementContextData` type. This also has the advantage of being more expressive
with regards to optional-ness.

* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/UnifiedTextReplacement.serialization.in:
* Source/WebKit/Shared/WebUnifiedTextReplacementContextData.h:
* Source/WebKit/Shared/WebUnifiedTextReplacementSessionData.h: Copied from Source/WebKit/Shared/WebUnifiedTextReplacementContextData.h.
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::willBeginTextReplacementSession):
(WebKit::WebPageProxy::didBeginTextReplacementSession):
(WebKit::WebPageProxy::textReplacementSessionDidReceiveReplacements):
(WebKit::WebPageProxy::textReplacementSessionDidUpdateStateForReplacement):
(WebKit::WebPageProxy::didEndTextReplacementSession):
(WebKit::WebPageProxy::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebKit::WebPageProxy::textReplacementSessionDidReceiveEditAction):
(WebKit::WebPageProxy::addTextIndicatorStyleForID):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebPage/Cocoa/UnifiedTextReplacementController.mm:
(WebKit::UnifiedTextReplacementController::willBeginTextReplacementSession):
(WebKit::UnifiedTextReplacementController::didBeginTextReplacementSession):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveReplacements):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidUpdateStateForReplacement):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementSessionData::ReplacementType::PlainText>):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementSessionData::ReplacementType::RichText>):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveEditAction):
(WebKit::UnifiedTextReplacementController::textReplacementSessionPerformEditActionForPlainText):
(WebKit::UnifiedTextReplacementController::textReplacementSessionPerformEditActionForRichText):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementType::PlainText>): Deleted.
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementType::RichText>): Deleted.
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::updateTextIndicatorStyleVisibilityForID):
(WebKit::WebPage::willBeginTextReplacementSession):
(WebKit::WebPage::didBeginTextReplacementSession):
(WebKit::WebPage::textReplacementSessionDidReceiveReplacements):
(WebKit::WebPage::textReplacementSessionDidUpdateStateForReplacement):
(WebKit::WebPage::didEndTextReplacementSession):
(WebKit::WebPage::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebKit::WebPage::textReplacementSessionDidReceiveEditAction):
* Source/WebKit/WebProcess/WebPage/UnifiedTextReplacementController.h:
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

Canonical link: https://commits.webkit.org/278965@main

e6e3fd3

Misc iOS, tvOS & watchOS macOS Linux Windows
βœ… πŸ§ͺ style βœ… πŸ›  ios βœ… πŸ›  mac βœ… πŸ›  wpe   πŸ›  wincairo
  πŸ›  ios-sim   πŸ›  mac-AS-debug   πŸ§ͺ wpe-wk2   πŸ§ͺ wincairo-tests
  πŸ§ͺ webkitperl   πŸ§ͺ ios-wk2   πŸ§ͺ api-mac   πŸ§ͺ api-wpe
❌ πŸ§ͺ webkitpy   πŸ§ͺ ios-wk2-wpt βœ… πŸ›  wpe-cairo
  πŸ§ͺ api-ios   πŸ§ͺ mac-wk2 βœ… πŸ›  gtk
  πŸ›  tv   πŸ§ͺ mac-AS-debug-wk2   πŸ§ͺ gtk-wk2
βœ… πŸ›  tv-sim   πŸ§ͺ mac-wk2-stress   πŸ§ͺ api-gtk
  πŸ›  watch
βœ… πŸ›  πŸ§ͺ unsafe-merge βœ… πŸ›  watch-sim

@rr-codes rr-codes requested a review from cdumez as a code owner May 18, 2024 20:56
@rr-codes rr-codes self-assigned this May 18, 2024
@rr-codes rr-codes added the HTML Editing For bugs in HTML editing support (including designMode and contentEditable). label May 18, 2024
using ReplacementType = WebUnifiedTextReplacementSessionDataReplacementType;

WTF::UUID uuid;
ReplacementType replacementType;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit - might be good to specify an explicit initial value here to prevent UB.

@rr-codes rr-codes added the unsafe-merge-queue Applied to send a pull request to merge-queue, but skip building and testing label May 18, 2024
…methods to pass in a session type instead of separate parameters

https://bugs.webkit.org/show_bug.cgi?id=274356
rdar://128333023

Reviewed by Wenson Hsieh.

Work towards using more strongly typed objects instead of passing around UUIDs everywhere by
creating a new `WebUnifiedTextReplacementSessionData` type and using that, similar to the existing
`WebUnifiedTextReplacementContextData` type. This also has the advantage of being more expressive
with regards to optional-ness.

* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/UnifiedTextReplacement.serialization.in:
* Source/WebKit/Shared/WebUnifiedTextReplacementContextData.h:
* Source/WebKit/Shared/WebUnifiedTextReplacementSessionData.h: Copied from Source/WebKit/Shared/WebUnifiedTextReplacementContextData.h.
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::willBeginTextReplacementSession):
(WebKit::WebPageProxy::didBeginTextReplacementSession):
(WebKit::WebPageProxy::textReplacementSessionDidReceiveReplacements):
(WebKit::WebPageProxy::textReplacementSessionDidUpdateStateForReplacement):
(WebKit::WebPageProxy::didEndTextReplacementSession):
(WebKit::WebPageProxy::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebKit::WebPageProxy::textReplacementSessionDidReceiveEditAction):
(WebKit::WebPageProxy::addTextIndicatorStyleForID):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebPage/Cocoa/UnifiedTextReplacementController.mm:
(WebKit::UnifiedTextReplacementController::willBeginTextReplacementSession):
(WebKit::UnifiedTextReplacementController::didBeginTextReplacementSession):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveReplacements):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidUpdateStateForReplacement):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementSessionData::ReplacementType::PlainText>):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementSessionData::ReplacementType::RichText>):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveEditAction):
(WebKit::UnifiedTextReplacementController::textReplacementSessionPerformEditActionForPlainText):
(WebKit::UnifiedTextReplacementController::textReplacementSessionPerformEditActionForRichText):
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementType::PlainText>): Deleted.
(WebKit::UnifiedTextReplacementController::didEndTextReplacementSession<WebUnifiedTextReplacementType::RichText>): Deleted.
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::updateTextIndicatorStyleVisibilityForID):
(WebKit::WebPage::willBeginTextReplacementSession):
(WebKit::WebPage::didBeginTextReplacementSession):
(WebKit::WebPage::textReplacementSessionDidReceiveReplacements):
(WebKit::WebPage::textReplacementSessionDidUpdateStateForReplacement):
(WebKit::WebPage::didEndTextReplacementSession):
(WebKit::WebPage::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebKit::WebPage::textReplacementSessionDidReceiveEditAction):
* Source/WebKit/WebProcess/WebPage/UnifiedTextReplacementController.h:
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

Canonical link: https://commits.webkit.org/278965@main
@webkit-commit-queue
Copy link
Collaborator

Committed 278965@main (670f9c7): https://commits.webkit.org/278965@main

Reviewed commits have been landed. Closing PR #28760 and removing active labels.

@webkit-commit-queue webkit-commit-queue merged commit 670f9c7 into WebKit:main May 18, 2024
@webkit-commit-queue webkit-commit-queue removed the unsafe-merge-queue Applied to send a pull request to merge-queue, but skip building and testing label May 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HTML Editing For bugs in HTML editing support (including designMode and contentEditable).
Projects
None yet
4 participants