<!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
<rdar://problem/18992185>
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<TextIndicatorData>::encode):
(IPC::ArgumentCoder<TextIndicatorData>::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 <timothy_horton@apple.com>
+
+ Move TextIndicator{Window} to WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=138954
+ <rdar://problem/18992185>
+
+ 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 <andersca@apple.com>
</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 = "<group>"; };
</span><span class="cx">                 2D46F04D17B96FBD005647F0 /* IntPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntPoint.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 2D46F04F17B96FD2005647F0 /* IntSize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntSize.cpp; sourceTree = "<group>"; };
</span><ins>+                2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextIndicator.cpp; sourceTree = "<group>"; };
+                2D4F96F21A1ECC240098BF88 /* TextIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicator.h; sourceTree = "<group>"; };
+                2D4F96F31A1ECC240098BF88 /* TextIndicatorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicatorWindow.h; sourceTree = "<group>"; };
+                2D4F96F41A1ECC240098BF88 /* TextIndicatorWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TextIndicatorWindow.mm; sourceTree = "<group>"; };
</ins><span class="cx">                 2D58D8531A15F65F00A5F726 /* DataDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataDetection.h; sourceTree = "<group>"; };
</span><span class="cx">                 2D58D8541A15F65F00A5F726 /* DataDetection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DataDetection.mm; sourceTree = "<group>"; };
</span><span class="cx">                 2D59F1BE1A0044C6001F3D29 /* DataDetectorsSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataDetectorsSPI.h; sourceTree = "<group>"; };
</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 "config.h"
+#include "TextIndicator.h"
+
+#include "Document.h"
+#include "Frame.h"
+#include "FrameSelection.h"
+#include "FrameSnapshotting.h"
+#include "FrameView.h"
+#include "GeometryUtilities.h"
+#include "GraphicsContext.h"
+#include "ImageBuffer.h"
+#include "IntRect.h"
+#include "Page.h"
+
+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<FloatRect>& textRects)
+{
+ size_t count = textRects.size();
+ if (count <= 1)
+ return false;
+
+ Vector<FloatRect> indicatorRects;
+ indicatorRects.reserveInitialCapacity(count);
+
+ for (size_t i = 0; i < 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<TextIndicator> TextIndicator::create(const TextIndicatorData& data)
+{
+ return adoptRef(new TextIndicator(data));
+}
+
+PassRefPtr<TextIndicator> TextIndicator::createWithRange(const Range& range, TextIndicatorPresentationTransition presentationTransition)
+{
+ Frame* frame = range.startContainer()->document().frame();
+
+ if (!frame)
+ return nullptr;
+
+ VisibleSelection oldSelection = frame->selection().selection();
+ frame->selection().setSelection(&range);
+
+ RefPtr<TextIndicator> indicator = TextIndicator::createWithSelectionInFrame(*frame, presentationTransition);
+
+ frame->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<Image> snapshotSelectionWithHighlight(Frame& frame)
+{
+ auto& 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<ImageBuffer> snapshot = snapshotFrameRect(frame, enclosingIntRect(selectionBounds), 0);
+
+ if (!snapshot)
+ return nullptr;
+
+ return snapshot->copyImage(CopyBackingStore, Unscaled);
+}
+
+PassRefPtr<TextIndicator> TextIndicator::createWithSelectionInFrame(Frame& frame, TextIndicatorPresentationTransition presentationTransition)
+{
+ IntRect selectionRect = enclosingIntRect(frame.selection().selectionBounds());
+ RefPtr<Image> indicatorBitmap = snapshotSelection(frame, SnapshotOptionsForceBlackText)->copyImage(CopyBackingStore, Unscaled);
+ if (!indicatorBitmap)
+ return nullptr;
+
+ RefPtr<Image> 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()->contentsToWindow(selectionRect);
+
+ Vector<FloatRect> 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<FloatRect> textRectsInWindowCoordinates;
+ for (const FloatRect& textRect : textRects) {
+ FloatRect textRectInWindowCoordinates = frame.view()->contentsToWindow(enclosingIntRect(textRect));
+ textRectsInWindowCoordinates.append(textRectInWindowCoordinates);
+ textBoundingRectInWindowCoordinates.unite(textRectInWindowCoordinates);
+ }
+
+ Vector<FloatRect> 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()->deviceScaleFactor();
+ data.contentImage = indicatorBitmap;
+ data.contentImageWithHighlight = indicatorBitmapWithHighlight;
+ data.presentationTransition = presentationTransition;
+
+ return TextIndicator::create(data);
+}
+
+TextIndicator::TextIndicator(const TextIndicatorData& data)
+ : m_data(data)
+{
+ ASSERT(m_data.contentImageScaleFactor != 1 || m_data.contentImage->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 "FloatRect.h"
+#include "Image.h"
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/Vector.h>
+
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 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<FloatRect> textRectsInBoundingRectCoordinates;
+ float contentImageScaleFactor;
+ RefPtr<Image> contentImageWithHighlight;
+ RefPtr<Image> contentImage;
+ TextIndicatorPresentationTransition presentationTransition;
+};
+
+class TextIndicator : public RefCounted<TextIndicator> {
+public:
+ static PassRefPtr<TextIndicator> create(const TextIndicatorData&);
+ static PassRefPtr<TextIndicator> createWithSelectionInFrame(Frame&, TextIndicatorPresentationTransition);
+ static PassRefPtr<TextIndicator> createWithRange(const Range&, TextIndicatorPresentationTransition);
+
+ ~TextIndicator();
+
+ FloatRect selectionRectInWindowCoordinates() const { return m_data.selectionRectInWindowCoordinates; }
+ FloatRect textBoundingRectInWindowCoordinates() const { return m_data.textBoundingRectInWindowCoordinates; }
+ const Vector<FloatRect>& 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&);
+
+ 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 <functional>
+#import <wtf/Noncopyable.h>
+#import <wtf/RefPtr.h>
+#import <wtf/RetainPtr.h>
+#import <wtf/RunLoop.h>
+
+@class NSView;
+@class WebTextIndicatorView;
+
+namespace WebCore {
+
+class TextIndicator;
+
+class TextIndicatorWindow {
+ WTF_MAKE_NONCOPYABLE(TextIndicatorWindow);
+
+public:
+ explicit TextIndicatorWindow(NSView *);
+ ~TextIndicatorWindow();
+
+ void setTextIndicator(PassRefPtr<TextIndicator>, bool fadeOut, std::function<void ()> animationCompletionHandler);
+
+private:
+ void closeWindow();
+
+ void startFadeOutTimerFired();
+
+ NSView *m_targetView;
+ RefPtr<TextIndicator> m_textIndicator;
+ RetainPtr<NSWindow> m_textIndicatorWindow;
+ RetainPtr<WebTextIndicatorView> m_textIndicatorView;
+
+ RunLoop::Timer<TextIndicatorWindow> m_startFadeOutTimer;
+
+ std::function<void ()> 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 "config.h"
+#import "TextIndicatorWindow.h"
+
+#if PLATFORM(MAC)
+
+#import "GraphicsContext.h"
+#import "QuartzCoreSPI.h"
+#import "TextIndicator.h"
+#import "WebActionDisablingCALayerDelegate.h"
+
+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 = @"TextLayer";
+NSString *dropShadowLayerKey = @"DropShadowLayer";
+NSString *rimShadowLayerKey = @"RimShadowLayer";
+
+using namespace WebCore;
+
+@interface WebTextIndicatorView : NSView {
+ RefPtr<TextIndicator> _textIndicator;
+ RetainPtr<NSArray> _bounceLayers;
+ NSSize _margin;
+}
+
+- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr<TextIndicator>)textIndicator margin:(NSSize)margin;
+
+- (void)presentWithCompletionHandler:(void(^)(void))completionHandler;
+- (void)hideWithCompletionHandler:(void(^)(void))completionHandler;
+
+@end
+
+@implementation WebTextIndicatorView
+
+- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr<TextIndicator>)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->presentationTransition() == TextIndicatorPresentationTransition::BounceAndCrossfade;
+
+ FloatSize contentsImageLogicalSize = _textIndicator->contentImage()->size();
+ contentsImageLogicalSize.scale(1 / _textIndicator->contentImageScaleFactor());
+ RetainPtr<CGImageRef> contentsImage;
+ if (wantsCrossfade)
+ contentsImage = _textIndicator->contentImageWithHighlight()->getCGImageRef();
+ else
+ contentsImage = _textIndicator->contentImage()->getCGImageRef();
+
+ RetainPtr<NSMutableArray> bounceLayers = adoptNS([[NSMutableArray alloc] init]);
+
+ RetainPtr<CGColorRef> highlightColor = [NSColor colorWithDeviceRed:1 green:1 blue:0 alpha:1].CGColor;
+ RetainPtr<CGColorRef> rimShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.15].CGColor;
+ RetainPtr<CGColorRef> dropShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.2].CGColor;
+
+ RetainPtr<CGColorRef> borderColor = [NSColor colorWithDeviceRed:.96 green:.90 blue:0 alpha:1].CGColor;
+ RetainPtr<CGColorRef> gradientDarkColor = [NSColor colorWithDeviceRed:.929 green:.8 blue:0 alpha:1].CGColor;
+ RetainPtr<CGColorRef> gradientLightColor = [NSColor colorWithDeviceRed:.949 green:.937 blue:0 alpha:1].CGColor;
+
+ for (auto& textRect : _textIndicator->textRectsInBoundingRectCoordinates()) {
+ FloatRect bounceLayerRect = textRect;
+ bounceLayerRect.move(_margin.width, _margin.height);
+ bounceLayerRect.inflateX(horizontalBorder);
+ bounceLayerRect.inflateY(verticalBorder);
+
+ RetainPtr<CALayer> 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<CALayer> 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<CALayer> 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<CAGradientLayer> textLayer = adoptNS([[CAGradientLayer alloc] init]);
+ [textLayer setColors:@[ (id)gradientLightColor.get(), (id)gradientDarkColor.get() ]];
+#else
+ RetainPtr<CALayer> 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->textBoundingRectInWindowCoordinates().location() - _textIndicator->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->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->presentationTransition() == TextIndicatorPresentationTransition::BounceAndCrossfade;
+ double animationDuration = wantsCrossfade ? bounceWithCrossfadeAnimationDuration : bounceAnimationDuration;
+ RetainPtr<CAKeyframeAnimation> bounceAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
+ [bounceAnimation setValues:@[
+ [NSValue valueWithCATransform3D:CATransform3DIdentity],
+ [NSValue valueWithCATransform3D:CATransform3DMakeScale(midBounceScale, midBounceScale, 1)],
+ [NSValue valueWithCATransform3D:CATransform3DIdentity]
+ ]];
+ [bounceAnimation setDuration:animationDuration];
+
+ RetainPtr<CABasicAnimation> crossfadeAnimation;
+ RetainPtr<CABasicAnimation> fadeShadowInAnimation;
+ if (wantsCrossfade) {
+ crossfadeAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];
+ RetainPtr<CGImageRef> contentsImage = _textIndicator->contentImage()->getCGImageRef();
+ [crossfadeAnimation setToValue:(id)contentsImage.get()];
+ [crossfadeAnimation setFillMode:kCAFillModeForwards];
+ [crossfadeAnimation setRemovedOnCompletion:NO];
+ [crossfadeAnimation setDuration:animationDuration];
+
+ fadeShadowInAnimation = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"];
+ [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:@"bounce"];
+ if (wantsCrossfade) {
+ [[bounceLayer valueForKey:textLayerKey] addAnimation:crossfadeAnimation.get() forKey:@"contentTransition"];
+ [[bounceLayer valueForKey:dropShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@"fadeShadowIn"];
+ [[bounceLayer valueForKey:rimShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@"fadeShadowIn"];
+ }
+ }
+ [CATransaction commit];
+}
+
+- (void)hideWithCompletionHandler:(void(^)(void))completionHandler
+{
+ RetainPtr<CABasicAnimation> fadeAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
+ [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:@"fadeOut"];
+ [CATransaction commit];
+}
+
+- (BOOL)isFlipped
+{
+ return YES;
+}
+
+@end
+
+namespace WebCore {
+
+TextIndicatorWindow::TextIndicatorWindow(NSView *targetView)
+ : m_targetView(targetView)
+ , m_startFadeOutTimer(RunLoop::main(), this, &TextIndicatorWindow::startFadeOutTimerFired)
+{
+}
+
+TextIndicatorWindow::~TextIndicatorWindow()
+{
+ closeWindow();
+}
+
+void TextIndicatorWindow::setTextIndicator(PassRefPtr<TextIndicator> textIndicator, bool fadeOut, std::function<void ()> animationCompletionHandler)
+{
+ if (m_textIndicator == textIndicator)
+ return;
+
+ m_textIndicator = textIndicator;
+
+ // Get rid of the old window.
+ closeWindow();
+
+ if (!m_textIndicator)
+ return;
+
+ NSRect contentRect = m_textIndicator->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->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<NSWindow> 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 <timothy_horton@apple.com>
</span><span class="cx">
</span><ins>+ Move TextIndicator{Window} to WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=138954
+ <rdar://problem/18992185>
+
+ 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<TextIndicatorData>::encode):
+ (IPC::ArgumentCoder<TextIndicatorData>::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 <timothy_horton@apple.com>
+
</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': ['<WebCore/Pasteboard.h>'],
</span><span class="cx"> 'WebCore::TextCheckingRequestData': ['<WebCore/TextChecking.h>'],
</span><span class="cx"> 'WebCore::TextCheckingResult': ['<WebCore/TextCheckerClient.h>'],
</span><ins>+ 'WebCore::TextIndicatorData': ['<WebCore/TextIndicator.h>'],
</ins><span class="cx"> 'WebCore::ViewportAttributes': ['<WebCore/ViewportArguments.h>'],
</span><span class="cx"> 'WebKit::BackForwardListItemState': ['"SessionState.h"'],
</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 "TextIndicator.h"
</del><span class="cx"> #include <WebCore/FloatPoint.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</ins><span class="cx">
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> #include "AttributedString.h"
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> static bool decode(IPC::ArgumentDecoder&, DictionaryPopupInfo&);
</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<CFDictionaryRef> 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 "config.h"
-#include "TextIndicator.h"
-
-#if PLATFORM(COCOA)
-#include "ArgumentCodersCF.h"
-#endif
-
-#include "ArgumentDecoder.h"
-#include "ArgumentEncoder.h"
-#include "ShareableBitmap.h"
-#include "WebCoreArgumentCoders.h"
-#include "WebFrame.h"
-#include "WebPage.h"
-#include <WebCore/Document.h>
-#include <WebCore/Frame.h>
-#include <WebCore/FrameSelection.h>
-#include <WebCore/FrameSnapshotting.h>
-#include <WebCore/FrameView.h>
-#include <WebCore/GeometryUtilities.h>
-#include <WebCore/GraphicsContext.h>
-#include <WebCore/ImageBuffer.h>
-#include <WebCore/IntRect.h>
-
-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<FloatRect>& textRects)
-{
- size_t count = textRects.size();
- if (count <= 1)
- return false;
-
- Vector<FloatRect> indicatorRects;
- indicatorRects.reserveInitialCapacity(count);
-
- for (size_t i = 0; i < 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<TextIndicator> TextIndicator::create(const TextIndicator::Data& data)
-{
- return adoptRef(new TextIndicator(data));
-}
-
-PassRefPtr<TextIndicator> TextIndicator::createWithRange(const Range& range, PresentationTransition presentationTransition)
-{
- Frame* frame = range.startContainer()->document().frame();
-
- if (!frame)
- return nullptr;
-
- VisibleSelection oldSelection = frame->selection().selection();
- frame->selection().setSelection(&range);
-
- RefPtr<TextIndicator> indicator = TextIndicator::createWithSelectionInFrame(*WebFrame::fromCoreFrame(*frame), presentationTransition);
-
- frame->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<ShareableBitmap> snapshotSelectionWithHighlight(Frame& frame)
-{
- auto& 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<ImageBuffer> snapshot = snapshotFrameRect(frame, enclosingIntRect(selectionBounds), 0);
-
- if (!snapshot)
- return nullptr;
-
- RefPtr<ShareableBitmap> sharedSnapshot = ShareableBitmap::createShareable(snapshot->internalSize(), ShareableBitmap::SupportsAlpha);
- if (!sharedSnapshot)
- return nullptr;
-
- auto graphicsContext = sharedSnapshot->createGraphicsContext();
- float deviceScaleFactor = frame.page()->deviceScaleFactor();
- graphicsContext->scale(FloatSize(deviceScaleFactor, deviceScaleFactor));
- graphicsContext->drawImageBuffer(snapshot.get(), ColorSpaceDeviceRGB, FloatPoint());
-
- return sharedSnapshot.release();
-}
-
-PassRefPtr<TextIndicator> TextIndicator::createWithSelectionInFrame(const WebFrame& frame, PresentationTransition presentationTransition)
-{
- Frame& coreFrame = *frame.coreFrame();
- IntRect selectionRect = enclosingIntRect(coreFrame.selection().selectionBounds());
- RefPtr<ShareableBitmap> indicatorBitmap = frame.createSelectionSnapshot();
- if (!indicatorBitmap)
- return nullptr;
-
- RefPtr<ShareableBitmap> 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()->contentsToWindow(selectionRect);
-
- Vector<FloatRect> 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<FloatRect> textRectsInWindowCoordinates;
- for (const FloatRect& textRect : textRects) {
- FloatRect textRectInWindowCoordinates = coreFrame.view()->contentsToWindow(enclosingIntRect(textRect));
- textRectsInWindowCoordinates.append(textRectInWindowCoordinates);
- textBoundingRectInWindowCoordinates.unite(textRectInWindowCoordinates);
- }
-
- Vector<FloatRect> 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()->deviceScaleFactor();
- data.contentImage = indicatorBitmap;
- data.contentImageWithHighlight = indicatorBitmapWithHighlight;
- data.presentationTransition = presentationTransition;
-
- return TextIndicator::create(data);
-}
-
-TextIndicator::TextIndicator(const TextIndicator::Data& data)
- : m_data(data)
-{
- ASSERT(m_data.contentImageScaleFactor != 1 || m_data.contentImage->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& encoder) const
-{
- encoder << selectionRectInWindowCoordinates;
- encoder << textBoundingRectInWindowCoordinates;
- encoder << textRectsInBoundingRectCoordinates;
- encoder << contentImageScaleFactor;
- encoder.encodeEnum(presentationTransition);
-
- ShareableBitmap::Handle contentImageHandle;
- if (contentImage)
- contentImage->createHandle(contentImageHandle, SharedMemory::ReadOnly);
- encoder << contentImageHandle;
-
- ShareableBitmap::Handle contentImageWithHighlightHandle;
- if (contentImageWithHighlight)
- contentImageWithHighlight->createHandle(contentImageWithHighlightHandle, SharedMemory::ReadOnly);
- encoder << contentImageWithHighlightHandle;
-}
-
-bool TextIndicator::Data::decode(IPC::ArgumentDecoder& decoder, TextIndicator::Data& 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 "ShareableBitmap.h"
-#include <WebCore/FloatRect.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/Vector.h>
-
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 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<TextIndicator> {
-public:
- enum class PresentationTransition {
- None,
- Bounce,
- BounceAndCrossfade
- };
-
- struct Data {
- WebCore::FloatRect selectionRectInWindowCoordinates;
- WebCore::FloatRect textBoundingRectInWindowCoordinates;
- Vector<WebCore::FloatRect> textRectsInBoundingRectCoordinates;
- float contentImageScaleFactor;
- RefPtr<ShareableBitmap> contentImageWithHighlight;
- RefPtr<ShareableBitmap> contentImage;
- PresentationTransition presentationTransition;
-
- void encode(IPC::ArgumentEncoder&) const;
- static bool decode(IPC::ArgumentDecoder&, Data&);
- };
-
- static PassRefPtr<TextIndicator> create(const TextIndicator::Data&);
- static PassRefPtr<TextIndicator> createWithSelectionInFrame(const WebFrame&, PresentationTransition);
- static PassRefPtr<TextIndicator> createWithRange(const WebCore::Range&, PresentationTransition);
-
- ~TextIndicator();
-
- WebCore::FloatRect selectionRectInWindowCoordinates() const { return m_data.selectionRectInWindowCoordinates; }
- WebCore::FloatRect textBoundingRectInWindowCoordinates() const { return m_data.textBoundingRectInWindowCoordinates; }
- const Vector<WebCore::FloatRect>& 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&);
-
- 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 <WebCore/ScrollingCoordinator.h>
</span><span class="cx"> #include <WebCore/SessionID.h>
</span><span class="cx"> #include <WebCore/TextCheckerClient.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</ins><span class="cx"> #include <WebCore/TimingFunction.h>
</span><span class="cx"> #include <WebCore/TransformationMatrix.h>
</span><span class="cx"> #include <WebCore/URL.h>
</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<TextIndicatorData>::encode(ArgumentEncoder& encoder, const TextIndicatorData& textIndicatorData)
+{
+ encoder << textIndicatorData.selectionRectInWindowCoordinates;
+ encoder << textIndicatorData.textBoundingRectInWindowCoordinates;
+ encoder << textIndicatorData.textRectsInBoundingRectCoordinates;
+ encoder << textIndicatorData.contentImageScaleFactor;
+ encoder.encodeEnum(textIndicatorData.presentationTransition);
+ encodeImage(encoder, textIndicatorData.contentImage.get());
+ encodeImage(encoder, textIndicatorData.contentImageWithHighlight.get());
+}
+
+bool ArgumentCoder<TextIndicatorData>::decode(ArgumentDecoder& decoder, TextIndicatorData& 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<> struct ArgumentCoder<WebCore::TextIndicatorData> {
+ static void encode(ArgumentEncoder&, const WebCore::TextIndicatorData&);
+ static bool decode(ArgumentDecoder&, WebCore::TextIndicatorData&);
+};
+
</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 "DataReference.h"
</span><span class="cx"> #include "ShareableBitmap.h"
</span><span class="cx"> #include "SharedMemory.h"
</span><del>-#include "TextIndicator.h"
</del><span class="cx"> #include "WebHitTestResult.h"
</span><span class="cx"> #include <WebCore/FloatRect.h>
</span><span class="cx"> #include <WebCore/PageOverlay.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</ins><span class="cx"> #include <wtf/text/WTFString.h>
</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<DDActionContext> actionContext;
</span><span class="cx"> WebCore::FloatRect detectedDataBoundingBox;
</span><del>- RefPtr<TextIndicator> detectedDataTextIndicator;
</del><ins>+ RefPtr<WebCore::TextIndicator> 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 "ArgumentCodersCF.h"
</span><span class="cx"> #import "ArgumentDecoder.h"
</span><span class="cx"> #import "ArgumentEncoder.h"
</span><del>-#import "TextIndicator.h"
</del><span class="cx"> #import "WebCoreArgumentCoders.h"
</span><span class="cx"> #import <WebCore/DataDetectorsSPI.h>
</span><ins>+#import <WebCore/TextIndicator.h>
</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<TextIndicator>, bool /* fadeOut */)
</del><ins>+void PageClientImpl::setTextIndicator(PassRefPtr<WebCore::TextIndicator>, 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<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& intialColor, const WebCore::IntRect&) override;
</span><span class="cx"> #endif
</span><del>- virtual void setTextIndicator(PassRefPtr<TextIndicator>, bool fadeOut) override;
</del><ins>+ virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) override;
</ins><span class="cx"> virtual void getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent&, const AtomicString&, Vector<WTF::String>&) 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 "StringUtilities.h"
</span><span class="cx"> #import "TextChecker.h"
</span><span class="cx"> #import "TextCheckerState.h"
</span><del>-#import "TextIndicator.h"
-#import "TextIndicatorWindow.h"
</del><span class="cx"> #import "TiledCoreAnimationDrawingAreaProxy.h"
</span><span class="cx"> #import "ViewGestureController.h"
</span><span class="cx"> #import "ViewSnapshotStore.h"
</span><span class="lines">@@ -96,6 +94,8 @@
</span><span class="cx"> #import <WebCore/SharedBuffer.h>
</span><span class="cx"> #import <WebCore/SoftLinking.h>
</span><span class="cx"> #import <WebCore/TextAlternativeWithRange.h>
</span><ins>+#import <WebCore/TextIndicator.h>
+#import <WebCore/TextIndicatorWindow.h>
</ins><span class="cx"> #import <WebCore/TextUndoInsertionMarkupMac.h>
</span><span class="cx"> #import <WebCore/WebActionDisablingCALayerDelegate.h>
</span><span class="cx"> #import <WebCore/WebCoreCALayerExtras.h>
</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<WebKit::TextIndicator>)textIndicator fadeOut:(BOOL)fadeOut;
-- (void)_setTextIndicator:(PassRefPtr<WebKit::TextIndicator>)textIndicator fadeOut:(BOOL)fadeOut animationCompletionHandler:(std::function<void ()>)completionHandler;
</del><ins>+- (void)_setTextIndicator:(PassRefPtr<WebCore::TextIndicator>)textIndicator fadeOut:(BOOL)fadeOut;
+- (void)_setTextIndicator:(PassRefPtr<WebCore::TextIndicator>)textIndicator fadeOut:(BOOL)fadeOut animationCompletionHandler:(std::function<void ()>)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<TextIndicator>, bool)
</del><ins>+void WebView::setTextIndicator(PassRefPtr<WebCore::TextIndicator>, 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<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& initialColor, const WebCore::IntRect&) override;
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- virtual void setTextIndicator(PassRefPtr<TextIndicator>, bool) override;
</del><ins>+ virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool) override;
</ins><span class="cx">
</span><span class="cx"> virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) 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<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& initialColor, const WebCore::IntRect&) = 0;
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- virtual void setTextIndicator(PassRefPtr<TextIndicator>, bool fadeOut) = 0;
</del><ins>+ virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) = 0;
</ins><span class="cx">
</span><span class="cx"> virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) = 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 "PrintInfo.h"
</span><span class="cx"> #include "TextChecker.h"
</span><span class="cx"> #include "TextCheckerState.h"
</span><del>-#include "TextIndicator.h"
</del><span class="cx"> #include "UserMediaPermissionRequestProxy.h"
</span><span class="cx"> #include "WKContextPrivate.h"
</span><span class="cx"> #include "WebBackForwardList.h"
</span><span class="lines">@@ -97,6 +96,7 @@
</span><span class="cx"> #include <WebCore/RenderEmbeddedObject.h>
</span><span class="cx"> #include <WebCore/SerializedCryptoKeyWrap.h>
</span><span class="cx"> #include <WebCore/TextCheckerClient.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</ins><span class="cx"> #include <WebCore/WindowFeatures.h>
</span><span class="cx"> #include <stdio.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</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& indicatorData, bool fadeOut)
</del><ins>+void WebPageProxy::setTextIndicator(const TextIndicatorData& 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&, FindOptions, unsigned maxMatchCount);
</span><span class="cx"> void didCountStringMatches(const String&, uint32_t matchCount);
</span><del>- void setTextIndicator(const TextIndicator::Data&, bool fadeOut);
</del><ins>+ void setTextIndicator(const WebCore::TextIndicatorData&, bool fadeOut);
</ins><span class="cx"> void clearTextIndicator();
</span><span class="cx"> void didFindString(const String&, uint32_t matchCount, int32_t matchIndex);
</span><span class="cx"> void didFailToFindString(const String&);
</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<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*) override;
</span><span class="cx"> virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*) override;
</span><del>- virtual void setTextIndicator(PassRefPtr<TextIndicator>, bool fadeOut) override;
</del><ins>+ virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) override;
</ins><span class="cx">
</span><span class="cx"> virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) 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<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& initialColor, const WebCore::IntRect&);
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- void setTextIndicator(PassRefPtr<TextIndicator>, bool fadeOut);
</del><ins>+ void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut);
</ins><span class="cx">
</span><span class="cx"> virtual void enterAcceleratedCompositingMode(const LayerTreeContext&);
</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 "NativeWebWheelEvent.h"
</span><span class="cx"> #import "NavigationState.h"
</span><span class="cx"> #import "StringUtilities.h"
</span><del>-#import "TextIndicator.h"
</del><span class="cx"> #import "ViewSnapshotStore.h"
</span><span class="cx"> #import "WKAPICast.h"
</span><span class="cx"> #import "WKFullScreenWindowController.h"
</span><span class="lines">@@ -61,6 +60,7 @@
</span><span class="cx"> #import <WebCore/LookupSPI.h>
</span><span class="cx"> #import <WebCore/NotImplemented.h>
</span><span class="cx"> #import <WebCore/SharedBuffer.h>
</span><ins>+#import <WebCore/TextIndicator.h>
</ins><span class="cx"> #import <WebCore/TextUndoInsertionMarkupMac.h>
</span><span class="cx"> #import <WebKitSystemInterface.h>
</span><span class="cx"> #import <wtf/text/CString.h>
</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 <functional>
-#import <wtf/Noncopyable.h>
-#import <wtf/RefPtr.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/RunLoop.h>
-
-@class WKTextIndicatorView;
-@class WKView;
-
-namespace WebKit {
-
-class TextIndicator;
-
-class TextIndicatorWindow {
- WTF_MAKE_NONCOPYABLE(TextIndicatorWindow);
-
-public:
- explicit TextIndicatorWindow(WKView *);
- ~TextIndicatorWindow();
-
- void setTextIndicator(PassRefPtr<TextIndicator>, bool fadeOut, std::function<void ()> animationCompletionHandler);
-
-private:
- void closeWindow();
-
- void startFadeOutTimerFired();
-
- WKView* m_wkView;
- RefPtr<TextIndicator> m_textIndicator;
- RetainPtr<NSWindow> m_textIndicatorWindow;
- RetainPtr<WKTextIndicatorView> m_textIndicatorView;
-
- RunLoop::Timer<TextIndicatorWindow> m_startFadeOutTimer;
-
- std::function<void ()> 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 "config.h"
-#import "TextIndicatorWindow.h"
-
-#if PLATFORM(MAC)
-
-#import "TextIndicator.h"
-#import "WKView.h"
-#import <WebCore/GraphicsContext.h>
-#import <WebCore/QuartzCoreSPI.h>
-#import <WebCore/WebActionDisablingCALayerDelegate.h>
-
-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 = @"TextLayer";
-NSString *dropShadowLayerKey = @"DropShadowLayer";
-NSString *rimShadowLayerKey = @"RimShadowLayer";
-
-using namespace WebCore;
-
-@interface WKTextIndicatorView : NSView {
- RefPtr<WebKit::TextIndicator> _textIndicator;
- RetainPtr<NSArray> _bounceLayers;
- NSSize _margin;
-}
-
-- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr<WebKit::TextIndicator>)textIndicator margin:(NSSize)margin;
-
-- (void)presentWithCompletionHandler:(void(^)(void))completionHandler;
-- (void)hideWithCompletionHandler:(void(^)(void))completionHandler;
-
-@end
-
-@implementation WKTextIndicatorView
-
-- (instancetype)initWithFrame:(NSRect)frame textIndicator:(PassRefPtr<WebKit::TextIndicator>)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->presentationTransition() == WebKit::TextIndicator::PresentationTransition::BounceAndCrossfade;
-
- FloatSize contentsImageLogicalSize = _textIndicator->contentImage()->size();
- contentsImageLogicalSize.scale(1 / _textIndicator->contentImageScaleFactor());
- RetainPtr<CGImageRef> contentsImage;
- if (wantsCrossfade)
- contentsImage = _textIndicator->contentImageWithHighlight()->makeCGImage();
- else
- contentsImage = _textIndicator->contentImage()->makeCGImage();
-
- RetainPtr<NSMutableArray> bounceLayers = adoptNS([[NSMutableArray alloc] init]);
-
- RetainPtr<CGColorRef> highlightColor = [NSColor colorWithDeviceRed:1 green:1 blue:0 alpha:1].CGColor;
- RetainPtr<CGColorRef> rimShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.15].CGColor;
- RetainPtr<CGColorRef> dropShadowColor = [NSColor colorWithDeviceWhite:0 alpha:0.2].CGColor;
-
- RetainPtr<CGColorRef> borderColor = [NSColor colorWithDeviceRed:.96 green:.90 blue:0 alpha:1].CGColor;
- RetainPtr<CGColorRef> gradientDarkColor = [NSColor colorWithDeviceRed:.929 green:.8 blue:0 alpha:1].CGColor;
- RetainPtr<CGColorRef> gradientLightColor = [NSColor colorWithDeviceRed:.949 green:.937 blue:0 alpha:1].CGColor;
-
- for (auto& textRect : _textIndicator->textRectsInBoundingRectCoordinates()) {
- FloatRect bounceLayerRect = textRect;
- bounceLayerRect.move(_margin.width, _margin.height);
- bounceLayerRect.inflateX(horizontalBorder);
- bounceLayerRect.inflateY(verticalBorder);
-
- RetainPtr<CALayer> 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<CALayer> 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<CALayer> 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<CAGradientLayer> textLayer = adoptNS([[CAGradientLayer alloc] init]);
- [textLayer setColors:@[ (id)gradientLightColor.get(), (id)gradientDarkColor.get() ]];
-#else
- RetainPtr<CALayer> 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->textBoundingRectInWindowCoordinates().location() - _textIndicator->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->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->presentationTransition() == WebKit::TextIndicator::PresentationTransition::BounceAndCrossfade;
- double animationDuration = wantsCrossfade ? bounceWithCrossfadeAnimationDuration : bounceAnimationDuration;
- RetainPtr<CAKeyframeAnimation> bounceAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
- [bounceAnimation setValues:@[
- [NSValue valueWithCATransform3D:CATransform3DIdentity],
- [NSValue valueWithCATransform3D:CATransform3DMakeScale(midBounceScale, midBounceScale, 1)],
- [NSValue valueWithCATransform3D:CATransform3DIdentity]
- ]];
- [bounceAnimation setDuration:animationDuration];
-
- RetainPtr<CABasicAnimation> crossfadeAnimation;
- RetainPtr<CABasicAnimation> fadeShadowInAnimation;
- if (wantsCrossfade) {
- crossfadeAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];
- RetainPtr<CGImageRef> contentsImage = _textIndicator->contentImage()->makeCGImage();
- [crossfadeAnimation setToValue:(id)contentsImage.get()];
- [crossfadeAnimation setFillMode:kCAFillModeForwards];
- [crossfadeAnimation setRemovedOnCompletion:NO];
- [crossfadeAnimation setDuration:animationDuration];
-
- fadeShadowInAnimation = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"];
- [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:@"bounce"];
- if (wantsCrossfade) {
- [[bounceLayer valueForKey:textLayerKey] addAnimation:crossfadeAnimation.get() forKey:@"contentTransition"];
- [[bounceLayer valueForKey:dropShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@"fadeShadowIn"];
- [[bounceLayer valueForKey:rimShadowLayerKey] addAnimation:fadeShadowInAnimation.get() forKey:@"fadeShadowIn"];
- }
- }
- [CATransaction commit];
-}
-
-- (void)hideWithCompletionHandler:(void(^)(void))completionHandler
-{
- RetainPtr<CABasicAnimation> fadeAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
- [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:@"fadeOut"];
- [CATransaction commit];
-}
-
-- (BOOL)isFlipped
-{
- return YES;
-}
-
-@end
-
-namespace WebKit {
-
-TextIndicatorWindow::TextIndicatorWindow(WKView *wkView)
- : m_wkView(wkView)
- , m_startFadeOutTimer(RunLoop::main(), this, &TextIndicatorWindow::startFadeOutTimerFired)
-{
-}
-
-TextIndicatorWindow::~TextIndicatorWindow()
-{
- closeWindow();
-}
-
-void TextIndicatorWindow::setTextIndicator(PassRefPtr<TextIndicator> textIndicator, bool fadeOut, std::function<void ()> animationCompletionHandler)
-{
- if (m_textIndicator == textIndicator)
- return;
-
- m_textIndicator = textIndicator;
-
- // Get rid of the old window.
- closeWindow();
-
- if (!m_textIndicator)
- return;
-
- NSRect contentRect = m_textIndicator->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->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<NSWindow> 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) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
</span><span class="cx">
</span><del>-#import "TextIndicator.h"
</del><span class="cx"> #import "WKNSURLExtras.h"
</span><span class="cx"> #import "WKViewInternal.h"
</span><span class="cx"> #import "WKWebView.h"
</span><span class="lines">@@ -50,6 +49,7 @@
</span><span class="cx"> #import <WebCore/NSSharingServicePickerSPI.h>
</span><span class="cx"> #import <WebCore/NSViewSPI.h>
</span><span class="cx"> #import <WebCore/SoftLinking.h>
</span><ins>+#import <WebCore/TextIndicator.h>
</ins><span class="cx"> #import <WebCore/URL.h>
</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 && _hitTestResult.detectedDataTextIndicator)
</span><del>- _hitTestResult.detectedDataTextIndicator->setPresentationTransition(TextIndicator::PresentationTransition::Bounce);
</del><ins>+ _hitTestResult.detectedDataTextIndicator->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 = "<group>"; };
</span><span class="cx">                 0FCB4E4418BBE044000FCFC9 /* WKScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKScrollView.h; path = ios/WKScrollView.h; sourceTree = "<group>"; };
</span><span class="cx">                 0FCB4E4518BBE044000FCFC9 /* WKScrollView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKScrollView.mm; path = ios/WKScrollView.mm; sourceTree = "<group>"; };
</span><del>-                0FCB4E5618BBE3D9000FCFC9 /* TextIndicatorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicatorWindow.h; sourceTree = "<group>"; };
-                0FCB4E5718BBE3D9000FCFC9 /* TextIndicatorWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TextIndicatorWindow.mm; sourceTree = "<group>"; };
</del><span class="cx">                 0FCB4E5818BBE3D9000FCFC9 /* PageClientImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageClientImpl.h; sourceTree = "<group>"; };
</span><span class="cx">                 0FCB4E5918BBE3D9000FCFC9 /* PageClientImpl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageClientImpl.mm; sourceTree = "<group>"; };
</span><span class="cx">                 0FCB4E5C18BBE3D9000FCFC9 /* WKPrintingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPrintingView.h; sourceTree = "<group>"; };
</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 = "<group>"; };
</span><span class="cx">                 1A90C1F21264FD71003E44D4 /* FindController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindController.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A90C1F31264FD71003E44D4 /* FindController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindController.cpp; sourceTree = "<group>"; };
</span><del>-                1A91006F126675C3001842F5 /* TextIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextIndicator.h; sourceTree = "<group>"; };
-                1A910070126675C4001842F5 /* TextIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextIndicator.cpp; sourceTree = "<group>"; };
</del><span class="cx">                 1A92DC1012F8BA460017AF65 /* LayerTreeContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayerTreeContext.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A92DC1212F8BAB90017AF65 /* LayerTreeContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayerTreeContext.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 1A9E32871821636900F5D04C /* _WKRemoteObjectRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKRemoteObjectRegistry.h; sourceTree = "<group>"; };
</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 "DictionaryPopupInfo.h"
</span><del>-#import "TextIndicator.h"
</del><span class="cx"> #import "WebCoreArgumentCoders.h"
</span><span class="cx"> #import "WebPage.h"
</span><span class="cx"> #import "WebPageProxyMessages.h"
</span><span class="cx"> #import <WebCore/FrameView.h>
</span><span class="cx"> #import <WebCore/MainFrame.h>
</span><span class="cx"> #import <WebCore/Page.h>
</span><ins>+#import <WebCore/TextIndicator.h>
</ins><span class="cx"> #import <wtf/text/WTFString.h>
</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->performDictionaryLookupForSelection(frame, frame->selection().selection(), TextIndicator::PresentationTransition::BounceAndCrossfade);
</del><ins>+ m_page->performDictionaryLookupForSelection(frame, frame->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 "DrawingArea.h"
</span><span class="cx"> #include "PluginView.h"
</span><span class="cx"> #include "ShareableBitmap.h"
</span><del>-#include "TextIndicator.h"
</del><span class="cx"> #include "WKPage.h"
</span><span class="cx"> #include "WebCoreArgumentCoders.h"
</span><span class="cx"> #include "WebPage.h"
</span><span class="lines">@@ -44,6 +43,7 @@
</span><span class="cx"> #include <WebCore/PageOverlayController.h>
</span><span class="cx"> #include <WebCore/PlatformMouseEvent.h>
</span><span class="cx"> #include <WebCore/PluginDocument.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</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& selectedFrame, bool isShowingOverlay, bool shouldAnimate)
</span><span class="cx"> {
</span><del>- RefPtr<TextIndicator> indicator = TextIndicator::createWithSelectionInFrame(*WebFrame::fromCoreFrame(selectedFrame), shouldAnimate ? TextIndicator::PresentationTransition::Bounce : TextIndicator::PresentationTransition::None);
</del><ins>+ RefPtr<TextIndicator> 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 "Plugin.h"
</span><span class="cx"> #include "SandboxExtension.h"
</span><span class="cx"> #include "ShareableBitmap.h"
</span><del>-#include "TextIndicator.h"
</del><span class="cx"> #include "UserMediaPermissionRequestManager.h"
</span><span class="cx"> #include <WebCore/DictationAlternative.h>
</span><span class="cx"> #include <WebCore/DragData.h>
</span><span class="lines">@@ -58,6 +57,7 @@
</span><span class="cx"> #include <WebCore/PageVisibilityState.h>
</span><span class="cx"> #include <WebCore/ScrollTypes.h>
</span><span class="cx"> #include <WebCore/TextChecking.h>
</span><ins>+#include <WebCore/TextIndicator.h>
</ins><span class="cx"> #include <WebCore/UserActivity.h>
</span><span class="cx"> #include <WebCore/ViewState.h>
</span><span class="cx"> #include <WebCore/ViewportConfiguration.h>
</span><span class="lines">@@ -673,7 +673,7 @@
</span><span class="cx"> void speak(const String&);
</span><span class="cx"> void stopSpeaking();
</span><span class="cx">
</span><del>- void performDictionaryLookupForSelection(WebCore::Frame*, const WebCore::VisibleSelection&, TextIndicator::PresentationTransition);
</del><ins>+ void performDictionaryLookupForSelection(WebCore::Frame*, const WebCore::VisibleSelection&, 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&);
</span><span class="cx"> void performDictionaryLookupOfCurrentSelection();
</span><del>- void performDictionaryLookupForRange(WebCore::Frame*, WebCore::Range&, NSDictionary *options, TextIndicator::PresentationTransition);
</del><ins>+ void performDictionaryLookupForRange(WebCore::Frame*, WebCore::Range&, NSDictionary *options, WebCore::TextIndicatorPresentationTransition);
</ins><span class="cx">
</span><span class="cx"> void windowAndViewFramesChanged(const WebCore::FloatRect& windowFrameInScreenCoordinates, const WebCore::FloatRect& windowFrameInUnflippedScreenCoordinates, const WebCore::FloatRect& viewFrameInWindowCoordinates, const WebCore::FloatPoint& 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&, TextIndicator::PresentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForSelection(Frame*, const VisibleSelection&, 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&, NSDictionary *, TextIndicator::PresentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForRange(Frame*, Range&, 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& selection, TextIndicator::PresentationTransition presentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForSelection(Frame* frame, const VisibleSelection& selection, TextIndicatorPresentationTransition presentationTransition)
</ins><span class="cx"> {
</span><span class="cx"> NSDictionary *options = nil;
</span><span class="cx"> RefPtr<Range> selectedRange = rangeForDictionaryLookupForSelection(selection, &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 = &m_page->focusController().focusedOrMainFrame();
</span><del>- performDictionaryLookupForSelection(frame, frame->selection().selection(), TextIndicator::PresentationTransition::BounceAndCrossfade);
</del><ins>+ performDictionaryLookupForSelection(frame, frame->selection().selection(), TextIndicatorPresentationTransition::BounceAndCrossfade);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void WebPage::performDictionaryLookupForRange(Frame* frame, Range& range, NSDictionary *options, TextIndicator::PresentationTransition presentationTransition)
</del><ins>+void WebPage::performDictionaryLookupForRange(Frame* frame, Range& 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->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->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 && 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>