Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d497a4e16f25635feecb5b07e9cfa6e8bc4c07b7
      
https://github.com/WebKit/WebKit/commit/d497a4e16f25635feecb5b07e9cfa6e8bc4c07b7
  Author: Wenson Hsieh <[email protected]>
  Date:   2025-11-19 (Wed, 19 Nov 2025)

  Changed paths:
    M Source/WebKit/Shared/TextExtractionToStringConversion.cpp
    M Source/WebKit/Shared/TextExtractionToStringConversion.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.swift
    M Source/WebKit/UIProcess/API/Cocoa/_WKTextExtractionInternal.h
    M 
Source/WebKit/UIProcess/Cocoa/TextExtraction/WKWebView+TextExtraction.swift
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/TextExtractionTests.mm
    M Tools/WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm
    M Tools/WebKitTestRunner/cocoa/WKTextExtractionTestingHelpers.h

  Log Message:
  -----------
  [AutoFill Debugging] Refactor debug text extraction to return an extraction 
result object
https://bugs.webkit.org/show_bug.cgi?id=302791
rdar://165019791

Reviewed by Abrar Rahman Protyasha.

Currently, `-_debugTextWithConfiguration:completionHandler:` passes a string 
back to the completion
handler, representing rendered DOM content. For clients that need additional 
metadata, we introduce
a new version of this method that passes a `_WKTextExtractionResult` object 
back to the client which
contains additional data alongside text output.

For now, the only metadata we include is a flag indicating whether or not any 
text was filtered out.

Test: TextExtractionTests.FilterOptions

* Source/WebKit/Shared/TextExtractionToStringConversion.cpp:
(WebKit::TextExtractionAggregator::TextExtractionAggregator):
(WebKit::TextExtractionAggregator::~TextExtractionAggregator):
(WebKit::TextExtractionAggregator::create):
(WebKit::TextExtractionAggregator::filter):
(WebKit::TextExtractionAggregator::filterRecursive):
(WebKit::convertToText):
(WebKit::TextExtractionAggregator::filter const): Deleted.
(WebKit::TextExtractionAggregator::filterRecursive const): Deleted.
* Source/WebKit/Shared/TextExtractionToStringConversion.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _debugTextWithConfiguration:completionHandler:]):

Reimplement this in terms of 
`-_extractDebugTextWithConfiguration:completionHandler:`.

(-[WKWebView _extractDebugTextWithConfiguration:completionHandler:]):
(-[WKWebView _requestTextExtraction:completionHandler:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.mm:
(-[_WKTextExtractionResult initWithTextContent:filteredOutAnyText:]):
(-[_WKTextExtractionResult textContent]):

Add an object representing extraction results.

* Source/WebKit/UIProcess/API/Cocoa/_WKTextExtraction.swift:

Repurpose `WKTextExtractionResult` (currently, an internal Swift object) to be 
a privately-exposed
object representing debug text extraction output; refactor anything that 
previously used
`WKTextExtractionResult` to instead just take a `WKTextExtractionItem` 
representing the root item.

* Source/WebKit/UIProcess/API/Cocoa/_WKTextExtractionInternal.h:
* Source/WebKit/UIProcess/Cocoa/TextExtraction/WKWebView+TextExtraction.swift:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/TextExtractionTests.mm:
(-[WKWebView synchronouslyGetDebugText:]):
(-[WKWebView synchronouslyExtractDebugTextResult:]):
(TestWebKitAPI::TEST(TextExtractionTests, FilterOptions)):

Augment this test to also check `filteredOutAnyText`.

* Tools/WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm:
(WTR::UIScriptControllerCocoa::requestTextExtraction):
* Tools/WebKitTestRunner/cocoa/WKTextExtractionTestingHelpers.h:

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



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

Reply via email to