<!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>[196246] trunk/Source/WebCore</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/196246">196246</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2016-02-07 19:01:07 -0800 (Sun, 07 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Use modern SPI header idiom for NSScrollerImp and NSScrollerImpPair
https://bugs.webkit.org/show_bug.cgi?id=153969

Reviewed by Dan Bernstein.

* WebCore.xcodeproj/project.pbxproj:
Add new file NSScrollerImpSPI.h

* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
Use new include of NSScrollerImpSPI.h.

* platform/ScrollbarThemeComposite.h:
Define ScrollbarPainter more precisely as NSScrollerImp * now that the type is available to us.

* platform/mac/NSScrollerImpDetails.h:
Remove NSObject category based SPI usage with the modern one NSScrollerImpSPI.h

* platform/mac/NSScrollerImpDetails.mm:
(WebCore::recommendedScrollerStyle):
Simplify recommendedScrollerStyle() now that all OS's we ship on have +[NSScroller preferredScrollerStyle].

* platform/mac/ScrollAnimatorMac.mm:
(supportsUIStateTransitionProgress):
(supportsExpansionTransitionProgress):
(supportsContentAreaScrolledInDirection):
Stop using NSClassFromString now that we can reference the classes explicitly.

(-[WebScrollbarPainterControllerDelegate invalidate]):
(-[WebScrollbarPainterControllerDelegate contentAreaRectForScrollerImpPair:]):
(-[WebScrollbarPainterControllerDelegate inLiveResizeForScrollerImpPair:]):
(-[WebScrollbarPainterControllerDelegate mouseLocationInContentAreaForScrollerImpPair:]):
(-[WebScrollbarPainterControllerDelegate scrollerImpPair:convertContentPoint:toScrollerImp:]):
(-[WebScrollbarPainterControllerDelegate scrollerImpPair:setContentAreaNeedsDisplayInRect:]):
(-[WebScrollbarPainterControllerDelegate scrollerImpPair:updateScrollerStyleForNewRecommendedScrollerStyle:]):
(-[WebScrollbarPainterDelegate layer]):
(-[WebScrollbarPainterDelegate mouseLocationInScrollerForScrollerImp:]):
(-[WebScrollbarPainterDelegate convertRectToLayer:]):
(-[WebScrollbarPainterDelegate shouldUseLayerPerPartForScrollerImp:]):
(-[WebScrollbarPainterDelegate setUpAlphaAnimation:scrollerPainter:part:animateAlphaTo:duration:]):
(-[WebScrollbarPainterDelegate scrollerImp:animateKnobAlphaTo:duration:]):
(-[WebScrollbarPainterDelegate scrollerImp:animateTrackAlphaTo:duration:]):
(-[WebScrollbarPainterDelegate scrollerImp:animateUIStateTransitionWithDuration:]):
(-[WebScrollbarPainterDelegate scrollerImp:animateExpansionTransitionWithDuration:]):
(-[WebScrollbarPainterDelegate scrollerImp:overlayScrollerStateChangedTo:]):
(WebCore::ScrollAnimatorMac::ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::lockOverlayScrollbarStateToHidden):
(WebCore::ScrollAnimatorMac::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::updateScrollerStyle):
Add proper conforming to protocols and replace ids with proper types.

* platform/mac/ScrollbarThemeMac.mm:
(WebCore::supportsExpandedScrollbars):
(WebCore::ScrollbarThemeMac::registerScrollbar):
(WebCore::ScrollbarThemeMac::scrollbarThickness):
(WebCore::ScrollbarThemeMac::setUpContentShadowLayer):
Stop using NSClassFromString now that we can reference the classes explicitly.

* platform/spi/mac/NSScrollerImpSPI.h: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeFrameScrollingNodeMacmm">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollbarThemeCompositeh">trunk/Source/WebCore/platform/ScrollbarThemeComposite.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacNSScrollerImpDetailsh">trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacNSScrollerImpDetailsmm">trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacScrollAnimatorMacmm">trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacScrollbarThemeMacmm">trunk/Source/WebCore/platform/mac/ScrollbarThemeMac.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformspimacNSScrollerImpSPIh">trunk/Source/WebCore/platform/spi/mac/NSScrollerImpSPI.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/ChangeLog        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -1,3 +1,65 @@
</span><ins>+2016-02-07  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Use modern SPI header idiom for NSScrollerImp and NSScrollerImpPair
+        https://bugs.webkit.org/show_bug.cgi?id=153969
+
+        Reviewed by Dan Bernstein.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        Add new file NSScrollerImpSPI.h
+
+        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
+        Use new include of NSScrollerImpSPI.h.
+
+        * platform/ScrollbarThemeComposite.h:
+        Define ScrollbarPainter more precisely as NSScrollerImp * now that the type is available to us.
+
+        * platform/mac/NSScrollerImpDetails.h:
+        Remove NSObject category based SPI usage with the modern one NSScrollerImpSPI.h
+
+        * platform/mac/NSScrollerImpDetails.mm:
+        (WebCore::recommendedScrollerStyle):
+        Simplify recommendedScrollerStyle() now that all OS's we ship on have +[NSScroller preferredScrollerStyle].
+
+        * platform/mac/ScrollAnimatorMac.mm:
+        (supportsUIStateTransitionProgress):
+        (supportsExpansionTransitionProgress):
+        (supportsContentAreaScrolledInDirection):
+        Stop using NSClassFromString now that we can reference the classes explicitly.
+
+        (-[WebScrollbarPainterControllerDelegate invalidate]):
+        (-[WebScrollbarPainterControllerDelegate contentAreaRectForScrollerImpPair:]):
+        (-[WebScrollbarPainterControllerDelegate inLiveResizeForScrollerImpPair:]):
+        (-[WebScrollbarPainterControllerDelegate mouseLocationInContentAreaForScrollerImpPair:]):
+        (-[WebScrollbarPainterControllerDelegate scrollerImpPair:convertContentPoint:toScrollerImp:]):
+        (-[WebScrollbarPainterControllerDelegate scrollerImpPair:setContentAreaNeedsDisplayInRect:]):
+        (-[WebScrollbarPainterControllerDelegate scrollerImpPair:updateScrollerStyleForNewRecommendedScrollerStyle:]):
+        (-[WebScrollbarPainterDelegate layer]):
+        (-[WebScrollbarPainterDelegate mouseLocationInScrollerForScrollerImp:]):
+        (-[WebScrollbarPainterDelegate convertRectToLayer:]):
+        (-[WebScrollbarPainterDelegate shouldUseLayerPerPartForScrollerImp:]):
+        (-[WebScrollbarPainterDelegate setUpAlphaAnimation:scrollerPainter:part:animateAlphaTo:duration:]):
+        (-[WebScrollbarPainterDelegate scrollerImp:animateKnobAlphaTo:duration:]):
+        (-[WebScrollbarPainterDelegate scrollerImp:animateTrackAlphaTo:duration:]):
+        (-[WebScrollbarPainterDelegate scrollerImp:animateUIStateTransitionWithDuration:]):
+        (-[WebScrollbarPainterDelegate scrollerImp:animateExpansionTransitionWithDuration:]):
+        (-[WebScrollbarPainterDelegate scrollerImp:overlayScrollerStateChangedTo:]):
+        (WebCore::ScrollAnimatorMac::ScrollAnimatorMac):
+        (WebCore::ScrollAnimatorMac::lockOverlayScrollbarStateToHidden):
+        (WebCore::ScrollAnimatorMac::didAddVerticalScrollbar):
+        (WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar):
+        (WebCore::ScrollAnimatorMac::updateScrollerStyle):
+        Add proper conforming to protocols and replace ids with proper types.
+
+        * platform/mac/ScrollbarThemeMac.mm:
+        (WebCore::supportsExpandedScrollbars):
+        (WebCore::ScrollbarThemeMac::registerScrollbar):
+        (WebCore::ScrollbarThemeMac::scrollbarThickness):
+        (WebCore::ScrollbarThemeMac::setUpContentShadowLayer):
+        Stop using NSClassFromString now that we can reference the classes explicitly.
+
+        * platform/spi/mac/NSScrollerImpSPI.h: Added.
+
</ins><span class="cx"> 2016-02-07  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Outline does not clip when ancestor has overflow: hidden and requires layer.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -4168,13 +4168,13 @@
</span><span class="cx">                 A456FA2711AD4A830020B420 /* LabelsNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A456FA2511AD4A830020B420 /* LabelsNodeList.h */; };
</span><span class="cx">                 A501920E132EBF2E008BFE55 /* Autocapitalize.h in Headers */ = {isa = PBXBuildFile; fileRef = A501920C132EBF2E008BFE55 /* Autocapitalize.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A502C5DF13049B3500FC7D53 /* WebSafeGCActivityCallbackIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = A502C5DD13049B3500FC7D53 /* WebSafeGCActivityCallbackIOS.h */; };
</span><ins>+                A5071E801C506B66009951BE /* InspectorMemoryAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5071E7E1C5067A0009951BE /* InspectorMemoryAgent.cpp */; };
+                A5071E811C506B69009951BE /* InspectorMemoryAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A5071E7F1C5067A0009951BE /* InspectorMemoryAgent.h */; };
</ins><span class="cx">                 A5071E851C56D0DC009951BE /* ResourceUsageData.h in Headers */ = {isa = PBXBuildFile; fileRef = A5071E821C56D079009951BE /* ResourceUsageData.h */; };
</span><span class="cx">                 A5071E861C56D0DF009951BE /* ResourceUsageThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5071E831C56D079009951BE /* ResourceUsageThread.cpp */; };
</span><span class="cx">                 A5071E871C56D0E1009951BE /* ResourceUsageThread.h in Headers */ = {isa = PBXBuildFile; fileRef = A5071E841C56D079009951BE /* ResourceUsageThread.h */; };
</span><span class="cx">                 A5071E891C56D4FE009951BE /* ResourceUsageThreadCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5071E881C56D4FA009951BE /* ResourceUsageThreadCocoa.mm */; };
</span><span class="cx">                 A5071E8B1C56FB31009951BE /* ResourceUsageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5071E8A1C56FAFA009951BE /* ResourceUsageData.cpp */; };
</span><del>-                A5071E801C506B66009951BE /* InspectorMemoryAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5071E7E1C5067A0009951BE /* InspectorMemoryAgent.cpp */; };
-                A5071E811C506B69009951BE /* InspectorMemoryAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A5071E7F1C5067A0009951BE /* InspectorMemoryAgent.h */; };
</del><span class="cx">                 A513B3D7114B1666001C429B /* KeyEventCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */; };
</span><span class="cx">                 A513B3D8114B166A001C429B /* KeyEventCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */; };
</span><span class="cx">                 A516E8B7136E04DB0076C3C0 /* LocalizedDateCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A516E8B4136E04DB0076C3C0 /* LocalizedDateCache.h */; };
</span><span class="lines">@@ -10287,6 +10287,7 @@
</span><span class="cx">                 7AF9B20918CFB5F200C64BEF /* JSVTTRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVTTRegion.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7AF9B20A18CFB5F300C64BEF /* JSVTTRegionList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVTTRegionList.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7AF9B20B18CFB5F300C64BEF /* JSVTTRegionList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVTTRegionList.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                7C0406121C66EE9C00AF0711 /* NSScrollerImpSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScrollerImpSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 7C1E97251A9F9834007BF0FB /* AutoFillButtonElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AutoFillButtonElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7C1E97261A9F9834007BF0FB /* AutoFillButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoFillButtonElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 7C2BDD3B17C7F98B0038FF15 /* JSDOMGlobalObjectTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMGlobalObjectTask.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -11805,13 +11806,13 @@
</span><span class="cx">                 A456FA2511AD4A830020B420 /* LabelsNodeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelsNodeList.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A501920C132EBF2E008BFE55 /* Autocapitalize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Autocapitalize.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A502C5DD13049B3500FC7D53 /* WebSafeGCActivityCallbackIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSafeGCActivityCallbackIOS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                A5071E7E1C5067A0009951BE /* InspectorMemoryAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorMemoryAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A5071E7F1C5067A0009951BE /* InspectorMemoryAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorMemoryAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 A5071E821C56D079009951BE /* ResourceUsageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceUsageData.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5071E831C56D079009951BE /* ResourceUsageThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceUsageThread.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5071E841C56D079009951BE /* ResourceUsageThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceUsageThread.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5071E881C56D4FA009951BE /* ResourceUsageThreadCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceUsageThreadCocoa.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5071E8A1C56FAFA009951BE /* ResourceUsageData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceUsageData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                A5071E7E1C5067A0009951BE /* InspectorMemoryAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorMemoryAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                A5071E7F1C5067A0009951BE /* InspectorMemoryAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorMemoryAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 A516E8B4136E04DB0076C3C0 /* LocalizedDateCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalizedDateCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A516E8B5136E04DB0076C3C0 /* LocalizedDateCache.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LocalizedDateCache.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A518225417E2A0D400A9BA1D /* InspectorOverlayPage.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = InspectorOverlayPage.css; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -18872,6 +18873,7 @@
</span><span class="cx">                                 9321D58F1A3906FA008052BE /* NSImmediateActionGestureRecognizerSPI.h */,
</span><span class="cx">                                 937F4CCD1A2D4B0100BB39F5 /* NSMenuSPI.h */,
</span><span class="cx">                                 93F1E1EB1A40FDDC00348D13 /* NSPopoverSPI.h */,
</span><ins>+                                7C0406121C66EE9C00AF0711 /* NSScrollerImpSPI.h */,
</ins><span class="cx">                                 F40EA8AA1B867D6500CE5581 /* NSScrollingInputFilterSPI.h */,
</span><span class="cx">                                 2DCB837719F99BBA00A7FBE4 /* NSSharingServicePickerSPI.h */,
</span><span class="cx">                                 2DCB837819F99BBA00A7FBE4 /* NSSharingServiceSPI.h */,
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeFrameScrollingNodeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> #import &quot;FrameView.h&quot;
</span><span class="cx"> #import &quot;LayoutSize.h&quot;
</span><span class="cx"> #import &quot;Logging.h&quot;
</span><del>-#import &quot;NSScrollerImpDetails.h&quot;
</del><ins>+#import &quot;NSScrollerImpSPI.h&quot;
</ins><span class="cx"> #import &quot;PlatformWheelEvent.h&quot;
</span><span class="cx"> #import &quot;ScrollableArea.h&quot;
</span><span class="cx"> #import &quot;ScrollingCoordinator.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollbarThemeCompositeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollbarThemeComposite.h (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollbarThemeComposite.h        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/platform/ScrollbarThemeComposite.h        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -29,7 +29,8 @@
</span><span class="cx"> #include &quot;ScrollbarTheme.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-typedef id ScrollbarPainter;
</del><ins>+OBJC_CLASS NSScrollerImp;
+typedef NSScrollerImp *ScrollbarPainter;
</ins><span class="cx"> #else
</span><span class="cx"> typedef void* ScrollbarPainter;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacNSScrollerImpDetailsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -26,74 +26,6 @@
</span><span class="cx"> #ifndef WebCore_NSScrollerImpDetails_h
</span><span class="cx"> #define WebCore_NSScrollerImpDetails_h
</span><span class="cx"> 
</span><del>-// Public APIs not available on versions of Mac on which we build
-
-@interface NSObject (ScrollbarPainter)
-+ (id)scrollerImpWithStyle:(NSScrollerStyle)newScrollerStyle controlSize:(NSControlSize)newControlSize horizontal:(BOOL)horizontal replacingScrollerImp:(id)previous;
-- (CGFloat)knobAlpha;
-- (void)setKnobAlpha:(CGFloat)knobAlpha;
-- (CGFloat)trackAlpha;
-- (void)setTrackAlpha:(CGFloat)trackAlpha;
-- (void)setEnabled:(BOOL)enabled;
-- (void)setBoundsSize:(NSSize)boundsSize;
-- (void)setDoubleValue:(double)doubleValue;
-- (void)setPresentationValue:(double)presentationValue;
-- (BOOL)shouldUsePresentationValue;
-- (void)setUsePresentationValue:(BOOL)usePresentationValue;
-- (void)setKnobProportion:(CGFloat)proportion;
-- (void)setKnobStyle:(NSScrollerKnobStyle)knobStyle;
-- (void)setExpanded:(BOOL)expanded;
-- (BOOL)isExpanded;
-- (void)setDelegate:(id)delegate;
-- (void)setUiStateTransitionProgress:(CGFloat)uiStateTransitionProgress;
-- (void)setExpansionTransitionProgress:(CGFloat)expansionTransitionProgress;
-- (BOOL)isHorizontal;
-- (CGFloat)trackWidth;
-- (CGFloat)trackBoxWidth;
-- (CGFloat)knobMinLength;
-- (CGFloat)trackOverlapEndInset;
-- (CGFloat)knobOverlapEndInset;
-- (CGFloat)trackEndInset;
-- (CGFloat)knobEndInset;
-- (CGFloat)uiStateTransitionProgress;
-- (CGFloat)expansionTransitionProgress;
-- (NSRect)rectForPart:(NSScrollerPart)partCode;
-- (void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag alpha:(CGFloat)alpha;
-- (void)drawKnob;
-- (void)mouseEnteredScroller;
-- (void)mouseExitedScroller;
-- (void)setTracking:(BOOL)tracking;
-- (void)setNeedsDisplay:(BOOL)flag;
-@end
-
-@interface NSObject (ScrollbarPainterController)
-- (void)setDelegate:(id)delegate;
-- (void)hideOverlayScrollers;
-- (void)flashScrollers;
-- (void)lockOverlayScrollerState:(NSUInteger)state;
-- (BOOL)overlayScrollerStateIsLocked;
-- (void)unlockOverlayScrollerState;
-- (id)horizontalScrollerImp;
-- (void)setHorizontalScrollerImp:(id)horizontal;
-- (id)verticalScrollerImp;
-- (void)setVerticalScrollerImp:(id)vertical;
-- (NSScrollerStyle)scrollerStyle;
-- (void)setScrollerStyle:(NSScrollerStyle)scrollerStyle;
-- (void)contentAreaScrolled;
-- (void)contentAreaScrolledInDirection:(NSPoint)direction;
-- (void)contentAreaWillDraw;
-- (void)mouseEnteredContentArea;
-- (void)mouseExitedContentArea;
-- (void)mouseMovedInContentArea;
-- (void)startLiveResize;
-- (void)contentAreaDidResize;
-- (void)endLiveResize;
-- (void)windowOrderedIn;
-- (void)windowOrderedOut;
-- (void)beginScrollGesture;
-- (void)endScrollGesture;
-@end
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> NSScrollerStyle recommendedScrollerStyle();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacNSScrollerImpDetailsmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.mm (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.mm        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.mm        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -27,16 +27,16 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;NSScrollerImpDetails.h&quot;
</span><ins>+
</ins><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-NSScrollerStyle recommendedScrollerStyle() {
</del><ins>+NSScrollerStyle recommendedScrollerStyle()
+{
</ins><span class="cx">     if (Settings::usesOverlayScrollbars())
</span><span class="cx">         return NSScrollerStyleOverlay;
</span><del>-    if ([NSScroller respondsToSelector:@selector(preferredScrollerStyle)])
-        return [NSScroller preferredScrollerStyle];
-    return NSScrollerStyleLegacy;
</del><ins>+    return [NSScroller preferredScrollerStyle];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacScrollAnimatorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include &quot;GraphicsLayer.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;NSScrollerImpDetails.h&quot;
</span><ins>+#include &quot;NSScrollerImpSPI.h&quot;
</ins><span class="cx"> #include &quot;PlatformWheelEvent.h&quot;
</span><span class="cx"> #include &quot;ScrollView.h&quot;
</span><span class="cx"> #include &quot;ScrollableArea.h&quot;
</span><span class="lines">@@ -47,19 +48,19 @@
</span><span class="cx"> static bool supportsUIStateTransitionProgress()
</span><span class="cx"> {
</span><span class="cx">     // FIXME: This is temporary until all platforms that support ScrollbarPainter support this part of the API.
</span><del>-    static const bool globalSupportsUIStateTransitionProgress = [NSClassFromString(@&quot;NSScrollerImp&quot;) instancesRespondToSelector:@selector(mouseEnteredScroller)];
</del><ins>+    static const bool globalSupportsUIStateTransitionProgress = [[NSScrollerImp class] instancesRespondToSelector:@selector(mouseEnteredScroller)];
</ins><span class="cx">     return globalSupportsUIStateTransitionProgress;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool supportsExpansionTransitionProgress()
</span><span class="cx"> {
</span><del>-    static const bool globalSupportsExpansionTransitionProgress = [NSClassFromString(@&quot;NSScrollerImp&quot;) instancesRespondToSelector:@selector(expansionTransitionProgress)];
</del><ins>+    static const bool globalSupportsExpansionTransitionProgress = [[NSScrollerImp class] instancesRespondToSelector:@selector(expansionTransitionProgress)];
</ins><span class="cx">     return globalSupportsExpansionTransitionProgress;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool supportsContentAreaScrolledInDirection()
</span><span class="cx"> {
</span><del>-    static const bool globalSupportsContentAreaScrolledInDirection = [NSClassFromString(@&quot;NSScrollerImpPair&quot;) instancesRespondToSelector:@selector(contentAreaScrolledInDirection:)];
</del><ins>+    static const bool globalSupportsContentAreaScrolledInDirection = [[NSScrollerImpPair class] instancesRespondToSelector:@selector(contentAreaScrolledInDirection:)];
</ins><span class="cx">     return globalSupportsContentAreaScrolledInDirection;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -181,7 +182,7 @@
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><del>-@interface WebScrollbarPainterControllerDelegate : NSObject
</del><ins>+@interface WebScrollbarPainterControllerDelegate : NSObject &lt;NSScrollerImpPairDelegate&gt;
</ins><span class="cx"> {
</span><span class="cx">     ScrollableArea* _scrollableArea;
</span><span class="cx"> }
</span><span class="lines">@@ -205,7 +206,7 @@
</span><span class="cx">     _scrollableArea = 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (NSRect)contentAreaRectForScrollerImpPair:(id)scrollerImpPair
</del><ins>+- (NSRect)contentAreaRectForScrollerImpPair:(NSScrollerImpPair *)scrollerImpPair
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImpPair);
</span><span class="cx">     if (!_scrollableArea)
</span><span class="lines">@@ -215,7 +216,7 @@
</span><span class="cx">     return NSMakeRect(0, 0, contentsSize.width(), contentsSize.height());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (BOOL)inLiveResizeForScrollerImpPair:(id)scrollerImpPair
</del><ins>+- (BOOL)inLiveResizeForScrollerImpPair:(NSScrollerImpPair *)scrollerImpPair
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImpPair);
</span><span class="cx">     if (!_scrollableArea)
</span><span class="lines">@@ -224,7 +225,7 @@
</span><span class="cx">     return _scrollableArea-&gt;inLiveResize();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (NSPoint)mouseLocationInContentAreaForScrollerImpPair:(id)scrollerImpPair
</del><ins>+- (NSPoint)mouseLocationInContentAreaForScrollerImpPair:(NSScrollerImpPair *)scrollerImpPair
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImpPair);
</span><span class="cx">     if (!_scrollableArea)
</span><span class="lines">@@ -233,7 +234,7 @@
</span><span class="cx">     return _scrollableArea-&gt;lastKnownMousePosition();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (NSPoint)scrollerImpPair:(id)scrollerImpPair convertContentPoint:(NSPoint)pointInContentArea toScrollerImp:(id)scrollerImp
</del><ins>+- (NSPoint)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair convertContentPoint:(NSPoint)pointInContentArea toScrollerImp:(NSScrollerImp *)scrollerImp
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImpPair);
</span><span class="cx"> 
</span><span class="lines">@@ -259,7 +260,7 @@
</span><span class="cx">     return scrollbar-&gt;convertFromContainingView(WebCore::IntPoint(pointInContentArea));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImpPair:(id)scrollerImpPair setContentAreaNeedsDisplayInRect:(NSRect)rect
</del><ins>+- (void)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair setContentAreaNeedsDisplayInRect:(NSRect)rect
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImpPair);
</span><span class="cx">     UNUSED_PARAM(rect);
</span><span class="lines">@@ -273,7 +274,7 @@
</span><span class="cx">     _scrollableArea-&gt;scrollAnimator().contentAreaWillPaint();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImpPair:(id)scrollerImpPair updateScrollerStyleForNewRecommendedScrollerStyle:(NSScrollerStyle)newRecommendedScrollerStyle
</del><ins>+- (void)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair updateScrollerStyleForNewRecommendedScrollerStyle:(NSScrollerStyle)newRecommendedScrollerStyle
</ins><span class="cx"> {
</span><span class="cx">     if (!_scrollableArea)
</span><span class="cx">         return;
</span><span class="lines">@@ -381,7 +382,7 @@
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="cx"> 
</span><del>-@interface WebScrollbarPainterDelegate : NSObject&lt;NSAnimationDelegate&gt;
</del><ins>+@interface WebScrollbarPainterDelegate : NSObject&lt;NSAnimationDelegate, NSScrollerImpDelegate&gt;
</ins><span class="cx"> {
</span><span class="cx">     WebCore::Scrollbar* _scrollbar;
</span><span class="cx"> 
</span><span class="lines">@@ -449,7 +450,7 @@
</span><span class="cx">     return layer ? layer-&gt;platformLayer() : dummyLayer;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (NSPoint)mouseLocationInScrollerForScrollerImp:(id)scrollerImp
</del><ins>+- (NSPoint)mouseLocationInScrollerForScrollerImp:(NSScrollerImp *)scrollerImp
</ins><span class="cx"> {
</span><span class="cx">     if (!_scrollbar)
</span><span class="cx">         return NSZeroPoint;
</span><span class="lines">@@ -464,7 +465,7 @@
</span><span class="cx">     return rect;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (BOOL)shouldUseLayerPerPartForScrollerImp:(id)scrollerImp
</del><ins>+- (BOOL)shouldUseLayerPerPartForScrollerImp:(NSScrollerImp *)scrollerImp
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImp);
</span><span class="cx"> 
</span><span class="lines">@@ -516,7 +517,7 @@
</span><span class="cx">     [scrollbarPartAnimation startAnimation];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImp:(id)scrollerImp animateKnobAlphaTo:(CGFloat)newKnobAlpha duration:(NSTimeInterval)duration
</del><ins>+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateKnobAlphaTo:(CGFloat)newKnobAlpha duration:(NSTimeInterval)duration
</ins><span class="cx"> {
</span><span class="cx">     if (!_scrollbar)
</span><span class="cx">         return;
</span><span class="lines">@@ -539,7 +540,7 @@
</span><span class="cx">     [self setUpAlphaAnimation:_knobAlphaAnimation scrollerPainter:scrollerPainter part:WebCore::ThumbPart animateAlphaTo:newKnobAlpha duration:duration];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImp:(id)scrollerImp animateTrackAlphaTo:(CGFloat)newTrackAlpha duration:(NSTimeInterval)duration
</del><ins>+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateTrackAlphaTo:(CGFloat)newTrackAlpha duration:(NSTimeInterval)duration
</ins><span class="cx"> {
</span><span class="cx">     if (!_scrollbar)
</span><span class="cx">         return;
</span><span class="lines">@@ -550,7 +551,7 @@
</span><span class="cx">     [self setUpAlphaAnimation:_trackAlphaAnimation scrollerPainter:scrollerPainter part:WebCore::BackTrackPart animateAlphaTo:newTrackAlpha duration:duration];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImp:(id)scrollerImp animateUIStateTransitionWithDuration:(NSTimeInterval)duration
</del><ins>+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateUIStateTransitionWithDuration:(NSTimeInterval)duration
</ins><span class="cx"> {
</span><span class="cx">     if (!_scrollbar)
</span><span class="cx">         return;
</span><span class="lines">@@ -584,7 +585,7 @@
</span><span class="cx">     [_uiStateTransitionAnimation startAnimation];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImp:(id)scrollerImp animateExpansionTransitionWithDuration:(NSTimeInterval)duration
</del><ins>+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateExpansionTransitionWithDuration:(NSTimeInterval)duration
</ins><span class="cx"> {
</span><span class="cx">     if (!_scrollbar)
</span><span class="cx">         return;
</span><span class="lines">@@ -614,7 +615,7 @@
</span><span class="cx">     [_expansionTransitionAnimation startAnimation];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)scrollerImp:(id)scrollerImp overlayScrollerStateChangedTo:(NSUInteger)newOverlayScrollerState
</del><ins>+- (void)scrollerImp:(NSScrollerImp *)scrollerImp overlayScrollerStateChangedTo:(NSOverlayScrollerState)newOverlayScrollerState
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(scrollerImp);
</span><span class="cx">     UNUSED_PARAM(newOverlayScrollerState);
</span><span class="lines">@@ -651,8 +652,8 @@
</span><span class="cx">     m_scrollAnimationHelper = adoptNS([[NSClassFromString(@&quot;NSScrollAnimationHelper&quot;) alloc] initWithDelegate:m_scrollAnimationHelperDelegate.get()]);
</span><span class="cx"> 
</span><span class="cx">     m_scrollbarPainterControllerDelegate = adoptNS([[WebScrollbarPainterControllerDelegate alloc] initWithScrollableArea:&amp;scrollableArea]);
</span><del>-    m_scrollbarPainterController = adoptNS([[NSClassFromString(@&quot;NSScrollerImpPair&quot;) alloc] init]);
-    [m_scrollbarPainterController setDelegate:(id)m_scrollbarPainterControllerDelegate.get()];
</del><ins>+    m_scrollbarPainterController = adoptNS([[NSScrollerImpPair alloc] init]);
+    [m_scrollbarPainterController setDelegate:m_scrollbarPainterControllerDelegate.get()];
</ins><span class="cx">     [m_scrollbarPainterController setScrollerStyle:recommendedScrollerStyle()];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -952,7 +953,7 @@
</span><span class="cx"> void ScrollAnimatorMac::lockOverlayScrollbarStateToHidden(bool shouldLockState)
</span><span class="cx"> {
</span><span class="cx">     if (shouldLockState)
</span><del>-        [m_scrollbarPainterController lockOverlayScrollerState:ScrollbarOverlayStateHidden];
</del><ins>+        [m_scrollbarPainterController lockOverlayScrollerState:NSOverlayScrollerStateHidden];
</ins><span class="cx">     else {
</span><span class="cx">         [m_scrollbarPainterController unlockOverlayScrollerState];
</span><span class="cx"> 
</span><span class="lines">@@ -977,7 +978,7 @@
</span><span class="cx">     ASSERT(!m_verticalScrollbarPainterDelegate);
</span><span class="cx">     m_verticalScrollbarPainterDelegate = adoptNS([[WebScrollbarPainterDelegate alloc] initWithScrollbar:scrollbar]);
</span><span class="cx"> 
</span><del>-    [painter setDelegate:(id)m_verticalScrollbarPainterDelegate.get()];
</del><ins>+    [painter setDelegate:m_verticalScrollbarPainterDelegate.get()];
</ins><span class="cx">     if (GraphicsLayer* layer = scrollbar-&gt;scrollableArea().layerForVerticalScrollbar())
</span><span class="cx">         [painter setLayer:layer-&gt;platformLayer()];
</span><span class="cx"> 
</span><span class="lines">@@ -1009,7 +1010,7 @@
</span><span class="cx">     ASSERT(!m_horizontalScrollbarPainterDelegate);
</span><span class="cx">     m_horizontalScrollbarPainterDelegate = adoptNS([[WebScrollbarPainterDelegate alloc] initWithScrollbar:scrollbar]);
</span><span class="cx"> 
</span><del>-    [painter setDelegate:(id)m_horizontalScrollbarPainterDelegate.get()];
</del><ins>+    [painter setDelegate:m_horizontalScrollbarPainterDelegate.get()];
</ins><span class="cx">     if (GraphicsLayer* layer = scrollbar-&gt;scrollableArea().layerForHorizontalScrollbar())
</span><span class="cx">         [painter setLayer:layer-&gt;platformLayer()];
</span><span class="cx"> 
</span><span class="lines">@@ -1331,10 +1332,8 @@
</span><span class="cx">         verticalScrollbar-&gt;invalidate();
</span><span class="cx"> 
</span><span class="cx">         ScrollbarPainter oldVerticalPainter = [m_scrollbarPainterController verticalScrollerImp];
</span><del>-        ScrollbarPainter newVerticalPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:newStyle 
-                                                                                    controlSize:(NSControlSize)verticalScrollbar-&gt;controlSize() 
-                                                                                    horizontal:NO 
-                                                                                    replacingScrollerImp:oldVerticalPainter];
</del><ins>+        ScrollbarPainter newVerticalPainter = [NSScrollerImp scrollerImpWithStyle:newStyle controlSize:(NSControlSize)verticalScrollbar-&gt;controlSize() horizontal:NO replacingScrollerImp:oldVerticalPainter];
+
</ins><span class="cx">         [m_scrollbarPainterController setVerticalScrollerImp:newVerticalPainter];
</span><span class="cx">         macTheme-&gt;setNewPainterForScrollbar(*verticalScrollbar, newVerticalPainter);
</span><span class="cx"> 
</span><span class="lines">@@ -1349,10 +1348,8 @@
</span><span class="cx">         horizontalScrollbar-&gt;invalidate();
</span><span class="cx"> 
</span><span class="cx">         ScrollbarPainter oldHorizontalPainter = [m_scrollbarPainterController horizontalScrollerImp];
</span><del>-        ScrollbarPainter newHorizontalPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:newStyle 
-                                                                                    controlSize:(NSControlSize)horizontalScrollbar-&gt;controlSize() 
-                                                                                    horizontal:YES 
-                                                                                    replacingScrollerImp:oldHorizontalPainter];
</del><ins>+        ScrollbarPainter newHorizontalPainter = [NSScrollerImp scrollerImpWithStyle:newStyle controlSize:(NSControlSize)horizontalScrollbar-&gt;controlSize() horizontal:YES replacingScrollerImp:oldHorizontalPainter];
+
</ins><span class="cx">         [m_scrollbarPainterController setHorizontalScrollerImp:newHorizontalPainter];
</span><span class="cx">         macTheme-&gt;setNewPainterForScrollbar(*horizontalScrollbar, newHorizontalPainter);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacScrollbarThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ScrollbarThemeMac.mm (196245 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ScrollbarThemeMac.mm        2016-02-08 01:34:07 UTC (rev 196245)
+++ trunk/Source/WebCore/platform/mac/ScrollbarThemeMac.mm        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -28,10 +28,11 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;BlockExceptions.h&quot;
</span><span class="cx"> #include &quot;ColorMac.h&quot;
</span><ins>+#include &quot;GraphicsLayer.h&quot;
</ins><span class="cx"> #include &quot;ImageBuffer.h&quot;
</span><del>-#include &quot;GraphicsLayer.h&quot;
</del><span class="cx"> #include &quot;LocalCurrentGraphicsContext.h&quot;
</span><span class="cx"> #include &quot;NSScrollerImpDetails.h&quot;
</span><ins>+#include &quot;NSScrollerImpSPI.h&quot;
</ins><span class="cx"> #include &quot;PlatformMouseEvent.h&quot;
</span><span class="cx"> #include &quot;ScrollAnimatorMac.h&quot;
</span><span class="cx"> #include &quot;ScrollView.h&quot;
</span><span class="lines">@@ -138,7 +139,7 @@
</span><span class="cx"> static bool supportsExpandedScrollbars()
</span><span class="cx"> {
</span><span class="cx">     // FIXME: This is temporary until all platforms that support ScrollbarPainter support this part of the API.
</span><del>-    static bool globalSupportsExpandedScrollbars = [NSClassFromString(@&quot;NSScrollerImp&quot;) instancesRespondToSelector:@selector(setExpanded:)];
</del><ins>+    static bool globalSupportsExpandedScrollbars = [[NSScrollerImp class] instancesRespondToSelector:@selector(setExpanded:)];
</ins><span class="cx">     return globalSupportsExpandedScrollbars;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -161,7 +162,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     bool isHorizontal = scrollbar.orientation() == HorizontalScrollbar;
</span><del>-    ScrollbarPainter scrollbarPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:recommendedScrollerStyle() controlSize:scrollbarControlSizeToNSControlSize(scrollbar.controlSize()) horizontal:isHorizontal replacingScrollerImp:nil];
</del><ins>+    ScrollbarPainter scrollbarPainter = [NSScrollerImp scrollerImpWithStyle:recommendedScrollerStyle() controlSize:scrollbarControlSizeToNSControlSize(scrollbar.controlSize()) horizontal:isHorizontal replacingScrollerImp:nil];
</ins><span class="cx">     scrollbarMap()-&gt;add(&amp;scrollbar, scrollbarPainter);
</span><span class="cx">     updateEnabledState(scrollbar);
</span><span class="cx">     updateScrollbarOverlayStyle(scrollbar);
</span><span class="lines">@@ -224,7 +225,7 @@
</span><span class="cx"> int ScrollbarThemeMac::scrollbarThickness(ScrollbarControlSize controlSize)
</span><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><del>-    ScrollbarPainter scrollbarPainter = [NSClassFromString(@&quot;NSScrollerImp&quot;) scrollerImpWithStyle:recommendedScrollerStyle() controlSize:scrollbarControlSizeToNSControlSize(controlSize) horizontal:NO replacingScrollerImp:nil];
</del><ins>+    ScrollbarPainter scrollbarPainter = [NSScrollerImp scrollerImpWithStyle:recommendedScrollerStyle() controlSize:scrollbarControlSizeToNSControlSize(controlSize) horizontal:NO replacingScrollerImp:nil];
</ins><span class="cx">     if (supportsExpandedScrollbars())
</span><span class="cx">         [scrollbarPainter setExpanded:YES];
</span><span class="cx">     return [scrollbarPainter trackBoxWidth];
</span><span class="lines">@@ -588,7 +589,6 @@
</span><span class="cx">     // of shadows, and we know that WebCore won't touch this layer.
</span><span class="cx">     setUpOverhangAreaShadow(graphicsLayer-&gt;platformLayer());
</span><span class="cx"> }
</span><del>-
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformspimacNSScrollerImpSPIh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/spi/mac/NSScrollerImpSPI.h (0 => 196246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/spi/mac/NSScrollerImpSPI.h                                (rev 0)
+++ trunk/Source/WebCore/platform/spi/mac/NSScrollerImpSPI.h        2016-02-08 03:01:07 UTC (rev 196246)
</span><span class="lines">@@ -0,0 +1,149 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 NSScrollerImpSPI_h
+#define NSScrollerImpSPI_h
+
+#if USE(APPKIT)
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import &lt;AppKit/NSScrollerImpPair_Private.h&gt;
+#import &lt;AppKit/NSScrollerImp_Private.h&gt;
+
+@interface NSScrollerImp ()
+@property(getter=isTracking) BOOL tracking;
+@end
+
+#else
+
+enum {
+    NSOverlayScrollerStateHidden = 0,
+    NSOverlayScrollerStateThumbShown = 1,
+    NSOverlayScrollerStateAllShown = 2,
+    NSOverlayScrollerStatePulseThumb = 3,
+};
+typedef NSUInteger NSOverlayScrollerState;
+
+@protocol NSScrollerImpDelegate;
+
+@interface NSScrollerImp : NSObject
++ (NSScrollerImp *)scrollerImpWithStyle:(NSScrollerStyle)newScrollerStyle controlSize:(NSControlSize)newControlSize horizontal:(BOOL)horizontal replacingScrollerImp:(id)previous;
+@property(retain) CALayer *layer;
+- (void)setNeedsDisplay:(BOOL)flag;
+@property NSScrollerKnobStyle knobStyle;
+@property(getter=isHorizontal) BOOL horizontal;
+@property NSSize boundsSize;
+@property(getter=isEnabled) BOOL enabled;
+@property double doubleValue;
+@property double presentationValue;
+@property(getter=shouldUsePresentationValue) BOOL usePresentationValue;
+@property CGFloat knobProportion;
+@property CGFloat uiStateTransitionProgress;
+@property CGFloat expansionTransitionProgress;
+@property CGFloat trackAlpha;
+@property CGFloat knobAlpha;
+@property(getter=isExpanded) BOOL expanded;
+@property(assign) id&lt;NSScrollerImpDelegate&gt; delegate;
+@property(readonly) CGFloat trackBoxWidth;
+@property(readonly) CGFloat trackWidth;
+@property(readonly) CGFloat trackSideInset;
+@property(readonly) CGFloat trackEndInset;
+@property(readonly) CGFloat knobEndInset;
+@property(readonly) CGFloat knobMinLength;
+@property(readonly) CGFloat knobOverlapEndInset;
+@property(readonly) CGFloat trackOverlapEndInset;
+- (NSRect)rectForPart:(NSScrollerPart)partCode;
+- (void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag alpha:(CGFloat)alpha;
+- (void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag;
+- (void)drawKnob;
+- (void)mouseEnteredScroller;
+- (void)mouseExitedScroller;
+@end
+
+@interface NSScrollerImp ()
+@property(getter=isTracking) BOOL tracking;
+@end
+
+@protocol NSScrollerImpDelegate
+@required
+- (NSRect)convertRectToBacking:(NSRect)aRect;
+- (NSRect)convertRectFromBacking:(NSRect)aRect;
+- (CALayer *)layer;
+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateKnobAlphaTo:(CGFloat)newKnobAlpha duration:(NSTimeInterval)duration;
+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateTrackAlphaTo:(CGFloat)newTrackAlpha duration:(NSTimeInterval)duration;
+- (void)scrollerImp:(NSScrollerImp *)scrollerImp overlayScrollerStateChangedTo:(NSOverlayScrollerState)newOverlayScrollerState;
+@optional
+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateUIStateTransitionWithDuration:(NSTimeInterval)duration;
+- (void)scrollerImp:(NSScrollerImp *)scrollerImp animateExpansionTransitionWithDuration:(NSTimeInterval)duration;
+- (NSPoint)mouseLocationInScrollerForScrollerImp:(NSScrollerImp *)scrollerImp;
+- (NSRect)convertRectToLayer:(NSRect)aRect;
+- (BOOL)shouldUseLayerPerPartForScrollerImp:(NSScrollerImp *)scrollerImp;
+@end
+
+@protocol NSScrollerImpPairDelegate;
+
+@interface NSScrollerImpPair : NSObject
+@property(assign) id&lt;NSScrollerImpPairDelegate&gt; delegate;
+@property(retain) NSScrollerImp *verticalScrollerImp;
+@property(retain) NSScrollerImp *horizontalScrollerImp;
+@property NSScrollerStyle scrollerStyle;
+- (void)flashScrollers;
+- (void)hideOverlayScrollers;
+- (void)lockOverlayScrollerState:(NSOverlayScrollerState)state;
+- (void)unlockOverlayScrollerState;
+- (BOOL)overlayScrollerStateIsLocked;
+- (void)contentAreaScrolled;
+- (void)contentAreaScrolledInDirection:(NSPoint)direction;
+- (void)contentAreaWillDraw;
+- (void)windowOrderedOut;
+- (void)windowOrderedIn;
+- (void)mouseEnteredContentArea;
+- (void)mouseExitedContentArea;
+- (void)mouseMovedInContentArea;
+- (void)startLiveResize;
+- (void)contentAreaDidResize;
+- (void)endLiveResize;
+- (void)beginScrollGesture;
+- (void)endScrollGesture;
+@end
+
+@protocol NSScrollerImpPairDelegate
+@required
+- (NSRect)contentAreaRectForScrollerImpPair:(NSScrollerImpPair *)scrollerImpPair;
+- (BOOL)inLiveResizeForScrollerImpPair:(NSScrollerImpPair *)scrollerImpPair;
+- (NSPoint)mouseLocationInContentAreaForScrollerImpPair:(NSScrollerImpPair *)scrollerImpPair;
+- (NSPoint)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair convertContentPoint:(NSPoint)pointInContentArea toScrollerImp:(NSScrollerImp *)scrollerImp;
+- (void)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair setContentAreaNeedsDisplayInRect:(NSRect)rect;
+- (void)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair updateScrollerStyleForNewRecommendedScrollerStyle:(NSScrollerStyle)newRecommendedScrollerStyle;
+@optional
+- (BOOL)scrollerImpPair:(NSScrollerImpPair *)scrollerImpPair isContentPointVisible:(NSPoint)pointInContentArea;
+@end
+
+#endif
+
+#endif // USE(APPKIT)
+
+#endif // NSScrollerImpSPI_h
</ins></span></pre>
</div>
</div>

</body>
</html>