<!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>[277595] branches/safari-612.1.15.1-branch/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/277595">277595</a></dd>
<dt>Author</dt> <dd>alancoon@apple.com</dd>
<dt>Date</dt> <dd>2021-05-17 11:54:17 -0700 (Mon, 17 May 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Cherry-pick <a href="http://trac.webkit.org/projects/webkit/changeset/277453">r277453</a>. rdar://problem/78108967

    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:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277453 268f45cc-cd09-0410-ab3c-d52691b4dbfc</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari6121151branchSourceWebCoreChangeLog">branches/safari-612.1.15.1-branch/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchessafari6121151branchSourceWebCoreModuleshighlightAppHighlightStoragecpp">branches/safari-612.1.15.1-branch/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp</a></li>
<li><a href="#branchessafari6121151branchSourceWebCoreloaderEmptyClientscpp">branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.cpp</a></li>
<li><a href="#branchessafari6121151branchSourceWebCoreloaderEmptyClientsh">branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebCorepageChromeClienth">branches/safari-612.1.15.1-branch/Source/WebCore/page/ChromeClient.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebCorepageTextIndicatorh">branches/safari-612.1.15.1-branch/Source/WebCore/page/TextIndicator.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebCorepagecocoaWebTextIndicatorLayerh">branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebCorepagecocoaWebTextIndicatorLayermm">branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebCorepagemacTextIndicatorWindowh">branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebCorepagemacTextIndicatorWindowmm">branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitChangeLog">branches/safari-612.1.15.1-branch/Source/WebKit/ChangeLog</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessCocoaWebViewImplh">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessCocoaWebViewImplmm">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessPageClienth">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/PageClient.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessWebPageProxycpp">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessWebPageProxyh">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessiosPageClientImplIOSh">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessiosPageClientImplIOSmm">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessiosWKContentViewInteractionh">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessiosWKContentViewInteractionmm">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessmacPageClientImplMach">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessmacPageClientImplMacmm">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitUIProcessmacWKImmediateActionControllermm">branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitWebProcessWebCoreSupportWebChromeClientcpp">branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitWebProcessWebCoreSupportWebChromeClienth">branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitWebProcessWebPageFindControllercpp">branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebPage/FindController.cpp</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacChangeLog">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/ChangeLog</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacWebCoreSupportWebChromeClienth">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacWebCoreSupportWebChromeClientmm">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacWebViewWebHTMLViewmm">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacWebViewWebImmediateActionControllermm">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacWebViewWebViewmm">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebView.mm</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacymacWebViewWebViewInternalh">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebViewInternal.h</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacywinChangeLog">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/ChangeLog</a></li>
<li><a href="#branchessafari6121151branchSourceWebKitLegacywinWebCoreSupportWebChromeClienth">branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari6121151branchSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/ChangeLog (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/ChangeLog       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/ChangeLog  2021-05-17 18:54:17 UTC (rev 277595)
</span><span class="lines">@@ -1,3 +1,100 @@
</span><ins>+2021-05-17  Russell Epstein  <repstein@apple.com>
+
+        Cherry-pick r277453. rdar://problem/78108967
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277453 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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  Chris Dumez  <cdumez@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Rename FileSystem::fileIsDirectory(path, followSymlinks) to isDirectory(path) / isDirectoryFollowingSymlinks(path)
</span></span></pre></div>
<a id="branchessafari6121151branchSourceWebCoreModuleshighlightAppHighlightStoragecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/Modules/highlight/AppHighlightStorage.cpp  2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCoreloaderEmptyClientscpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.cpp (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.cpp 2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.cpp    2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCoreloaderEmptyClientsh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.h   2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/loader/EmptyClients.h      2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCorepageChromeClienth"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/page/ChromeClient.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/page/ChromeClient.h     2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/page/ChromeClient.h        2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCorepageTextIndicatorh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/page/TextIndicator.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/page/TextIndicator.h    2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/page/TextIndicator.h       2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCorepagecocoaWebTextIndicatorLayerh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h      2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.h 2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCorepagecocoaWebTextIndicatorLayermm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm     2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/page/cocoa/WebTextIndicatorLayer.mm        2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCorepagemacTextIndicatorWindowh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.h  2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.h     2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebCorepagemacTextIndicatorWindowmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.mm 2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebCore/page/mac/TextIndicatorWindow.mm    2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/ChangeLog (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/ChangeLog        2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/ChangeLog   2021-05-17 18:54:17 UTC (rev 277595)
</span><span class="lines">@@ -1,3 +1,122 @@
</span><ins>+2021-05-17  Russell Epstein  <repstein@apple.com>
+
+        Cherry-pick r277453. rdar://problem/78108967
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277453 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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  Tim Horton  <timothy_horton@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Work around WebCore failing to build due to NDEBUG getting undefined in release
</span></span></pre></div>
<a id="branchessafari6121151branchSourceWebKitUIProcessCocoaWebViewImplh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h    2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h       2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessCocoaWebViewImplmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm   2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm      2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/PageClient.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/PageClient.h   2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/PageClient.h      2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.cpp (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.cpp       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.cpp  2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.h 2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/WebPageProxy.h    2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.h        2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.h   2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessiosPageClientImplIOSmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm  2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessiosWKContentViewInteractionh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h    2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessiosWKContentViewInteractionmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm        2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm   2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessmacPageClientImplMach"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.h        2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.h   2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessmacPageClientImplMacmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.mm       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/PageClientImplMac.mm  2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitUIProcessmacWKImmediateActionControllermm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm     2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/UIProcess/mac/WKImmediateActionController.mm        2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitWebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp    2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp       2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitWebProcessWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h      2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h 2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitWebProcessWebPageFindControllercpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebPage/FindController.cpp (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebPage/FindController.cpp    2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKit/WebProcess/WebPage/FindController.cpp       2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacymacChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/ChangeLog (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/ChangeLog      2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/ChangeLog 2021-05-17 18:54:17 UTC (rev 277595)
</span><span class="lines">@@ -1,3 +1,104 @@
</span><ins>+2021-05-17  Russell Epstein  <repstein@apple.com>
+
+        Cherry-pick r277453. rdar://problem/78108967
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277453 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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="branchessafari6121151branchSourceWebKitLegacymacWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h  2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacymacWebCoreSupportWebChromeClientmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm      2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm 2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacymacWebViewWebHTMLViewmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm 2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm    2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacymacWebViewWebImmediateActionControllermm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm        2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebImmediateActionController.mm   2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacymacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebView.mm (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebView.mm     2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebView.mm        2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacymacWebViewWebViewInternalh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebViewInternal.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebViewInternal.h      2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/mac/WebView/WebViewInternal.h 2021-05-17 18:54:17 UTC (rev 277595)
</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="branchessafari6121151branchSourceWebKitLegacywinChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/ChangeLog (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/ChangeLog      2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/ChangeLog 2021-05-17 18:54:17 UTC (rev 277595)
</span><span class="lines">@@ -1,3 +1,84 @@
</span><ins>+2021-05-17  Russell Epstein  <repstein@apple.com>
+
+        Cherry-pick r277453. rdar://problem/78108967
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277453 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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  Darin Adler  <darin@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Remove StringBuilder::appendNumber
</span></span></pre></div>
<a id="branchessafari6121151branchSourceWebKitLegacywinWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h (277594 => 277595)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h       2021-05-17 18:44:24 UTC (rev 277594)
+++ branches/safari-612.1.15.1-branch/Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h  2021-05-17 18:54:17 UTC (rev 277595)
</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>