- From: poot <cvsmail@w3.org>
- Date: Fri, 06 Jan 2012 15:47:07 -0500
- To: public-html-diffs@w3.org
2Dapi; hixie: Make sure canvas.toBlob() honours the origin-clean flag.
Also, make it more likely this will be implemented correctly by
explicitly putting the security checks in the relevant algorithms.
(whatwg r6879)
http://dev.w3.org/cvsweb/html5/2dcontext/Overview.html?r1=1.113&r2=1.114&f=h
http://html5.org/tools/web-apps-tracker?from=6878&to=6879
===================================================================
RCS file: /sources/public/html5/2dcontext/Overview.html,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -d -r1.113 -r1.114
--- Overview.html 9 Dec 2011 18:39:15 -0000 1.113
+++ Overview.html 6 Jan 2012 20:46:54 -0000 1.114
@@ -320,12 +320,13 @@
<h1>HTML Canvas 2D Context</h1>
<h2 class="no-num no-toc" id="generatedID"></h2>
- <h2 class="no-num no-toc" id="editor-s-draft-9-december-2011">Editor's Draft 9 December 2011</h2>
+ <h2 class="no-num no-toc" id="editor-s-draft-6-january-2012">Editor's Draft 6 January 2012</h2>
<dl><dt>Latest Published Version:</dt>
<dd><a href="http://www.w3.org/TR/2dcontext/">http://www.w3.org/TR/2dcontext/</a></dd>
<dt>Latest Editor's Draft:</dt>
<dd><a class="latest-link" href="http://dev.w3.org/html5/2dcontext/">http://dev.w3.org/html5/2dcontext/</a></dd>
+
<dt>Previous Versions:</dt>
<dd><a href="http://www.w3.org/TR/2011/WD-2dcontext-20110525/">http://www.w3.org/TR/2011/WD-2dcontext-20110525/</a></dd>
<dd><a href="http://www.w3.org/TR/2011/WD-2dcontext-20110405/">http://www.w3.org/TR/2011/WD-2dcontext-20110405/</a></dd>
@@ -455,7 +456,7 @@
Group</a> is the W3C working group responsible for this
specification's progress along the W3C Recommendation
track.
- This specification is the 9 December 2011 Editor's Draft.
+ This specification is the 6 January 2012 Editor's Draft.
</p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>Work on this specification is also done at the <a href="http://www.whatwg.org/">WHATWG</a>. The W3C HTML working group
actively pursues convergence with the WHATWG, as required by the <a href="http://www.w3.org/2007/03/HTML-WG-charter">W3C HTML working
group charter</a>.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>This specification is an extension to the HTML5 language. All
@@ -469,6 +470,7 @@
individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the W3C Patent Policy</a>.<h2 class="no-num no-toc" id="contents">Table of Contents</h2>
+
<ol class="toc">
<li><a href="#conformance-requirements"><span class="secno">1 </span>Conformance requirements</a></li>
<li><a href="#the-canvas-state"><span class="secno">2 </span>The canvas state</a></li>
@@ -509,15 +511,18 @@
// state
void <a href="#dom-context-2d-save" title="dom-context-2d-save">save</a>(); // push state on state stack
void <a href="#dom-context-2d-restore" title="dom-context-2d-restore">restore</a>(); // pop state stack and restore state
+
// transformations (default transform is the identity matrix)
void <a href="#dom-context-2d-scale" title="dom-context-2d-scale">scale</a>(double x, double y);
void <a href="#dom-context-2d-rotate" title="dom-context-2d-rotate">rotate</a>(double angle);
void <a href="#dom-context-2d-translate" title="dom-context-2d-translate">translate</a>(double x, double y);
void <a href="#dom-context-2d-transform" title="dom-context-2d-transform">transform</a>(double a, double b, double c, double d, double e, double f);
void <a href="#dom-context-2d-settransform" title="dom-context-2d-setTransform">setTransform</a>(double a, double b, double c, double d, double e, double f);
+
// compositing
attribute double <a href="#dom-context-2d-globalalpha" title="dom-context-2d-globalAlpha">globalAlpha</a>; // (default 1.0)
attribute DOMString <a href="#dom-context-2d-globalcompositeoperation" title="dom-context-2d-globalCompositeOperation">globalCompositeOperation</a>; // (default source-over)
+
// colors and styles
attribute any <a href="#dom-context-2d-strokestyle" title="dom-context-2d-strokeStyle">strokeStyle</a>; // (default black)
attribute any <a href="#dom-context-2d-fillstyle" title="dom-context-2d-fillStyle">fillStyle</a>; // (default black)
@@ -567,7 +572,8 @@
attribute DOMString <a href="#dom-context-2d-textalign" title="dom-context-2d-textAlign">textAlign</a>; // "start", "end", "left", "right", "center" (default: "start")
attribute DOMString <a href="#dom-context-2d-textbaseline" title="dom-context-2d-textBaseline">textBaseline</a>; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic")
void <a href="#dom-context-2d-filltext" title="dom-context-2d-fillText">fillText</a>(DOMString text, double x, double y, optional double maxWidth);
- void <a href="#dom-context-2d-stroketext" title="dom-context-2d-strokeText">strokeText</a>(DOMString text, double x, double y, optional double maxWidth); <a href="#textmetrics">TextMetrics</a> <a href="#dom-context-2d-measuretext" title="dom-context-2d-measureText">measureText</a>(DOMString text);
+ void <a href="#dom-context-2d-stroketext" title="dom-context-2d-strokeText">strokeText</a>(DOMString text, double x, double y, optional double maxWidth);
+ <a href="#textmetrics">TextMetrics</a> <a href="#dom-context-2d-measuretext" title="dom-context-2d-measureText">measureText</a>(DOMString text);
// drawing images
void <a href="#dom-context-2d-drawimage" title="dom-context-2d-drawImage">drawImage</a>(<span>HTMLImageElement</span> image, double dx, double dy);
@@ -624,6 +630,7 @@
NaN value must be ignored.</p>
+
<p>Whenever the CSS value <code title="">currentColor</code> is used
as a color in this API, the "computed value of the 'color' property"
for the purposes of determining the computed value of the <code title="">currentColor</code> keyword is the computed value of the
@@ -684,6 +691,7 @@
must do nothing.</p>
+
</div><h2 id="transformations"><span class="secno">3 </span><dfn title="dom-context-2d-transformation">Transformations</dfn></h2><p>The transformation matrix is applied to coordinates when creating
shapes and paths.</p><div class="impl">
@@ -810,6 +818,7 @@
attributes, <code title="dom-context-2d-globalAlpha"><a href="#dom-context-2d-globalalpha">globalAlpha</a></code> and <code title="dom-context-2d-globalCompositeOperation"><a href="#dom-context-2d-globalcompositeoperation">globalCompositeOperation</a></code>.</p>
+
<p>The <dfn id="dom-context-2d-globalalpha" title="dom-context-2d-globalAlpha"><code>globalAlpha</code></dfn>
attribute gives an alpha value that is applied to shapes and images
before they are composited onto the canvas. The value must be in the
@@ -878,6 +887,7 @@
+
<dt><dfn id="gcop-lighter" title="gcop-lighter"><code>lighter</code></dfn></dt>
<dd><var title="">A</var> plus <var title="">B</var>. <span class="note">Display the
@@ -957,6 +967,7 @@
</dl><div class="impl">
+
<p>The <dfn id="dom-context-2d-strokestyle" title="dom-context-2d-strokeStyle"><code>strokeStyle</code></dfn>
attribute represents the color or style to use for the lines around
shapes, and the <dfn id="dom-context-2d-fillstyle" title="dom-context-2d-fillStyle"><code>fillStyle</code></dfn>
@@ -1009,11 +1020,13 @@
fractional part of the alpha value, if any, with the level of
precision necessary for the alpha value, when reparsed, to be
interpreted as the same alpha value.</p>
+
<p>When the context is created, the <code title="dom-context-2d-strokeStyle"><a href="#dom-context-2d-strokestyle">strokeStyle</a></code> and <code title="dom-context-2d-fillStyle"><a href="#dom-context-2d-fillstyle">fillStyle</a></code> attributes must
initially have the string value <code title="">#000000</code>.</p>
<p>When the value is a color, it must not be affected by the
transformation matrix when used to draw on the canvas.</p>
+
</div><hr><p>There are two types of gradients, linear gradients and radial
gradients, both represented by objects implementing the opaque
<code><a href="#canvasgradient">CanvasGradient</a></code> interface.<p id="interpolation">Once a gradient has been created (see below),
@@ -1194,11 +1207,13 @@
<p>The <var title="">image</var> argument is an instance of either
<code>HTMLImageElement</code>, <code>HTMLCanvasElement</code>, or
<code>HTMLVideoElement</code>.</p>
+
<p>If the <var title="">image</var> argument is an
<code>HTMLImageElement</code> object that is not <span title="img-good">fully decodable</span>, or if the <var title="">image</var> argument is an <code>HTMLVideoElement</code>
object whose <code title="dom-media-readyState">readyState</code>
attribute is either <code title="dom-media-HAVE_NOTHING">HAVE_NOTHING</code> or <code title="dom-media-HAVE_METADATA">HAVE_METADATA</code>, then the
implementation must return null.</p>
+
<p>If the <var title="">image</var> argument is an
<code>HTMLCanvasElement</code> object with either a horizontal
dimension or a vertical dimension equal to zero, then the
@@ -1250,6 +1265,7 @@
+
</div><div class="impl">
<hr><p>If a radial gradient or repeated pattern is used when the
@@ -1407,6 +1423,7 @@
initially have the value <code>10.0</code>.</p>
+
</div><h2 id="shadows"><span class="secno">7 </span><dfn>Shadows</dfn></h2><p>All drawing operations are affected by the four global shadow
attributes.<dl class="domintro"><dt><var title="">context</var> . <code title="dom-context-2d-shadowColor"><a href="#dom-context-2d-shadowcolor">shadowColor</a></code> [ = <var title="">value</var> ]</dt>
@@ -1905,6 +1922,7 @@
+
<p>The <dfn id="dom-context-2d-fill" title="dom-context-2d-fill"><code>fill()</code></dfn>
method must fill all the subpaths of the current path, using
<code title="dom-context-2d-fillStyle"><a href="#dom-context-2d-fillstyle">fillStyle</a></code>, and using
@@ -2048,6 +2066,7 @@
height of the coordinate space.</p>
+
<hr><p>The <dfn id="dom-context-2d-ispointinpath" title="dom-context-2d-isPointInPath"><code>isPointInPath(<var title="">x</var>, <var title="">y</var>)</code></dfn> method must
return true if the point given by the <var title="">x</var> and <var title="">y</var> coordinates passed to the method, when treated as
coordinates in the canvas coordinate space unaffected by the current
@@ -2133,6 +2152,7 @@
redraw();
</script></pre>
+
</div><h2 id="text"><span class="secno">10 </span>Text</h2><dl class="domintro"><dt><var title="">context</var> . <code title="dom-context-2d-font"><a href="#dom-context-2d-font">font</a></code> [ = <var title="">value</var> ]</dt>
<dd>
@@ -2327,6 +2347,7 @@
'white-space' property set to 'pre'. <a href="#refsCSS">[CSS]</a></li>
+
<li><p>If the <var title="">maxWidth</var> argument was specified
and the hypothetical width of the inline box in the hypothetical
line box is greater than <var title="">maxWidth</var> CSS pixels,
@@ -2448,9 +2469,20 @@
of the inline element set to 'pre' and the 'font' property of the
inline element set to the current font of the context as given by
the <code title="dom-context-2d-font"><a href="#dom-context-2d-font">font</a></code> attribute, and
- must then return a new <code><a href="#textmetrics">TextMetrics</a></code> object with its
+ must then create a new <code><a href="#textmetrics">TextMetrics</a></code> object with its
<code title="dom-textmetrics-width"><a href="#dom-textmetrics-width">width</a></code> attribute set to
- the width of that inline box, in CSS pixels. <a href="#refsCSS">[CSS]</a></p>
+ the width of that inline box, in CSS pixels.
+
+ If doing these measurements requires using a font that has an
+ <span>origin</span> that is not the <span title="same
+ origin">same</span> as that of the <code>Document</code> object that
+ owns the <code>canvas</code> element (even if "using a font" means
+ just checking if that font has a particular glyph in it before
+ falling back to another font), then the method must throw a
+ <code>SecurityError</code> exception.
+
+ Otherwise, it must return the new <code><a href="#textmetrics">TextMetrics</a></code> object.
+ <a href="#refsCSS">[CSS]</a></p>
<p>The <code><a href="#textmetrics">TextMetrics</a></code> interface is used for the objects
returned from <code title="dom-context-2d-measureText"><a href="#dom-context-2d-measuretext">measureText()</a></code>. It has one
@@ -2521,11 +2553,13 @@
<p>The <var title="">image</var> argument is an instance of either
<code>HTMLImageElement</code>, <code>HTMLCanvasElement</code>, or
<code>HTMLVideoElement</code>.</p>
+
<p>If the <var title="">image</var> argument is an
<code>HTMLImageElement</code> object that is not <span title="img-good">fully decodable</span>, or if the <var title="">image</var> argument is an <code>HTMLVideoElement</code>
object whose <code title="dom-media-readyState">readyState</code>
attribute is either <code title="dom-media-HAVE_NOTHING">HAVE_NOTHING</code> or <code title="dom-media-HAVE_METADATA">HAVE_METADATA</code>, then the
implementation must return without drawing anything.</p>
+
<p>If the <var title="">image</var> argument is an
<code>HTMLCanvasElement</code> object with either a horizontal
dimension or a vertical dimension equal to zero, then the
@@ -2570,7 +2604,8 @@
filtering algorithm requires a pixel value from outside the original
image data, it must instead use the value from the nearest edge
pixel. (That is, the filter uses 'clamp-to-edge' behavior.)</p>
-
+
+
<p>When the <code title="dom-context-2d-drawImage"><a href="#dom-context-2d-drawimage">drawImage()</a></code> method
is passed an animated image as its <var title="">image</var>
@@ -2678,14 +2713,18 @@
with transparent black.</p>
<p>The <dfn id="dom-context-2d-getimagedata" title="dom-context-2d-getImageData"><code>getImageData(<var title="">sx</var>, <var title="">sy</var>, <var title="">sw</var>,
- <var title="">sh</var>)</code></dfn> method must return an
- <code><a href="#imagedata">ImageData</a></code> object representing the underlying pixel data
- for the area of the canvas denoted by the rectangle whose corners are
- the four points (<var title="">sx</var>, <var title="">sy</var>),
- (<span title=""><var title="">sx</var>+<var title="">sw</var></span>, <var title="">sy</var>), (<span title=""><var title="">sx</var>+<var title="">sw</var></span>, <span title=""><var title="">sy</var>+<var title="">sh</var></span>), (<var title="">sx</var>, <span title=""><var title="">sy</var>+<var title="">sh</var></span>), in canvas
- coordinate space units. Pixels outside the canvas must be returned
- as transparent black. Pixels must be returned as non-premultiplied
- alpha values.</p>
+ <var title="">sh</var>)</code></dfn> method must,
+
+ if the <code>canvas</code> element's <i>origin-clean</i> flag is set
+ to false, throw a <code>SecurityError</code> exception; otherwise, it
+
+ must return an <code><a href="#imagedata">ImageData</a></code> object representing the
+ underlying pixel data for the area of the canvas denoted by the
+ rectangle whose corners are the four points (<var title="">sx</var>,
+ <var title="">sy</var>), (<span title=""><var title="">sx</var>+<var title="">sw</var></span>, <var title="">sy</var>), (<span title=""><var title="">sx</var>+<var title="">sw</var></span>, <span title=""><var title="">sy</var>+<var title="">sh</var></span>),
+ (<var title="">sx</var>, <span title=""><var title="">sy</var>+<var title="">sh</var></span>), in canvas coordinate space units. Pixels
+ outside the canvas must be returned as transparent black. Pixels
+ must be returned as non-premultiplied alpha values.</p>
<p>If any of the arguments to <code title="dom-context-2d-createImageData"><a href="#dom-context-2d-createimagedata">createImageData()</a></code> or
<code title="dom-context-2d-getImageData"><a href="#dom-context-2d-getimagedata">getImageData()</a></code>
@@ -3046,7 +3085,8 @@
Hickson, H. Lie. W3C.</dd>
<dt id="refsCSSCOLOR">[CSSCOLOR]</dt>
- <dd><cite><a href="http://dev.w3.org/csswg/css3-color/">CSS Color
+
+ <dd><cite><a href="http://dev.w3.org/csswg/css3-color/">CSS Color
Module Level 3</a></cite>, T. Çelik, C. Lilley, L.
Baron. W3C.</dd>
@@ -3079,7 +3119,8 @@
<dd><cite><a href="http://www.khronos.org/registry/typedarray/specs/latest/">Typed Array Specification</a></cite>, D. Herman, K. Russell. Khronos.</dd>
<dt id="refsWEBIDL">[WEBIDL]</dt>
- <dd><cite><a href="http://dev.w3.org/2006/webapi/WebIDL/">Web
+
+ <dd><cite><a href="http://dev.w3.org/2006/webapi/WebIDL/">Web
IDL</a></cite>, C. McCormack. W3C.</dd>
</dl><h2 class="no-num" id="acknowledgements">Acknowledgements</h2><p>For a full list of acknowledgements, please see the HTML5
Received on Friday, 6 January 2012 20:47:10 UTC