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

Unified Diff: third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp

Issue 2104103003: Fix zoom in CSS paint worklets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments Created 4 years, 6 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/modules/csspaint/CSSPaintDefinition.cpp
diff --git a/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp b/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
index 7da77ddd4e7984fc8c4db12c8f2b3bfb11788796..bb5c2be4a8ffbb707c0531623c0ae8d9bb6bc2dd 100644
--- a/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
+++ b/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
@@ -21,6 +21,17 @@
namespace blink {
+namespace {
+
+IntSize adjustToCssSize(const IntSize& size, float zoom)
Justin Novosad 2016/07/04 15:45:59 This name is confusing IMHO. My understanding is t
Gleb Lanbin 2016/07/06 20:36:18 done, renamed to getSpecifiedSize, according to Ob
+{
+ IntSize newSize(size);
+ newSize.scale(1 / zoom);
Justin Novosad 2016/07/04 15:45:59 Due to floating-point precision issues, this arith
Gleb Lanbin 2016/07/06 20:36:18 Done.
+ return newSize;
+}
+
+} // namespace
+
CSSPaintDefinition* CSSPaintDefinition::create(ScriptState* scriptState, v8::Local<v8::Function> constructor, v8::Local<v8::Function> paint, Vector<CSSPropertyID>& nativeInvalidationProperties, Vector<AtomicString>& customInvalidationProperties)
{
return new CSSPaintDefinition(scriptState, constructor, paint, nativeInvalidationProperties, customInvalidationProperties);
@@ -39,7 +50,7 @@ CSSPaintDefinition::~CSSPaintDefinition()
{
}
-PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, const IntSize& size)
+PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, const IntSize& size, float zoom)
{
ScriptState::Scope scope(m_scriptState.get());
@@ -55,9 +66,10 @@ PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, co
DCHECK(layoutObject.node());
+ const auto cssSize = adjustToCssSize(size, zoom);
Justin Novosad 2016/07/04 15:45:58 abuse of "auto".
Gleb Lanbin 2016/07/06 20:36:18 Done.
PaintRenderingContext2D* renderingContext = PaintRenderingContext2D::create(
ImageBuffer::create(wrapUnique(new RecordingImageBufferSurface(size))));
- PaintSize* paintSize = PaintSize::create(size);
+ PaintSize* paintSize = PaintSize::create(cssSize);
StylePropertyMap* styleMap = FilteredComputedStylePropertyMap::create(
CSSComputedStyleDeclaration::create(layoutObject.node()),
m_nativeInvalidationProperties, m_customInvalidationProperties);
@@ -81,7 +93,7 @@ PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, co
return nullptr;
}
- return PaintGeneratedImage::create(renderingContext->imageBuffer()->getPicture(), size);
+ return PaintGeneratedImage::create(renderingContext->imageBuffer()->getPicture(), cssSize);
}
void CSSPaintDefinition::maybeCreatePaintInstance()

Powered by Google App Engine
This is Rietveld 408576698