[webkit-changes] [WebKit/WebKit] 76b535: [Intelligence Effects] Refactor WKIntelligenceText...

Richard Robinson noreply at github.com
Wed Jan 15 11:26:18 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 76b5355c58db6d0c468c6f334594f479b8a884d3
      https://github.com/WebKit/WebKit/commit/76b5355c58db6d0c468c6f334594f479b8a884d3
  Author: Richard Robinson <richard_robinson2 at apple.com>
  Date:   2025-01-15 (Wed, 15 Jan 2025)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h
    M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebKitSwift/WebKitSwift.h
    A Source/WebKit/WebKitSwift/WritingTools/IntelligenceTextEffectChunk.swift
    A Source/WebKit/WebKitSwift/WritingTools/IntelligenceTextEffectViewManager.swift
    M Source/WebKit/WebKitSwift/WritingTools/PlatformIntelligenceTextEffectView.swift
    A Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceReplacementTextEffectCoordinator.h
    A Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceReplacementTextEffectCoordinator.swift
    M Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceTextEffectCoordinator.h
    R Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceTextEffectCoordinator.swift
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WritingTools.mm

  Log Message:
  -----------
  [Intelligence Effects] Refactor WKIntelligenceTextEffectCoordinator to more easily support multiple strategies of applying effects
https://bugs.webkit.org/show_bug.cgi?id=285967
rdar://142937853

Reviewed by Abrar Rahman Protyasha.

Rewrite and proofreading perform replacements by repeatedly applying contiguous replacements to the text. However, Smart Reply replaces the entire text per each replacement.

To support this differing logic, the effect coordinator has its view logic extracted into a new type intended to be reused and composed into each type that conforms to the new
Coordinating protocol, instead of having a lot of conditional statements. A subsequent PR will create a new specialization of the protocol for smart replies.

* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView didBeginWritingToolsSession:contexts:]):
(-[WKWebView proofreadingSession:didReceiveSuggestions:processedRange:inContext:finished:]):
(-[WKWebView viewForIntelligenceTextEffectCoordinator:]):
(-[WKWebView intelligenceTextEffectCoordinator:rectsForProofreadingSuggestionsInRange:completion:]):
(-[WKWebView intelligenceTextEffectCoordinator:updateTextVisibilityForRange:visible:identifier:completion:]):
(-[WKWebView intelligenceTextEffectCoordinator:textPreviewsForRange:completion:]):
(-[WKWebView intelligenceTextEffectCoordinator:contentPreviewForRange:completion:]):
(-[WKWebView intelligenceTextEffectCoordinator:decorateReplacementsForRange:completion:]):
(-[WKWebView intelligenceTextEffectCoordinator:setSelectionForRange:completion:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h:
* Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebKitSwift/WebKitSwift.h:
* Source/WebKit/WebKitSwift/WritingTools/IntelligenceTextEffectChunk.swift: Added.
(range):
(IntelligenceTextEffectChunk.hash(into:)):
* Source/WebKit/WebKitSwift/WritingTools/IntelligenceTextEffectViewManager.swift: Added.
(IntelligenceTextEffectViewManager.source):
(IntelligenceTextEffectViewManager.effectView):
(IntelligenceTextEffectViewManager.activePonderingEffect):
(IntelligenceTextEffectViewManager.activeReplacementEffect):
(IntelligenceTextEffectViewManager.hasActiveEffects):
(IntelligenceTextEffectViewManager.setupViewIfNeeded):
(IntelligenceTextEffectViewManager.destroyViewIfNeeded):
(IntelligenceTextEffectViewManager.setActivePonderingEffect(_:)):
(IntelligenceTextEffectViewManager.setActiveReplacementEffect(_:)):
(IntelligenceTextEffectViewManager.hideEffects):
(IntelligenceTextEffectViewManager.showEffects):
(IntelligenceTextEffectViewManager.removeActiveEffects):
(IntelligenceTextEffectViewManager.updateActivePonderingEffect(_:)):
(IntelligenceTextEffectViewManager.reset):
* Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceReplacementTextEffectCoordinator.h: Copied from Source/WebKit/WebKitSwift/WebKitSwift.h.
* Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceReplacementTextEffectCoordinator.swift: Renamed from Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceTextEffectCoordinator.swift.
(contextRange):
(replacementQueue):
(onFlushCompletion):
(hasActiveEffects):
(characterDelta(forReceivedSuggestions:)):
(startAnimation(for:)):
(requestReplacement(withProcessedRange:finished:characterDelta:operation:)):
(flushReplacements):
(restoreSelection(_:)):
(hideEffects):
(showEffects):
(removeActiveEffects):
(startReplacementAnimation(using:)):
(reset):
(WKIntelligenceReplacementTextEffectCoordinator.textPreview(for:)):
(WKIntelligenceReplacementTextEffectCoordinator.updateTextChunkVisibility(_:visible:force:)):
(WKIntelligenceReplacementTextEffectCoordinator.updateTextChunkVisibility(_:visible:)):
(WKIntelligenceReplacementTextEffectCoordinator.performReplacementAndGeneratePreview(for:effect:remainder:)):
(WKIntelligenceReplacementTextEffectCoordinator.replacementEffectWillBegin(_:)):
(WKIntelligenceReplacementTextEffectCoordinator.flushRemainingReplacementsIfNeeded):
(WKIntelligenceReplacementTextEffectCoordinator.replacementEffectDidComplete(_:)):
(async(_:)):
(platformTextPreview(from:suggestionRects:)):
* Source/WebKit/WebKitSwift/WritingTools/WKIntelligenceTextEffectCoordinator.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WritingTools.mm:
(TEST(WritingTools, IntelligenceTextEffectCoordinatorDelegate_RectsForProofreadingSuggestionsInRange)):
(TEST(WritingTools, IntelligenceTextEffectCoordinatorDelegate_UpdateTextVisibilityForRange)):
(TEST(WritingTools, IntelligenceTextEffectCoordinatorDelegate_TextPreviewsForRange)):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list