Remove eager querying of image-rendering property in <canvas>. Before this change, it was possible for any canvas 2d draw call to result in style recalculation because the lazy initialization of canvas resource providers would query the 'image-rendering' CSS property to determine whether the canvas backing use bilinear filtering when presented to screen. This was a problem because style recalc sometime results in the allocation of objects on the v8 heap, which is incompatible with Fast API call. The solution implemented in this CL is to rely solely on "StyleDidChange" notifications to track the image-rendering property, which is sufficient to unambiguously determine the right filtering mode at any time. To make this work, HTMLCanvasElement now has to track the property internally to ensure that its value can be retrieved without querying the style framework when it is time to to lazily allocate a CanvasResourceProvider. OffscreenCanvas was already doing something similar so the filter_quality state was moved up to the common base class CanvasResourceHost so the implementation can be shared between OffscreenCanvas and <canvas>. This fixes a DCHECK failure cause by illegal V8 allocations during fast API calls. BUG=1185479 Change-Id: Ib6a2e6d0465264c398bca7660f570f51bf19dd30 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2744456 Commit-Queue: Justin Novosad <junov@chromium.org> Auto-Submit: Justin Novosad <junov@chromium.org> Reviewed-by: Juanmi Huertas <juanmihd@chromium.org> Cr-Commit-Position: refs/heads/master@{#861588}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.