Add an override point for drawing named images in ThemeCocoa
https://bugs.webkit.org/show_bug.cgi?id=157357
rdar://problem/25878445

Reviewed by Dean Jackson.

Rename ThemeCocoa.cpp to ThemeCocoa.mm and rearrange the code that draws the wireless-playback image
so we can import ThemeCocoaDrawNamedImage.mm below.

* WebCore.xcodeproj/project.pbxproj:
* platform/cocoa/ThemeCocoa.cpp:
(WebCore::fitContextToBox): Deleted.
(WebCore::ThemeCocoa::drawNamedImage): Deleted.
* platform/cocoa/ThemeCocoa.mm: Renamed from Source/WebCore/platform/cocoa/ThemeCocoa.cpp.
(WebCore::fitContextToBox):
(WebCore::ThemeCocoa::drawNamedImage):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@200433 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index bec4cb1..639ff6a 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2016-05-04  Anders Carlsson  <andersca@apple.com>
+
+        Add an override point for drawing named images in ThemeCocoa
+        https://bugs.webkit.org/show_bug.cgi?id=157357
+        rdar://problem/25878445
+
+        Reviewed by Dean Jackson.
+
+        Rename ThemeCocoa.cpp to ThemeCocoa.mm and rearrange the code that draws the wireless-playback image
+        so we can import ThemeCocoaDrawNamedImage.mm below.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/cocoa/ThemeCocoa.cpp:
+        (WebCore::fitContextToBox): Deleted.
+        (WebCore::ThemeCocoa::drawNamedImage): Deleted.
+        * platform/cocoa/ThemeCocoa.mm: Renamed from Source/WebCore/platform/cocoa/ThemeCocoa.cpp.
+        (WebCore::fitContextToBox):
+        (WebCore::ThemeCocoa::drawNamedImage):
+
 2016-05-04  Jeremy Jones  <jeremyj@apple.com>
 
         Don't disconnect WebAVPlayerController from its delegate since there is no way to reconnect it.
diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
index f1b9e62..06bbd73 100644
--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -1295,7 +1295,7 @@
 		31078CC81880AABB008099DC /* OESTextureHalfFloatLinear.h in Headers */ = {isa = PBXBuildFile; fileRef = 31078CC31880A6A6008099DC /* OESTextureHalfFloatLinear.h */; };
 		31078CC91880AAC9008099DC /* JSOESTextureHalfFloatLinear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31078CC51880AAAA008099DC /* JSOESTextureHalfFloatLinear.cpp */; };
 		31078CCA1880AACE008099DC /* JSOESTextureHalfFloatLinear.h in Headers */ = {isa = PBXBuildFile; fileRef = 31078CC61880AAAA008099DC /* JSOESTextureHalfFloatLinear.h */; };
-		310D71951B335C9D009C7B73 /* ThemeCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 310D71931B335C9D009C7B73 /* ThemeCocoa.cpp */; };
+		310D71951B335C9D009C7B73 /* ThemeCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 310D71931B335C9D009C7B73 /* ThemeCocoa.mm */; };
 		310D71961B335C9E009C7B73 /* ThemeCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 310D71941B335C9D009C7B73 /* ThemeCocoa.h */; };
 		311C08BD18EB7CAF00B65615 /* mediaControlsApple.css in Resources */ = {isa = PBXBuildFile; fileRef = CDC1DD4117CC2C48008CB55D /* mediaControlsApple.css */; };
 		311C08BE18EB7CAF00B65615 /* mediaControlsApple.js in Resources */ = {isa = PBXBuildFile; fileRef = CDE6560E17CA6E7600526BA7 /* mediaControlsApple.js */; };
@@ -8790,7 +8790,7 @@
 		31078CC41880A6A6008099DC /* OESTextureHalfFloatLinear.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OESTextureHalfFloatLinear.idl; sourceTree = "<group>"; };
 		31078CC51880AAAA008099DC /* JSOESTextureHalfFloatLinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOESTextureHalfFloatLinear.cpp; sourceTree = "<group>"; };
 		31078CC61880AAAA008099DC /* JSOESTextureHalfFloatLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOESTextureHalfFloatLinear.h; sourceTree = "<group>"; };
-		310D71931B335C9D009C7B73 /* ThemeCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThemeCocoa.cpp; sourceTree = "<group>"; };
+		310D71931B335C9D009C7B73 /* ThemeCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ThemeCocoa.mm; sourceTree = "<group>"; };
 		310D71941B335C9D009C7B73 /* ThemeCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThemeCocoa.h; sourceTree = "<group>"; };
 		311C08BC18E35D6800B65615 /* ControlStates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ControlStates.h; sourceTree = "<group>"; };
 		31288E6E0E3005D6003619AE /* CSSKeyframeRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSKeyframeRule.cpp; sourceTree = "<group>"; };
@@ -20064,8 +20064,8 @@
 				5D5975B119635F1100D00878 /* SystemVersion.h */,
 				5D5975B219635F1100D00878 /* SystemVersion.mm */,
 				7CC564B918BAC720001B9652 /* TelephoneNumberDetectorCocoa.cpp */,
-				310D71931B335C9D009C7B73 /* ThemeCocoa.cpp */,
 				310D71941B335C9D009C7B73 /* ThemeCocoa.h */,
+				310D71931B335C9D009C7B73 /* ThemeCocoa.mm */,
 				46DB7D561B20FE3C005651B2 /* VNodeTrackerCocoa.cpp */,
 				CDC979F31C498C0900DB50D4 /* WebCoreNSErrorExtras.h */,
 				CDC979F21C498C0900DB50D4 /* WebCoreNSErrorExtras.mm */,
@@ -31893,7 +31893,7 @@
 				498770F01242C535002226BA /* Texture.cpp in Sources */,
 				CD9D82751C7AE535006FF066 /* TextureCacheCV.mm in Sources */,
 				BCE65D320EAD1211007E4533 /* Theme.cpp in Sources */,
-				310D71951B335C9D009C7B73 /* ThemeCocoa.cpp in Sources */,
+				310D71951B335C9D009C7B73 /* ThemeCocoa.mm in Sources */,
 				44C991A00F3D210E00586670 /* ThemeIOS.mm in Sources */,
 				BCE659E90EA92FFA007E4533 /* ThemeMac.mm in Sources */,
 				976D6C94122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp in Sources */,
diff --git a/Source/WebCore/platform/cocoa/ThemeCocoa.cpp b/Source/WebCore/platform/cocoa/ThemeCocoa.mm
similarity index 62%
rename from Source/WebCore/platform/cocoa/ThemeCocoa.cpp
rename to Source/WebCore/platform/cocoa/ThemeCocoa.mm
index 314eed5..03ff28a 100644
--- a/Source/WebCore/platform/cocoa/ThemeCocoa.cpp
+++ b/Source/WebCore/platform/cocoa/ThemeCocoa.mm
@@ -52,39 +52,43 @@
 void ThemeCocoa::drawNamedImage(const String& name, GraphicsContext& context, const FloatRect& rect) const
 {
     // We only handle one icon at the moment.
-    if (name != "wireless-playback") {
-        Theme::drawNamedImage(name, context, rect);
+    if (name == "wireless-playback") {
+        GraphicsContextStateSaver stateSaver(context);
+        context.setFillColor(Color::black);
+
+        FloatSize wirelessPlaybackSrcSize(32, 24.016);
+        fitContextToBox(context, wirelessPlaybackSrcSize, rect.size());
+
+        Path outline;
+        outline.moveTo(FloatPoint(24.066, 18));
+        outline.addLineTo(FloatPoint(22.111, 16));
+        outline.addLineTo(FloatPoint(30, 16));
+        outline.addLineTo(FloatPoint(30, 2));
+        outline.addLineTo(FloatPoint(2, 2));
+        outline.addLineTo(FloatPoint(2, 16));
+        outline.addLineTo(FloatPoint(9.908, 16));
+        outline.addLineTo(FloatPoint(7.953, 18));
+        outline.addLineTo(FloatPoint(0, 18));
+        outline.addLineTo(FloatPoint(0, 0));
+        outline.addLineTo(FloatPoint(32, 0));
+        outline.addLineTo(FloatPoint(32, 18));
+        outline.addLineTo(FloatPoint(24.066, 18));
+        outline.closeSubpath();
+        outline.moveTo(FloatPoint(26.917, 24.016));
+        outline.addLineTo(FloatPoint(5.040, 24.016));
+        outline.addLineTo(FloatPoint(15.978, 12.828));
+        outline.addLineTo(FloatPoint(26.917, 24.016));
+        outline.closeSubpath();
+
+        context.fillPath(outline);
         return;
     }
 
-    GraphicsContextStateSaver stateSaver(context);
-    context.setFillColor(Color::black);
+#if USE(APPLE_INTERNAL_SDK)
+#include <WebKitAdditions/ThemeCocoaDrawNamedImage.mm>
+#endif
 
-    FloatSize wirelessPlaybackSrcSize(32, 24.016);
-    fitContextToBox(context, wirelessPlaybackSrcSize, rect.size());
-
-    Path outline;
-    outline.moveTo(FloatPoint(24.066, 18));
-    outline.addLineTo(FloatPoint(22.111, 16));
-    outline.addLineTo(FloatPoint(30, 16));
-    outline.addLineTo(FloatPoint(30, 2));
-    outline.addLineTo(FloatPoint(2, 2));
-    outline.addLineTo(FloatPoint(2, 16));
-    outline.addLineTo(FloatPoint(9.908, 16));
-    outline.addLineTo(FloatPoint(7.953, 18));
-    outline.addLineTo(FloatPoint(0, 18));
-    outline.addLineTo(FloatPoint(0, 0));
-    outline.addLineTo(FloatPoint(32, 0));
-    outline.addLineTo(FloatPoint(32, 18));
-    outline.addLineTo(FloatPoint(24.066, 18));
-    outline.closeSubpath();
-    outline.moveTo(FloatPoint(26.917, 24.016));
-    outline.addLineTo(FloatPoint(5.040, 24.016));
-    outline.addLineTo(FloatPoint(15.978, 12.828));
-    outline.addLineTo(FloatPoint(26.917, 24.016));
-    outline.closeSubpath();
-    
-    context.fillPath(outline);
+    Theme::drawNamedImage(name, context, rect);
 }
 
 }