Color match plug-ins
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Jul 2015 01:00:22 +0000 (01:00 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Jul 2015 01:00:22 +0000 (01:00 +0000)
<rdar://problem/21758722>
https://bugs.webkit.org/show_bug.cgi?id=146987

Reviewed by Dean Jackson.

Source/WebCore:

* platform/spi/cocoa/QuartzCoreSPI.h:
Add colorMatchUntaggedContent property.

Source/WebKit2:

* Platform/mac/LayerHostingContext.h:
* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::setColorMatchUntaggedContent):
(WebKit::LayerHostingContext::colorMatchUntaggedContent):
Add setter/getter for color matching untagged content.

* PluginProcess/mac/PluginControllerProxyMac.mm:
(WebKit::PluginControllerProxy::updateLayerHostingContext):
Have plug-ins CAContext's color match untagged colors into sRGB.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@186878 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/spi/cocoa/QuartzCoreSPI.h
Source/WebKit2/ChangeLog
Source/WebKit2/Platform/mac/LayerHostingContext.h
Source/WebKit2/Platform/mac/LayerHostingContext.mm
Source/WebKit2/PluginProcess/mac/PluginControllerProxyMac.mm

index 3c028e4..ad30448 100644 (file)
@@ -1,3 +1,14 @@
+2015-07-15  Sam Weinig  <sam@webkit.org>
+
+        Color match plug-ins
+        <rdar://problem/21758722>
+        https://bugs.webkit.org/show_bug.cgi?id=146987
+
+        Reviewed by Dean Jackson.
+
+        * platform/spi/cocoa/QuartzCoreSPI.h:
+        Add colorMatchUntaggedContent property.
+
 2015-07-15  Brent Fulgham  <bfulgham@apple.com>
 
         [Win] Another build fix after r186858.
index 683799b..1a2bbc1 100644 (file)
@@ -70,6 +70,9 @@ extern "C" {
 - (void)setFencePort:(mach_port_t)port;
 - (void)setFencePort:(mach_port_t)port commitHandler:(void(^)(void))block;
 #endif
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+@property BOOL colorMatchUntaggedContent;
+#endif
 @property (readonly) uint32_t contextId;
 @property (strong) CALayer *layer;
 @property CGColorSpaceRef colorSpace;
index 79409e9..f340dd0 100644 (file)
@@ -1,3 +1,21 @@
+2015-07-15  Sam Weinig  <sam@webkit.org>
+
+        Color match plug-ins
+        <rdar://problem/21758722>
+        https://bugs.webkit.org/show_bug.cgi?id=146987
+
+        Reviewed by Dean Jackson.
+
+        * Platform/mac/LayerHostingContext.h:
+        * Platform/mac/LayerHostingContext.mm:
+        (WebKit::LayerHostingContext::setColorMatchUntaggedContent):
+        (WebKit::LayerHostingContext::colorMatchUntaggedContent):
+        Add setter/getter for color matching untagged content.
+
+        * PluginProcess/mac/PluginControllerProxyMac.mm:
+        (WebKit::PluginControllerProxy::updateLayerHostingContext):
+        Have plug-ins CAContext's color match untagged colors into sRGB.
+
 2015-07-15  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         [GTK] Rename PACKAGE_LOCALE_DIR to LOCALEDIR
index 151dc58..6f1cb1a 100644 (file)
@@ -62,6 +62,11 @@ public:
     void setColorSpace(CGColorSpaceRef);
     CGColorSpaceRef colorSpace() const;
 
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    void setColorMatchUntaggedContent(bool);
+    bool colorMatchUntaggedContent() const;
+#endif
+
     // Fences only work on iOS and OS 10.10+.
     void setFencePort(mach_port_t);
 
index b6dcf64..54fcb90 100644 (file)
@@ -102,6 +102,21 @@ CGColorSpaceRef LayerHostingContext::colorSpace() const
     return [m_context colorSpace];
 }
 
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+void LayerHostingContext::setColorMatchUntaggedContent(bool colorMatchUntaggedContent)
+{
+    if ([m_context respondsToSelector:@selector(setColorMatchUntaggedContent:)])
+        [m_context setColorMatchUntaggedContent:colorMatchUntaggedContent];
+}
+
+bool LayerHostingContext::colorMatchUntaggedContent() const
+{
+    if ([m_context respondsToSelector:@selector(colorMatchUntaggedContent)])
+        return [m_context colorMatchUntaggedContent];
+    return false;
+}
+#endif
+
 #if HAVE(COREANIMATION_FENCES)
 void LayerHostingContext::setFencePort(mach_port_t fencePort)
 {
index b015929..170acfc 100644 (file)
@@ -35,6 +35,7 @@
 #import "PluginProxyMessages.h"
 #import "WebProcessConnection.h"
 #import <QuartzCore/QuartzCore.h>
+#import <WebCore/GraphicsContextCG.h>
 
 using namespace WebCore;
 
@@ -139,6 +140,11 @@ void PluginControllerProxy::updateLayerHostingContext(LayerHostingMode layerHost
 #endif
     }
 
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
+    m_layerHostingContext->setColorSpace(sRGBColorSpaceRef());
+    m_layerHostingContext->setColorMatchUntaggedContent(true);
+#endif
+
     m_layerHostingContext->setRootLayer(platformLayer);
 }