[webkit-changes] [WebKit/WebKit] 09c498: Safari doesn't translate iframe content

Ryosuke Niwa noreply at github.com
Tue Mar 14 20:19:37 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 09c4983c5bd980390426e4b15d18f32457a0aabc
      https://github.com/WebKit/WebKit/commit/09c4983c5bd980390426e4b15d18f32457a0aabc
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2023-03-14 (Tue, 14 Mar 2023)

  Changed paths:
    M Source/WebCore/editing/TextManipulationController.cpp
    M Source/WebCore/editing/TextManipulationControllerManipulationFailure.h
    M Source/WebCore/editing/TextManipulationItem.h
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm

  Log Message:
  -----------
  Safari doesn't translate iframe content
https://bugs.webkit.org/show_bug.cgi?id=253353
<rdar://59693219>

Reviewed by Darin Adler, Sihui Liu and Wenson Hsieh.

Optionally translate contents within each frame when includeSubframes is set in
_WKTextManipulationConfiguration. To do this, each TextManipulationItem and
TextManipulationControllerManipulationFailure are augmented with a frame identifier.
These IDs are serialized with "-" as delimiter for _WKTextManipulationItem.

_WKTextManipulationItem now exposes two new booleans: isSubframe and isCrossSiteSubframe.
These two booleans are ignored when completing items.

WebPage::startTextManipulations now invokes startTextManipulationForFrame on each frame.
We also detect when a new frame is inserted in WebPage::didCommitLoad.

Finally, in WebPage::completeTextManipulation, we aggregate and complete items per frame.

* Source/WebCore/editing/TextManipulationController.cpp:
(WebCore::TextManipulationController::addItem): Add the frame identifier.
(WebCore::TextManipulationController::completeManipulation): Check the frame identifier.

* Source/WebCore/editing/TextManipulationControllerManipulationFailure.h:
* Source/WebCore/editing/TextManipulationItem.h:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _startTextManipulationsWithConfiguration:completion:]):
(coreTextManipulationItemIdentifierFromString):
(-[WKWebView _completeTextManipulation:completion:]):
(wkTextManipulationErrors):
(-[WKWebView _completeTextManipulationForItems:completion:]):

* Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm:
(-[_WKTextManipulationItem initWithIdentifier:tokens:isSubframe:isCrossSiteSubframe:]): Added.

* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::startTextManipulations):
(WebKit::WebPage::startTextManipulationForFrame): Extracted out of startTextManipulations.
(WebKit::WebPage::completeTextManipulation): Complete per frame and aggregate the results.

* Source/WebKit/WebProcess/WebPage/WebPage.h:

* Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:
(TextManipulation.StartTextManipulationDoesNotFindContentInIframeIfIncludeSubframeIsNotSet): Added.
(TextManipulation.StartTextManipulationFindsContentInIframeIfIncludeSubframeIsSet): Added.
(TextManipulation.StartTextManipulationFindsContentInIframeInsertedLater): Added.
(TextManipulation.CompleteTextManipulationReplaceContentInIframe): Added.
(TextManipulation.CompleteTextManipulationFailWhenContentIsChangedInIframe): Added.

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




More information about the webkit-changes mailing list