New issue
Advanced search Search tips

Issue 737629 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Feature


Sign in to add a comment

Implement paint op serialization for missing skia types

Project Member Reported by enne@chromium.org, Jun 28 2017

Issue description

The initial version of paint op serialization (https://chromium-review.googlesource.com/c/528359/) is unable to serialize a number of Skia types, including all of the SkPaint internals and SkTextBlob without exposing internal Skia SkReadBuffer implementations.

This bug is a catchall for implementing serialization for these types, either by adding Skia functionality or replacing the types at paint time with serializable ones.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/27ae819a2925efcf2618ebe394f682d289d8895f

commit 27ae819a2925efcf2618ebe394f682d289d8895f
Author: Adrienne Walker <enne@chromium.org>
Date: Wed Jul 05 19:45:32 2017

cc: PaintOp serialization

Adds basic support for serializing and deserializing paint ops.

This punts on a number of types related to Skia, including
SkTypeface, SkTextBlob, PaintFlags/SkPaint internals, and
SkImage/PaintImage.  These will be supported in follow up patches
either by adding Skia support directly (like SkPath has) or by
replacing recording data structures (like PaintShader).

An original version of this patch optionally would sometimes cast
the input buffer and return that, but for simplicity, this always
writes a copy of the op into the output buffer.  This eliminates
a class of TOCTOU issues and we can rethink it later as needed
for performance.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I5bf968fd160723064fb6dcbe87c620e4b3cb0104
Reviewed-on: https://chromium-review.googlesource.com/528359
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484332}
[modify] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/BUILD.gn
[modify] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_flags.h
[modify] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_buffer.h
[modify] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_buffer_unittest.cc
[add] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_reader.cc
[add] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_reader.h
[add] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_writer.cc
[add] https://crrev.com/27ae819a2925efcf2618ebe394f682d289d8895f/cc/paint/paint_op_writer.h

Project Member

Comment 2 by bugdroid1@chromium.org, Jul 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/18b1c7bb5c8ace4f38b7766727721e3f684bb0a5

commit 18b1c7bb5c8ace4f38b7766727721e3f684bb0a5
Author: Alexander Potapenko <glider@chromium.org>
Date: Thu Jul 06 10:24:16 2017

Revert "cc: PaintOp serialization"

This reverts commit 27ae819a2925efcf2618ebe394f682d289d8895f.

Reason for revert: broke MSan bots, see  https://crbug.com/739669 

Original change's description:
> cc: PaintOp serialization
> 
> Adds basic support for serializing and deserializing paint ops.
> 
> This punts on a number of types related to Skia, including
> SkTypeface, SkTextBlob, PaintFlags/SkPaint internals, and
> SkImage/PaintImage.  These will be supported in follow up patches
> either by adding Skia support directly (like SkPath has) or by
> replacing recording data structures (like PaintShader).
> 
> An original version of this patch optionally would sometimes cast
> the input buffer and return that, but for simplicity, this always
> writes a copy of the op into the output buffer.  This eliminates
> a class of TOCTOU issues and we can rethink it later as needed
> for performance.
> 
> Bug:  737629 
> Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
> Change-Id: I5bf968fd160723064fb6dcbe87c620e4b3cb0104
> Reviewed-on: https://chromium-review.googlesource.com/528359
> Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
> Commit-Queue: enne <enne@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#484332}

TBR=vmpstr@chromium.org,enne@chromium.org

Change-Id: I871610da5f219f9292b5af9edf606a56d0ea2dff
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Reviewed-on: https://chromium-review.googlesource.com/561316
Reviewed-by: Alexander Potapenko <glider@chromium.org>
Commit-Queue: Alexander Potapenko <glider@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484529}
[modify] https://crrev.com/18b1c7bb5c8ace4f38b7766727721e3f684bb0a5/cc/paint/BUILD.gn
[modify] https://crrev.com/18b1c7bb5c8ace4f38b7766727721e3f684bb0a5/cc/paint/paint_flags.h
[modify] https://crrev.com/18b1c7bb5c8ace4f38b7766727721e3f684bb0a5/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/18b1c7bb5c8ace4f38b7766727721e3f684bb0a5/cc/paint/paint_op_buffer.h
[modify] https://crrev.com/18b1c7bb5c8ace4f38b7766727721e3f684bb0a5/cc/paint/paint_op_buffer_unittest.cc
[delete] https://crrev.com/f6f03d22a4e685b45849c3b0990865c06a4846b1/cc/paint/paint_op_reader.cc
[delete] https://crrev.com/f6f03d22a4e685b45849c3b0990865c06a4846b1/cc/paint/paint_op_reader.h
[delete] https://crrev.com/f6f03d22a4e685b45849c3b0990865c06a4846b1/cc/paint/paint_op_writer.cc
[delete] https://crrev.com/f6f03d22a4e685b45849c3b0990865c06a4846b1/cc/paint/paint_op_writer.h

Project Member

Comment 3 by bugdroid1@chromium.org, Jul 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e

commit 5b040f683487f9eb386d8b5a8b71ee4ad1266c5e
Author: Adrienne Walker <enne@chromium.org>
Date: Fri Jul 07 17:07:09 2017

cc: PaintOp serialization

Adds basic support for serializing and deserializing paint ops.

This punts on a number of types related to Skia, including
SkTypeface, SkTextBlob, PaintFlags/SkPaint internals, and
SkImage/PaintImage.  These will be supported in follow up patches
either by adding Skia support directly (like SkPath has) or by
replacing recording data structures (like PaintShader).

An original version of this patch optionally would sometimes cast
the input buffer and return that, but for simplicity, this always
writes a copy of the op into the output buffer.  This eliminates
a class of TOCTOU issues and we can rethink it later as needed
for performance.

Reland of: https://chromium-review.googlesource.com/c/528359/

Bug:  737629 , 739669 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: If45b40928b4eb7b6c411a69fc7178a570e5e87e1
Reviewed-on: https://chromium-review.googlesource.com/561921
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484962}
[modify] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/BUILD.gn
[modify] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_flags.h
[modify] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_buffer.h
[modify] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_buffer_unittest.cc
[add] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_reader.cc
[add] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_reader.h
[add] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_writer.cc
[add] https://crrev.com/5b040f683487f9eb386d8b5a8b71ee4ad1266c5e/cc/paint/paint_op_writer.h

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf

commit 8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf
Author: Adrienne Walker <enne@chromium.org>
Date: Fri Jul 07 23:16:46 2017

Store PaintShader in an sk_sp not unique_ptr

This is pre-refactoring for a future patch where PaintFlags stores
PaintShader directly.  As PaintFlags is often copy constructed, it
doesn't make a ton of sense to have a unique_ptr PaintShader.
This makes it an sk_sp ref counted time for similiarities to all
of the other paint type refcounting.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I0b4ea8285f375180f8abceb86c984d42491ff41a
Reviewed-on: https://chromium-review.googlesource.com/560669
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485090}
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/cc/paint/paint_flags.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/cc/paint/paint_shader.cc
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/cc/paint/paint_shader.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/Gradient.cpp
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/Gradient.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/Image.cpp
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/ImagePattern.cpp
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/ImagePattern.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/PaintRecordPattern.cpp
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/PaintRecordPattern.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/Pattern.cpp
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/third_party/WebKit/Source/platform/graphics/Pattern.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/ui/gfx/render_text.cc
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/ui/gfx/render_text.h
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/ui/gfx/skia_paint_util.cc
[modify] https://crrev.com/8d85c9d73b81179c68dd4977e1cad46eeb8bf1cf/ui/gfx/skia_paint_util.h

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6d414319537a62ea7093b094597b9f3879605e53

commit 6d414319537a62ea7093b094597b9f3879605e53
Author: Adrienne Walker <enne@chromium.org>
Date: Wed Jul 19 23:49:47 2017

Make PaintFlags a separate object from SkPaint

In order to add serialization for PaintFlags internals, store the
SkPaint internals directly in PaintFlags instead of storing in
an SkPaint itself.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I865752e0adc709595e0d3ed079d3158f5fb17084
Reviewed-on: https://chromium-review.googlesource.com/575511
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Michael Wasserman <msw@chromium.org>
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488046}
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/discardable_image_map.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/paint_flags.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/paint_flags.h
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/paint_shader.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/paint_shader.h
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/record_paint_canvas.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/cc/paint/skia_paint_canvas.cc
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/platform/fonts/Font.cpp
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/platform/graphics/Gradient.cpp
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/platform/graphics/GraphicsContextState.h
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/platform/graphics/filters/PaintFilterEffect.cpp
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/third_party/WebKit/Source/platform/graphics/paint/PaintFlags.h
[modify] https://crrev.com/6d414319537a62ea7093b094597b9f3879605e53/ui/gfx/harfbuzz_font_skia.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0052be3945daf7937dc78f3abbae695049331741

commit 0052be3945daf7937dc78f3abbae695049331741
Author: Scott Little <sclittle@chromium.org>
Date: Thu Jul 20 00:34:41 2017

Revert "Make PaintFlags a separate object from SkPaint"

This reverts commit 6d414319537a62ea7093b094597b9f3879605e53.

Reason for revert: Broke compile for ChromeOS, e.g. https://build.chromium.org/p/chromium.chromiumos/builders/Linux%20ChromiumOS%20Builder%20%28dbg%29

Original change's description:
> Make PaintFlags a separate object from SkPaint
> 
> In order to add serialization for PaintFlags internals, store the
> SkPaint internals directly in PaintFlags instead of storing in
> an SkPaint itself.
> 
> Bug:  737629 
> Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
> Change-Id: I865752e0adc709595e0d3ed079d3158f5fb17084
> Reviewed-on: https://chromium-review.googlesource.com/575511
> Reviewed-by: Justin Novosad <junov@chromium.org>
> Reviewed-by: Michael Wasserman <msw@chromium.org>
> Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
> Commit-Queue: enne <enne@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#488046}

TBR=msw@chromium.org,vmpstr@chromium.org,enne@chromium.org,junov@chromium.org

Change-Id: I164b5e02e4df088db2e02a08c73193dab88b5eeb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Reviewed-on: https://chromium-review.googlesource.com/578151
Reviewed-by: Scott Little <sclittle@chromium.org>
Commit-Queue: Scott Little <sclittle@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488062}
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/discardable_image_map.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/paint_flags.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/paint_flags.h
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/paint_shader.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/paint_shader.h
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/record_paint_canvas.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/cc/paint/skia_paint_canvas.cc
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/platform/fonts/Font.cpp
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/platform/graphics/Gradient.cpp
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/platform/graphics/GraphicsContextState.h
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/platform/graphics/filters/PaintFilterEffect.cpp
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/third_party/WebKit/Source/platform/graphics/paint/PaintFlags.h
[modify] https://crrev.com/0052be3945daf7937dc78f3abbae695049331741/ui/gfx/harfbuzz_font_skia.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dab49622a8f63c7d45158eb4d5e80fdaddbca835

commit dab49622a8f63c7d45158eb4d5e80fdaddbca835
Author: Adrienne Walker <enne@chromium.org>
Date: Fri Jul 21 00:07:44 2017

Make PaintFlags a separate object from SkPaint

In order to add serialization for PaintFlags internals, store the
SkPaint internals directly in PaintFlags instead of storing in
an SkPaint itself.

Reland of: https://chromium-review.googlesource.com/c/575511/
TBR=vmpstr@chromium.org,msw@chromium.org,junov@chromium.org

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ida37d539b3d5a5612acdf1466445f4d30b75d5ad
Reviewed-on: https://chromium-review.googlesource.com/580149
Commit-Queue: enne <enne@chromium.org>
Reviewed-by: Dan Erat <derat@chromium.org>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488502}
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/ash/autoclick/common/BUILD.gn
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/discardable_image_map.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/paint_flags.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/paint_flags.h
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/paint_shader.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/paint_shader.h
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/record_paint_canvas.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/cc/paint/skia_paint_canvas.cc
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/core/paint/ScrollableAreaPainter.cpp
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/platform/fonts/Font.cpp
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/platform/graphics/Gradient.cpp
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/platform/graphics/GraphicsContextState.h
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/platform/graphics/filters/PaintFilterEffect.cpp
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/third_party/WebKit/Source/platform/graphics/paint/PaintFlags.h
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/ui/app_list/BUILD.gn
[modify] https://crrev.com/dab49622a8f63c7d45158eb4d5e80fdaddbca835/ui/gfx/harfbuzz_font_skia.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/813d15c1995bdc659cd153d34634b25d5d6e9ad1

commit 813d15c1995bdc659cd153d34634b25d5d6e9ad1
Author: Adrienne Walker <enne@chromium.org>
Date: Fri Jul 21 16:48:12 2017

cc: Add serialization of most of PaintFlags

This adds serialization/deserialization/testing for most of the
internals of PaintFlags.  SkValidatingSerializeFlattenable is used for
more complex Skia objects.

Still remaining to be handled are PaintShader and SkTypeface.
Additionally, SkValidatingSerializeFlattenable ignores
SkPictureImageFilters for security purposes and so these will have to be
handled in some other manner in the future.

This serialization is not yet called while running Chrome yet.  This is
all for testing purposes at this point.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ic1787721e7518367dca0c40f7a6a438bca980701
Reviewed-on: https://chromium-review.googlesource.com/578321
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488678}
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_flags.cc
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_flags.h
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_op_reader.cc
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_op_reader.h
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_op_writer.cc
[modify] https://crrev.com/813d15c1995bdc659cd153d34634b25d5d6e9ad1/cc/paint/paint_op_writer.h

Project Member

Comment 9 by bugdroid1@chromium.org, Jul 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e4340049b1df9dc6aac8de288bc7d86d42d73551

commit e4340049b1df9dc6aac8de288bc7d86d42d73551
Author: Adrienne Walker <enne@chromium.org>
Date: Tue Jul 25 20:58:48 2017

Add PaintOp validation for Skia clip/blend enums

Skia release asserts on invalid uses of these enums, so they
need to be validated at deserialization time.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I58829ea9ccd085d18502c9974d9611e9ee192679
Reviewed-on: https://chromium-review.googlesource.com/583854
Commit-Queue: enne <enne@chromium.org>
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489424}
[modify] https://crrev.com/e4340049b1df9dc6aac8de288bc7d86d42d73551/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/e4340049b1df9dc6aac8de288bc7d86d42d73551/cc/paint/paint_op_buffer.h
[modify] https://crrev.com/e4340049b1df9dc6aac8de288bc7d86d42d73551/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/e4340049b1df9dc6aac8de288bc7d86d42d73551/cc/paint/paint_op_reader.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Jul 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e34bf4acead4c2fc0b0fe967152606ffdf507bc1

commit e34bf4acead4c2fc0b0fe967152606ffdf507bc1
Author: Adrienne Walker <enne@chromium.org>
Date: Tue Jul 25 22:53:51 2017

Add fuzzer for cc::PaintOpBuffer + gpu raster

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ifc061a2b9a42caa9c8ed9891f49edad4eb35fd33
Reviewed-on: https://chromium-review.googlesource.com/582087
Commit-Queue: enne <enne@chromium.org>
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489472}
[modify] https://crrev.com/e34bf4acead4c2fc0b0fe967152606ffdf507bc1/cc/paint/BUILD.gn
[add] https://crrev.com/e34bf4acead4c2fc0b0fe967152606ffdf507bc1/cc/paint/paint_op_buffer_fuzzer.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/98e49f0da61c0cb300f9eeeb265b5ed7f63f485f

commit 98e49f0da61c0cb300f9eeeb265b5ed7f63f485f
Author: Adrienne Walker <enne@chromium.org>
Date: Fri Jul 28 19:55:23 2017

Fix isClipRect bug in SolidColorAnalyzer

SolidColorAnalyzer uses an SkNoDrawCanvas which uses an
SkNoPixelsDevice, which doesn't properly track whether or not a
clip rect is a rect or not.  SolidColorAnalyzer only uses rect clips
to determine if draws cover the entire canvas or not, so any clip
that leaves the clip as a non-rect should cause the canvas to be
a non-solid color.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I6a9540a2038f816317e9494bc9be167dfb23e933
Reviewed-on: https://chromium-review.googlesource.com/591882
Reviewed-by: Khushal <khushalsagar@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490492}
[modify] https://crrev.com/98e49f0da61c0cb300f9eeeb265b5ed7f63f485f/cc/paint/solid_color_analyzer.cc
[modify] https://crrev.com/98e49f0da61c0cb300f9eeeb265b5ed7f63f485f/cc/paint/solid_color_analyzer_unittest.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a863c3131fb85ef0da6634f6bfc7e6a91e6b6cb5

commit a863c3131fb85ef0da6634f6bfc7e6a91e6b6cb5
Author: Adrienne Walker <enne@chromium.org>
Date: Mon Jul 31 09:10:07 2017

Fix overly restrictive PaintOp blend mode validation

It's valid to use extended blend modes in PaintFlags, just not on
DrawColor.  Oops.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I0796d31a9688685d58e5efb3a07f5eb5c270184d
Reviewed-on: https://chromium-review.googlesource.com/589815
Commit-Queue: enne <enne@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490734}
[modify] https://crrev.com/a863c3131fb85ef0da6634f6bfc7e6a91e6b6cb5/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/a863c3131fb85ef0da6634f6bfc7e6a91e6b6cb5/cc/paint/paint_op_buffer.h
[modify] https://crrev.com/a863c3131fb85ef0da6634f6bfc7e6a91e6b6cb5/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/a863c3131fb85ef0da6634f6bfc7e6a91e6b6cb5/cc/paint/paint_op_reader.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/864fa55780cb33476188379198d2846004b6da27

commit 864fa55780cb33476188379198d2846004b6da27
Author: Adrienne Walker <enne@chromium.org>
Date: Tue Aug 01 23:58:45 2017

cc: Add PaintCanvas::clipDeviceRect

Instead of having to serialize SkRegion (as clipRegion is the only call
that needs a region), instead add a top level "clip device rect" that
takes two parameters.  This is to support the use case that the
RasterSource canvas setup preamble uses to clear the canvas efficiently.

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Icfb41557c716d5c52ef44454b8791e29c36d5bda
Reviewed-on: https://chromium-review.googlesource.com/590950
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491159}
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/paint_canvas.h
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/paint_op_buffer.cc
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/paint_op_buffer.h
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/record_paint_canvas.cc
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/record_paint_canvas.h
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/skia_paint_canvas.cc
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/skia_paint_canvas.h
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/solid_color_analyzer.cc
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/cc/paint/solid_color_analyzer_unittest.cc
[modify] https://crrev.com/864fa55780cb33476188379198d2846004b6da27/third_party/WebKit/Source/platform/graphics/test/MockPaintCanvas.h

Project Member

Comment 14 by bugdroid1@chromium.org, Aug 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4a99e579769e4ce69fc70c6ca02a2979894e963e

commit 4a99e579769e4ce69fc70c6ca02a2979894e963e
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Fri Aug 04 00:33:24 2017

cc/paint: Serialize PaintShaders (mostly).

This patch adds serialization to PaintShaders, with the exception of
PaintImage and PaintRecord.

R=enne@chromium.org

Bug:  737629 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Idbaf512f2f0c12df8edd6bcd459af0ddaaff4126
Reviewed-on: https://chromium-review.googlesource.com/590675
Commit-Queue: Vladimir Levin <vmpstr@chromium.org>
Reviewed-by: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491889}
[modify] https://crrev.com/4a99e579769e4ce69fc70c6ca02a2979894e963e/cc/paint/paint_op_buffer_unittest.cc
[modify] https://crrev.com/4a99e579769e4ce69fc70c6ca02a2979894e963e/cc/paint/paint_op_reader.cc
[modify] https://crrev.com/4a99e579769e4ce69fc70c6ca02a2979894e963e/cc/paint/paint_op_reader.h
[modify] https://crrev.com/4a99e579769e4ce69fc70c6ca02a2979894e963e/cc/paint/paint_op_writer.cc
[modify] https://crrev.com/4a99e579769e4ce69fc70c6ca02a2979894e963e/cc/paint/paint_op_writer.h
[modify] https://crrev.com/4a99e579769e4ce69fc70c6ca02a2979894e963e/cc/paint/paint_shader.h

Comment 15 by enne@chromium.org, Oct 23 2017

Blocking: 757605

Comment 16 by enne@chromium.org, Oct 23 2017

Blockedon: 777628

Comment 17 by enne@chromium.org, Oct 23 2017

Blockedon: 777631

Comment 18 by enne@chromium.org, Oct 23 2017

Blockedon: 777635

Comment 19 by enne@chromium.org, Oct 23 2017

Blockedon: 777636
Components: Internals>Compositing

Comment 21 by enne@chromium.org, Feb 7 2018

This is done, excepting the two font blocking bugs.

Comment 22 by enne@chromium.org, Feb 8 2018

Blockedon: 806313

Comment 23 by enne@chromium.org, Feb 8 2018

Blockedon: 810531

Comment 24 by enne@chromium.org, Feb 24 2018

Blockedon: 815354

Comment 25 by enne@chromium.org, Apr 5 2018

Status: Fixed (was: Assigned)

Sign in to add a comment