Contact emails
schen...@chromium.org

Explainer
None


Specification
https://html.spec.whatwg.org/multipage/canvas.html#security-with-canvas-elements


Summary

The ability to use an <img> element with an SVG source in a HTML canvas 
drawImage operation has long been supported by all browsers, but the canvas 
tainting behavior varies across platforms. All browsers taint the canvas when 
the SVG source includes a foreignObject tag and is referenced via a HTTP URI 
scheme. When the same SVG is referenced through a data URI all browsers agree 
not to taint the canvas. However, when a blob URI is used both Chromium (before 
this change) and WebKit taint the canvas, but Gecko does not. When this feature 
is shipped Chromium's behavior will match that of Gecko, allowing a wider range 
of SVG content to be used in canvas drawImage calls without tainting.



Blink component
Blink>Canvas


TAG review
None


TAG review status
Not applicable


Risks




Interoperability and Compatibility

The feature adds functionality and has no interop risk. We align with Gecko 
with this change, and begin to differ from WebKit.


Gecko: Shipped/Shipping

WebKit: No signal

Web developers: Strongly positive The bug has developers complaining about the 
lack of this feature. Stack Overflow also has questions about it.

Other signals:


WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it 
has potentially high risk for Android WebView-based applications?

No. The change makes HTML canvas image read-back slightly more permissive but 
otherwise has no impact.




Debuggability

None



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, 
ChromeOS, Android, and Android WebView)?
Yes
All platforms support the underlying functionality. We are changing the 
tainting behavior, not the underlying mechanisms.



Is this feature fully tested by web-platform-tests?
Yes
The CL that enables the feature will include comprehensive canvas tests. 
Existing tests cover the various privacy concerns, such as ensuring the SVG 
content is indeed non-interactive.



Flag name on chrome://flags
None


Finch feature name
None


Non-finch justification

The code change adjusts tainting behavior, which is a state flag on the HTML 
canvas context. Testing confirms that the existing behavior is maintained, and 
the new behavior allows more permissive behavior.



Requires code in //chrome?
False


Tracking bug
https://issues.chromium.org/issues/41054640


Measurement
No explicit plan though we could add UseCounters to see how often the change 
hits.


Availability expectation
Available in Chromium-based browsers and Gecko. No idea when it might be 
available in WebKit.


Adoption expectation
I expect sites to transition from Data-URI to Blob-URI for this use case. I 
would expect it to happen as sites update or look for performance improvements.


Adoption plan
No explicit plan.


Non-OSS dependencies

Does the feature depend on any code or APIs outside the Chromium open source 
repository and its open-source dependencies to function?
No.


Estimated milestones


Shipping on desktop 131

Shipping on Android 131

Shipping on WebView 131




Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop 
issues. Please list open issues (eg links to known github issues in the project 
for the feature specification) whose resolution may introduce web 
compat/interop risk (eg, changing to naming or structure of the API in a 
non-backward-compatible way).
No change.


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5196074156032000?gate=5159222329999360


This intent message was generated by Chrome Platform Status.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/66eb300e.2b0a0220.28f9c2.0061.GAE%40google.com.

Reply via email to