Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Unified Diff: third_party/WebKit/Source/core/page/Page.cpp

Issue 1331533002: [poc] curve-filter Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix CanvasRenderingContext2D::createPattern crash for #40 Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/page/Page.cpp
diff --git a/third_party/WebKit/Source/core/page/Page.cpp b/third_party/WebKit/Source/core/page/Page.cpp
index c587b9c432764e6330589cf8235ef912fcdad5e3..c903370b311f0f293d41c38bc0b1a0efe4a3fba0 100644
--- a/third_party/WebKit/Source/core/page/Page.cpp
+++ b/third_party/WebKit/Source/core/page/Page.cpp
@@ -39,6 +39,7 @@
#include "core/inspector/InspectorInstrumentation.h"
#include "core/layout/LayoutView.h"
#include "core/layout/TextAutosizer.h"
+#include "core/layout/svg/SVGResourcesCache.h"
#include "core/page/AutoscrollController.h"
#include "core/page/ChromeClient.h"
#include "core/page/ContextMenuController.h"
@@ -48,7 +49,9 @@
#include "core/page/ValidationMessageClient.h"
#include "core/page/scrolling/ScrollingCoordinator.h"
#include "core/paint/PaintLayer.h"
+#include "platform/graphics/ColorSpaceProfile.h"
#include "platform/graphics/GraphicsLayer.h"
+#include "platform/graphics/GraphicsScreen.h"
#include "platform/plugins/PluginData.h"
#include "platform/text/CompressibleString.h"
#include "public/platform/Platform.h"
@@ -335,11 +338,53 @@ void Page::setDeviceScaleFactor(float scaleFactor)
void Page::setDeviceColorProfile(const Vector<char>& profile)
{
- // FIXME: implement.
+ if (!imageColorProfilesEnabled())
+ return;
+
+ fprintf(stderr, "\nWebCore::Page %ld setDeviceColorProfile begins\n", (long int)this);
+ fflush(stderr);
+
+ RefPtr<ColorSpaceProfile> screen = screenColorProfile(Page::screenId(this));
+ setScreenColorProfile(Page::screenId(this), profile.data(), profile.size());
+
+ setCurrentScreenId(Page::screenId(this));
+
+ for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (!frame->isLocalFrame())
+ continue;
+
+ toLocalFrame(frame)->view()->invalidatePaintForTickmarks();
+
+ if (LayoutView* layoutView = toLocalFrame(frame)->document()->layoutView())
+ layoutView->invalidatePaintForViewAndCompositedLayers(true);
+
+ // Clear the SVG image pattern cache: see crbug.com/531258
+ SVGResourcesCache::invalidateAllResources(*toLocalFrame(frame)->document());
+
+ RELEASE_ASSERT(currentScreenId() == Page::screenId(this));
+ }
+
+ if (mainFrame() && mainFrame()->isLocalFrame())
+ animator().scheduleVisualUpdate(toLocalFrame(mainFrame()));
+
+ fprintf(stderr, "WebCore::Page %ld setDeviceColorProfile ends\n\n", (long int)this);
+ fflush(stderr);
+
+ setCurrentScreenId(0);
+
+ if (screen)
+ pruneColorTransform(screen.get());
}
void Page::resetDeviceColorProfileForTesting()
{
+ if (imageColorProfilesEnabled()) {
+ fprintf(stderr, "\nWebCore::Page %ld resetDeviceColorProfileForTesting\n", (long int)this);
+ fflush(stderr);
+ }
+
+ removeScreenColorProfile(Page::screenId(this));
+
RuntimeEnabledFeatures::setImageColorProfilesEnabled(false);
}
@@ -593,6 +638,8 @@ void Page::willBeDestroyed()
chromeClient().chromeDestroyed();
if (m_validationMessageClient)
m_validationMessageClient->willBeDestroyed();
+
+ removeScreenColorProfile(Page::screenId(this));
m_mainFrame = nullptr;
PageLifecycleNotifier::notifyContextDestroyed();
« no previous file with comments | « third_party/WebKit/Source/core/page/Page.h ('k') | third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698