<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[277453] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/277453">277453</a></dd>
<dt>Author</dt> <dd>timothy_horton@apple.com</dd>
<dt>Date</dt> <dd>2021-05-13 14:57:45 -0700 (Thu, 13 May 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add textIndicator bounce for AppHighlights on scroll.
https://bugs.webkit.org/show_bug.cgi?id=225727

Reviewed by Tim Horton.

* Modules/highlight/AppHighlightStorage.cpp:
(WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):
* loader/EmptyClients.cpp:
(WebCore::EmptyChromeClient::setTextIndicator const):
* loader/EmptyClients.h:
* page/ChromeClient.h:
* page/TextIndicator.h:
* page/cocoa/WebTextIndicatorLayer.h:
* page/cocoa/WebTextIndicatorLayer.mm:
(-[WebTextIndicatorLayer initWithFrame:textIndicator:margin:offset:]):
(createBounceAnimation):
(-[WebTextIndicatorLayer _animationDuration]):
* page/mac/TextIndicatorWindow.h:
* page/mac/TextIndicatorWindow.mm:
(WebCore::TextIndicatorWindow::~TextIndicatorWindow):
(WebCore::TextIndicatorWindow::clearTextIndicator):
(WebCore::TextIndicatorWindow::setTextIndicator):

Use factored out textIndicator code to add a bounce to an appHighlight
when it is scrolled to.

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(-[WKWindowVisibilityObserver _dictionaryLookupPopoverWillClose:]):
(WebKit::WebViewImpl::setTextIndicator):
(WebKit::WebViewImpl::clearTextIndicatorWithAnimation):
(WebKit::WebViewImpl::dismissContentRelativeChildWindowsWithAnimationFromViewOnly):
(WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setTextIndicator):
(WebKit::WebPageProxy::clearTextIndicator):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::setTextIndicator):
(WebKit::PageClientImpl::clearTextIndicator):
(WebKit::PageClientImpl::setTextIndicatorAnimationProgress):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setUpTextIndicator:]):
(-[WKContentView clearTextIndicator:]):
(-[WKContentView setTextIndicatorAnimationProgress:]):
(-[WKContentView teardownTextIndicatorLayer]):
(-[WKContentView startFadeOut]):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::setTextIndicator):
(WebKit::PageClientImpl::clearTextIndicator):
(WebKit::PageClientImpl::didPerformDictionaryLookup):
* UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController _animationControllerForText]):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::setTextIndicator const):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::updateFindIndicator):

* WebCoreSupport/WebChromeClient.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleshighlightAppHighlightStoragecpp">trunk/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientscpp">trunk/Source/WebCore/loader/EmptyClients.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientsh">trunk/Source/WebCore/loader/EmptyClients.h</a></li>
<li><a href="#trunkSourceWebCorepageChromeClienth">trunk/Source/WebCore/page/ChromeClient.h</a></li>
<li><a href="#trunkSourceWebCorepageTextIndicatorh">trunk/Source/WebCore/page/TextIndicator.h</a></li>
<li><a href="#trunkSourceWebCorepagecocoaWebTextIndicatorLayerh">trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h</a></li>
<li><a href="#trunkSourceWebCorepagecocoaWebTextIndicatorLayermm">trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm</a></li>
<li><a href="#trunkSourceWebCorepagemacTextIndicatorWindowh">trunk/Source/WebCore/page/mac/TextIndicatorWindow.h</a></li>
<li><a href="#trunkSourceWebCorepagemacTextIndicatorWindowmm">trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWebViewImplh">trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessCocoaWebViewImplmm">trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessPageClienth">trunk/Source/WebKit/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxycpp">trunk/Source/WebKit/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessWebPageProxyh">trunk/Source/WebKit/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosPageClientImplIOSh">trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosPageClientImplIOSmm">trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKContentViewInteractionh">trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessiosWKContentViewInteractionmm">trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacPageClientImplMach">trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacPageClientImplMacmm">trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessmacWKImmediateActionControllermm">trunk/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebCoreSupportWebChromeClienth">trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageFindControllercpp">trunk/Source/WebKit/WebProcess/WebPage/FindController.cpp</a></li>
<li><a href="#trunkSourceWebKitLegacymacChangeLog">trunk/Source/WebKitLegacy/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebChromeClienth">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebCoreSupportWebChromeClientmm">trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebHTMLViewmm">trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebImmediateActionControllermm">trunk/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebViewmm">trunk/Source/WebKitLegacy/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitLegacymacWebViewWebViewInternalh">trunk/Source/WebKitLegacy/mac/WebView/WebViewInternal.h</a></li>
<li><a href="#trunkSourceWebKitLegacywinChangeLog">trunk/Source/WebKitLegacy/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitLegacywinWebCoreSupportWebChromeClienth">trunk/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/ChangeLog      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2021-05-13  Megan Gardner  <megan_gardner@apple.com>
+
+        Add textIndicator bounce for AppHighlights on scroll.
+        https://bugs.webkit.org/show_bug.cgi?id=225727
+
+        Reviewed by Tim Horton.
+
+        * Modules/highlight/AppHighlightStorage.cpp:
+        (WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):
+        * loader/EmptyClients.cpp:
+        (WebCore::EmptyChromeClient::setTextIndicator const):
+        * loader/EmptyClients.h:
+        * page/ChromeClient.h:
+        * page/TextIndicator.h:
+        * page/cocoa/WebTextIndicatorLayer.h:
+        * page/cocoa/WebTextIndicatorLayer.mm:
+        (-[WebTextIndicatorLayer initWithFrame:textIndicator:margin:offset:]):
+        (createBounceAnimation):
+        (-[WebTextIndicatorLayer _animationDuration]):
+        * page/mac/TextIndicatorWindow.h:
+        * page/mac/TextIndicatorWindow.mm:
+        (WebCore::TextIndicatorWindow::~TextIndicatorWindow):
+        (WebCore::TextIndicatorWindow::clearTextIndicator):
+        (WebCore::TextIndicatorWindow::setTextIndicator):
+
</ins><span class="cx"> 2021-05-13  Aditya Keerthi  <akeerthi@apple.com>
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r276945): [iOS] Focus rings are too large
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleshighlightAppHighlightStoragecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include "AppHighlight.h"
</span><span class="cx"> #include "AppHighlightRangeData.h"
</span><span class="cx"> #include "Chrome.h"
</span><ins>+#include "ChromeClient.h"
</ins><span class="cx"> #include "Document.h"
</span><span class="cx"> #include "DocumentMarkerController.h"
</span><span class="cx"> #include "Editor.h"
</span><span class="lines">@@ -40,6 +41,7 @@
</span><span class="cx"> #include "RenderedDocumentMarker.h"
</span><span class="cx"> #include "SimpleRange.h"
</span><span class="cx"> #include "StaticRange.h"
</span><ins>+#include "TextIndicator.h"
</ins><span class="cx"> #include "TextIterator.h"
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -260,8 +262,13 @@
</span><span class="cx">     
</span><span class="cx">     strongDocument->appHighlightRegister().addAppHighlight(StaticRange::create(*range));
</span><span class="cx">     
</span><del>-    if (scroll == ScrollToHighlight::Yes)
</del><ins>+    if (scroll == ScrollToHighlight::Yes) {
+        auto textIndicator = TextIndicator::createWithRange(range.value(), { TextIndicatorOption::DoNotClipToVisibleRect }, WebCore::TextIndicatorPresentationTransition::Bounce);
+        if (textIndicator)
+            m_document->page()->chrome().client().setTextIndicator(textIndicator->data());
+        
</ins><span class="cx">         TemporarySelectionChange selectionChange(*strongDocument, { range.value() }, { TemporarySelectionOption::RevealSelection, TemporarySelectionOption::SmoothScroll, TemporarySelectionOption::OverrideSmoothScrollFeatureEnablment });
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.cpp (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.cpp     2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/loader/EmptyClients.cpp        2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -555,6 +555,10 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void EmptyChromeClient::setTextIndicator(const TextIndicatorData&) const
+{
+}
+
</ins><span class="cx"> DisplayRefreshMonitorFactory* EmptyChromeClient::displayRefreshMonitorFactory() const
</span><span class="cx"> {
</span><span class="cx">     return EmptyDisplayRefreshMonitorFactory::sharedEmptyDisplayRefreshMonitorFactory();
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.h       2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/loader/EmptyClients.h  2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -149,6 +149,8 @@
</span><span class="cx">     void storeAppHighlight(AppHighlight&&) const final;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    void setTextIndicator(const TextIndicatorData&) const final;
+
</ins><span class="cx">     DisplayRefreshMonitorFactory* displayRefreshMonitorFactory() const final;
</span><span class="cx"> 
</span><span class="cx">     void runOpenPanel(Frame&, FileChooser&) final;
</span></span></pre></div>
<a id="trunkSourceWebCorepageChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ChromeClient.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ChromeClient.h 2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/page/ChromeClient.h    2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -125,6 +125,7 @@
</span><span class="cx"> struct GraphicsDeviceAdapter;
</span><span class="cx"> struct MockWebAuthenticationConfiguration;
</span><span class="cx"> struct ShareDataWithParsedURL;
</span><ins>+struct TextIndicatorData;
</ins><span class="cx"> struct ViewportArguments;
</span><span class="cx"> struct WindowFeatures;
</span><span class="cx"> 
</span><span class="lines">@@ -315,6 +316,8 @@
</span><span class="cx">     virtual void storeAppHighlight(WebCore::AppHighlight&&) const = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    virtual void setTextIndicator(const TextIndicatorData&) const = 0;
+
</ins><span class="cx">     virtual void runOpenPanel(Frame&, FileChooser&) = 0;
</span><span class="cx">     virtual void showShareSheet(ShareDataWithParsedURL&, WTF::CompletionHandler<void(bool)>&& callback) { callback(false); }
</span><span class="cx">     virtual void showContactPicker(const ContactsRequestData&, WTF::CompletionHandler<void(Optional<Vector<ContactInfo>>&&)>&& callback) { callback(WTF::nullopt); }
</span></span></pre></div>
<a id="trunkSourceWebCorepageTextIndicatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/TextIndicator.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/TextIndicator.h        2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/page/TextIndicator.h   2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include <wtf/EnumTraits.h>
</span><span class="cx"> #include <wtf/OptionSet.h>
</span><span class="cx"> #include <wtf/RefCounted.h>
</span><ins>+#include <wtf/Seconds.h>
</ins><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -39,6 +40,25 @@
</span><span class="cx"> 
</span><span class="cx"> struct SimpleRange;
</span><span class="cx"> 
</span><ins>+constexpr float dropShadowBlurRadius = 2;
+constexpr float rimShadowBlurRadius = 1;
+constexpr Seconds bounceAnimationDuration = 0.12_s;
+constexpr Seconds timeBeforeFadeStarts = bounceAnimationDuration + 0.2_s;
+constexpr float midBounceScale = 1.25;
+
+enum class TextIndicatorLifetime : uint8_t {
+    // The TextIndicator should indicate the text until dismissed.
+    Permanent,
+
+    // The TextIndicator should briefly indicate the text and then automatically dismiss.
+    Temporary
+};
+
+enum class TextIndicatorDismissalAnimation : uint8_t {
+    None,
+    FadeOut
+};
+
</ins><span class="cx"> // FIXME: Move PresentationTransition to TextIndicatorWindow, because it's about presentation.
</span><span class="cx"> enum class TextIndicatorPresentationTransition : uint8_t {
</span><span class="cx">     None,
</span></span></pre></div>
<a id="trunkSourceWebCorepagecocoaWebTextIndicatorLayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h  2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h     2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #import <wtf/RetainPtr.h>
</span><span class="cx"> #import <wtf/RunLoop.h>
</span><span class="cx"> 
</span><del>-@interface WebTextIndicatorLayer : CALayer {
</del><ins>+WEBCORE_EXPORT @interface WebTextIndicatorLayer : CALayer {
</ins><span class="cx">     RefPtr<WebCore::TextIndicator> _textIndicator;
</span><span class="cx">     RetainPtr<NSArray> _bounceLayers;
</span><span class="cx">     CGSize _margin;
</span><span class="lines">@@ -53,3 +53,4 @@
</span><span class="cx"> @property (nonatomic, getter=isFadingOut) BOOL fadingOut;
</span><span class="cx"> 
</span><span class="cx"> @end
</span><ins>+
</ins></span></pre></div>
<a id="trunkSourceWebCorepagecocoaWebTextIndicatorLayermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm 2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm    2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #import "GraphicsContext.h"
</span><span class="cx"> #import "PathUtilities.h"
</span><span class="cx"> #import "TextIndicator.h"
</span><ins>+#import "TextIndicatorWindow.h"
</ins><span class="cx"> #import "WebActionDisablingCALayerDelegate.h"
</span><span class="cx"> #import <pal/spi/cg/CoreGraphicsSPI.h>
</span><span class="cx"> #import <pal/spi/cocoa/QuartzCoreSPI.h>
</span><span class="lines">@@ -38,19 +39,14 @@
</span><span class="cx"> #import <pal/spi/cocoa/NSColorSPI.h>
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-constexpr CFTimeInterval bounceAnimationDuration = 0.12;
</del><span class="cx"> constexpr CFTimeInterval bounceWithCrossfadeAnimationDuration = 0.3;
</span><span class="cx"> constexpr CFTimeInterval fadeInAnimationDuration = 0.15;
</span><del>-constexpr CFTimeInterval timeBeforeFadeStarts = bounceAnimationDuration + 0.2;
</del><span class="cx"> constexpr CFTimeInterval fadeOutAnimationDuration = 0.3;
</span><span class="cx"> 
</span><del>-constexpr CGFloat midBounceScale = 1.25;
</del><span class="cx"> constexpr CGFloat borderWidth = 0;
</span><span class="cx"> constexpr CGFloat cornerRadius = 0;
</span><span class="cx"> constexpr CGFloat dropShadowOffsetX = 0;
</span><span class="cx"> constexpr CGFloat dropShadowOffsetY = 1;
</span><del>-constexpr CGFloat dropShadowBlurRadius = 2;
-constexpr CGFloat rimShadowBlurRadius = 1;
</del><span class="cx"> 
</span><span class="cx"> constexpr NSString * const textLayerKey = @"TextLayer";
</span><span class="cx"> constexpr NSString * const dropShadowLayerKey = @"DropShadowLayer";
</span><span class="lines">@@ -132,13 +128,12 @@
</span><span class="cx">     if (!(self = [super init]))
</span><span class="cx">         return nil;
</span><span class="cx">     
</span><ins>+    self.anchorPoint = CGPointZero;
</ins><span class="cx">     self.frame = frame;
</span><span class="cx"> 
</span><span class="cx">     _textIndicator = &textIndicator;
</span><span class="cx">     _margin = margin;
</span><span class="cx"> 
</span><del>-    self.anchorPoint = CGPointZero;
-
</del><span class="cx">     RefPtr<WebCore::NativeImage> contentsImage;
</span><span class="cx">     WebCore::FloatSize contentsImageLogicalSize { 1, 1 };
</span><span class="cx">     if (auto* contentImage = _textIndicator->contentImage()) {
</span><span class="lines">@@ -192,7 +187,7 @@
</span><span class="cx">         RetainPtr<CALayer> dropShadowLayer = adoptNS([[CALayer alloc] init]);
</span><span class="cx">         [dropShadowLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
</span><span class="cx">         [dropShadowLayer setShadowColor:dropShadowColor.get()];
</span><del>-        [dropShadowLayer setShadowRadius:dropShadowBlurRadius];
</del><ins>+        [dropShadowLayer setShadowRadius:WebCore::dropShadowBlurRadius];
</ins><span class="cx">         [dropShadowLayer setShadowOffset:CGSizeMake(dropShadowOffsetX, dropShadowOffsetY)];
</span><span class="cx">         [dropShadowLayer setShadowPath:translatedPath.platformPath()];
</span><span class="cx">         [dropShadowLayer setShadowOpacity:1];
</span><span class="lines">@@ -204,7 +199,7 @@
</span><span class="cx">         [rimShadowLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
</span><span class="cx">         [rimShadowLayer setFrame:yellowHighlightRect];
</span><span class="cx">         [rimShadowLayer setShadowColor:rimShadowColor.get()];
</span><del>-        [rimShadowLayer setShadowRadius:rimShadowBlurRadius];
</del><ins>+        [rimShadowLayer setShadowRadius:WebCore::rimShadowBlurRadius];
</ins><span class="cx">         [rimShadowLayer setShadowPath:translatedPath.platformPath()];
</span><span class="cx">         [rimShadowLayer setShadowOffset:CGSizeZero];
</span><span class="cx">         [rimShadowLayer setShadowOpacity:1];
</span><span class="lines">@@ -245,7 +240,7 @@
</span><span class="cx">     RetainPtr<CAKeyframeAnimation> bounceAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
</span><span class="cx">     [bounceAnimation setValues:@[
</span><span class="cx">         [NSValue valueWithCATransform3D:CATransform3DIdentity],
</span><del>-        [NSValue valueWithCATransform3D:CATransform3DMakeScale(midBounceScale, midBounceScale, 1)],
</del><ins>+        [NSValue valueWithCATransform3D:CATransform3DMakeScale(WebCore::midBounceScale, WebCore::midBounceScale, 1)],
</ins><span class="cx">         [NSValue valueWithCATransform3D:CATransform3DIdentity]
</span><span class="cx">         ]];
</span><span class="cx">     [bounceAnimation setDuration:duration];
</span><span class="lines">@@ -294,7 +289,7 @@
</span><span class="cx">     if ([self indicatorWantsBounce:*_textIndicator]) {
</span><span class="cx">         if (indicatorWantsContentCrossfade(*_textIndicator))
</span><span class="cx">             return bounceWithCrossfadeAnimationDuration;
</span><del>-        return bounceAnimationDuration;
</del><ins>+        return WebCore::bounceAnimationDuration.value();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return fadeInAnimationDuration;
</span></span></pre></div>
<a id="trunkSourceWebCorepagemacTextIndicatorWindowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/mac/TextIndicatorWindow.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/TextIndicatorWindow.h      2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/page/mac/TextIndicatorWindow.h 2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -36,19 +36,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-enum class TextIndicatorWindowLifetime : uint8_t {
-    // The TextIndicator should indicate the text until dismissed.
-    Permanent,
-
-    // The TextIndicator should briefly indicate the text and then automatically dismiss.
-    Temporary
-};
-
-enum class TextIndicatorWindowDismissalAnimation : uint8_t {
-    None,
-    FadeOut
-};
-
</del><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> 
</span><span class="cx"> class TextIndicatorWindow {
</span><span class="lines">@@ -59,8 +46,8 @@
</span><span class="cx">     WEBCORE_EXPORT explicit TextIndicatorWindow(NSView *);
</span><span class="cx">     WEBCORE_EXPORT ~TextIndicatorWindow();
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void setTextIndicator(Ref<TextIndicator>, CGRect contentRect, TextIndicatorWindowLifetime);
-    WEBCORE_EXPORT void clearTextIndicator(TextIndicatorWindowDismissalAnimation);
</del><ins>+    WEBCORE_EXPORT void setTextIndicator(Ref<TextIndicator>, CGRect contentRect, TextIndicatorLifetime);
+    WEBCORE_EXPORT void clearTextIndicator(TextIndicatorDismissalAnimation);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void setAnimationProgress(float);
</span><span class="cx"> 
</span><span class="lines">@@ -81,3 +68,5 @@
</span><span class="cx"> #endif // PLATFORM(MAC)
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
+
</ins></span></pre></div>
<a id="trunkSourceWebCorepagemacTextIndicatorWindowmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm     2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm        2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -38,12 +38,6 @@
</span><span class="cx"> #import <pal/spi/cocoa/NSColorSPI.h>
</span><span class="cx"> #import <pal/spi/cocoa/QuartzCoreSPI.h>
</span><span class="cx"> 
</span><del>-const CFTimeInterval bounceAnimationDuration = 0.12;
-const CFTimeInterval timeBeforeFadeStarts = bounceAnimationDuration + 0.2;
-
-const CGFloat midBounceScale = 1.25;
-const CGFloat dropShadowBlurRadius = 2;
-
</del><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -56,7 +50,7 @@
</span><span class="cx"> 
</span><span class="cx"> TextIndicatorWindow::~TextIndicatorWindow()
</span><span class="cx"> {
</span><del>-    clearTextIndicator(TextIndicatorWindowDismissalAnimation::FadeOut);
</del><ins>+    clearTextIndicator(WebCore::TextIndicatorDismissalAnimation::FadeOut);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TextIndicatorWindow::setAnimationProgress(float progress)
</span><span class="lines">@@ -67,7 +61,7 @@
</span><span class="cx">     [m_textIndicatorLayer setAnimationProgress:progress];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TextIndicatorWindow::clearTextIndicator(TextIndicatorWindowDismissalAnimation animation)
</del><ins>+void TextIndicatorWindow::clearTextIndicator(WebCore::TextIndicatorDismissalAnimation animation)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr<TextIndicator> textIndicator = WTFMove(m_textIndicator);
</span><span class="cx"> 
</span><span class="lines">@@ -74,7 +68,7 @@
</span><span class="cx">     if ([m_textIndicatorLayer isFadingOut])
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (textIndicator && [m_textIndicatorLayer indicatorWantsManualAnimation:*textIndicator] && [m_textIndicatorLayer hasCompletedAnimation] && animation == TextIndicatorWindowDismissalAnimation::FadeOut) {
</del><ins>+    if (textIndicator && [m_textIndicatorLayer indicatorWantsManualAnimation:*textIndicator] && [m_textIndicatorLayer hasCompletedAnimation] && animation == WebCore::TextIndicatorDismissalAnimation::FadeOut) {
</ins><span class="cx">         startFadeOut();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -82,7 +76,7 @@
</span><span class="cx">     closeWindow();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TextIndicatorWindow::setTextIndicator(Ref<TextIndicator> textIndicator, CGRect textBoundingRectInScreenCoordinates, TextIndicatorWindowLifetime lifetime)
</del><ins>+void TextIndicatorWindow::setTextIndicator(Ref<TextIndicator> textIndicator, CGRect textBoundingRectInScreenCoordinates, TextIndicatorLifetime lifetime)
</ins><span class="cx"> {
</span><span class="cx">     if (m_textIndicator == textIndicator.ptr())
</span><span class="cx">         return;
</span><span class="lines">@@ -95,8 +89,8 @@
</span><span class="cx">     CGFloat verticalMargin = dropShadowBlurRadius * 2 + TextIndicator::defaultVerticalMargin;
</span><span class="cx">     
</span><span class="cx">     if ([m_textIndicatorLayer indicatorWantsBounce:*m_textIndicator]) {
</span><del>-        horizontalMargin = std::max(horizontalMargin, textBoundingRectInScreenCoordinates.size.width * (midBounceScale - 1) + horizontalMargin);
-        verticalMargin = std::max(verticalMargin, textBoundingRectInScreenCoordinates.size.height * (midBounceScale - 1) + verticalMargin);
</del><ins>+        horizontalMargin = std::max(horizontalMargin, textBoundingRectInScreenCoordinates.size.width * (WebCore::midBounceScale - 1) + horizontalMargin);
+        verticalMargin = std::max(verticalMargin, textBoundingRectInScreenCoordinates.size.height * (WebCore::midBounceScale - 1) + verticalMargin);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     horizontalMargin = CGCeiling(horizontalMargin);
</span><span class="lines">@@ -125,8 +119,8 @@
</span><span class="cx">     if (m_textIndicator->presentationTransition() != TextIndicatorPresentationTransition::None)
</span><span class="cx">         [m_textIndicatorLayer present];
</span><span class="cx"> 
</span><del>-    if (lifetime == TextIndicatorWindowLifetime::Temporary)
-        m_temporaryTextIndicatorTimer.startOneShot(1_s * timeBeforeFadeStarts);
</del><ins>+    if (lifetime == TextIndicatorLifetime::Temporary)
+        m_temporaryTextIndicatorTimer.startOneShot(WebCore::timeBeforeFadeStarts);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TextIndicatorWindow::closeWindow()
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog    2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/ChangeLog       2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -1,3 +1,50 @@
</span><ins>+2021-05-13  Megan Gardner  <megan_gardner@apple.com>
+
+        Add textIndicator bounce for AppHighlights on scroll.
+        https://bugs.webkit.org/show_bug.cgi?id=225727
+
+        Reviewed by Tim Horton.
+
+        Use factored out textIndicator code to add a bounce to an appHighlight
+        when it is scrolled to.
+
+        * UIProcess/Cocoa/WebViewImpl.h:
+        * UIProcess/Cocoa/WebViewImpl.mm:
+        (-[WKWindowVisibilityObserver _dictionaryLookupPopoverWillClose:]):
+        (WebKit::WebViewImpl::setTextIndicator):
+        (WebKit::WebViewImpl::clearTextIndicatorWithAnimation):
+        (WebKit::WebViewImpl::dismissContentRelativeChildWindowsWithAnimationFromViewOnly):
+        (WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):
+        * UIProcess/PageClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::setTextIndicator):
+        (WebKit::WebPageProxy::clearTextIndicator):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/ios/PageClientImplIOS.h:
+        * UIProcess/ios/PageClientImplIOS.mm:
+        (WebKit::PageClientImpl::setTextIndicator):
+        (WebKit::PageClientImpl::clearTextIndicator):
+        (WebKit::PageClientImpl::setTextIndicatorAnimationProgress):
+        * UIProcess/ios/WKContentViewInteraction.h:
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView setUpTextIndicator:]):
+        (-[WKContentView clearTextIndicator:]):
+        (-[WKContentView setTextIndicatorAnimationProgress:]):
+        (-[WKContentView teardownTextIndicatorLayer]):
+        (-[WKContentView startFadeOut]):
+        * UIProcess/mac/PageClientImplMac.h:
+        * UIProcess/mac/PageClientImplMac.mm:
+        (WebKit::PageClientImpl::setTextIndicator):
+        (WebKit::PageClientImpl::clearTextIndicator):
+        (WebKit::PageClientImpl::didPerformDictionaryLookup):
+        * UIProcess/mac/WKImmediateActionController.mm:
+        (-[WKImmediateActionController _animationControllerForText]):
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::setTextIndicator const):
+        * WebProcess/WebCoreSupport/WebChromeClient.h:
+        * WebProcess/WebPage/FindController.cpp:
+        (WebKit::FindController::updateFindIndicator):
+
</ins><span class="cx"> 2021-05-13  Sam Weinig  <weinig@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Split pixel buffer format data out into a new PixelBufferFormat struct
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessCocoaWebViewImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h        2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h   2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -411,8 +411,8 @@
</span><span class="cx"> 
</span><span class="cx">     void preferencesDidChange();
</span><span class="cx"> 
</span><del>-    void setTextIndicator(WebCore::TextIndicator&, WebCore::TextIndicatorWindowLifetime = WebCore::TextIndicatorWindowLifetime::Permanent);
-    void clearTextIndicatorWithAnimation(WebCore::TextIndicatorWindowDismissalAnimation);
</del><ins>+    void setTextIndicator(WebCore::TextIndicator&, WebCore::TextIndicatorLifetime = WebCore::TextIndicatorLifetime::Permanent);
+    void clearTextIndicatorWithAnimation(WebCore::TextIndicatorDismissalAnimation);
</ins><span class="cx">     void setTextIndicatorAnimationProgress(float);
</span><span class="cx">     void dismissContentRelativeChildWindowsFromViewOnly();
</span><span class="cx">     void dismissContentRelativeChildWindowsWithAnimation(bool);
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessCocoaWebViewImplmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm       2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm  2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -423,7 +423,7 @@
</span><span class="cx"> #if !ENABLE(REVEAL)
</span><span class="cx"> - (void)_dictionaryLookupPopoverWillClose:(NSNotification *)notification
</span><span class="cx"> {
</span><del>-    _impl->clearTextIndicatorWithAnimation(WebCore::TextIndicatorWindowDismissalAnimation::None);
</del><ins>+    _impl->clearTextIndicatorWithAnimation(WebCore::TextIndicatorDismissalAnimation::None);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -3495,7 +3495,7 @@
</span><span class="cx">         updateWindowAndViewFrames();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebViewImpl::setTextIndicator(WebCore::TextIndicator& textIndicator, WebCore::TextIndicatorWindowLifetime lifetime)
</del><ins>+void WebViewImpl::setTextIndicator(WebCore::TextIndicator& textIndicator, WebCore::TextIndicatorLifetime lifetime)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_textIndicatorWindow)
</span><span class="cx">         m_textIndicatorWindow = makeUnique<WebCore::TextIndicatorWindow>(m_view.getAutoreleased());
</span><span class="lines">@@ -3504,7 +3504,7 @@
</span><span class="cx">     m_textIndicatorWindow->setTextIndicator(textIndicator, NSRectToCGRect(textBoundingRectInScreenCoordinates), lifetime);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebViewImpl::clearTextIndicatorWithAnimation(WebCore::TextIndicatorWindowDismissalAnimation animation)
</del><ins>+void WebViewImpl::clearTextIndicatorWithAnimation(WebCore::TextIndicatorDismissalAnimation animation)
</ins><span class="cx"> {
</span><span class="cx">     if (m_textIndicatorWindow)
</span><span class="cx">         m_textIndicatorWindow->clearTextIndicator(animation);
</span><span class="lines">@@ -3527,7 +3527,7 @@
</span><span class="cx">     // Calling _clearTextIndicatorWithAnimation here will win out over the animated clear in dismissContentRelativeChildWindowsFromViewOnly.
</span><span class="cx">     // We can't invert these because clients can override (and have overridden) _dismissContentRelativeChildWindows, so it needs to be called.
</span><span class="cx">     // For this same reason, this can't be moved to WebViewImpl without care.
</span><del>-    clearTextIndicatorWithAnimation(animate ? WebCore::TextIndicatorWindowDismissalAnimation::FadeOut : WebCore::TextIndicatorWindowDismissalAnimation::None);
</del><ins>+    clearTextIndicatorWithAnimation(animate ? WebCore::TextIndicatorDismissalAnimation::FadeOut : WebCore::TextIndicatorDismissalAnimation::None);
</ins><span class="cx">     [m_view _web_dismissContentRelativeChildWindows];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3544,7 +3544,7 @@
</span><span class="cx">             [[getDDActionsManagerClass() sharedManager] requestBubbleClosureUnanchorOnFailure:YES];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    clearTextIndicatorWithAnimation(WebCore::TextIndicatorWindowDismissalAnimation::FadeOut);
</del><ins>+    clearTextIndicatorWithAnimation(WebCore::TextIndicatorDismissalAnimation::FadeOut);
</ins><span class="cx"> 
</span><span class="cx">     [m_immediateActionController dismissContentRelativeChildWindows];
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/PageClient.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/PageClient.h       2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/PageClient.h  2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -106,8 +106,8 @@
</span><span class="cx"> enum class MouseEventPolicy : uint8_t;
</span><span class="cx"> enum class RouteSharingPolicy : uint8_t;
</span><span class="cx"> enum class ScrollbarStyle : uint8_t;
</span><del>-enum class TextIndicatorWindowLifetime : uint8_t;
-enum class TextIndicatorWindowDismissalAnimation : uint8_t;
</del><ins>+enum class TextIndicatorLifetime : uint8_t;
+enum class TextIndicatorDismissalAnimation : uint8_t;
</ins><span class="cx"> enum class DOMPasteAccessResponse : uint8_t;
</span><span class="cx"> 
</span><span class="cx"> struct AppHighlight;
</span><span class="lines">@@ -385,8 +385,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorWindowLifetime) = 0;
-    virtual void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) = 0;
</del><ins>+    virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime) = 0;
+    virtual void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation) = 0;
</ins><span class="cx">     virtual void setTextIndicatorAnimationProgress(float) = 0;
</span><span class="cx">     
</span><span class="cx">     virtual void didPerformDictionaryLookup(const WebCore::DictionaryPopupInfo&) = 0;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -218,7 +218,6 @@
</span><span class="cx"> #include <WebCore/AttributedString.h>
</span><span class="cx"> #include <WebCore/RunLoopObserver.h>
</span><span class="cx"> #include <WebCore/SystemBattery.h>
</span><del>-#include <WebCore/TextIndicatorWindow.h>
</del><span class="cx"> #include <WebCore/VersionChecks.h>
</span><span class="cx"> #include <wtf/MachSendRight.h>
</span><span class="cx"> #include <wtf/cocoa/Entitlements.h>
</span><span class="lines">@@ -6534,7 +6533,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Make TextIndicatorWindow a platform-independent presentational thing ("TextIndicatorPresentation"?).
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    pageClient().setTextIndicator(TextIndicator::create(indicatorData), static_cast<TextIndicatorWindowLifetime>(lifetime));
</del><ins>+    pageClient().setTextIndicator(TextIndicator::create(indicatorData), static_cast<WebCore::TextIndicatorLifetime>(lifetime));
</ins><span class="cx"> #else
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx"> #endif
</span><span class="lines">@@ -6543,7 +6542,7 @@
</span><span class="cx"> void WebPageProxy::clearTextIndicator()
</span><span class="cx"> {
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    pageClient().clearTextIndicator(TextIndicatorWindowDismissalAnimation::FadeOut);
</del><ins>+    pageClient().clearTextIndicator(WebCore::TextIndicatorDismissalAnimation::FadeOut);
</ins><span class="cx"> #else
</span><span class="cx">     ASSERT_NOT_REACHED();
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/WebPageProxy.h     2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h        2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -1152,7 +1152,7 @@
</span><span class="cx">     void countStringMatches(const String&, OptionSet<FindOptions>, unsigned maxMatchCount);
</span><span class="cx">     void replaceMatches(Vector<uint32_t>&& matchIndices, const String& replacementText, bool selectionOnly, CompletionHandler<void(uint64_t)>&&);
</span><span class="cx">     void didCountStringMatches(const String&, uint32_t matchCount);
</span><del>-    void setTextIndicator(const WebCore::TextIndicatorData&, uint64_t /* WebCore::TextIndicatorWindowLifetime */ lifetime = 0 /* Permanent */);
</del><ins>+    void setTextIndicator(const WebCore::TextIndicatorData&, uint64_t /* WebCore::TextIndicatorLifetime */ lifetime = 0 /* Permanent */);
</ins><span class="cx">     void setTextIndicatorAnimationProgress(float);
</span><span class="cx">     void clearTextIndicator();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h    2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h       2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -138,8 +138,8 @@
</span><span class="cx">     RefPtr<WebDateTimePicker> createDateTimePicker(WebPageProxy&) final;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorWindowLifetime) override;
-    void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) override;
</del><ins>+    void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime) override;
+    void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation) override;
</ins><span class="cx">     void setTextIndicatorAnimationProgress(float) override;
</span><span class="cx"> 
</span><span class="cx">     void showSafeBrowsingWarning(const SafeBrowsingWarning&, CompletionHandler<void(Variant<WebKit::ContinueUnsafeLoad, URL>&&)>&&) override;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessiosPageClientImplIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -479,16 +479,19 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageClientImpl::setTextIndicator(Ref<TextIndicator> textIndicator, TextIndicatorWindowLifetime)
</del><ins>+void PageClientImpl::setTextIndicator(Ref<TextIndicator> textIndicator, WebCore::TextIndicatorLifetime)
</ins><span class="cx"> {
</span><ins>+    [m_contentView setUpTextIndicator:textIndicator];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageClientImpl::clearTextIndicator(TextIndicatorWindowDismissalAnimation)
</del><ins>+void PageClientImpl::clearTextIndicator(WebCore::TextIndicatorDismissalAnimation dismissalAnimation)
</ins><span class="cx"> {
</span><ins>+    [m_contentView clearTextIndicator:dismissalAnimation];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageClientImpl::setTextIndicatorAnimationProgress(float)
</del><ins>+void PageClientImpl::setTextIndicatorAnimationProgress(float animationProgress)
</ins><span class="cx"> {
</span><ins>+    [m_contentView setTextIndicatorAnimationProgress:animationProgress];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageClientImpl::enterAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext)
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessiosWKContentViewInteractionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h     2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h        2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -89,6 +89,7 @@
</span><span class="cx"> enum class DOMPasteAccessResponse : uint8_t;
</span><span class="cx"> enum class MouseEventPolicy : uint8_t;
</span><span class="cx"> enum class RouteSharingPolicy : uint8_t;
</span><ins>+enum class TextIndicatorDismissalAnimation : uint8_t;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span><span class="cx"> struct DragItem;
</span><span class="lines">@@ -104,6 +105,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @class WebEvent;
</span><ins>+@class WebTextIndicatorLayer;
</ins><span class="cx"> @class WKActionSheetAssistant;
</span><span class="cx"> @class WKContextMenuElementInfo;
</span><span class="cx"> @class WKDataListSuggestionsControl;
</span><span class="lines">@@ -331,6 +333,9 @@
</span><span class="cx">     RetainPtr<UIPreviewItemController> _previewItemController;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    RefPtr<WebCore::TextIndicator> _textIndicator;
+    RetainPtr<WebTextIndicatorLayer> _textIndicatorLayer;
+
</ins><span class="cx"> #if USE(UICONTEXTMENU)
</span><span class="cx">     RetainPtr<UITargetedPreview> _contextMenuInteractionTargetedPreview;
</span><span class="cx"> #endif
</span><span class="lines">@@ -670,6 +675,10 @@
</span><span class="cx"> - (void)_didStartProvisionalLoadForMainFrame;
</span><span class="cx"> - (void)_didCommitLoadForMainFrame;
</span><span class="cx"> 
</span><ins>+- (void)setUpTextIndicator:(Ref<WebCore::TextIndicator>)textIndicator;
+- (void)setTextIndicatorAnimationProgress:(float)NSAnimationProgress;
+- (void)clearTextIndicator:(WebCore::TextIndicatorDismissalAnimation)animation;
+
</ins><span class="cx"> @property (nonatomic, readonly) BOOL _shouldUseContextMenus;
</span><span class="cx"> @property (nonatomic, readonly) BOOL _shouldAvoidResizingWhenInputViewBoundsChange;
</span><span class="cx"> @property (nonatomic, readonly) BOOL _shouldAvoidScrollingWhenFocusedContentIsVisible;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessiosWKContentViewInteractionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm    2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm       2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -116,11 +116,13 @@
</span><span class="cx"> #import <WebCore/ShareData.h>
</span><span class="cx"> #import <WebCore/TextAlternativeWithRange.h>
</span><span class="cx"> #import <WebCore/TextIndicator.h>
</span><ins>+#import <WebCore/TextIndicatorWindow.h>
</ins><span class="cx"> #import <WebCore/TouchAction.h>
</span><span class="cx"> #import <WebCore/UTIUtilities.h>
</span><span class="cx"> #import <WebCore/VersionChecks.h>
</span><span class="cx"> #import <WebCore/VisibleSelection.h>
</span><span class="cx"> #import <WebCore/WebEvent.h>
</span><ins>+#import <WebCore/WebTextIndicatorLayer.h>
</ins><span class="cx"> #import <WebCore/WritingDirection.h>
</span><span class="cx"> #import <WebKit/WebSelectionRect.h> // FIXME: WebKit should not include WebKitLegacy headers!
</span><span class="cx"> #import <pal/spi/cg/CoreGraphicsSPI.h>
</span><span class="lines">@@ -9582,6 +9584,67 @@
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(IMAGE_EXTRACTION)
</span><span class="cx"> 
</span><ins>+- (void)setUpTextIndicator:(Ref<WebCore::TextIndicator>)textIndicator
+{
+    if (_textIndicator == textIndicator.ptr())
+        return;
+    
+    [self teardownTextIndicatorLayer];
+    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startFadeOut) object:nil];
+    
+    _textIndicator = textIndicator.ptr();
+
+    CGRect frame = _textIndicator->textBoundingRectInRootViewCoordinates();
+    _textIndicatorLayer = adoptNS([[WebTextIndicatorLayer alloc] initWithFrame:frame
+        textIndicator:textIndicator margin:CGSizeZero offset:CGPointZero]);
+    
+    [[self layer] addSublayer:_textIndicatorLayer.get()];
+
+    if (_textIndicator->presentationTransition() != WebCore::TextIndicatorPresentationTransition::None)
+        [_textIndicatorLayer present];
+    
+    [self performSelector:@selector(startFadeOut) withObject:self afterDelay:WebCore::timeBeforeFadeStarts.value()];
+}
+
+- (void)clearTextIndicator:(WebCore::TextIndicatorDismissalAnimation)animation
+{
+    RefPtr<WebCore::TextIndicator> textIndicator = WTFMove(_textIndicator);
+    
+    if ([_textIndicatorLayer isFadingOut])
+        return;
+
+    if (textIndicator && [_textIndicatorLayer indicatorWantsManualAnimation:*textIndicator] && [_textIndicatorLayer hasCompletedAnimation] && animation == WebCore::TextIndicatorDismissalAnimation::FadeOut) {
+        [self startFadeOut];
+        return;
+    }
+
+    [self teardownTextIndicatorLayer];
+}
+
+- (void)setTextIndicatorAnimationProgress:(float)animationProgress
+{
+    if (!_textIndicator)
+        return;
+
+    [_textIndicatorLayer setAnimationProgress:animationProgress];
+}
+
+- (void)teardownTextIndicatorLayer
+{
+    [_textIndicatorLayer removeFromSuperlayer];
+    _textIndicatorLayer = nil;
+}
+
+- (void)startFadeOut
+{
+    [_textIndicatorLayer setFadingOut:YES];
+        
+    [_textIndicatorLayer hideWithCompletionHandler:[weakSelf = WeakObjCPtr<WKContentView>(self)] {
+        auto strongSelf = weakSelf.get();
+        [strongSelf teardownTextIndicatorLayer];
+    }];
+}
+
</ins><span class="cx"> #if USE(APPLE_INTERNAL_SDK)
</span><span class="cx"> #import <WebKitAdditions/WKContentViewInteractionAdditionsAfter.mm>
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessmacPageClientImplMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h    2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h       2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -156,8 +156,8 @@
</span><span class="cx"> 
</span><span class="cx">     Ref<WebCore::ValidationBubble> createValidationBubble(const String& message, const WebCore::ValidationBubble::Settings&) final;
</span><span class="cx"> 
</span><del>-    void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorWindowLifetime) override;
-    void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) override;
</del><ins>+    void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime) override;
+    void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation) override;
</ins><span class="cx">     void setTextIndicatorAnimationProgress(float) override;
</span><span class="cx"> 
</span><span class="cx">     void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessmacPageClientImplMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -569,12 +569,12 @@
</span><span class="cx">     m_impl->clearSafeBrowsingWarningIfForMainFrameNavigation();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageClientImpl::setTextIndicator(Ref<TextIndicator> textIndicator, WebCore::TextIndicatorWindowLifetime lifetime)
</del><ins>+void PageClientImpl::setTextIndicator(Ref<TextIndicator> textIndicator, WebCore::TextIndicatorLifetime lifetime)
</ins><span class="cx"> {
</span><span class="cx">     m_impl->setTextIndicator(textIndicator.get(), lifetime);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageClientImpl::clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation dismissalAnimation)
</del><ins>+void PageClientImpl::clearTextIndicator(WebCore::TextIndicatorDismissalAnimation dismissalAnimation)
</ins><span class="cx"> {
</span><span class="cx">     m_impl->clearTextIndicatorWithAnimation(dismissalAnimation);
</span><span class="cx"> }
</span><span class="lines">@@ -672,9 +672,9 @@
</span><span class="cx">     m_impl->prepareForDictionaryLookup();
</span><span class="cx"> 
</span><span class="cx">     DictionaryLookup::showPopup(dictionaryPopupInfo, m_view, [this](TextIndicator& textIndicator) {
</span><del>-        m_impl->setTextIndicator(textIndicator, TextIndicatorWindowLifetime::Permanent);
</del><ins>+        m_impl->setTextIndicator(textIndicator, WebCore::TextIndicatorLifetime::Permanent);
</ins><span class="cx">     }, nullptr, [this]() {
</span><del>-        m_impl->clearTextIndicatorWithAnimation(WebCore::TextIndicatorWindowDismissalAnimation::None);
</del><ins>+        m_impl->clearTextIndicatorWithAnimation(WebCore::TextIndicatorDismissalAnimation::None);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessmacWKImmediateActionControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm 2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm    2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -490,9 +490,9 @@
</span><span class="cx">     _viewImpl->prepareForDictionaryLookup();
</span><span class="cx"> 
</span><span class="cx">     return WebCore::DictionaryLookup::animationControllerForPopup(dictionaryPopupInfo, _view, [self](WebCore::TextIndicator& textIndicator) {
</span><del>-        _viewImpl->setTextIndicator(textIndicator, WebCore::TextIndicatorWindowLifetime::Permanent);
</del><ins>+        _viewImpl->setTextIndicator(textIndicator, WebCore::TextIndicatorLifetime::Permanent);
</ins><span class="cx">     }, nullptr, [self]() {
</span><del>-        _viewImpl->clearTextIndicatorWithAnimation(WebCore::TextIndicatorWindowDismissalAnimation::None);
</del><ins>+        _viewImpl->clearTextIndicatorWithAnimation(WebCore::TextIndicatorDismissalAnimation::None);
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp        2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp   2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -88,6 +88,7 @@
</span><span class="cx"> #include <WebCore/SecurityOrigin.h>
</span><span class="cx"> #include <WebCore/SecurityOriginData.h>
</span><span class="cx"> #include <WebCore/Settings.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
</span><span class="cx"> #include "PlaybackSessionManager.h"
</span><span class="lines">@@ -1271,6 +1272,11 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void WebChromeClient::setTextIndicator(const WebCore::TextIndicatorData& indicatorData) const
+{
+    m_page.send(Messages::WebPageProxy::SetTextIndicator(indicatorData, static_cast<uint64_t>(WebCore::TextIndicatorLifetime::Temporary)));
+}
+
</ins><span class="cx"> String WebChromeClient::signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challengeString, const URL& url) const
</span><span class="cx"> {
</span><span class="cx">     String result;
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h  2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h     2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -353,6 +353,8 @@
</span><span class="cx">     void storeAppHighlight(WebCore::AppHighlight&&) const final;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    void setTextIndicator(const WebCore::TextIndicatorData&) const final;
+
</ins><span class="cx"> #if ENABLE(WEB_CRYPTO)
</span><span class="cx">     bool wrapCryptoKey(const Vector<uint8_t>&, Vector<uint8_t>&) const final;
</span><span class="cx">     bool unwrapCryptoKey(const Vector<uint8_t>&, Vector<uint8_t>&) const final;
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebPageFindControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebPage/FindController.cpp (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebPage/FindController.cpp        2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKit/WebProcess/WebPage/FindController.cpp   2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -380,7 +380,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_findIndicatorRect = enclosingIntRect(indicator->selectionRectInRootViewCoordinates());
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    m_webPage->send(Messages::WebPageProxy::SetTextIndicator(indicator->data(), static_cast<uint64_t>(isShowingOverlay ? TextIndicatorWindowLifetime::Permanent : TextIndicatorWindowLifetime::Temporary)));
</del><ins>+    m_webPage->send(Messages::WebPageProxy::SetTextIndicator(indicator->data(), static_cast<uint64_t>(isShowingOverlay ? WebCore::TextIndicatorLifetime::Permanent : WebCore::TextIndicatorLifetime::Temporary)));
</ins><span class="cx"> #endif
</span><span class="cx">     m_isShowingFindIndicator = true;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/ChangeLog  2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog     2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2021-05-13  Megan Gardner  <megan_gardner@apple.com>
+
+        Add textIndicator bounce for AppHighlights on scroll.
+        https://bugs.webkit.org/show_bug.cgi?id=225727
+
+        Reviewed by Tim Horton.
+
+        * WebCoreSupport/WebChromeClient.h:
+        * WebCoreSupport/WebChromeClient.mm:
+        (WebChromeClient::setTextIndicator const):
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView quickLookWithEvent:]):
+        * WebView/WebImmediateActionController.mm:
+        (-[WebImmediateActionController webView:didHandleScrollWheel:]):
+        (-[WebImmediateActionController _cancelImmediateAction]):
+        (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):
+        (-[WebImmediateActionController _defaultAnimationController]):
+        (-[WebImmediateActionController menuItemDidClose:]):
+        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
+        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
+        * WebView/WebView.mm:
+        (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
+        (-[WebView _setTextIndicator:]):
+        (-[WebView _setTextIndicator:withLifetime:]):
+        (-[WebView _clearTextIndicatorWithAnimation:]):
+        (-[WebView _showDictionaryLookupPopup:]):
+        (-[WebView _dictionaryLookupPopoverWillClose:]):
+        * WebView/WebViewInternal.h:
+
</ins><span class="cx"> 2021-05-12  Chris Dumez  <cdumez@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Notification.requestPermission() should return a Promise
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -155,6 +155,8 @@
</span><span class="cx">     void storeAppHighlight(WebCore::AppHighlight&&) const final;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    void setTextIndicator(const WebCore::TextIndicatorData&) const final;
+
</ins><span class="cx"> #if ENABLE(POINTER_LOCK)
</span><span class="cx">     bool requestPointerLock() final;
</span><span class="cx">     void requestPointerUnlock() final;
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacWebCoreSupportWebChromeClientmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm  2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm     2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -720,6 +720,10 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void WebChromeClient::setTextIndicator(const WebCore::TextIndicatorData& indicatorData) const
+{
+}
+
</ins><span class="cx"> #if ENABLE(POINTER_LOCK)
</span><span class="cx"> bool WebChromeClient::requestPointerLock()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacWebViewWebHTMLViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm     2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm        2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -5953,7 +5953,7 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)quickLookWithEvent:(NSEvent *)event
</span><span class="cx"> {
</span><del>-    [[self _webView] _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+    [[self _webView] _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx">     [super quickLookWithEvent:event];
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacWebViewWebImmediateActionControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm    2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm       2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx"> {
</span><span class="cx">     [_currentQLPreviewMenuItem close];
</span><span class="cx">     [self _clearImmediateActionState];
</span><del>-    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::None];
</del><ins>+    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::None];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSImmediateActionGestureRecognizer *)immediateActionRecognizer
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     [self _clearImmediateActionState];
</span><del>-    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)_clearImmediateActionState
</span><span class="lines">@@ -251,7 +251,7 @@
</span><span class="cx"> 
</span><span class="cx">     [_webView _setTextIndicatorAnimationProgress:0];
</span><span class="cx">     [self _clearImmediateActionState];
</span><del>-    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::None];
</del><ins>+    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::None];
</ins><span class="cx">     [_webView _setMaintainsInactiveSelection:NO];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx">             auto linkRange = makeRangeSelectingNodeContents(*_hitTestResult.URLElement());
</span><span class="cx">             auto indicator = WebCore::TextIndicator::createWithRange(linkRange, { WebCore::TextIndicatorOption::UseBoundingRectAndPaintAllContentForComplexRanges }, WebCore::TextIndicatorPresentationTransition::FadeIn);
</span><span class="cx">             if (indicator)
</span><del>-                [_webView _setTextIndicator:*indicator withLifetime:WebCore::TextIndicatorWindowLifetime::Permanent];
</del><ins>+                [_webView _setTextIndicator:*indicator withLifetime:WebCore::TextIndicatorLifetime::Permanent];
</ins><span class="cx"> 
</span><span class="cx">             QLPreviewMenuItem *item = [NSMenuItem standardQuickLookMenuItem];
</span><span class="cx">             item.previewStyle = QLPreviewStylePopover;
</span><span class="lines">@@ -379,7 +379,7 @@
</span><span class="cx"> - (void)menuItemDidClose:(NSMenuItem *)menuItem
</span><span class="cx"> {
</span><span class="cx">     [self _clearImmediateActionState];
</span><del>-    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+    [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static WebCore::IntRect elementBoundingBoxInWindowCoordinatesFromNode(WebCore::Node* node)
</span><span class="lines">@@ -464,9 +464,9 @@
</span><span class="cx">     _currentActionContext = [detectedItem->actionContext contextForView:_webView altMode:YES interactionStartedHandler:^() {
</span><span class="cx">     } interactionChangedHandler:^() {
</span><span class="cx">         if (indicator)
</span><del>-            [_webView _setTextIndicator:*indicator withLifetime:WebCore::TextIndicatorWindowLifetime::Permanent];
</del><ins>+            [_webView _setTextIndicator:*indicator withLifetime:WebCore::TextIndicatorLifetime::Permanent];
</ins><span class="cx">     } interactionStoppedHandler:^() {
</span><del>-        [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+        [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx">     }];
</span><span class="cx"> 
</span><span class="cx">     [_currentActionContext setHighlightFrame:[_webView.window convertRectToScreen:detectedItem->boundingBox]];
</span><span class="lines">@@ -497,9 +497,9 @@
</span><span class="cx">     _currentActionContext = [actionContext contextForView:_webView altMode:YES interactionStartedHandler:^() {
</span><span class="cx">     } interactionChangedHandler:^() {
</span><span class="cx">         if (indicator)
</span><del>-            [_webView _setTextIndicator:*indicator withLifetime:WebCore::TextIndicatorWindowLifetime::Permanent];
</del><ins>+            [_webView _setTextIndicator:*indicator withLifetime:WebCore::TextIndicatorLifetime::Permanent];
</ins><span class="cx">     } interactionStoppedHandler:^() {
</span><del>-        [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+        [_webView _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx">     }];
</span><span class="cx"> 
</span><span class="cx">     [_currentActionContext setHighlightFrame:[_webView.window convertRectToScreen:elementBoundingBoxInWindowCoordinatesFromNode(_hitTestResult.URLElement())]];
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm    2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -9100,11 +9100,11 @@
</span><span class="cx">     [self _prepareForDictionaryLookup];
</span><span class="cx"> 
</span><span class="cx">     return WebCore::DictionaryLookup::animationControllerForPopup(dictionaryPopupInfo, self, [self](WebCore::TextIndicator& textIndicator) {
</span><del>-        [self _setTextIndicator:textIndicator withLifetime:WebCore::TextIndicatorWindowLifetime::Permanent];
</del><ins>+        [self _setTextIndicator:textIndicator withLifetime:WebCore::TextIndicatorLifetime::Permanent];
</ins><span class="cx">     }, [self](WebCore::FloatRect rectInRootViewCoordinates) {
</span><span class="cx">         return [self _convertRectFromRootView:rectInRootViewCoordinates];
</span><span class="cx">     }, [self]() {
</span><del>-        [self _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+        [self _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -9120,10 +9120,10 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator
</span><span class="cx"> {
</span><del>-    [self _setTextIndicator:textIndicator withLifetime:WebCore::TextIndicatorWindowLifetime::Permanent];
</del><ins>+    [self _setTextIndicator:textIndicator withLifetime:WebCore::TextIndicatorLifetime::Permanent];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator withLifetime:(WebCore::TextIndicatorWindowLifetime)lifetime
</del><ins>+- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator withLifetime:(WebCore::TextIndicatorLifetime)lifetime
</ins><span class="cx"> {
</span><span class="cx">     if (!_private->textIndicatorWindow)
</span><span class="cx">         _private->textIndicatorWindow = makeUnique<WebCore::TextIndicatorWindow>(self);
</span><span class="lines">@@ -9133,10 +9133,10 @@
</span><span class="cx">     _private->textIndicatorWindow->setTextIndicator(textIndicator, NSRectToCGRect(textBoundingRectInScreenCoordinates), lifetime);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)_clearTextIndicatorWithAnimation:(WebCore::TextIndicatorWindowDismissalAnimation)animation
</del><ins>+- (void)_clearTextIndicatorWithAnimation:(WebCore::TextIndicatorDismissalAnimation)animation
</ins><span class="cx"> {
</span><span class="cx">     if (_private->textIndicatorWindow)
</span><del>-        _private->textIndicatorWindow->clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation::FadeOut);
</del><ins>+        _private->textIndicatorWindow->clearTextIndicator(WebCore::TextIndicatorDismissalAnimation::FadeOut);
</ins><span class="cx">     _private->textIndicatorWindow = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -9168,11 +9168,11 @@
</span><span class="cx">     [self _prepareForDictionaryLookup];
</span><span class="cx"> 
</span><span class="cx">     WebCore::DictionaryLookup::showPopup(dictionaryPopupInfo, self, [self](WebCore::TextIndicator& textIndicator) {
</span><del>-        [self _setTextIndicator:textIndicator withLifetime:WebCore::TextIndicatorWindowLifetime::Permanent];
</del><ins>+        [self _setTextIndicator:textIndicator withLifetime:WebCore::TextIndicatorLifetime::Permanent];
</ins><span class="cx">     }, [self](WebCore::FloatRect rectInRootViewCoordinates) {
</span><span class="cx">         return [self _convertRectFromRootView:rectInRootViewCoordinates];
</span><span class="cx">     }, [weakSelf = WeakObjCPtr<WebView>(self)]() {
</span><del>-        [weakSelf.get() _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+        [weakSelf.get() _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx">     });
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -9179,7 +9179,7 @@
</span><span class="cx"> #if !ENABLE(REVEAL)
</span><span class="cx"> - (void)_dictionaryLookupPopoverWillClose:(NSNotification *)notification
</span><span class="cx"> {
</span><del>-    [self _clearTextIndicatorWithAnimation:WebCore::TextIndicatorWindowDismissalAnimation::FadeOut];
</del><ins>+    [self _clearTextIndicatorWithAnimation:WebCore::TextIndicatorDismissalAnimation::FadeOut];
</ins><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(REVEAL)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitLegacymacWebViewWebViewInternalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/mac/WebView/WebViewInternal.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/mac/WebView/WebViewInternal.h  2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebViewInternal.h     2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -319,8 +319,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) && defined(__cplusplus)
</span><span class="cx"> - (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator;
</span><del>-- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator withLifetime:(WebCore::TextIndicatorWindowLifetime)lifetime;
-- (void)_clearTextIndicatorWithAnimation:(WebCore::TextIndicatorWindowDismissalAnimation)animation;
</del><ins>+- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator withLifetime:(WebCore::TextIndicatorLifetime)lifetime;
+- (void)_clearTextIndicatorWithAnimation:(WebCore::TextIndicatorDismissalAnimation)animation;
</ins><span class="cx"> - (void)_setTextIndicatorAnimationProgress:(float)progress;
</span><span class="cx"> - (void)_showDictionaryLookupPopup:(const WebCore::DictionaryPopupInfo&)dictionaryPopupInfo;
</span><span class="cx"> - (id)_animationControllerForDictionaryLookupPopupInfo:(const WebCore::DictionaryPopupInfo&)dictionaryPopupInfo;
</span></span></pre></div>
<a id="trunkSourceWebKitLegacywinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/win/ChangeLog (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/win/ChangeLog  2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/win/ChangeLog     2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2021-05-13  Megan Gardner  <megan_gardner@apple.com>
+
+        Add textIndicator bounce for AppHighlights on scroll.
+        https://bugs.webkit.org/show_bug.cgi?id=225727
+
+        Reviewed by Tim Horton.
+
+        * WebCoreSupport/WebChromeClient.h:
+
</ins><span class="cx"> 2021-05-13  Chris Dumez  <cdumez@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Rename FileSystem::directoryName() to FileSystem::parentPath()
</span></span></pre></div>
<a id="trunkSourceWebKitLegacywinWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h (277452 => 277453)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h   2021-05-13 21:53:00 UTC (rev 277452)
+++ trunk/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h      2021-05-13 21:57:45 UTC (rev 277453)
</span><span class="lines">@@ -169,6 +169,8 @@
</span><span class="cx"> 
</span><span class="cx">     void wheelEventHandlersChanged(bool) final { }
</span><span class="cx"> 
</span><ins>+    void setTextIndicator(const WebCore::TextIndicatorData&) const final { }
+
</ins><span class="cx">     WebView* webView() { return m_webView; }
</span><span class="cx"> 
</span><span class="cx">     void AXStartFrameLoad() final;
</span></span></pre>
</div>
</div>

</body>
</html>