<!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>[176462] trunk/Source</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Move TextIndicator{Window} to WebCore
https://bugs.webkit.org/show_bug.cgi?id=138954
&lt;rdar://problem/18992185&gt;

Some adjustments by Csaba Osztrogonác.
Reviewed by Anders Carlsson.

Move TextIndicator and TextIndicatorWindow to WebCore so that both
WebKits can share the implementation.

* CMakeLists.txt:
Remove TextIndicator.cpp.

* Scripts/webkit/messages.py:
(struct_or_class):
(headers_for_type):
Tell messages.py that TextIndicatorData is a struct, and comes from TextIndicator.h.

* Shared/WebCoreArgumentCoders.h:
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder&lt;TextIndicatorData&gt;::encode):
(IPC::ArgumentCoder&lt;TextIndicatorData&gt;::decode):
Add argument coders for TextIndicatorData.

* Shared/DictionaryPopupInfo.h:        
* Shared/mac/ActionMenuHitTestResult.h:
* Shared/mac/ActionMenuHitTestResult.mm:
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/PageClientImpl.cpp:
* UIProcess/API/mac/WKView.mm:
* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/CoordinatedGraphics/WebView.h:
* UIProcess/CoordinatedGraphics/WebView.cpp:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/WKContentView.h:
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
* UIProcess/mac/WKActionMenuController.mm:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
* WebProcess/WebPage/FindController.cpp:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
* WebProcess/WebPage/mac/WebPageMac.mm:
Adjust to TextIndicator and TextIndicatorWindow's new home.

* CMakeLists.txt:
Build TextIndicator.

* WebCore.exp.in:
Export TextIndicator{Window} symbols for the WebKits.

* WebCore.xcodeproj/project.pbxproj:
* page/TextIndicator.cpp: Renamed from Source/WebKit2/Shared/TextIndicator.cpp.
* page/TextIndicator.h: Renamed from Source/WebKit2/Shared/TextIndicator.h.
Straighforward move of TextIndicator from WebKit2, except:

Move TextIndicator::Data and TextIndicator::PresentationTransition out directly
into the WebCore namespace to allow for implementation of WebKit2 argument coders.

Use Image instead of ShareableBitmap internally.

Move the TextIndicatorData encode/decode to WebCoreArgumentCoders.

* page/mac/TextIndicatorWindow.h: Renamed from Source/WebKit2/UIProcess/mac/TextIndicatorWindow.h.
* page/mac/TextIndicatorWindow.mm: Renamed from Source/WebKit2/UIProcess/mac/TextIndicatorWindow.mm.
Straighforward move of TextIndicatorWindow from WebKit2.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2Scriptswebkitmessagespy">trunk/Source/WebKit2/Scripts/webkit/messages.py</a></li>
<li><a href="#trunkSourceWebKit2SharedDictionaryPopupInfoh">trunk/Source/WebKit2/Shared/DictionaryPopupInfo.h</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCoreArgumentCoderscpp">trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCoreArgumentCodersh">trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.h</a></li>
<li><a href="#trunkSourceWebKit2SharedmacActionMenuHitTestResulth">trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h</a></li>
<li><a href="#trunkSourceWebKit2SharedmacActionMenuHitTestResultmm">trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIgtkPageClientImplcpp">trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIgtkPageClientImplh">trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPImacWKViewmm">trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPImacWKViewInternalh">trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCoordinatedGraphicsWebViewcpp">trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCoordinatedGraphicsWebViewh">trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSh">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewh">trunk/Source/WebKit2/UIProcess/ios/WKContentView.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplh">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplmm">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWKActionMenuControllermm">trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportmacWebContextMenuClientMacmm">trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageFindControllercpp">trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacWebPageMacmm">trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorepageTextIndicatorcpp">trunk/Source/WebCore/page/TextIndicator.cpp</a></li>
<li><a href="#trunkSourceWebCorepageTextIndicatorh">trunk/Source/WebCore/page/TextIndicator.h</a></li>
<li><a href="#trunkSourceWebCorepagemacTextIndicatorWindowh">trunk/Source/WebCore/page/mac/TextIndicatorWindow.h</a></li>
<li><a href="#trunkSourceWebCorepagemacTextIndicatorWindowmm">trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2SharedTextIndicatorcpp">trunk/Source/WebKit2/Shared/TextIndicator.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedTextIndicatorh">trunk/Source/WebKit2/Shared/TextIndicator.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacTextIndicatorWindowh">trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacTextIndicatorWindowmm">trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebCore/CMakeLists.txt        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1934,6 +1934,7 @@
</span><span class="cx">     page/Settings.cpp
</span><span class="cx">     page/SpatialNavigation.cpp
</span><span class="cx">     page/SuspendableTimer.cpp
</span><ins>+    page/TextIndicator.cpp
</ins><span class="cx">     page/UserContentController.cpp
</span><span class="cx">     page/UserContentURLPattern.cpp
</span><span class="cx">     page/VisitedLinkStore.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebCore/ChangeLog        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2014-11-21  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        Move TextIndicator{Window} to WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=138954
+        &lt;rdar://problem/18992185&gt;
+
+        Some adjustments by Csaba Osztrogonác.
+        Reviewed by Anders Carlsson.
+
+        Move TextIndicator and TextIndicatorWindow to WebCore so that both
+        WebKits can share the implementation.
+
+        * CMakeLists.txt:
+        Build TextIndicator.
+
+        * WebCore.exp.in:
+        Export TextIndicator{Window} symbols for the WebKits.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * page/TextIndicator.cpp: Renamed from Source/WebKit2/Shared/TextIndicator.cpp.
+        * page/TextIndicator.h: Renamed from Source/WebKit2/Shared/TextIndicator.h.
+        Straighforward move of TextIndicator from WebKit2, except:
+
+        Move TextIndicator::Data and TextIndicator::PresentationTransition out directly
+        into the WebCore namespace to allow for implementation of WebKit2 argument coders.
+
+        Use Image instead of ShareableBitmap internally.
+
+        Move the TextIndicatorData encode/decode to WebCoreArgumentCoders.
+        
+        * page/mac/TextIndicatorWindow.h: Renamed from Source/WebKit2/UIProcess/mac/TextIndicatorWindow.h.
+        * page/mac/TextIndicatorWindow.mm: Renamed from Source/WebKit2/UIProcess/mac/TextIndicatorWindow.mm.
+        Straighforward move of TextIndicatorWindow from WebKit2.
+
</ins><span class="cx"> 2014-11-21  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove the Timer parameters from timer callbacks
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -2295,6 +2295,10 @@
</span><span class="cx"> __ZN7WebCore12EventHandler8keyEventEP7NSEvent
</span><span class="cx"> __ZN7WebCore12EventHandler9mouseDownEP7NSEvent
</span><span class="cx"> __ZN7WebCore13DataDetection29detectItemAroundHitTestResultERKNS_13HitTestResultERNS_9FloatRectERN3WTF6RefPtrINS_5RangeEEE
</span><ins>+__ZN7WebCore13TextIndicator15createWithRangeERKNS_5RangeENS_35TextIndicatorPresentationTransitionE
+__ZN7WebCore13TextIndicator26createWithSelectionInFrameERNS_5FrameENS_35TextIndicatorPresentationTransitionE
+__ZN7WebCore13TextIndicator6createERKNS_17TextIndicatorDataE
+__ZN7WebCore13TextIndicatorD1Ev
</ins><span class="cx"> __ZN7WebCore13getRawCookiesERKNS_21NetworkStorageSessionERKNS_3URLES5_RN3WTF6VectorINS_6CookieELj0ENS6_15CrashOnOverflowEEE
</span><span class="cx"> __ZN7WebCore13toDeviceSpaceERKNS_9FloatRectEP8NSWindow
</span><span class="cx"> __ZN7WebCore14cookiesEnabledERKNS_21NetworkStorageSessionERKNS_3URLES5_
</span><span class="lines">@@ -2309,6 +2313,9 @@
</span><span class="cx"> __ZN7WebCore17ScrollbarThemeMac24removeOverhangAreaShadowEP7CALayer
</span><span class="cx"> __ZN7WebCore17ScrollbarThemeMac27setUpOverhangAreaBackgroundEP7CALayerRKNS_5ColorE
</span><span class="cx"> __ZN7WebCore17ScrollbarThemeMac28removeOverhangAreaBackgroundEP7CALayer
</span><ins>+__ZN7WebCore19TextIndicatorWindow16setTextIndicatorEN3WTF10PassRefPtrINS_13TextIndicatorEEEbNSt3__18functionIFvvEEE
+__ZN7WebCore19TextIndicatorWindowC1EP6NSView
+__ZN7WebCore19TextIndicatorWindowD1Ev
</ins><span class="cx"> __ZN7WebCore19applicationIsSafariEv
</span><span class="cx"> __ZN7WebCore20PlatformEventFactory24createPlatformMouseEventEP7NSEventP6NSView
</span><span class="cx"> __ZN7WebCore20PlatformEventFactory27createPlatformKeyboardEventEP7NSEvent
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1104,6 +1104,10 @@
</span><span class="cx">                 2D481F02146B5C5500AA7834 /* CrossfadeGeneratedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2FC0551460CD6F00263633 /* CrossfadeGeneratedImage.h */; };
</span><span class="cx">                 2D481F03146B5C6500AA7834 /* GradientImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FC0561460CD6F00263633 /* GradientImage.cpp */; };
</span><span class="cx">                 2D481F04146B5C6B00AA7834 /* GradientImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2FC0571460CD6F00263633 /* GradientImage.h */; };
</span><ins>+                2D4F96F51A1ECC240098BF88 /* TextIndicator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */; };
+                2D4F96F61A1ECC240098BF88 /* TextIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                2D4F96F71A1ECC240098BF88 /* TextIndicatorWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D4F96F31A1ECC240098BF88 /* TextIndicatorWindow.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                2D4F96F81A1ECC240098BF88 /* TextIndicatorWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D4F96F41A1ECC240098BF88 /* TextIndicatorWindow.mm */; };
</ins><span class="cx">                 2D58D8551A15F65F00A5F726 /* DataDetection.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D58D8531A15F65F00A5F726 /* DataDetection.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2D58D8561A15F65F00A5F726 /* DataDetection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D58D8541A15F65F00A5F726 /* DataDetection.mm */; };
</span><span class="cx">                 2D59F1BF1A0044C6001F3D29 /* DataDetectorsSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D59F1BE1A0044C6001F3D29 /* DataDetectorsSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -8132,6 +8136,10 @@
</span><span class="cx">                 2D413F601A187A3F0041A521 /* LookupSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LookupSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D46F04D17B96FBD005647F0 /* IntPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntPoint.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D46F04F17B96FD2005647F0 /* IntSize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntSize.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextIndicator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D4F96F21A1ECC240098BF88 /* TextIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D4F96F31A1ECC240098BF88 /* TextIndicatorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicatorWindow.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                2D4F96F41A1ECC240098BF88 /* TextIndicatorWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TextIndicatorWindow.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2D58D8531A15F65F00A5F726 /* DataDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataDetection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D58D8541A15F65F00A5F726 /* DataDetection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DataDetection.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2D59F1BE1A0044C6001F3D29 /* DataDetectorsSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataDetectorsSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -16723,6 +16731,8 @@
</span><span class="cx">                                 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */,
</span><span class="cx">                                 62C1217A11AB9E76003C462C /* SuspendableTimer.cpp */,
</span><span class="cx">                                 62C1217B11AB9E77003C462C /* SuspendableTimer.h */,
</span><ins>+                                2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */,
+                                2D4F96F21A1ECC240098BF88 /* TextIndicator.h */,
</ins><span class="cx">                                 1AE79D40188DB61F002239C2 /* UserContentController.cpp */,
</span><span class="cx">                                 1AE79D41188DB61F002239C2 /* UserContentController.h */,
</span><span class="cx">                                 003F1FE911E6AB43008258D9 /* UserContentTypes.h */,
</span><span class="lines">@@ -17630,6 +17640,8 @@
</span><span class="cx">                                 2D93AEE119DF5641002A86C3 /* ServicesOverlayController.h */,
</span><span class="cx">                                 2D93AEE219DF5641002A86C3 /* ServicesOverlayController.mm */,
</span><span class="cx">                                 E1C2F2481533A2120083F974 /* SettingsMac.mm */,
</span><ins>+                                2D4F96F31A1ECC240098BF88 /* TextIndicatorWindow.h */,
+                                2D4F96F41A1ECC240098BF88 /* TextIndicatorWindow.mm */,
</ins><span class="cx">                                 26255F0218878E110006E1FD /* UserAgentMac.mm */,
</span><span class="cx">                                 F587854C02DE375901EA4122 /* WebCoreFrameView.h */,
</span><span class="cx">                         );
</span><span class="lines">@@ -23537,6 +23549,7 @@
</span><span class="cx">                                 BC5EB5DB0E81B7EA00B25965 /* BorderValue.h in Headers */,
</span><span class="cx">                                 6ED8C37A183BFF8C009E53BD /* BoxShape.h in Headers */,
</span><span class="cx">                                 BCEA4855097D93020094C9E4 /* break_lines.h in Headers */,
</span><ins>+                                2D4F96F61A1ECC240098BF88 /* TextIndicator.h in Headers */,
</ins><span class="cx">                                 93309DDB099E64920056E581 /* BreakBlockquoteCommand.h in Headers */,
</span><span class="cx">                                 599E759011055A1F00D904FA /* Bridge.h in Headers */,
</span><span class="cx">                                 59B5977511086579007159E8 /* BridgeJSC.h in Headers */,
</span><span class="lines">@@ -26096,6 +26109,7 @@
</span><span class="cx">                                 B8DBDB4E130B0F8A00F5CDB1 /* SpellingCorrectionCommand.h in Headers */,
</span><span class="cx">                                 4512502315DCE37D002F84E2 /* SpinButtonElement.h in Headers */,
</span><span class="cx">                                 93309E12099E64920056E581 /* SplitElementCommand.h in Headers */,
</span><ins>+                                2D4F96F71A1ECC240098BF88 /* TextIndicatorWindow.h in Headers */,
</ins><span class="cx">                                 93309E14099E64920056E581 /* SplitTextNodeCommand.h in Headers */,
</span><span class="cx">                                 93309E16099E64920056E581 /* SplitTextNodeContainingElementCommand.h in Headers */,
</span><span class="cx">                                 84730D931248F0B300D3A9C9 /* SpotLightSource.h in Headers */,
</span><span class="lines">@@ -27627,6 +27641,7 @@
</span><span class="cx">                                 85DF2EEE0AA387CB00AD64C5 /* DOMHTMLElement.mm in Sources */,
</span><span class="cx">                                 85C050BB0AD84F5E005532E7 /* DOMHTMLEmbedElement.mm in Sources */,
</span><span class="cx">                                 85BA4CE00AA6861B0088052D /* DOMHTMLFieldSetElement.mm in Sources */,
</span><ins>+                                2D4F96F81A1ECC240098BF88 /* TextIndicatorWindow.mm in Sources */,
</ins><span class="cx">                                 85ECBEF00AA7626900544F0B /* DOMHTMLFontElement.mm in Sources */,
</span><span class="cx">                                 85DF2C5D0AA341F600AD64C5 /* DOMHTMLFormElement.mm in Sources */,
</span><span class="cx">                                 85DF81960AA77E4B00486AD7 /* DOMHTMLFrameElement.mm in Sources */,
</span><span class="lines">@@ -29534,6 +29549,7 @@
</span><span class="cx">                                 FE8A674716CDD19E00930BF8 /* SQLStatementBackend.cpp in Sources */,
</span><span class="cx">                                 97BC6A4D1505F081001B74AC /* SQLStatementSync.cpp in Sources */,
</span><span class="cx">                                 97BC6A4F1505F081001B74AC /* SQLTransaction.cpp in Sources */,
</span><ins>+                                2D4F96F51A1ECC240098BF88 /* TextIndicator.cpp in Sources */,
</ins><span class="cx">                                 FEE1811316C319E800084849 /* SQLTransactionBackend.cpp in Sources */,
</span><span class="cx">                                 FEAD7D8716C339EE00D4670B /* SQLTransactionBackendSync.cpp in Sources */,
</span><span class="cx">                                 97BC6A541505F081001B74AC /* SQLTransactionClient.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorepageTextIndicatorcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/page/TextIndicator.cpp (0 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/TextIndicator.cpp                                (rev 0)
+++ trunk/Source/WebCore/page/TextIndicator.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -0,0 +1,195 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;TextIndicator.h&quot;
+
+#include &quot;Document.h&quot;
+#include &quot;Frame.h&quot;
+#include &quot;FrameSelection.h&quot;
+#include &quot;FrameSnapshotting.h&quot;
+#include &quot;FrameView.h&quot;
+#include &quot;GeometryUtilities.h&quot;
+#include &quot;GraphicsContext.h&quot;
+#include &quot;ImageBuffer.h&quot;
+#include &quot;IntRect.h&quot;
+#include &quot;Page.h&quot;
+
+using namespace WebCore;
+
+// These should match the values in TextIndicatorWindow.
+// FIXME: Ideally these would only be in one place.
+#if ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
+const float horizontalBorder = 3;
+const float verticalBorder = 1;
+const float dropShadowBlurRadius = 1.5;
+#else
+const float horizontalBorder = 2;
+const float verticalBorder = 1;
+const float dropShadowBlurRadius = 12;
+#endif
+
+namespace WebCore {
+
+static FloatRect outsetIndicatorRectIncludingShadow(const FloatRect rect)
+{
+    FloatRect outsetRect = rect;
+    outsetRect.inflateX(dropShadowBlurRadius + horizontalBorder);
+    outsetRect.inflateY(dropShadowBlurRadius + verticalBorder);
+    return outsetRect;
+}
+
+static bool textIndicatorsForTextRectsOverlap(const Vector&lt;FloatRect&gt;&amp; textRects)
+{
+    size_t count = textRects.size();
+    if (count &lt;= 1)
+        return false;
+
+    Vector&lt;FloatRect&gt; indicatorRects;
+    indicatorRects.reserveInitialCapacity(count);
+
+    for (size_t i = 0; i &lt; count; ++i) {
+        FloatRect indicatorRect = outsetIndicatorRectIncludingShadow(textRects[i]);
+
+        for (size_t j = indicatorRects.size(); j; ) {
+            --j;
+            if (indicatorRect.intersects(indicatorRects[j]))
+                return true;
+        }
+
+        indicatorRects.uncheckedAppend(indicatorRect);
+    }
+
+    return false;
+}
+
+PassRefPtr&lt;TextIndicator&gt; TextIndicator::create(const TextIndicatorData&amp; data)
+{
+    return adoptRef(new TextIndicator(data));
+}
+
+PassRefPtr&lt;TextIndicator&gt; TextIndicator::createWithRange(const Range&amp; range, TextIndicatorPresentationTransition presentationTransition)
+{
+    Frame* frame = range.startContainer()-&gt;document().frame();
+
+    if (!frame)
+        return nullptr;
+
+    VisibleSelection oldSelection = frame-&gt;selection().selection();
+    frame-&gt;selection().setSelection(&amp;range);
+
+    RefPtr&lt;TextIndicator&gt; indicator = TextIndicator::createWithSelectionInFrame(*frame, presentationTransition);
+
+    frame-&gt;selection().setSelection(oldSelection);
+    
+    return indicator.release();
+}
+
+// FIXME (138889): Ideally the FrameSnapshotting functions would be more flexible
+// and we wouldn't have to implement this here.
+static PassRefPtr&lt;Image&gt; snapshotSelectionWithHighlight(Frame&amp; frame)
+{
+    auto&amp; selection = frame.selection();
+
+    if (!selection.isRange())
+        return nullptr;
+
+    FloatRect selectionBounds = selection.selectionBounds();
+
+    // It is possible for the selection bounds to be empty; see https://bugs.webkit.org/show_bug.cgi?id=56645.
+    if (selectionBounds.isEmpty())
+        return nullptr;
+
+    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotFrameRect(frame, enclosingIntRect(selectionBounds), 0);
+
+    if (!snapshot)
+        return nullptr;
+
+    return snapshot-&gt;copyImage(CopyBackingStore, Unscaled);
+}
+
+PassRefPtr&lt;TextIndicator&gt; TextIndicator::createWithSelectionInFrame(Frame&amp; frame, TextIndicatorPresentationTransition presentationTransition)
+{
+    IntRect selectionRect = enclosingIntRect(frame.selection().selectionBounds());
+    RefPtr&lt;Image&gt; indicatorBitmap = snapshotSelection(frame, SnapshotOptionsForceBlackText)-&gt;copyImage(CopyBackingStore, Unscaled);
+    if (!indicatorBitmap)
+        return nullptr;
+
+    RefPtr&lt;Image&gt; indicatorBitmapWithHighlight;
+    if (presentationTransition == TextIndicatorPresentationTransition::BounceAndCrossfade)
+        indicatorBitmapWithHighlight = snapshotSelectionWithHighlight(frame);
+
+    // Store the selection rect in window coordinates, to be used subsequently
+    // to determine if the indicator and selection still precisely overlap.
+    IntRect selectionRectInWindowCoordinates = frame.view()-&gt;contentsToWindow(selectionRect);
+
+    Vector&lt;FloatRect&gt; textRects;
+    frame.selection().getClippedVisibleTextRectangles(textRects);
+
+    // The bounding rect of all the text rects can be different than the selection
+    // rect when the selection spans multiple lines; the indicator doesn't actually
+    // care where the selection highlight goes, just where the text actually is.
+    FloatRect textBoundingRectInWindowCoordinates;
+    Vector&lt;FloatRect&gt; textRectsInWindowCoordinates;
+    for (const FloatRect&amp; textRect : textRects) {
+        FloatRect textRectInWindowCoordinates = frame.view()-&gt;contentsToWindow(enclosingIntRect(textRect));
+        textRectsInWindowCoordinates.append(textRectInWindowCoordinates);
+        textBoundingRectInWindowCoordinates.unite(textRectInWindowCoordinates);
+    }
+
+    Vector&lt;FloatRect&gt; textRectsInBoundingRectCoordinates;
+    for (auto rect : textRectsInWindowCoordinates) {
+        rect.moveBy(-textBoundingRectInWindowCoordinates.location());
+        textRectsInBoundingRectCoordinates.append(rect);
+    }
+
+    TextIndicatorData data;
+    data.selectionRectInWindowCoordinates = selectionRectInWindowCoordinates;
+    data.textBoundingRectInWindowCoordinates = textBoundingRectInWindowCoordinates;
+    data.textRectsInBoundingRectCoordinates = textRectsInBoundingRectCoordinates;
+    data.contentImageScaleFactor = frame.page()-&gt;deviceScaleFactor();
+    data.contentImage = indicatorBitmap;
+    data.contentImageWithHighlight = indicatorBitmapWithHighlight;
+    data.presentationTransition = presentationTransition;
+
+    return TextIndicator::create(data);
+}
+
+TextIndicator::TextIndicator(const TextIndicatorData&amp; data)
+    : m_data(data)
+{
+    ASSERT(m_data.contentImageScaleFactor != 1 || m_data.contentImage-&gt;size() == enclosingIntRect(m_data.selectionRectInWindowCoordinates).size());
+
+    if (textIndicatorsForTextRectsOverlap(m_data.textRectsInBoundingRectCoordinates)) {
+        m_data.textRectsInBoundingRectCoordinates[0] = unionRect(m_data.textRectsInBoundingRectCoordinates);
+        m_data.textRectsInBoundingRectCoordinates.shrink(1);
+    }
+}
+
+TextIndicator::~TextIndicator()
+{
+}
+
+} // namespace WebCore
</ins></span></pre></div>
<a id="trunkSourceWebCorepageTextIndicatorh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/page/TextIndicator.h (0 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/TextIndicator.h                                (rev 0)
+++ trunk/Source/WebCore/page/TextIndicator.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef TextIndicator_h
+#define TextIndicator_h
+
+#include &quot;FloatRect.h&quot;
+#include &quot;Image.h&quot;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101000
+#define ENABLE_LEGACY_TEXT_INDICATOR_STYLE 1
+#else
+#define ENABLE_LEGACY_TEXT_INDICATOR_STYLE 0
+#endif
+
+namespace WebCore {
+
+class Frame;
+class GraphicsContext;
+class Range;
+
+enum class TextIndicatorPresentationTransition {
+    None,
+    Bounce,
+    BounceAndCrossfade
+};
+
+struct TextIndicatorData {
+    FloatRect selectionRectInWindowCoordinates;
+    FloatRect textBoundingRectInWindowCoordinates;
+    Vector&lt;FloatRect&gt; textRectsInBoundingRectCoordinates;
+    float contentImageScaleFactor;
+    RefPtr&lt;Image&gt; contentImageWithHighlight;
+    RefPtr&lt;Image&gt; contentImage;
+    TextIndicatorPresentationTransition presentationTransition;
+};
+
+class TextIndicator : public RefCounted&lt;TextIndicator&gt; {
+public:
+    static PassRefPtr&lt;TextIndicator&gt; create(const TextIndicatorData&amp;);
+    static PassRefPtr&lt;TextIndicator&gt; createWithSelectionInFrame(Frame&amp;, TextIndicatorPresentationTransition);
+    static PassRefPtr&lt;TextIndicator&gt; createWithRange(const Range&amp;, TextIndicatorPresentationTransition);
+
+    ~TextIndicator();
+
+    FloatRect selectionRectInWindowCoordinates() const { return m_data.selectionRectInWindowCoordinates; }
+    FloatRect textBoundingRectInWindowCoordinates() const { return m_data.textBoundingRectInWindowCoordinates; }
+    const Vector&lt;FloatRect&gt;&amp; textRectsInBoundingRectCoordinates() const { return m_data.textRectsInBoundingRectCoordinates; }
+    float contentImageScaleFactor() const { return m_data.contentImageScaleFactor; }
+    Image *contentImageWithHighlight() const { return m_data.contentImageWithHighlight.get(); }
+    Image *contentImage() const { return m_data.contentImage.get(); }
+    TextIndicatorPresentationTransition presentationTransition() const { return m_data.presentationTransition; }
+
+    void setPresentationTransition(TextIndicatorPresentationTransition transition) { m_data.presentationTransition = transition; }
+
+    TextIndicatorData data() const { return m_data; }
+
+private:
+    TextIndicator(const TextIndicatorData&amp;);
+
+    TextIndicatorData m_data;
+};
+
+} // namespace WebKit
+
+#endif // TextIndicator_h
</ins></span></pre></div>
<a id="trunkSourceWebCorepagemacTextIndicatorWindowh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/page/mac/TextIndicatorWindow.h (0 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/TextIndicatorWindow.h                                (rev 0)
+++ trunk/Source/WebCore/page/mac/TextIndicatorWindow.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef TextIndicatorWindow_h
+#define TextIndicatorWindow_h
+
+#if PLATFORM(MAC)
+
+#import &lt;functional&gt;
+#import &lt;wtf/Noncopyable.h&gt;
+#import &lt;wtf/RefPtr.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+#import &lt;wtf/RunLoop.h&gt;
+
+@class NSView;
+@class WebTextIndicatorView;
+
+namespace WebCore {
+
+class TextIndicator;
+
+class TextIndicatorWindow {
+    WTF_MAKE_NONCOPYABLE(TextIndicatorWindow);
+
+public:
+    explicit TextIndicatorWindow(NSView *);
+    ~TextIndicatorWindow();
+
+    void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool fadeOut, std::function&lt;void ()&gt; animationCompletionHandler);
+
+private:
+    void closeWindow();
+
+    void startFadeOutTimerFired();
+
+    NSView *m_targetView;
+    RefPtr&lt;TextIndicator&gt; m_textIndicator;
+    RetainPtr&lt;NSWindow&gt; m_textIndicatorWindow;
+    RetainPtr&lt;WebTextIndicatorView&gt; m_textIndicatorView;
+
+    RunLoop::Timer&lt;TextIndicatorWindow&gt; m_startFadeOutTimer;
+
+    std::function&lt;void ()&gt; m_bounceAnimationCompletionHandler;
+};
+
+} // namespace WebKit
+
+#endif // TextIndicatorWindow_h
+
+#endif // PLATFORM(MAC)
</ins></span></pre></div>
<a id="trunkSourceWebCorepagemacTextIndicatorWindowmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm (0 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm                                (rev 0)
+++ trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -0,0 +1,337 @@
</span><ins>+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;TextIndicatorWindow.h&quot;
+
+#if PLATFORM(MAC)
+
+#import &quot;GraphicsContext.h&quot;
+#import &quot;QuartzCoreSPI.h&quot;
+#import &quot;TextIndicator.h&quot;
+#import &quot;WebActionDisablingCALayerDelegate.h&quot;
+
+const CFTimeInterval bounceAnimationDuration = 0.12;
+const CFTimeInterval bounceWithCrossfadeAnimationDuration = 0.3;
+const CFTimeInterval timeBeforeFadeStarts = bounceAnimationDuration + 0.2;
+const CFTimeInterval fadeOutAnimationDuration = 0.3;
+
+#if ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
+const CGFloat midBounceScale = 1.5;
+const CGFloat horizontalBorder = 3;
+const CGFloat verticalBorder = 1;
+const CGFloat borderWidth = 1.0;
+const CGFloat cornerRadius = 3;
+const CGFloat dropShadowOffsetX = 0;
+const CGFloat dropShadowOffsetY = 1;
+const CGFloat dropShadowBlurRadius = 1.5;
+#else
+const CGFloat midBounceScale = 1.2;
+const CGFloat horizontalBorder = 2;
+const CGFloat verticalBorder = 1;
+const CGFloat borderWidth = 0;
+const CGFloat cornerRadius = 0;
+const CGFloat dropShadowOffsetX = 0;
+const CGFloat dropShadowOffsetY = 5;
+const CGFloat dropShadowBlurRadius = 12;
+const CGFloat rimShadowBlurRadius = 2;
+#endif
+
+NSString *textLayerKey = @&quot;TextLayer&quot;;
+NSString *dropShadowLayerKey = @&quot;DropShadowLayer&quot;;
+NSString *rimShadowLayerKey = @&quot;RimShadowLayer&quot;;
+
+using namespace WebCore;
+
+@interface WebTextIndicatorView : NSView {
+    RefPtr&lt;TextIndicator&gt; _textIndicator;
+    RetainPtr&lt;NSArray&gt; _bounceLayers;
+    NSSize _margin;
+}
+
+- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr&lt;TextIndicator&gt;)textIndicator margin:(NSSize)margin;
+
+- (void)presentWithCompletionHandler:(void(^)(void))completionHandler;
+- (void)hideWithCompletionHandler:(void(^)(void))completionHandler;
+
+@end
+
+@implementation WebTextIndicatorView
+
+- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr&lt;TextIndicator&gt;)textIndicator margin:(NSSize)margin
+{
+    if (!(self = [super initWithFrame:frame]))
+        return nil;
+
+    _textIndicator = textIndicator;
+    _margin = margin;
+
+    self.wantsLayer = YES;
+    self.layer.anchorPoint = CGPointZero;
+
+    bool wantsCrossfade = _textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::BounceAndCrossfade;
+
+    FloatSize contentsImageLogicalSize = _textIndicator-&gt;contentImage()-&gt;size();
+    contentsImageLogicalSize.scale(1 / _textIndicator-&gt;contentImageScaleFactor());
+    RetainPtr&lt;CGImageRef&gt; contentsImage;
+    if (wantsCrossfade)
+        contentsImage = _textIndicator-&gt;contentImageWithHighlight()-&gt;getCGImageRef();
+    else
+        contentsImage = _textIndicator-&gt;contentImage()-&gt;getCGImageRef();
+
+    RetainPtr&lt;NSMutableArray&gt; bounceLayers = adoptNS([[NSMutableArray alloc] init]);
+
+    RetainPtr&lt;CGColorRef&gt; highlightColor = [NSColor colorWithDeviceRed:1 green:1 blue:0 alpha:1].CGColor;
+    RetainPtr&lt;CGColorRef&gt; rimShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.15].CGColor;
+    RetainPtr&lt;CGColorRef&gt; dropShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.2].CGColor;
+
+    RetainPtr&lt;CGColorRef&gt; borderColor = [NSColor colorWithDeviceRed:.96 green:.90 blue:0 alpha:1].CGColor;
+    RetainPtr&lt;CGColorRef&gt; gradientDarkColor = [NSColor colorWithDeviceRed:.929 green:.8 blue:0 alpha:1].CGColor;
+    RetainPtr&lt;CGColorRef&gt; gradientLightColor = [NSColor colorWithDeviceRed:.949 green:.937 blue:0 alpha:1].CGColor;
+
+    for (auto&amp; textRect : _textIndicator-&gt;textRectsInBoundingRectCoordinates()) {
+        FloatRect bounceLayerRect = textRect;
+        bounceLayerRect.move(_margin.width, _margin.height);
+        bounceLayerRect.inflateX(horizontalBorder);
+        bounceLayerRect.inflateY(verticalBorder);
+
+        RetainPtr&lt;CALayer&gt; bounceLayer = adoptNS([[CALayer alloc] init]);
+        [bounceLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
+        [bounceLayer setFrame:bounceLayerRect];
+        [bounceLayer setOpacity:0];
+        [bounceLayers addObject:bounceLayer.get()];
+
+        FloatRect yellowHighlightRect(FloatPoint(), bounceLayerRect.size());
+        // FIXME (138888): Ideally we wouldn't remove the margin in this case, but we need to
+        // ensure that the yellow highlight and contentImageWithHighlight overlap precisely.
+        if (wantsCrossfade) {
+            yellowHighlightRect.inflateX(-horizontalBorder);
+            yellowHighlightRect.inflateY(-verticalBorder);
+        }
+
+        RetainPtr&lt;CALayer&gt; dropShadowLayer = adoptNS([[CALayer alloc] init]);
+        [dropShadowLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
+        [dropShadowLayer setShadowColor:dropShadowColor.get()];
+        [dropShadowLayer setShadowRadius:dropShadowBlurRadius];
+        [dropShadowLayer setShadowOffset:CGSizeMake(dropShadowOffsetX, dropShadowOffsetY)];
+        [dropShadowLayer setShadowPathIsBounds:YES];
+        [dropShadowLayer setShadowOpacity:1];
+        [dropShadowLayer setFrame:yellowHighlightRect];
+        [dropShadowLayer setCornerRadius:cornerRadius];
+        [bounceLayer addSublayer:dropShadowLayer.get()];
+        [bounceLayer setValue:dropShadowLayer.get() forKey:dropShadowLayerKey];
+
+#if !ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
+        RetainPtr&lt;CALayer&gt; rimShadowLayer = adoptNS([[CALayer alloc] init]);
+        [rimShadowLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
+        [rimShadowLayer setFrame:yellowHighlightRect];
+        [rimShadowLayer setShadowColor:rimShadowColor.get()];
+        [rimShadowLayer setShadowRadius:rimShadowBlurRadius];
+        [rimShadowLayer setShadowPathIsBounds:YES];
+        [rimShadowLayer setShadowOffset:CGSizeZero];
+        [rimShadowLayer setShadowOpacity:1];
+        [rimShadowLayer setFrame:yellowHighlightRect];
+        [rimShadowLayer setCornerRadius:cornerRadius];
+        [bounceLayer addSublayer:rimShadowLayer.get()];
+        [bounceLayer setValue:rimShadowLayer.get() forKey:rimShadowLayerKey];
+#endif
+
+#if ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
+        RetainPtr&lt;CAGradientLayer&gt; textLayer = adoptNS([[CAGradientLayer alloc] init]);
+        [textLayer setColors:@[ (id)gradientLightColor.get(), (id)gradientDarkColor.get() ]];
+#else
+        RetainPtr&lt;CALayer&gt; textLayer = adoptNS([[CALayer alloc] init]);
+#endif
+        [textLayer setBackgroundColor:highlightColor.get()];
+        [textLayer setBorderColor:borderColor.get()];
+        [textLayer setBorderWidth:borderWidth];
+        [textLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
+        [textLayer setContents:(id)contentsImage.get()];
+
+        FloatRect imageRect = textRect;
+        imageRect.move(_textIndicator-&gt;textBoundingRectInWindowCoordinates().location() - _textIndicator-&gt;selectionRectInWindowCoordinates().location());
+        [textLayer setContentsRect:CGRectMake(imageRect.x() / contentsImageLogicalSize.width(), imageRect.y() / contentsImageLogicalSize.height(), imageRect.width() / contentsImageLogicalSize.width(), imageRect.height() / contentsImageLogicalSize.height())];
+        [textLayer setContentsGravity:kCAGravityCenter];
+        [textLayer setContentsScale:_textIndicator-&gt;contentImageScaleFactor()];
+        [textLayer setFrame:yellowHighlightRect];
+        [textLayer setCornerRadius:cornerRadius];
+        [bounceLayer setValue:textLayer.get() forKey:textLayerKey];
+        [bounceLayer addSublayer:textLayer.get()];
+    }
+
+    self.layer.sublayers = bounceLayers.get();
+    _bounceLayers = bounceLayers;
+
+    return self;
+}
+
+- (void)presentWithCompletionHandler:(void(^)(void))completionHandler
+{
+    bool wantsCrossfade = _textIndicator-&gt;presentationTransition() == TextIndicatorPresentationTransition::BounceAndCrossfade;
+    double animationDuration = wantsCrossfade ? bounceWithCrossfadeAnimationDuration : bounceAnimationDuration;
+    RetainPtr&lt;CAKeyframeAnimation&gt; bounceAnimation = [CAKeyframeAnimation animationWithKeyPath:@&quot;transform&quot;];
+    [bounceAnimation setValues:@[
+        [NSValue valueWithCATransform3D:CATransform3DIdentity],
+        [NSValue valueWithCATransform3D:CATransform3DMakeScale(midBounceScale, midBounceScale, 1)],
+        [NSValue valueWithCATransform3D:CATransform3DIdentity]
+        ]];
+    [bounceAnimation setDuration:animationDuration];
+
+    RetainPtr&lt;CABasicAnimation&gt; crossfadeAnimation;
+    RetainPtr&lt;CABasicAnimation&gt; fadeShadowInAnimation;
+    if (wantsCrossfade) {
+        crossfadeAnimation = [CABasicAnimation animationWithKeyPath:@&quot;contents&quot;];
+        RetainPtr&lt;CGImageRef&gt; contentsImage = _textIndicator-&gt;contentImage()-&gt;getCGImageRef();
+        [crossfadeAnimation setToValue:(id)contentsImage.get()];
+        [crossfadeAnimation setFillMode:kCAFillModeForwards];
+        [crossfadeAnimation setRemovedOnCompletion:NO];
+        [crossfadeAnimation setDuration:animationDuration];
+
+        fadeShadowInAnimation = [CABasicAnimation animationWithKeyPath:@&quot;shadowOpacity&quot;];
+        [fadeShadowInAnimation setFromValue:@0];
+        [fadeShadowInAnimation setToValue:@1];
+        [fadeShadowInAnimation setFillMode:kCAFillModeForwards];
+        [fadeShadowInAnimation setRemovedOnCompletion:NO];
+        [fadeShadowInAnimation setDuration:animationDuration];
+    }
+
+    [CATransaction begin];
+    [CATransaction setCompletionBlock:completionHandler];
+    for (CALayer* bounceLayer in _bounceLayers.get()) {
+        [bounceLayer setOpacity:1];
+        [bounceLayer addAnimation:bounceAnimation.get() forKey:@&quot;bounce&quot;];
+        if (wantsCrossfade) {
+            [[bounceLayer valueForKey:textLayerKey] addAnimation:crossfadeAnimation.get() forKey:@&quot;contentTransition&quot;];
+            [[bounceLayer valueForKey:dropShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@&quot;fadeShadowIn&quot;];
+            [[bounceLayer valueForKey:rimShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@&quot;fadeShadowIn&quot;];
+        }
+    }
+    [CATransaction commit];
+}
+
+- (void)hideWithCompletionHandler:(void(^)(void))completionHandler
+{
+    RetainPtr&lt;CABasicAnimation&gt; fadeAnimation = [CABasicAnimation animationWithKeyPath:@&quot;opacity&quot;];
+    [fadeAnimation setFromValue:@1];
+    [fadeAnimation setToValue:@0];
+    [fadeAnimation setFillMode:kCAFillModeForwards];
+    [fadeAnimation setRemovedOnCompletion:NO];
+    [fadeAnimation setDuration:fadeOutAnimationDuration];
+
+    [CATransaction begin];
+    [CATransaction setCompletionBlock:completionHandler];
+    [self.layer addAnimation:fadeAnimation.get() forKey:@&quot;fadeOut&quot;];
+    [CATransaction commit];
+}
+
+- (BOOL)isFlipped
+{
+    return YES;
+}
+
+@end
+
+namespace WebCore {
+
+TextIndicatorWindow::TextIndicatorWindow(NSView *targetView)
+    : m_targetView(targetView)
+    , m_startFadeOutTimer(RunLoop::main(), this, &amp;TextIndicatorWindow::startFadeOutTimerFired)
+{
+}
+
+TextIndicatorWindow::~TextIndicatorWindow()
+{
+    closeWindow();
+}
+
+void TextIndicatorWindow::setTextIndicator(PassRefPtr&lt;TextIndicator&gt; textIndicator, bool fadeOut, std::function&lt;void ()&gt; animationCompletionHandler)
+{
+    if (m_textIndicator == textIndicator)
+        return;
+
+    m_textIndicator = textIndicator;
+
+    // Get rid of the old window.
+    closeWindow();
+
+    if (!m_textIndicator)
+        return;
+
+    NSRect contentRect = m_textIndicator-&gt;textBoundingRectInWindowCoordinates();
+
+    CGFloat horizontalMargin = std::max(dropShadowBlurRadius * 2 + horizontalBorder, contentRect.size.width * 2);
+    CGFloat verticalMargin = std::max(dropShadowBlurRadius * 2 + verticalBorder, contentRect.size.height * 2);
+
+    contentRect = NSInsetRect(contentRect, -horizontalMargin, -verticalMargin);
+    NSRect windowFrameRect = NSIntegralRect([m_targetView convertRect:contentRect toView:nil]);
+    windowFrameRect = [[m_targetView window] convertRectToScreen:windowFrameRect];
+    NSRect windowContentRect = [NSWindow contentRectForFrameRect:windowFrameRect styleMask:NSBorderlessWindowMask];
+
+    m_textIndicatorWindow = adoptNS([[NSWindow alloc] initWithContentRect:windowContentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]);
+
+    [m_textIndicatorWindow setBackgroundColor:[NSColor clearColor]];
+    [m_textIndicatorWindow setOpaque:NO];
+    [m_textIndicatorWindow setIgnoresMouseEvents:YES];
+
+    m_textIndicatorView = adoptNS([[WebTextIndicatorView alloc] initWithFrame:NSMakeRect(0, 0, [m_textIndicatorWindow frame].size.width, [m_textIndicatorWindow frame].size.height) textIndicator:m_textIndicator margin:NSMakeSize(horizontalMargin, verticalMargin)]);
+    [m_textIndicatorWindow setContentView:m_textIndicatorView.get()];
+
+    [[m_targetView window] addChildWindow:m_textIndicatorWindow.get() ordered:NSWindowAbove];
+    [m_textIndicatorWindow setReleasedWhenClosed:NO];
+
+    if (m_textIndicator-&gt;presentationTransition() != TextIndicatorPresentationTransition::None) {
+        [m_textIndicatorView presentWithCompletionHandler:[animationCompletionHandler] {
+            animationCompletionHandler();
+        }];
+    }
+
+    if (fadeOut)
+        m_startFadeOutTimer.startOneShot(timeBeforeFadeStarts);
+}
+
+void TextIndicatorWindow::closeWindow()
+{
+    if (!m_textIndicatorWindow)
+        return;
+
+    m_startFadeOutTimer.stop();
+
+    [[m_textIndicatorWindow parentWindow] removeChildWindow:m_textIndicatorWindow.get()];
+    [m_textIndicatorWindow close];
+    m_textIndicatorWindow = nullptr;
+}
+
+void TextIndicatorWindow::startFadeOutTimerFired()
+{
+    RetainPtr&lt;NSWindow&gt; indicatorWindow = m_textIndicatorWindow;
+    [m_textIndicatorView hideWithCompletionHandler:[indicatorWindow] {
+        [[indicatorWindow parentWindow] removeChildWindow:indicatorWindow.get()];
+        [indicatorWindow close];
+    }];
+}
+
+} // namespace WebCore
+
+#endif // PLATFORM(MAC)
</ins></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/CMakeLists.txt        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -207,7 +207,6 @@
</span><span class="cx">     Shared/ShareableBitmap.cpp
</span><span class="cx">     Shared/ShareableResource.cpp
</span><span class="cx">     Shared/StatisticsData.cpp
</span><del>-    Shared/TextIndicator.cpp
</del><span class="cx">     Shared/UpdateInfo.cpp
</span><span class="cx">     Shared/UserData.cpp
</span><span class="cx">     Shared/VisitedLinkTable.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/ChangeLog        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1,5 +1,54 @@
</span><span class="cx"> 2014-11-21  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Move TextIndicator{Window} to WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=138954
+        &lt;rdar://problem/18992185&gt;
+
+        Some adjustments by Csaba Osztrogonác.
+        Reviewed by Anders Carlsson.
+
+        * CMakeLists.txt:
+        Remove TextIndicator.cpp.
+
+        * Scripts/webkit/messages.py:
+        (struct_or_class):
+        (headers_for_type):
+        Tell messages.py that TextIndicatorData is a struct, and comes from TextIndicator.h.
+
+        * Shared/WebCoreArgumentCoders.h:
+        * Shared/WebCoreArgumentCoders.cpp:
+        (IPC::ArgumentCoder&lt;TextIndicatorData&gt;::encode):
+        (IPC::ArgumentCoder&lt;TextIndicatorData&gt;::decode):
+        Add argument coders for TextIndicatorData.
+
+        * Shared/DictionaryPopupInfo.h:        
+        * Shared/mac/ActionMenuHitTestResult.h:
+        * Shared/mac/ActionMenuHitTestResult.mm:
+        * UIProcess/API/gtk/PageClientImpl.h:
+        * UIProcess/API/gtk/PageClientImpl.cpp:
+        * UIProcess/API/mac/WKView.mm:
+        * UIProcess/API/mac/WKViewInternal.h:
+        * UIProcess/CoordinatedGraphics/WebView.h:
+        * UIProcess/CoordinatedGraphics/WebView.cpp:
+        * UIProcess/PageClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * UIProcess/ios/PageClientImplIOS.h:
+        * UIProcess/ios/WKContentView.h:
+        * UIProcess/mac/PageClientImpl.h:
+        * UIProcess/mac/PageClientImpl.mm:
+        * UIProcess/mac/WKActionMenuController.mm:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
+        * WebProcess/WebPage/FindController.cpp:
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        * WebProcess/WebPage/mac/WebPageMac.mm:
+        Adjust to TextIndicator and TextIndicatorWindow's new home.
+
+2014-11-21  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
</ins><span class="cx">         REGRESSION (r176238): Mailto links are getting preloaded, which results in a compose window
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=138972
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2Scriptswebkitmessagespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Scripts/webkit/messages.py (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Scripts/webkit/messages.py        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Scripts/webkit/messages.py        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -183,6 +183,7 @@
</span><span class="cx">         'WebCore::RotateTransformOperation',
</span><span class="cx">         'WebCore::ScaleTransformOperation',
</span><span class="cx">         'WebCore::SkewTransformOperation',
</span><ins>+        'WebCore::TextIndicatorData',
</ins><span class="cx">         'WebCore::TimingFunction',
</span><span class="cx">         'WebCore::TransformationMatrix',
</span><span class="cx">         'WebCore::TransformOperation',
</span><span class="lines">@@ -438,6 +439,7 @@
</span><span class="cx">         'WebCore::PasteboardWebContent': ['&lt;WebCore/Pasteboard.h&gt;'],
</span><span class="cx">         'WebCore::TextCheckingRequestData': ['&lt;WebCore/TextChecking.h&gt;'],
</span><span class="cx">         'WebCore::TextCheckingResult': ['&lt;WebCore/TextCheckerClient.h&gt;'],
</span><ins>+        'WebCore::TextIndicatorData': ['&lt;WebCore/TextIndicator.h&gt;'],
</ins><span class="cx">         'WebCore::ViewportAttributes': ['&lt;WebCore/ViewportArguments.h&gt;'],
</span><span class="cx">         'WebKit::BackForwardListItemState': ['&quot;SessionState.h&quot;'],
</span><span class="cx">         'WebKit::InjectedBundleUserMessageEncoder': [],
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedDictionaryPopupInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/DictionaryPopupInfo.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/DictionaryPopupInfo.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/DictionaryPopupInfo.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -26,8 +26,8 @@
</span><span class="cx"> #ifndef DictionaryPopupInfo_h
</span><span class="cx"> #define DictionaryPopupInfo_h
</span><span class="cx"> 
</span><del>-#include &quot;TextIndicator.h&quot;
</del><span class="cx"> #include &lt;WebCore/FloatPoint.h&gt;
</span><ins>+#include &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> #include &quot;AttributedString.h&quot;
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx">     static bool decode(IPC::ArgumentDecoder&amp;, DictionaryPopupInfo&amp;);
</span><span class="cx"> 
</span><span class="cx">     WebCore::FloatPoint origin;
</span><del>-    TextIndicator::Data textIndicator;
</del><ins>+    WebCore::TextIndicatorData textIndicator;
</ins><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     RetainPtr&lt;CFDictionaryRef&gt; options;
</span><span class="cx">     AttributedString attributedString;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedTextIndicatorcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/TextIndicator.cpp (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/TextIndicator.cpp        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/TextIndicator.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1,267 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;TextIndicator.h&quot;
-
-#if PLATFORM(COCOA)
-#include &quot;ArgumentCodersCF.h&quot;
-#endif
-
-#include &quot;ArgumentDecoder.h&quot;
-#include &quot;ArgumentEncoder.h&quot;
-#include &quot;ShareableBitmap.h&quot;
-#include &quot;WebCoreArgumentCoders.h&quot;
-#include &quot;WebFrame.h&quot;
-#include &quot;WebPage.h&quot;
-#include &lt;WebCore/Document.h&gt;
-#include &lt;WebCore/Frame.h&gt;
-#include &lt;WebCore/FrameSelection.h&gt;
-#include &lt;WebCore/FrameSnapshotting.h&gt;
-#include &lt;WebCore/FrameView.h&gt;
-#include &lt;WebCore/GeometryUtilities.h&gt;
-#include &lt;WebCore/GraphicsContext.h&gt;
-#include &lt;WebCore/ImageBuffer.h&gt;
-#include &lt;WebCore/IntRect.h&gt;
-
-using namespace WebCore;
-
-// These should match the values in TextIndicatorWindow.
-// FIXME: Ideally these would only be in one place.
-#if ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
-const float horizontalBorder = 3;
-const float verticalBorder = 1;
-const float dropShadowBlurRadius = 1.5;
-#else
-const float horizontalBorder = 2;
-const float verticalBorder = 1;
-const float dropShadowBlurRadius = 12;
-#endif
-
-namespace WebKit {
-
-static FloatRect outsetIndicatorRectIncludingShadow(const FloatRect rect)
-{
-    FloatRect outsetRect = rect;
-    outsetRect.inflateX(dropShadowBlurRadius + horizontalBorder);
-    outsetRect.inflateY(dropShadowBlurRadius + verticalBorder);
-    return outsetRect;
-}
-
-static bool textIndicatorsForTextRectsOverlap(const Vector&lt;FloatRect&gt;&amp; textRects)
-{
-    size_t count = textRects.size();
-    if (count &lt;= 1)
-        return false;
-
-    Vector&lt;FloatRect&gt; indicatorRects;
-    indicatorRects.reserveInitialCapacity(count);
-
-    for (size_t i = 0; i &lt; count; ++i) {
-        FloatRect indicatorRect = outsetIndicatorRectIncludingShadow(textRects[i]);
-
-        for (size_t j = indicatorRects.size(); j; ) {
-            --j;
-            if (indicatorRect.intersects(indicatorRects[j]))
-                return true;
-        }
-
-        indicatorRects.uncheckedAppend(indicatorRect);
-    }
-
-    return false;
-}
-
-PassRefPtr&lt;TextIndicator&gt; TextIndicator::create(const TextIndicator::Data&amp; data)
-{
-    return adoptRef(new TextIndicator(data));
-}
-
-PassRefPtr&lt;TextIndicator&gt; TextIndicator::createWithRange(const Range&amp; range, PresentationTransition presentationTransition)
-{
-    Frame* frame = range.startContainer()-&gt;document().frame();
-
-    if (!frame)
-        return nullptr;
-
-    VisibleSelection oldSelection = frame-&gt;selection().selection();
-    frame-&gt;selection().setSelection(&amp;range);
-
-    RefPtr&lt;TextIndicator&gt; indicator = TextIndicator::createWithSelectionInFrame(*WebFrame::fromCoreFrame(*frame), presentationTransition);
-
-    frame-&gt;selection().setSelection(oldSelection);
-    
-    return indicator.release();
-}
-
-// FIXME (138889): Ideally the FrameSnapshotting functions would be more flexible
-// and we wouldn't have to implement this here.
-static PassRefPtr&lt;ShareableBitmap&gt; snapshotSelectionWithHighlight(Frame&amp; frame)
-{
-    auto&amp; selection = frame.selection();
-
-    if (!selection.isRange())
-        return nullptr;
-
-    FloatRect selectionBounds = selection.selectionBounds();
-
-    // It is possible for the selection bounds to be empty; see https://bugs.webkit.org/show_bug.cgi?id=56645.
-    if (selectionBounds.isEmpty())
-        return nullptr;
-
-    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotFrameRect(frame, enclosingIntRect(selectionBounds), 0);
-
-    if (!snapshot)
-        return nullptr;
-
-    RefPtr&lt;ShareableBitmap&gt; sharedSnapshot = ShareableBitmap::createShareable(snapshot-&gt;internalSize(), ShareableBitmap::SupportsAlpha);
-    if (!sharedSnapshot)
-        return nullptr;
-
-    auto graphicsContext = sharedSnapshot-&gt;createGraphicsContext();
-    float deviceScaleFactor = frame.page()-&gt;deviceScaleFactor();
-    graphicsContext-&gt;scale(FloatSize(deviceScaleFactor, deviceScaleFactor));
-    graphicsContext-&gt;drawImageBuffer(snapshot.get(), ColorSpaceDeviceRGB, FloatPoint());
-
-    return sharedSnapshot.release();
-}
-
-PassRefPtr&lt;TextIndicator&gt; TextIndicator::createWithSelectionInFrame(const WebFrame&amp; frame, PresentationTransition presentationTransition)
-{
-    Frame&amp; coreFrame = *frame.coreFrame();
-    IntRect selectionRect = enclosingIntRect(coreFrame.selection().selectionBounds());
-    RefPtr&lt;ShareableBitmap&gt; indicatorBitmap = frame.createSelectionSnapshot();
-    if (!indicatorBitmap)
-        return nullptr;
-
-    RefPtr&lt;ShareableBitmap&gt; indicatorBitmapWithHighlight;
-    if (presentationTransition == PresentationTransition::BounceAndCrossfade)
-        indicatorBitmapWithHighlight = snapshotSelectionWithHighlight(coreFrame);
-
-    // Store the selection rect in window coordinates, to be used subsequently
-    // to determine if the indicator and selection still precisely overlap.
-    IntRect selectionRectInWindowCoordinates = coreFrame.view()-&gt;contentsToWindow(selectionRect);
-
-    Vector&lt;FloatRect&gt; textRects;
-    coreFrame.selection().getClippedVisibleTextRectangles(textRects);
-
-    // The bounding rect of all the text rects can be different than the selection
-    // rect when the selection spans multiple lines; the indicator doesn't actually
-    // care where the selection highlight goes, just where the text actually is.
-    FloatRect textBoundingRectInWindowCoordinates;
-    Vector&lt;FloatRect&gt; textRectsInWindowCoordinates;
-    for (const FloatRect&amp; textRect : textRects) {
-        FloatRect textRectInWindowCoordinates = coreFrame.view()-&gt;contentsToWindow(enclosingIntRect(textRect));
-        textRectsInWindowCoordinates.append(textRectInWindowCoordinates);
-        textBoundingRectInWindowCoordinates.unite(textRectInWindowCoordinates);
-    }
-
-    Vector&lt;FloatRect&gt; textRectsInBoundingRectCoordinates;
-    for (auto rect : textRectsInWindowCoordinates) {
-        rect.moveBy(-textBoundingRectInWindowCoordinates.location());
-        textRectsInBoundingRectCoordinates.append(rect);
-    }
-
-    TextIndicator::Data data;
-    data.selectionRectInWindowCoordinates = selectionRectInWindowCoordinates;
-    data.textBoundingRectInWindowCoordinates = textBoundingRectInWindowCoordinates;
-    data.textRectsInBoundingRectCoordinates = textRectsInBoundingRectCoordinates;
-    data.contentImageScaleFactor = frame.page()-&gt;deviceScaleFactor();
-    data.contentImage = indicatorBitmap;
-    data.contentImageWithHighlight = indicatorBitmapWithHighlight;
-    data.presentationTransition = presentationTransition;
-
-    return TextIndicator::create(data);
-}
-
-TextIndicator::TextIndicator(const TextIndicator::Data&amp; data)
-    : m_data(data)
-{
-    ASSERT(m_data.contentImageScaleFactor != 1 || m_data.contentImage-&gt;size() == enclosingIntRect(m_data.selectionRectInWindowCoordinates).size());
-
-    if (textIndicatorsForTextRectsOverlap(m_data.textRectsInBoundingRectCoordinates)) {
-        m_data.textRectsInBoundingRectCoordinates[0] = unionRect(m_data.textRectsInBoundingRectCoordinates);
-        m_data.textRectsInBoundingRectCoordinates.shrink(1);
-    }
-}
-
-TextIndicator::~TextIndicator()
-{
-}
-
-void TextIndicator::Data::encode(IPC::ArgumentEncoder&amp; encoder) const
-{
-    encoder &lt;&lt; selectionRectInWindowCoordinates;
-    encoder &lt;&lt; textBoundingRectInWindowCoordinates;
-    encoder &lt;&lt; textRectsInBoundingRectCoordinates;
-    encoder &lt;&lt; contentImageScaleFactor;
-    encoder.encodeEnum(presentationTransition);
-
-    ShareableBitmap::Handle contentImageHandle;
-    if (contentImage)
-        contentImage-&gt;createHandle(contentImageHandle, SharedMemory::ReadOnly);
-    encoder &lt;&lt; contentImageHandle;
-
-    ShareableBitmap::Handle contentImageWithHighlightHandle;
-    if (contentImageWithHighlight)
-        contentImageWithHighlight-&gt;createHandle(contentImageWithHighlightHandle, SharedMemory::ReadOnly);
-    encoder &lt;&lt; contentImageWithHighlightHandle;
-}
-
-bool TextIndicator::Data::decode(IPC::ArgumentDecoder&amp; decoder, TextIndicator::Data&amp; textIndicatorData)
-{
-    if (!decoder.decode(textIndicatorData.selectionRectInWindowCoordinates))
-        return false;
-
-    if (!decoder.decode(textIndicatorData.textBoundingRectInWindowCoordinates))
-        return false;
-
-    if (!decoder.decode(textIndicatorData.textRectsInBoundingRectCoordinates))
-        return false;
-
-    if (!decoder.decode(textIndicatorData.contentImageScaleFactor))
-        return false;
-
-    if (!decoder.decodeEnum(textIndicatorData.presentationTransition))
-        return false;
-
-    ShareableBitmap::Handle contentImageHandle;
-    if (!decoder.decode(contentImageHandle))
-        return false;
-
-    if (!contentImageHandle.isNull())
-        textIndicatorData.contentImage = ShareableBitmap::create(contentImageHandle, SharedMemory::ReadOnly);
-
-    ShareableBitmap::Handle contentImageWithHighlightHandle;
-    if (!decoder.decode(contentImageWithHighlightHandle))
-        return false;
-
-    if (!contentImageWithHighlightHandle.isNull())
-        textIndicatorData.contentImageWithHighlight = ShareableBitmap::create(contentImageWithHighlightHandle, SharedMemory::ReadOnly);
-
-    return true;
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedTextIndicatorh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/TextIndicator.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/TextIndicator.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/TextIndicator.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1,102 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef TextIndicator_h
-#define TextIndicator_h
-
-#include &quot;ShareableBitmap.h&quot;
-#include &lt;WebCore/FloatRect.h&gt;
-#include &lt;wtf/PassRefPtr.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-#if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101000
-#define ENABLE_LEGACY_TEXT_INDICATOR_STYLE 1
-#else
-#define ENABLE_LEGACY_TEXT_INDICATOR_STYLE 0
-#endif
-
-namespace WebCore {
-class GraphicsContext;
-class Range;
-}
-
-namespace IPC {
-class ArgumentDecoder;
-class ArgumentEncoder;
-}
-
-namespace WebKit {
-
-class WebFrame;
-
-class TextIndicator : public RefCounted&lt;TextIndicator&gt; {
-public:
-    enum class PresentationTransition {
-        None,
-        Bounce,
-        BounceAndCrossfade
-    };
-
-    struct Data {
-        WebCore::FloatRect selectionRectInWindowCoordinates;
-        WebCore::FloatRect textBoundingRectInWindowCoordinates;
-        Vector&lt;WebCore::FloatRect&gt; textRectsInBoundingRectCoordinates;
-        float contentImageScaleFactor;
-        RefPtr&lt;ShareableBitmap&gt; contentImageWithHighlight;
-        RefPtr&lt;ShareableBitmap&gt; contentImage;
-        PresentationTransition presentationTransition;
-
-        void encode(IPC::ArgumentEncoder&amp;) const;
-        static bool decode(IPC::ArgumentDecoder&amp;, Data&amp;);
-    };
-
-    static PassRefPtr&lt;TextIndicator&gt; create(const TextIndicator::Data&amp;);
-    static PassRefPtr&lt;TextIndicator&gt; createWithSelectionInFrame(const WebFrame&amp;, PresentationTransition);
-    static PassRefPtr&lt;TextIndicator&gt; createWithRange(const WebCore::Range&amp;, PresentationTransition);
-
-    ~TextIndicator();
-
-    WebCore::FloatRect selectionRectInWindowCoordinates() const { return m_data.selectionRectInWindowCoordinates; }
-    WebCore::FloatRect textBoundingRectInWindowCoordinates() const { return m_data.textBoundingRectInWindowCoordinates; }
-    const Vector&lt;WebCore::FloatRect&gt;&amp; textRectsInBoundingRectCoordinates() const { return m_data.textRectsInBoundingRectCoordinates; }
-    float contentImageScaleFactor() const { return m_data.contentImageScaleFactor; }
-    ShareableBitmap *contentImageWithHighlight() const { return m_data.contentImageWithHighlight.get(); }
-    ShareableBitmap *contentImage() const { return m_data.contentImage.get(); }
-    PresentationTransition presentationTransition() const { return m_data.presentationTransition; }
-
-    void setPresentationTransition(PresentationTransition transition) { m_data.presentationTransition = transition; }
-
-    Data data() const { return m_data; }
-
-private:
-    TextIndicator(const TextIndicator::Data&amp;);
-
-    Data m_data;
-};
-
-} // namespace WebKit
-
-#endif // TextIndicator_h
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCoreArgumentCoderscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx"> #include &lt;WebCore/ScrollingCoordinator.h&gt;
</span><span class="cx"> #include &lt;WebCore/SessionID.h&gt;
</span><span class="cx"> #include &lt;WebCore/TextCheckerClient.h&gt;
</span><ins>+#include &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #include &lt;WebCore/TimingFunction.h&gt;
</span><span class="cx"> #include &lt;WebCore/TransformationMatrix.h&gt;
</span><span class="cx"> #include &lt;WebCore/URL.h&gt;
</span><span class="lines">@@ -1960,4 +1961,41 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ArgumentCoder&lt;TextIndicatorData&gt;::encode(ArgumentEncoder&amp; encoder, const TextIndicatorData&amp; textIndicatorData)
+{
+    encoder &lt;&lt; textIndicatorData.selectionRectInWindowCoordinates;
+    encoder &lt;&lt; textIndicatorData.textBoundingRectInWindowCoordinates;
+    encoder &lt;&lt; textIndicatorData.textRectsInBoundingRectCoordinates;
+    encoder &lt;&lt; textIndicatorData.contentImageScaleFactor;
+    encoder.encodeEnum(textIndicatorData.presentationTransition);
+    encodeImage(encoder, textIndicatorData.contentImage.get());
+    encodeImage(encoder, textIndicatorData.contentImageWithHighlight.get());
+}
+
+bool ArgumentCoder&lt;TextIndicatorData&gt;::decode(ArgumentDecoder&amp; decoder, TextIndicatorData&amp; textIndicatorData)
+{
+    if (!decoder.decode(textIndicatorData.selectionRectInWindowCoordinates))
+        return false;
+
+    if (!decoder.decode(textIndicatorData.textBoundingRectInWindowCoordinates))
+        return false;
+
+    if (!decoder.decode(textIndicatorData.textRectsInBoundingRectCoordinates))
+        return false;
+
+    if (!decoder.decode(textIndicatorData.contentImageScaleFactor))
+        return false;
+
+    if (!decoder.decodeEnum(textIndicatorData.presentationTransition))
+        return false;
+
+    if (!decodeImage(decoder, textIndicatorData.contentImage))
+        return false;
+
+    if (!decodeImage(decoder, textIndicatorData.contentImageWithHighlight))
+        return false;
+
+    return true;
+}
+
</ins><span class="cx"> } // namespace IPC
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCoreArgumentCodersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -85,6 +85,7 @@
</span><span class="cx"> struct PluginInfo;
</span><span class="cx"> struct ScrollableAreaParameters;
</span><span class="cx"> struct TextCheckingResult;
</span><ins>+struct TextIndicatorData;
</ins><span class="cx"> struct ViewportAttributes;
</span><span class="cx"> struct WindowFeatures;
</span><span class="cx"> }
</span><span class="lines">@@ -435,6 +436,11 @@
</span><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+template&lt;&gt; struct ArgumentCoder&lt;WebCore::TextIndicatorData&gt; {
+    static void encode(ArgumentEncoder&amp;, const WebCore::TextIndicatorData&amp;);
+    static bool decode(ArgumentDecoder&amp;, WebCore::TextIndicatorData&amp;);
+};
+
</ins><span class="cx"> } // namespace IPC
</span><span class="cx"> 
</span><span class="cx"> #endif // WebCoreArgumentCoders_h
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacActionMenuHitTestResulth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -29,10 +29,10 @@
</span><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;ShareableBitmap.h&quot;
</span><span class="cx"> #include &quot;SharedMemory.h&quot;
</span><del>-#include &quot;TextIndicator.h&quot;
</del><span class="cx"> #include &quot;WebHitTestResult.h&quot;
</span><span class="cx"> #include &lt;WebCore/FloatRect.h&gt;
</span><span class="cx"> #include &lt;WebCore/PageOverlay.h&gt;
</span><ins>+#include &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> OBJC_CLASS DDActionContext;
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;DDActionContext&gt; actionContext;
</span><span class="cx">     WebCore::FloatRect detectedDataBoundingBox;
</span><del>-    RefPtr&lt;TextIndicator&gt; detectedDataTextIndicator;
</del><ins>+    RefPtr&lt;WebCore::TextIndicator&gt; detectedDataTextIndicator;
</ins><span class="cx">     WebCore::PageOverlay::PageOverlayID detectedDataOriginatingPageOverlay;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacActionMenuHitTestResultmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -31,9 +31,9 @@
</span><span class="cx"> #import &quot;ArgumentCodersCF.h&quot;
</span><span class="cx"> #import &quot;ArgumentDecoder.h&quot;
</span><span class="cx"> #import &quot;ArgumentEncoder.h&quot;
</span><del>-#import &quot;TextIndicator.h&quot;
</del><span class="cx"> #import &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #import &lt;WebCore/DataDetectorsSPI.h&gt;
</span><ins>+#import &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="lines">@@ -118,11 +118,11 @@
</span><span class="cx">             return false;
</span><span class="cx"> 
</span><span class="cx">         if (hasTextIndicator) {
</span><del>-            TextIndicator::Data indicatorData;
</del><ins>+            WebCore::TextIndicatorData indicatorData;
</ins><span class="cx">             if (!decoder.decode(indicatorData))
</span><span class="cx">                 return false;
</span><span class="cx"> 
</span><del>-            actionMenuHitTestResult.detectedDataTextIndicator = TextIndicator::create(indicatorData);
</del><ins>+            actionMenuHitTestResult.detectedDataTextIndicator = WebCore::TextIndicator::create(indicatorData);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIgtkPageClientImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -233,7 +233,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void PageClientImpl::setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool /* fadeOut */)
</del><ins>+void PageClientImpl::setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool /* fadeOut */)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIgtkPageClientImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx"> #if ENABLE(INPUT_TYPE_COLOR)
</span><span class="cx">     virtual PassRefPtr&lt;WebColorPicker&gt; createColorPicker(WebPageProxy*, const WebCore::Color&amp; intialColor, const WebCore::IntRect&amp;) override;
</span><span class="cx"> #endif
</span><del>-    virtual void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool fadeOut) override;
</del><ins>+    virtual void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool fadeOut) override;
</ins><span class="cx">     virtual void getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent&amp;, const AtomicString&amp;, Vector&lt;WTF::String&gt;&amp;) override;
</span><span class="cx">     virtual void updateTextInputState() override;
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPImacWKViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -51,8 +51,6 @@
</span><span class="cx"> #import &quot;StringUtilities.h&quot;
</span><span class="cx"> #import &quot;TextChecker.h&quot;
</span><span class="cx"> #import &quot;TextCheckerState.h&quot;
</span><del>-#import &quot;TextIndicator.h&quot;
-#import &quot;TextIndicatorWindow.h&quot;
</del><span class="cx"> #import &quot;TiledCoreAnimationDrawingAreaProxy.h&quot;
</span><span class="cx"> #import &quot;ViewGestureController.h&quot;
</span><span class="cx"> #import &quot;ViewSnapshotStore.h&quot;
</span><span class="lines">@@ -96,6 +94,8 @@
</span><span class="cx"> #import &lt;WebCore/SharedBuffer.h&gt;
</span><span class="cx"> #import &lt;WebCore/SoftLinking.h&gt;
</span><span class="cx"> #import &lt;WebCore/TextAlternativeWithRange.h&gt;
</span><ins>+#import &lt;WebCore/TextIndicator.h&gt;
+#import &lt;WebCore/TextIndicatorWindow.h&gt;
</ins><span class="cx"> #import &lt;WebCore/TextUndoInsertionMarkupMac.h&gt;
</span><span class="cx"> #import &lt;WebCore/WebActionDisablingCALayerDelegate.h&gt;
</span><span class="cx"> #import &lt;WebCore/WebCoreCALayerExtras.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPImacWKViewInternalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -41,13 +41,13 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class Image;
</span><span class="cx"> class SharedBuffer;
</span><ins>+class TextIndicator;
</ins><span class="cx"> struct KeypressCommand;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> class DrawingAreaProxy;
</span><span class="cx"> class LayerTreeContext;
</span><del>-class TextIndicator;
</del><span class="cx"> class ViewSnapshot;
</span><span class="cx"> class WebContext;
</span><span class="cx"> struct ActionMenuHitTestResult;
</span><span class="lines">@@ -80,8 +80,8 @@
</span><span class="cx"> - (void)_setIntrinsicContentSize:(NSSize)intrinsicContentSize;
</span><span class="cx"> - (NSRect)_convertToDeviceSpace:(NSRect)rect;
</span><span class="cx"> - (NSRect)_convertToUserSpace:(NSRect)rect;
</span><del>-- (void)_setTextIndicator:(PassRefPtr&lt;WebKit::TextIndicator&gt;)textIndicator fadeOut:(BOOL)fadeOut;
-- (void)_setTextIndicator:(PassRefPtr&lt;WebKit::TextIndicator&gt;)textIndicator fadeOut:(BOOL)fadeOut animationCompletionHandler:(std::function&lt;void ()&gt;)completionHandler;
</del><ins>+- (void)_setTextIndicator:(PassRefPtr&lt;WebCore::TextIndicator&gt;)textIndicator fadeOut:(BOOL)fadeOut;
+- (void)_setTextIndicator:(PassRefPtr&lt;WebCore::TextIndicator&gt;)textIndicator fadeOut:(BOOL)fadeOut animationCompletionHandler:(std::function&lt;void ()&gt;)completionHandler;
</ins><span class="cx"> 
</span><span class="cx"> - (void)_setAcceleratedCompositingModeRootLayer:(CALayer *)rootLayer;
</span><span class="cx"> - (CALayer *)_acceleratedCompositingModeRootLayer;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCoordinatedGraphicsWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -448,7 +448,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void WebView::setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool)
</del><ins>+void WebView::setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCoordinatedGraphicsWebViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -184,7 +184,7 @@
</span><span class="cx">     virtual PassRefPtr&lt;WebColorPicker&gt; createColorPicker(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;) override;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool) override;
</del><ins>+    virtual void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&amp;) override;
</span><span class="cx">     virtual void exitAcceleratedCompositingMode() override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -47,14 +47,14 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class Cursor;
</span><ins>+class TextIndicator;
+struct Highlight;
</ins><span class="cx"> struct ViewportAttributes;
</span><del>-struct Highlight;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class DrawingAreaProxy;
</span><del>-class TextIndicator;
</del><span class="cx"> class NativeWebKeyboardEvent;
</span><span class="cx"> class RemoteLayerTreeTransaction;
</span><span class="cx"> class ViewSnapshot;
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx">     virtual PassRefPtr&lt;WebColorPicker&gt; createColorPicker(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;) = 0;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool fadeOut) = 0;
</del><ins>+    virtual void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool fadeOut) = 0;
</ins><span class="cx"> 
</span><span class="cx">     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&amp;) = 0;
</span><span class="cx">     virtual void exitAcceleratedCompositingMode() = 0;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -54,7 +54,6 @@
</span><span class="cx"> #include &quot;PrintInfo.h&quot;
</span><span class="cx"> #include &quot;TextChecker.h&quot;
</span><span class="cx"> #include &quot;TextCheckerState.h&quot;
</span><del>-#include &quot;TextIndicator.h&quot;
</del><span class="cx"> #include &quot;UserMediaPermissionRequestProxy.h&quot;
</span><span class="cx"> #include &quot;WKContextPrivate.h&quot;
</span><span class="cx"> #include &quot;WebBackForwardList.h&quot;
</span><span class="lines">@@ -97,6 +96,7 @@
</span><span class="cx"> #include &lt;WebCore/RenderEmbeddedObject.h&gt;
</span><span class="cx"> #include &lt;WebCore/SerializedCryptoKeyWrap.h&gt;
</span><span class="cx"> #include &lt;WebCore/TextCheckerClient.h&gt;
</span><ins>+#include &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #include &lt;WebCore/WindowFeatures.h&gt;
</span><span class="cx"> #include &lt;stdio.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="lines">@@ -3658,7 +3658,7 @@
</span><span class="cx">     m_findMatchesClient.didGetImageForMatchResult(this, WebImage::create(ShareableBitmap::create(contentImageHandle)).get(), matchIndex);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::setTextIndicator(const TextIndicator::Data&amp; indicatorData, bool fadeOut)
</del><ins>+void WebPageProxy::setTextIndicator(const TextIndicatorData&amp; indicatorData, bool fadeOut)
</ins><span class="cx"> {
</span><span class="cx">     m_pageClient.setTextIndicator(TextIndicator::create(indicatorData), fadeOut);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -130,6 +130,7 @@
</span><span class="cx"> class ProtectionSpace;
</span><span class="cx"> class RunLoopObserver;
</span><span class="cx"> class SharedBuffer;
</span><ins>+class TextIndicator;
</ins><span class="cx"> struct FileChooserSettings;
</span><span class="cx"> struct TextAlternativeWithRange;
</span><span class="cx"> struct TextCheckingResult;
</span><span class="lines">@@ -155,7 +156,6 @@
</span><span class="cx"> class RemoteLayerTreeTransaction;
</span><span class="cx"> class RemoteScrollingCoordinatorProxy;
</span><span class="cx"> class StringPairVector;
</span><del>-class TextIndicator;
</del><span class="cx"> class ViewSnapshot;
</span><span class="cx"> class VisitedLinkProvider;
</span><span class="cx"> class WebBackForwardList;
</span><span class="lines">@@ -668,7 +668,7 @@
</span><span class="cx">     void hideFindUI();
</span><span class="cx">     void countStringMatches(const String&amp;, FindOptions, unsigned maxMatchCount);
</span><span class="cx">     void didCountStringMatches(const String&amp;, uint32_t matchCount);
</span><del>-    void setTextIndicator(const TextIndicator::Data&amp;, bool fadeOut);
</del><ins>+    void setTextIndicator(const WebCore::TextIndicatorData&amp;, bool fadeOut);
</ins><span class="cx">     void clearTextIndicator();
</span><span class="cx">     void didFindString(const String&amp;, uint32_t matchCount, int32_t matchIndex);
</span><span class="cx">     void didFailToFindString(const String&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -227,7 +227,7 @@
</span><span class="cx"> 
</span><span class="cx">     # Find messages
</span><span class="cx">     DidCountStringMatches(String string, uint32_t matchCount)
</span><del>-    SetTextIndicator(WebKit::TextIndicator::Data indicator, bool fadeOut)
</del><ins>+    SetTextIndicator(WebCore::TextIndicatorData indicator, bool fadeOut)
</ins><span class="cx">     ClearTextIndicator()
</span><span class="cx">     DidFindString(String string, uint32_t matchCount, int32_t matchIndex)
</span><span class="cx">     DidFailToFindString(String string)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     virtual PassRefPtr&lt;WebPopupMenuProxy&gt; createPopupMenuProxy(WebPageProxy*) override;
</span><span class="cx">     virtual PassRefPtr&lt;WebContextMenuProxy&gt; createContextMenuProxy(WebPageProxy*) override;
</span><del>-    virtual void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool fadeOut) override;
</del><ins>+    virtual void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool fadeOut) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&amp;) override;
</span><span class="cx">     virtual void exitAcceleratedCompositingMode() override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentView.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentView.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentView.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> class DrawingAreaProxy;
</span><span class="cx"> class GeolocationPermissionRequestProxy;
</span><span class="cx"> class RemoteLayerTreeTransaction;
</span><del>-class TextIndicator;
</del><span class="cx"> class WebContext;
</span><span class="cx"> class WebFrameProxy;
</span><span class="cx"> class WebPageProxy;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><del>-class TextIndicatorWindow;
</del><span class="cx"> 
</span><span class="cx"> class PageClientImpl final : public PageClient
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><span class="lines">@@ -120,7 +119,7 @@
</span><span class="cx">     virtual PassRefPtr&lt;WebColorPicker&gt; createColorPicker(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool fadeOut);
</del><ins>+    void setTextIndicator(PassRefPtr&lt;WebCore::TextIndicator&gt;, bool fadeOut);
</ins><span class="cx"> 
</span><span class="cx">     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&amp;);
</span><span class="cx">     virtual void exitAcceleratedCompositingMode();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> #import &quot;NativeWebWheelEvent.h&quot;
</span><span class="cx"> #import &quot;NavigationState.h&quot;
</span><span class="cx"> #import &quot;StringUtilities.h&quot;
</span><del>-#import &quot;TextIndicator.h&quot;
</del><span class="cx"> #import &quot;ViewSnapshotStore.h&quot;
</span><span class="cx"> #import &quot;WKAPICast.h&quot;
</span><span class="cx"> #import &quot;WKFullScreenWindowController.h&quot;
</span><span class="lines">@@ -61,6 +60,7 @@
</span><span class="cx"> #import &lt;WebCore/LookupSPI.h&gt;
</span><span class="cx"> #import &lt;WebCore/NotImplemented.h&gt;
</span><span class="cx"> #import &lt;WebCore/SharedBuffer.h&gt;
</span><ins>+#import &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #import &lt;WebCore/TextUndoInsertionMarkupMac.h&gt;
</span><span class="cx"> #import &lt;WebKitSystemInterface.h&gt;
</span><span class="cx"> #import &lt;wtf/text/CString.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacTextIndicatorWindowh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1,72 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef TextIndicatorWindow_h
-#define TextIndicatorWindow_h
-
-#if PLATFORM(MAC)
-
-#import &lt;functional&gt;
-#import &lt;wtf/Noncopyable.h&gt;
-#import &lt;wtf/RefPtr.h&gt;
-#import &lt;wtf/RetainPtr.h&gt;
-#import &lt;wtf/RunLoop.h&gt;
-
-@class WKTextIndicatorView;
-@class WKView;
-
-namespace WebKit {
-
-class TextIndicator;
-
-class TextIndicatorWindow {
-    WTF_MAKE_NONCOPYABLE(TextIndicatorWindow);
-
-public:
-    explicit TextIndicatorWindow(WKView *);
-    ~TextIndicatorWindow();
-
-    void setTextIndicator(PassRefPtr&lt;TextIndicator&gt;, bool fadeOut, std::function&lt;void ()&gt; animationCompletionHandler);
-
-private:
-    void closeWindow();
-
-    void startFadeOutTimerFired();
-
-    WKView* m_wkView;
-    RefPtr&lt;TextIndicator&gt; m_textIndicator;
-    RetainPtr&lt;NSWindow&gt; m_textIndicatorWindow;
-    RetainPtr&lt;WKTextIndicatorView&gt; m_textIndicatorView;
-
-    RunLoop::Timer&lt;TextIndicatorWindow&gt; m_startFadeOutTimer;
-
-    std::function&lt;void ()&gt; m_bounceAnimationCompletionHandler;
-};
-
-} // namespace WebKit
-
-#endif // TextIndicatorWindow_h
-
-#endif // PLATFORM(MAC)
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacTextIndicatorWindowmm"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/mac/TextIndicatorWindow.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -1,338 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;TextIndicatorWindow.h&quot;
-
-#if PLATFORM(MAC)
-
-#import &quot;TextIndicator.h&quot;
-#import &quot;WKView.h&quot;
-#import &lt;WebCore/GraphicsContext.h&gt;
-#import &lt;WebCore/QuartzCoreSPI.h&gt;
-#import &lt;WebCore/WebActionDisablingCALayerDelegate.h&gt;
-
-const CFTimeInterval bounceAnimationDuration = 0.12;
-const CFTimeInterval bounceWithCrossfadeAnimationDuration = 0.3;
-const CFTimeInterval timeBeforeFadeStarts = bounceAnimationDuration + 0.2;
-const CFTimeInterval fadeOutAnimationDuration = 0.3;
-
-#if ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
-const CGFloat midBounceScale = 1.5;
-const CGFloat horizontalBorder = 3;
-const CGFloat verticalBorder = 1;
-const CGFloat borderWidth = 1.0;
-const CGFloat cornerRadius = 3;
-const CGFloat dropShadowOffsetX = 0;
-const CGFloat dropShadowOffsetY = 1;
-const CGFloat dropShadowBlurRadius = 1.5;
-#else
-const CGFloat midBounceScale = 1.2;
-const CGFloat horizontalBorder = 2;
-const CGFloat verticalBorder = 1;
-const CGFloat borderWidth = 0;
-const CGFloat cornerRadius = 0;
-const CGFloat dropShadowOffsetX = 0;
-const CGFloat dropShadowOffsetY = 5;
-const CGFloat dropShadowBlurRadius = 12;
-const CGFloat rimShadowBlurRadius = 2;
-#endif
-
-NSString *textLayerKey = @&quot;TextLayer&quot;;
-NSString *dropShadowLayerKey = @&quot;DropShadowLayer&quot;;
-NSString *rimShadowLayerKey = @&quot;RimShadowLayer&quot;;
-
-using namespace WebCore;
-
-@interface WKTextIndicatorView : NSView {
-    RefPtr&lt;WebKit::TextIndicator&gt; _textIndicator;
-    RetainPtr&lt;NSArray&gt; _bounceLayers;
-    NSSize _margin;
-}
-
-- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr&lt;WebKit::TextIndicator&gt;)textIndicator margin:(NSSize)margin;
-
-- (void)presentWithCompletionHandler:(void(^)(void))completionHandler;
-- (void)hideWithCompletionHandler:(void(^)(void))completionHandler;
-
-@end
-
-@implementation WKTextIndicatorView
-
-- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr&lt;WebKit::TextIndicator&gt;)textIndicator margin:(NSSize)margin
-{
-    if (!(self = [super initWithFrame:frame]))
-        return nil;
-
-    _textIndicator = textIndicator;
-    _margin = margin;
-
-    self.wantsLayer = YES;
-    self.layer.anchorPoint = CGPointZero;
-
-    bool wantsCrossfade = _textIndicator-&gt;presentationTransition() == WebKit::TextIndicator::PresentationTransition::BounceAndCrossfade;
-
-    FloatSize contentsImageLogicalSize = _textIndicator-&gt;contentImage()-&gt;size();
-    contentsImageLogicalSize.scale(1 / _textIndicator-&gt;contentImageScaleFactor());
-    RetainPtr&lt;CGImageRef&gt; contentsImage;
-    if (wantsCrossfade)
-        contentsImage = _textIndicator-&gt;contentImageWithHighlight()-&gt;makeCGImage();
-    else
-        contentsImage = _textIndicator-&gt;contentImage()-&gt;makeCGImage();
-
-    RetainPtr&lt;NSMutableArray&gt; bounceLayers = adoptNS([[NSMutableArray alloc] init]);
-
-    RetainPtr&lt;CGColorRef&gt; highlightColor = [NSColor colorWithDeviceRed:1 green:1 blue:0 alpha:1].CGColor;
-    RetainPtr&lt;CGColorRef&gt; rimShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.15].CGColor;
-    RetainPtr&lt;CGColorRef&gt; dropShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.2].CGColor;
-
-    RetainPtr&lt;CGColorRef&gt; borderColor = [NSColor colorWithDeviceRed:.96 green:.90 blue:0 alpha:1].CGColor;
-    RetainPtr&lt;CGColorRef&gt; gradientDarkColor = [NSColor colorWithDeviceRed:.929 green:.8 blue:0 alpha:1].CGColor;
-    RetainPtr&lt;CGColorRef&gt; gradientLightColor = [NSColor colorWithDeviceRed:.949 green:.937 blue:0 alpha:1].CGColor;
-
-    for (auto&amp; textRect : _textIndicator-&gt;textRectsInBoundingRectCoordinates()) {
-        FloatRect bounceLayerRect = textRect;
-        bounceLayerRect.move(_margin.width, _margin.height);
-        bounceLayerRect.inflateX(horizontalBorder);
-        bounceLayerRect.inflateY(verticalBorder);
-
-        RetainPtr&lt;CALayer&gt; bounceLayer = adoptNS([[CALayer alloc] init]);
-        [bounceLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
-        [bounceLayer setFrame:bounceLayerRect];
-        [bounceLayer setOpacity:0];
-        [bounceLayers addObject:bounceLayer.get()];
-
-        FloatRect yellowHighlightRect(FloatPoint(), bounceLayerRect.size());
-        // FIXME (138888): Ideally we wouldn't remove the margin in this case, but we need to
-        // ensure that the yellow highlight and contentImageWithHighlight overlap precisely.
-        if (wantsCrossfade) {
-            yellowHighlightRect.inflateX(-horizontalBorder);
-            yellowHighlightRect.inflateY(-verticalBorder);
-        }
-
-        RetainPtr&lt;CALayer&gt; dropShadowLayer = adoptNS([[CALayer alloc] init]);
-        [dropShadowLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
-        [dropShadowLayer setShadowColor:dropShadowColor.get()];
-        [dropShadowLayer setShadowRadius:dropShadowBlurRadius];
-        [dropShadowLayer setShadowOffset:CGSizeMake(dropShadowOffsetX, dropShadowOffsetY)];
-        [dropShadowLayer setShadowPathIsBounds:YES];
-        [dropShadowLayer setShadowOpacity:1];
-        [dropShadowLayer setFrame:yellowHighlightRect];
-        [dropShadowLayer setCornerRadius:cornerRadius];
-        [bounceLayer addSublayer:dropShadowLayer.get()];
-        [bounceLayer setValue:dropShadowLayer.get() forKey:dropShadowLayerKey];
-
-#if !ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
-        RetainPtr&lt;CALayer&gt; rimShadowLayer = adoptNS([[CALayer alloc] init]);
-        [rimShadowLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
-        [rimShadowLayer setFrame:yellowHighlightRect];
-        [rimShadowLayer setShadowColor:rimShadowColor.get()];
-        [rimShadowLayer setShadowRadius:rimShadowBlurRadius];
-        [rimShadowLayer setShadowPathIsBounds:YES];
-        [rimShadowLayer setShadowOffset:CGSizeZero];
-        [rimShadowLayer setShadowOpacity:1];
-        [rimShadowLayer setFrame:yellowHighlightRect];
-        [rimShadowLayer setCornerRadius:cornerRadius];
-        [bounceLayer addSublayer:rimShadowLayer.get()];
-        [bounceLayer setValue:rimShadowLayer.get() forKey:rimShadowLayerKey];
-#endif
-
-#if ENABLE(LEGACY_TEXT_INDICATOR_STYLE)
-        RetainPtr&lt;CAGradientLayer&gt; textLayer = adoptNS([[CAGradientLayer alloc] init]);
-        [textLayer setColors:@[ (id)gradientLightColor.get(), (id)gradientDarkColor.get() ]];
-#else
-        RetainPtr&lt;CALayer&gt; textLayer = adoptNS([[CALayer alloc] init]);
-#endif
-        [textLayer setBackgroundColor:highlightColor.get()];
-        [textLayer setBorderColor:borderColor.get()];
-        [textLayer setBorderWidth:borderWidth];
-        [textLayer setDelegate:[WebActionDisablingCALayerDelegate shared]];
-        [textLayer setContents:(id)contentsImage.get()];
-
-        FloatRect imageRect = textRect;
-        imageRect.move(_textIndicator-&gt;textBoundingRectInWindowCoordinates().location() - _textIndicator-&gt;selectionRectInWindowCoordinates().location());
-        [textLayer setContentsRect:CGRectMake(imageRect.x() / contentsImageLogicalSize.width(), imageRect.y() / contentsImageLogicalSize.height(), imageRect.width() / contentsImageLogicalSize.width(), imageRect.height() / contentsImageLogicalSize.height())];
-        [textLayer setContentsGravity:kCAGravityCenter];
-        [textLayer setContentsScale:_textIndicator-&gt;contentImageScaleFactor()];
-        [textLayer setFrame:yellowHighlightRect];
-        [textLayer setCornerRadius:cornerRadius];
-        [bounceLayer setValue:textLayer.get() forKey:textLayerKey];
-        [bounceLayer addSublayer:textLayer.get()];
-    }
-
-    self.layer.sublayers = bounceLayers.get();
-    _bounceLayers = bounceLayers;
-
-    return self;
-}
-
-- (void)presentWithCompletionHandler:(void(^)(void))completionHandler
-{
-    bool wantsCrossfade = _textIndicator-&gt;presentationTransition() == WebKit::TextIndicator::PresentationTransition::BounceAndCrossfade;
-    double animationDuration = wantsCrossfade ? bounceWithCrossfadeAnimationDuration : bounceAnimationDuration;
-    RetainPtr&lt;CAKeyframeAnimation&gt; bounceAnimation = [CAKeyframeAnimation animationWithKeyPath:@&quot;transform&quot;];
-    [bounceAnimation setValues:@[
-        [NSValue valueWithCATransform3D:CATransform3DIdentity],
-        [NSValue valueWithCATransform3D:CATransform3DMakeScale(midBounceScale, midBounceScale, 1)],
-        [NSValue valueWithCATransform3D:CATransform3DIdentity]
-        ]];
-    [bounceAnimation setDuration:animationDuration];
-
-    RetainPtr&lt;CABasicAnimation&gt; crossfadeAnimation;
-    RetainPtr&lt;CABasicAnimation&gt; fadeShadowInAnimation;
-    if (wantsCrossfade) {
-        crossfadeAnimation = [CABasicAnimation animationWithKeyPath:@&quot;contents&quot;];
-        RetainPtr&lt;CGImageRef&gt; contentsImage = _textIndicator-&gt;contentImage()-&gt;makeCGImage();
-        [crossfadeAnimation setToValue:(id)contentsImage.get()];
-        [crossfadeAnimation setFillMode:kCAFillModeForwards];
-        [crossfadeAnimation setRemovedOnCompletion:NO];
-        [crossfadeAnimation setDuration:animationDuration];
-
-        fadeShadowInAnimation = [CABasicAnimation animationWithKeyPath:@&quot;shadowOpacity&quot;];
-        [fadeShadowInAnimation setFromValue:@0];
-        [fadeShadowInAnimation setToValue:@1];
-        [fadeShadowInAnimation setFillMode:kCAFillModeForwards];
-        [fadeShadowInAnimation setRemovedOnCompletion:NO];
-        [fadeShadowInAnimation setDuration:animationDuration];
-    }
-
-    [CATransaction begin];
-    [CATransaction setCompletionBlock:completionHandler];
-    for (CALayer* bounceLayer in _bounceLayers.get()) {
-        [bounceLayer setOpacity:1];
-        [bounceLayer addAnimation:bounceAnimation.get() forKey:@&quot;bounce&quot;];
-        if (wantsCrossfade) {
-            [[bounceLayer valueForKey:textLayerKey] addAnimation:crossfadeAnimation.get() forKey:@&quot;contentTransition&quot;];
-            [[bounceLayer valueForKey:dropShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@&quot;fadeShadowIn&quot;];
-            [[bounceLayer valueForKey:rimShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@&quot;fadeShadowIn&quot;];
-        }
-    }
-    [CATransaction commit];
-}
-
-- (void)hideWithCompletionHandler:(void(^)(void))completionHandler
-{
-    RetainPtr&lt;CABasicAnimation&gt; fadeAnimation = [CABasicAnimation animationWithKeyPath:@&quot;opacity&quot;];
-    [fadeAnimation setFromValue:@1];
-    [fadeAnimation setToValue:@0];
-    [fadeAnimation setFillMode:kCAFillModeForwards];
-    [fadeAnimation setRemovedOnCompletion:NO];
-    [fadeAnimation setDuration:fadeOutAnimationDuration];
-
-    [CATransaction begin];
-    [CATransaction setCompletionBlock:completionHandler];
-    [self.layer addAnimation:fadeAnimation.get() forKey:@&quot;fadeOut&quot;];
-    [CATransaction commit];
-}
-
-- (BOOL)isFlipped
-{
-    return YES;
-}
-
-@end
-
-namespace WebKit {
-
-TextIndicatorWindow::TextIndicatorWindow(WKView *wkView)
-    : m_wkView(wkView)
-    , m_startFadeOutTimer(RunLoop::main(), this, &amp;TextIndicatorWindow::startFadeOutTimerFired)
-{
-}
-
-TextIndicatorWindow::~TextIndicatorWindow()
-{
-    closeWindow();
-}
-
-void TextIndicatorWindow::setTextIndicator(PassRefPtr&lt;TextIndicator&gt; textIndicator, bool fadeOut, std::function&lt;void ()&gt; animationCompletionHandler)
-{
-    if (m_textIndicator == textIndicator)
-        return;
-
-    m_textIndicator = textIndicator;
-
-    // Get rid of the old window.
-    closeWindow();
-
-    if (!m_textIndicator)
-        return;
-
-    NSRect contentRect = m_textIndicator-&gt;textBoundingRectInWindowCoordinates();
-
-    CGFloat horizontalMargin = std::max(dropShadowBlurRadius * 2 + horizontalBorder, contentRect.size.width * 2);
-    CGFloat verticalMargin = std::max(dropShadowBlurRadius * 2 + verticalBorder, contentRect.size.height * 2);
-
-    contentRect = NSInsetRect(contentRect, -horizontalMargin, -verticalMargin);
-    NSRect windowFrameRect = NSIntegralRect([m_wkView convertRect:contentRect toView:nil]);
-    windowFrameRect = [[m_wkView window] convertRectToScreen:windowFrameRect];
-    NSRect windowContentRect = [NSWindow contentRectForFrameRect:windowFrameRect styleMask:NSBorderlessWindowMask];
-
-    m_textIndicatorWindow = adoptNS([[NSWindow alloc] initWithContentRect:windowContentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]);
-
-    [m_textIndicatorWindow setBackgroundColor:[NSColor clearColor]];
-    [m_textIndicatorWindow setOpaque:NO];
-    [m_textIndicatorWindow setIgnoresMouseEvents:YES];
-
-    m_textIndicatorView = adoptNS([[WKTextIndicatorView alloc] initWithFrame:NSMakeRect(0, 0, [m_textIndicatorWindow frame].size.width, [m_textIndicatorWindow frame].size.height) textIndicator:m_textIndicator margin:NSMakeSize(horizontalMargin, verticalMargin)]);
-    [m_textIndicatorWindow setContentView:m_textIndicatorView.get()];
-
-    [[m_wkView window] addChildWindow:m_textIndicatorWindow.get() ordered:NSWindowAbove];
-    [m_textIndicatorWindow setReleasedWhenClosed:NO];
-
-    if (m_textIndicator-&gt;presentationTransition() != TextIndicator::PresentationTransition::None) {
-        [m_textIndicatorView presentWithCompletionHandler:[animationCompletionHandler] {
-            animationCompletionHandler();
-        }];
-    }
-
-    if (fadeOut)
-        m_startFadeOutTimer.startOneShot(timeBeforeFadeStarts);
-}
-
-void TextIndicatorWindow::closeWindow()
-{
-    if (!m_textIndicatorWindow)
-        return;
-
-    m_startFadeOutTimer.stop();
-
-    [[m_textIndicatorWindow parentWindow] removeChildWindow:m_textIndicatorWindow.get()];
-    [m_textIndicatorWindow close];
-    m_textIndicatorWindow = nullptr;
-}
-
-void TextIndicatorWindow::startFadeOutTimerFired()
-{
-    RetainPtr&lt;NSWindow&gt; indicatorWindow = m_textIndicatorWindow;
-    [m_textIndicatorView hideWithCompletionHandler:[indicatorWindow] {
-        [[indicatorWindow parentWindow] removeChildWindow:indicatorWindow.get()];
-        [indicatorWindow close];
-    }];
-}
-
-} // namespace WebKit
-
-#endif // PLATFORM(MAC)
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWKActionMenuControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101000
</span><span class="cx"> 
</span><del>-#import &quot;TextIndicator.h&quot;
</del><span class="cx"> #import &quot;WKNSURLExtras.h&quot;
</span><span class="cx"> #import &quot;WKViewInternal.h&quot;
</span><span class="cx"> #import &quot;WKWebView.h&quot;
</span><span class="lines">@@ -50,6 +49,7 @@
</span><span class="cx"> #import &lt;WebCore/NSSharingServicePickerSPI.h&gt;
</span><span class="cx"> #import &lt;WebCore/NSViewSPI.h&gt;
</span><span class="cx"> #import &lt;WebCore/SoftLinking.h&gt;
</span><ins>+#import &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #import &lt;WebCore/URL.h&gt;
</span><span class="cx"> 
</span><span class="cx"> SOFT_LINK_FRAMEWORK_IN_UMBRELLA(Quartz, ImageKit)
</span><span class="lines">@@ -652,7 +652,7 @@
</span><span class="cx"> 
</span><span class="cx">     NSArray *menuItems = [[getDDActionsManagerClass() sharedManager] menuItemsForResult:[_currentActionContext mainResult] actionContext:_currentActionContext.get()];
</span><span class="cx">     if (menuItems.count == 1 &amp;&amp; _hitTestResult.detectedDataTextIndicator)
</span><del>-        _hitTestResult.detectedDataTextIndicator-&gt;setPresentationTransition(TextIndicator::PresentationTransition::Bounce);
</del><ins>+        _hitTestResult.detectedDataTextIndicator-&gt;setPresentationTransition(TextIndicatorPresentationTransition::Bounce);
</ins><span class="cx">     return menuItems;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -110,8 +110,6 @@
</span><span class="cx">                 0FCB4E5118BBE044000FCFC9 /* WKGeolocationProviderIOSObjCSecurityOrigin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCB4E4118BBE044000FCFC9 /* WKGeolocationProviderIOSObjCSecurityOrigin.mm */; };
</span><span class="cx">                 0FCB4E5418BBE044000FCFC9 /* WKScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCB4E4418BBE044000FCFC9 /* WKScrollView.h */; };
</span><span class="cx">                 0FCB4E5518BBE044000FCFC9 /* WKScrollView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCB4E4518BBE044000FCFC9 /* WKScrollView.mm */; };
</span><del>-                0FCB4E6018BBE3D9000FCFC9 /* TextIndicatorWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCB4E5618BBE3D9000FCFC9 /* TextIndicatorWindow.h */; };
-                0FCB4E6118BBE3D9000FCFC9 /* TextIndicatorWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCB4E5718BBE3D9000FCFC9 /* TextIndicatorWindow.mm */; };
</del><span class="cx">                 0FCB4E6218BBE3D9000FCFC9 /* PageClientImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCB4E5818BBE3D9000FCFC9 /* PageClientImpl.h */; };
</span><span class="cx">                 0FCB4E6318BBE3D9000FCFC9 /* PageClientImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCB4E5918BBE3D9000FCFC9 /* PageClientImpl.mm */; };
</span><span class="cx">                 0FCB4E6618BBE3D9000FCFC9 /* WKPrintingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCB4E5C18BBE3D9000FCFC9 /* WKPrintingView.h */; };
</span><span class="lines">@@ -308,8 +306,6 @@
</span><span class="cx">                 1A90C1EE1264FD50003E44D4 /* WebFindOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A90C1ED1264FD50003E44D4 /* WebFindOptions.h */; };
</span><span class="cx">                 1A90C1F41264FD71003E44D4 /* FindController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A90C1F21264FD71003E44D4 /* FindController.h */; };
</span><span class="cx">                 1A90C1F51264FD71003E44D4 /* FindController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A90C1F31264FD71003E44D4 /* FindController.cpp */; };
</span><del>-                1A910071126675C4001842F5 /* TextIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A91006F126675C3001842F5 /* TextIndicator.h */; };
-                1A910072126675C4001842F5 /* TextIndicator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A910070126675C4001842F5 /* TextIndicator.cpp */; };
</del><span class="cx">                 1A92DC1112F8BA460017AF65 /* LayerTreeContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A92DC1012F8BA460017AF65 /* LayerTreeContext.h */; };
</span><span class="cx">                 1A92DC1312F8BAB90017AF65 /* LayerTreeContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A92DC1212F8BAB90017AF65 /* LayerTreeContext.cpp */; };
</span><span class="cx">                 1A9E32891821636900F5D04C /* _WKRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A9E32871821636900F5D04C /* _WKRemoteObjectRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -2071,8 +2067,6 @@
</span><span class="cx">                 0FCB4E4118BBE044000FCFC9 /* WKGeolocationProviderIOSObjCSecurityOrigin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKGeolocationProviderIOSObjCSecurityOrigin.mm; path = ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCB4E4418BBE044000FCFC9 /* WKScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKScrollView.h; path = ios/WKScrollView.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCB4E4518BBE044000FCFC9 /* WKScrollView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKScrollView.mm; path = ios/WKScrollView.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                0FCB4E5618BBE3D9000FCFC9 /* TextIndicatorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicatorWindow.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0FCB4E5718BBE3D9000FCFC9 /* TextIndicatorWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TextIndicatorWindow.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 0FCB4E5818BBE3D9000FCFC9 /* PageClientImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageClientImpl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCB4E5918BBE3D9000FCFC9 /* PageClientImpl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageClientImpl.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCB4E5C18BBE3D9000FCFC9 /* WKPrintingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPrintingView.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2294,8 +2288,6 @@
</span><span class="cx">                 1A90C1ED1264FD50003E44D4 /* WebFindOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFindOptions.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A90C1F21264FD71003E44D4 /* FindController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A90C1F31264FD71003E44D4 /* FindController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                1A91006F126675C3001842F5 /* TextIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                1A910070126675C4001842F5 /* TextIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextIndicator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 1A92DC1012F8BA460017AF65 /* LayerTreeContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayerTreeContext.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A92DC1212F8BAB90017AF65 /* LayerTreeContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayerTreeContext.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A9E32871821636900F5D04C /* _WKRemoteObjectRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKRemoteObjectRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4493,8 +4485,6 @@
</span><span class="cx">                                 5272B2881406985D0096A5D0 /* StatisticsData.cpp */,
</span><span class="cx">                                 5272B2891406985D0096A5D0 /* StatisticsData.h */,
</span><span class="cx">                                 1A5E4DA312D3BD3D0099A2BB /* TextCheckerState.h */,
</span><del>-                                1A910070126675C4001842F5 /* TextIndicator.cpp */,
-                                1A91006F126675C3001842F5 /* TextIndicator.h */,
</del><span class="cx">                                 1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */,
</span><span class="cx">                                 1A64245C12DE29A100CAAE2C /* UpdateInfo.h */,
</span><span class="cx">                                 1AC1336518565B5700F3EC05 /* UserData.cpp */,
</span><span class="lines">@@ -6641,8 +6631,6 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 B878B613133428DC006888E9 /* CorrectionPanel.h */,
</span><span class="cx">                                 B878B614133428DC006888E9 /* CorrectionPanel.mm */,
</span><del>-                                0FCB4E5618BBE3D9000FCFC9 /* TextIndicatorWindow.h */,
-                                0FCB4E5718BBE3D9000FCFC9 /* TextIndicatorWindow.mm */,
</del><span class="cx">                                 1AFDE65B1954E8D500C48FFA /* LegacySessionStateCoding.cpp */,
</span><span class="cx">                                 0FCB4E5818BBE3D9000FCFC9 /* PageClientImpl.h */,
</span><span class="cx">                                 0FCB4E5918BBE3D9000FCFC9 /* PageClientImpl.mm */,
</span><span class="lines">@@ -7237,7 +7225,6 @@
</span><span class="cx">                                 4A3CC18F19B07B8A00D14AEF /* WKUserMediaPermissionRequest.h in Headers */,
</span><span class="cx">                                 1AA575FB1496B52600A4EE06 /* EventDispatcher.h in Headers */,
</span><span class="cx">                                 1A90C1F41264FD71003E44D4 /* FindController.h in Headers */,
</span><del>-                                1A910071126675C4001842F5 /* TextIndicator.h in Headers */,
</del><span class="cx">                                 515E7728183DD6F60007203F /* AsyncRequest.h in Headers */,
</span><span class="cx">                                 BCE81D8D1319F7EF00241910 /* FontInfo.h in Headers */,
</span><span class="cx">                                 1ABC3DFC1899F51C004F0626 /* WKNavigationDelegate.h in Headers */,
</span><span class="lines">@@ -7285,7 +7272,6 @@
</span><span class="cx">                                 51654EFE184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h in Headers */,
</span><span class="cx">                                 BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */,
</span><span class="cx">                                 A115DC72191D82DA00DA8072 /* _WKWebViewPrintFormatter.h in Headers */,
</span><del>-                                0FCB4E6018BBE3D9000FCFC9 /* TextIndicatorWindow.h in Headers */,
</del><span class="cx">                                 BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */,
</span><span class="cx">                                 BCB0B0DE12305A8C00B1341E /* InjectedBundleUserMessageCoders.h in Headers */,
</span><span class="cx">                                 1AE49A4911FFA8CE0048B464 /* JSNPMethod.h in Headers */,
</span><span class="lines">@@ -8900,7 +8886,6 @@
</span><span class="cx">                                 1AA576021496B97900A4EE06 /* EventDispatcherMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 1A1E093318861D3800D2DC49 /* WebProgressTrackerClient.cpp in Sources */,
</span><span class="cx">                                 1A90C1F51264FD71003E44D4 /* FindController.cpp in Sources */,
</span><del>-                                1A910072126675C4001842F5 /* TextIndicator.cpp in Sources */,
</del><span class="cx">                                 BCE81D8C1319F7EF00241910 /* FontInfo.cpp in Sources */,
</span><span class="cx">                                 378E1A4918208CD60031007A /* WKNSString.mm in Sources */,
</span><span class="cx">                                 1AAF08B719269E6D00B6390C /* WebUserContentControllerMessageReceiver.cpp in Sources */,
</span><span class="lines">@@ -9406,7 +9391,6 @@
</span><span class="cx">                                 BCBAAC72144E61990053F82F /* WKBrowsingContextController.mm in Sources */,
</span><span class="cx">                                 BCBAACF51452324F0053F82F /* WKBrowsingContextGroup.mm in Sources */,
</span><span class="cx">                                 51290992183ACEAF005522A6 /* WebIDBServerConnection.cpp in Sources */,
</span><del>-                                0FCB4E6118BBE3D9000FCFC9 /* TextIndicatorWindow.mm in Sources */,
</del><span class="cx">                                 BC204EEE11C83EC8008F3375 /* WKBundle.cpp in Sources */,
</span><span class="cx">                                 7C6E70FB18B2DC7A00F24E2E /* WebProcessCocoa.mm in Sources */,
</span><span class="cx">                                 935EEB9E127761AC003322B8 /* WKBundleBackForwardList.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportmacWebContextMenuClientMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -29,13 +29,13 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> 
</span><span class="cx"> #import &quot;DictionaryPopupInfo.h&quot;
</span><del>-#import &quot;TextIndicator.h&quot;
</del><span class="cx"> #import &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #import &quot;WebPage.h&quot;
</span><span class="cx"> #import &quot;WebPageProxyMessages.h&quot;
</span><span class="cx"> #import &lt;WebCore/FrameView.h&gt;
</span><span class="cx"> #import &lt;WebCore/MainFrame.h&gt;
</span><span class="cx"> #import &lt;WebCore/Page.h&gt;
</span><ins>+#import &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #import &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebContextMenuClient::lookUpInDictionary(Frame* frame)
</span><span class="cx"> {
</span><del>-    m_page-&gt;performDictionaryLookupForSelection(frame, frame-&gt;selection().selection(), TextIndicator::PresentationTransition::BounceAndCrossfade);
</del><ins>+    m_page-&gt;performDictionaryLookupForSelection(frame, frame-&gt;selection().selection(), TextIndicatorPresentationTransition::BounceAndCrossfade);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebContextMenuClient::isSpeaking()
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageFindControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include &quot;DrawingArea.h&quot;
</span><span class="cx"> #include &quot;PluginView.h&quot;
</span><span class="cx"> #include &quot;ShareableBitmap.h&quot;
</span><del>-#include &quot;TextIndicator.h&quot;
</del><span class="cx"> #include &quot;WKPage.h&quot;
</span><span class="cx"> #include &quot;WebCoreArgumentCoders.h&quot;
</span><span class="cx"> #include &quot;WebPage.h&quot;
</span><span class="lines">@@ -44,6 +43,7 @@
</span><span class="cx"> #include &lt;WebCore/PageOverlayController.h&gt;
</span><span class="cx"> #include &lt;WebCore/PlatformMouseEvent.h&gt;
</span><span class="cx"> #include &lt;WebCore/PluginDocument.h&gt;
</span><ins>+#include &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="lines">@@ -314,7 +314,7 @@
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> bool FindController::updateFindIndicator(Frame&amp; selectedFrame, bool isShowingOverlay, bool shouldAnimate)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;TextIndicator&gt; indicator = TextIndicator::createWithSelectionInFrame(*WebFrame::fromCoreFrame(selectedFrame), shouldAnimate ? TextIndicator::PresentationTransition::Bounce : TextIndicator::PresentationTransition::None);
</del><ins>+    RefPtr&lt;TextIndicator&gt; indicator = TextIndicator::createWithSelectionInFrame(selectedFrame, shouldAnimate ? TextIndicatorPresentationTransition::Bounce : TextIndicatorPresentationTransition::None);
</ins><span class="cx">     if (!indicator)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx"> #include &quot;Plugin.h&quot;
</span><span class="cx"> #include &quot;SandboxExtension.h&quot;
</span><span class="cx"> #include &quot;ShareableBitmap.h&quot;
</span><del>-#include &quot;TextIndicator.h&quot;
</del><span class="cx"> #include &quot;UserMediaPermissionRequestManager.h&quot;
</span><span class="cx"> #include &lt;WebCore/DictationAlternative.h&gt;
</span><span class="cx"> #include &lt;WebCore/DragData.h&gt;
</span><span class="lines">@@ -58,6 +57,7 @@
</span><span class="cx"> #include &lt;WebCore/PageVisibilityState.h&gt;
</span><span class="cx"> #include &lt;WebCore/ScrollTypes.h&gt;
</span><span class="cx"> #include &lt;WebCore/TextChecking.h&gt;
</span><ins>+#include &lt;WebCore/TextIndicator.h&gt;
</ins><span class="cx"> #include &lt;WebCore/UserActivity.h&gt;
</span><span class="cx"> #include &lt;WebCore/ViewState.h&gt;
</span><span class="cx"> #include &lt;WebCore/ViewportConfiguration.h&gt;
</span><span class="lines">@@ -673,7 +673,7 @@
</span><span class="cx">     void speak(const String&amp;);
</span><span class="cx">     void stopSpeaking();
</span><span class="cx"> 
</span><del>-    void performDictionaryLookupForSelection(WebCore::Frame*, const WebCore::VisibleSelection&amp;, TextIndicator::PresentationTransition);
</del><ins>+    void performDictionaryLookupForSelection(WebCore::Frame*, const WebCore::VisibleSelection&amp;, WebCore::TextIndicatorPresentationTransition);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     bool isSmartInsertDeleteEnabled();
</span><span class="lines">@@ -991,7 +991,7 @@
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     void performDictionaryLookupAtLocation(const WebCore::FloatPoint&amp;);
</span><span class="cx">     void performDictionaryLookupOfCurrentSelection();
</span><del>-    void performDictionaryLookupForRange(WebCore::Frame*, WebCore::Range&amp;, NSDictionary *options, TextIndicator::PresentationTransition);
</del><ins>+    void performDictionaryLookupForRange(WebCore::Frame*, WebCore::Range&amp;, NSDictionary *options, WebCore::TextIndicatorPresentationTransition);
</ins><span class="cx"> 
</span><span class="cx">     void windowAndViewFramesChanged(const WebCore::FloatRect&amp; windowFrameInScreenCoordinates, const WebCore::FloatRect&amp; windowFrameInUnflippedScreenCoordinates, const WebCore::FloatRect&amp; viewFrameInWindowCoordinates, const WebCore::FloatPoint&amp; accessibilityViewCoordinates);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -296,12 +296,12 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::performDictionaryLookupForSelection(Frame*, const VisibleSelection&amp;, TextIndicator::PresentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForSelection(Frame*, const VisibleSelection&amp;, TextIndicatorPresentationTransition)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::performDictionaryLookupForRange(Frame*, Range&amp;, NSDictionary *, TextIndicator::PresentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForRange(Frame*, Range&amp;, NSDictionary *, TextIndicatorPresentationTransition)
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacWebPageMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm (176461 => 176462)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm        2014-11-21 20:13:44 UTC (rev 176461)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm        2014-11-21 20:18:29 UTC (rev 176462)
</span><span class="lines">@@ -494,10 +494,10 @@
</span><span class="cx">     if (!range)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    performDictionaryLookupForRange(frame, *range, options, TextIndicator::PresentationTransition::Bounce);
</del><ins>+    performDictionaryLookupForRange(frame, *range, options, TextIndicatorPresentationTransition::Bounce);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::performDictionaryLookupForSelection(Frame* frame, const VisibleSelection&amp; selection, TextIndicator::PresentationTransition presentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForSelection(Frame* frame, const VisibleSelection&amp; selection, TextIndicatorPresentationTransition presentationTransition)
</ins><span class="cx"> {
</span><span class="cx">     NSDictionary *options = nil;
</span><span class="cx">     RefPtr&lt;Range&gt; selectedRange = rangeForDictionaryLookupForSelection(selection, &amp;options);
</span><span class="lines">@@ -508,10 +508,10 @@
</span><span class="cx"> void WebPage::performDictionaryLookupOfCurrentSelection()
</span><span class="cx"> {
</span><span class="cx">     Frame* frame = &amp;m_page-&gt;focusController().focusedOrMainFrame();
</span><del>-    performDictionaryLookupForSelection(frame, frame-&gt;selection().selection(), TextIndicator::PresentationTransition::BounceAndCrossfade);
</del><ins>+    performDictionaryLookupForSelection(frame, frame-&gt;selection().selection(), TextIndicatorPresentationTransition::BounceAndCrossfade);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::performDictionaryLookupForRange(Frame* frame, Range&amp; range, NSDictionary *options, TextIndicator::PresentationTransition presentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForRange(Frame* frame, Range&amp; range, NSDictionary *options, TextIndicatorPresentationTransition presentationTransition)
</ins><span class="cx"> {
</span><span class="cx">     if (range.text().stripWhiteSpace().isEmpty())
</span><span class="cx">         return;
</span><span class="lines">@@ -1040,7 +1040,7 @@
</span><span class="cx">             detectedDataBoundingBox.unite(frameView-&gt;contentsToWindow(quad.enclosingBoundingBox()));
</span><span class="cx"> 
</span><span class="cx">         actionMenuResult.detectedDataBoundingBox = detectedDataBoundingBox;
</span><del>-        actionMenuResult.detectedDataTextIndicator = TextIndicator::createWithRange(*mainResultRange, TextIndicator::PresentationTransition::BounceAndCrossfade);
</del><ins>+        actionMenuResult.detectedDataTextIndicator = TextIndicator::createWithRange(*mainResultRange, TextIndicatorPresentationTransition::BounceAndCrossfade);
</ins><span class="cx">         actionMenuResult.detectedDataOriginatingPageOverlay = overlay-&gt;pageOverlayID();
</span><span class="cx">         m_lastActionMenuRangeForSelection = mainResultRange;
</span><span class="cx"> 
</span><span class="lines">@@ -1054,7 +1054,7 @@
</span><span class="cx">         actionMenuResult.actionContext = DataDetection::detectItemAroundHitTestResult(hitTestResult, detectedDataBoundingBox, detectedDataRange);
</span><span class="cx">         if (actionMenuResult.actionContext &amp;&amp; detectedDataRange) {
</span><span class="cx">             actionMenuResult.detectedDataBoundingBox = detectedDataBoundingBox;
</span><del>-            actionMenuResult.detectedDataTextIndicator = TextIndicator::createWithRange(*detectedDataRange, TextIndicator::PresentationTransition::BounceAndCrossfade);
</del><ins>+            actionMenuResult.detectedDataTextIndicator = TextIndicator::createWithRange(*detectedDataRange, TextIndicatorPresentationTransition::BounceAndCrossfade);
</ins><span class="cx">             m_lastActionMenuRangeForSelection = detectedDataRange;
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre>
</div>
</div>

</body>
</html>