| Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| index 7c798e24b2f8ed91695544f366d613df323f2ae2..92242fbdceb41bc1a9c50017dbde76a32ca7c5d0 100644
|
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| @@ -60,12 +60,15 @@
|
| #include "platform/fonts/FontCache.h"
|
| #include "platform/geometry/TransformState.h"
|
| #include "platform/graphics/BitmapImage.h"
|
| +#include "platform/graphics/ColorSpaceFilter.h"
|
| #include "platform/graphics/GraphicsContext.h"
|
| +#include "platform/graphics/GraphicsScreen.h"
|
| #include "platform/graphics/paint/ClipDisplayItem.h"
|
| #include "platform/graphics/paint/CullRect.h"
|
| #include "platform/graphics/paint/PaintController.h"
|
| #include "platform/graphics/paint/TransformDisplayItem.h"
|
| #include "public/platform/WebCompositorMutableProperties.h"
|
| +#include "third_party/skia/include/core/SkColorFilter.h"
|
| #include "wtf/CurrentTime.h"
|
| #include "wtf/text/StringBuilder.h"
|
|
|
| @@ -406,6 +409,8 @@ bool CompositedLayerMapping::updateGraphicsLayerConfiguration()
|
| PaintLayerCompositor* compositor = this->compositor();
|
| LayoutObject* layoutObject = this->layoutObject();
|
|
|
| + WillPaintForDevice device(Page::screenId(layoutObject->frame()->page()));
|
| +
|
| bool layerConfigChanged = false;
|
| setBackgroundLayerPaintsFixedRootBackground(compositor->needsFixedRootBackgroundLayer(&m_owningLayer));
|
|
|
| @@ -531,8 +536,16 @@ bool CompositedLayerMapping::updateGraphicsLayerConfiguration()
|
| }
|
| }
|
|
|
| + RefPtr<SkColorFilter> transform;
|
| +
|
| if (WebLayer* layer = platformLayerForPlugin(layoutObject)) {
|
| m_graphicsLayer->setContentsToPlatformLayer(layer);
|
| + if (imageColorProfilesEnabled()) {
|
| + transform = createColorSpaceFilter(screenColorProfile(ScreenDevice::sRGB).get(), screenColorProfile(currentScreenId()).get());
|
| + m_graphicsLayer->setContentsLayerColorTransform(colorSpaceFlattenableFilter(transform.get()));
|
| + fprintf(stderr, "drawing plugin layer\n");
|
| + fflush(stderr);
|
| + }
|
| } else if (layoutObject->node() && layoutObject->node()->isFrameOwnerElement() && toHTMLFrameOwnerElement(layoutObject->node())->contentFrame()) {
|
| Frame* frame = toHTMLFrameOwnerElement(layoutObject->node())->contentFrame();
|
| if (frame->isRemoteFrame()) {
|
| @@ -542,10 +555,24 @@ bool CompositedLayerMapping::updateGraphicsLayerConfiguration()
|
| } else if (layoutObject->isVideo()) {
|
| HTMLMediaElement* mediaElement = toHTMLMediaElement(layoutObject->node());
|
| m_graphicsLayer->setContentsToPlatformLayer(mediaElement->platformLayer());
|
| + // FIXME: correctly handle the video element source color space rather than assuming sRGB as is done here.
|
| + if (imageColorProfilesEnabled()) {
|
| + transform = createColorSpaceFilter(screenColorProfile(ScreenDevice::sRGB).get(), screenColorProfile(currentScreenId()).get());
|
| + m_graphicsLayer->setContentsLayerColorTransform(colorSpaceFlattenableFilter(transform.get()));
|
| + fprintf(stderr, "drawing video layer\n");
|
| + fflush(stderr);
|
| + }
|
| } else if (isAcceleratedCanvas(layoutObject)) {
|
| HTMLCanvasElement* canvas = toHTMLCanvasElement(layoutObject->node());
|
| - if (CanvasRenderingContext* context = canvas->renderingContext())
|
| + if (CanvasRenderingContext* context = canvas->renderingContext()) {
|
| m_graphicsLayer->setContentsToPlatformLayer(context->platformLayer());
|
| + if (imageColorProfilesEnabled()) {
|
| + transform = createColorSpaceFilter(screenColorProfile(ScreenDevice::sRGB).get(), screenColorProfile(currentScreenId()).get());
|
| + m_graphicsLayer->setContentsLayerColorTransform(colorSpaceFlattenableFilter(transform.get()));
|
| + fprintf(stderr, "drawing canvas layer\n");
|
| + fflush(stderr);
|
| + }
|
| + }
|
| layerConfigChanged = true;
|
| }
|
| if (layoutObject->isLayoutPart()) {
|
| @@ -1955,6 +1982,8 @@ void CompositedLayerMapping::updateImageContents()
|
| if (!image)
|
| return;
|
|
|
| + WillPaintForDevice device(Page::screenId(layoutObject()->frame()->page()));
|
| +
|
| // This is a no-op if the layer doesn't have an inner layer for the image.
|
| m_graphicsLayer->setContentsToImage(image, LayoutObject::shouldRespectImageOrientation(imageLayoutObject));
|
|
|
| @@ -2342,6 +2371,9 @@ void CompositedLayerMapping::paintContents(const GraphicsLayer* graphicsLayer, G
|
| {
|
| // https://code.google.com/p/chromium/issues/detail?id=343772
|
| DisableCompositingQueryAsserts disabler;
|
| +
|
| + WillPaintForDevice device(Page::screenId(layoutObject()->frame()->page()));
|
| +
|
| #if ENABLE(ASSERT)
|
| // FIXME: once the state machine is ready, this can be removed and we can refer to that instead.
|
| if (Page* page = layoutObject()->frame()->page())
|
| @@ -2397,7 +2429,9 @@ void CompositedLayerMapping::paintContents(const GraphicsLayer* graphicsLayer, G
|
| ScrollableAreaPainter(*m_owningLayer.scrollableArea()).paintScrollCorner(context, -scrollCornerAndResizerLocation, cullRect);
|
| ScrollableAreaPainter(*m_owningLayer.scrollableArea()).paintResizer(context, -scrollCornerAndResizerLocation, cullRect);
|
| }
|
| +
|
| InspectorInstrumentation::didPaint(m_owningLayer.layoutObject(), graphicsLayer, context, LayoutRect(interestRect));
|
| +
|
| #if ENABLE(ASSERT)
|
| if (Page* page = layoutObject()->frame()->page())
|
| page->setIsPainting(false);
|
|
|