Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8c025b25b577af2f5489f1af12efa8da92eb5eb7
      
https://github.com/WebKit/WebKit/commit/8c025b25b577af2f5489f1af12efa8da92eb5eb7
  Author: Wenson Hsieh <wenson_hs...@apple.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    A 
LayoutTests/fast/events/touch/ios/long-press-on-link-in-ephemeral-session-expected.txt
    A 
LayoutTests/fast/events/touch/ios/long-press-on-link-in-ephemeral-session.html
    M LayoutTests/resources/ui-helper.js
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl
    M Tools/TestRunnerShared/UIScriptContext/UIScriptController.h
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm
    M Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h
    M Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm

  Log Message:
  -----------
  REGRESSION (268616@main): No context menu preview appears for data detected 
links in Notes
https://bugs.webkit.org/show_bug.cgi?id=266431
rdar://119524150

Reviewed by Megan Gardner.

Make a couple of minor adjustments to fix context menu previews for data 
detected links in HTML
Notes, after the changes in 268616@main. See below for more details.

Test: fast/events/touch/ios/long-press-on-link-in-ephemeral-session.html

* 
LayoutTests/fast/events/touch/ios/long-press-on-link-in-ephemeral-session-expected.txt:
 Added.
* 
LayoutTests/fast/events/touch/ios/long-press-on-link-in-ephemeral-session.html: 
Added.

Add a layout test to cover the changes in 264553@main, as well as the changes 
in this bug, by
verifying that in an ephemeral browsing session:

1. The context menu preview for an app store link is not full height (where 
"full height" is just
   represented by an arbitrary height cutoff of the preview platter view).
2. The context menu preview for a regular HTTP link is full height.

* LayoutTests/resources/ui-helper.js:
(window.UIHelper.contextMenuPreviewRect):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dataDetectionContextForPositionInformation:]):

Limit the logic to avoid showing previews in ephemeral browsing (or when 
advanced privacy is
enabled) to iTunes Store links only. This data detectors codepath is the 
default way to preview
links for `WKWebView` clients that don't otherwise provide a custom menu 
configuration (e.g.
Safari). As such, the changes in 268616@main actually caused links in ephemeral 
browsing sessions
outside of Safari to lose their previews. This patch restores the iTunes Store 
check to bring back
shipping behavior.

(-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]):

After we stopped using `UIContextMenuStyle` to show a compact menu for 
data-detected links, the
preview is now shown with a transparent background in Notes, since Notes makes 
their web view
transparent, such that the estimated background color is transparent black. 
This looks really ugly
on iOS in the context of the preview platter's background, since the text in 
the text indicator is
barely legible in light mode, on top of the backdrop filter.

To mitigate this, fall back to `+[UIColor systemBackgroundColor]` instead of 
transparent black for
text indicator previews, in the case where the estimated background color for 
the text indicator is
transparent black.

* Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:
(WTR::UIScriptController::contextMenuPreviewRect const):
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(swizzledAppStoreURL):
(WTR::TestController::cocoaPlatformInitialize):

Swizzle out `-[NSURL iTunesStoreURL]` to:
1. Make it work on iOS simulator, in the same way as it does on device (for the 
link in the new test).
2. Make it work in a consistent manner, to ensure stability when testing.

* Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h:
* Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::contextMenuPreviewRect const):

Add a new testing helper to retrieve the bounds of the context menu preview 
platter.

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to