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