Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 76b5355c58db6d0c468c6f334594f479b8a884d3
      
https://github.com/WebKit/WebKit/commit/76b5355c58db6d0c468c6f334594f479b8a884d3
  Author: Richard Robinson <[email protected]>
  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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to