[html5] r8854 - [agiow] (0) Drop drawCustomFocusRing(), since no browsers have indicated interes [...]

whatwg at whatwg.org whatwg at whatwg.org
Wed Nov 19 16:14:33 PST 2014


Author: ianh
Date: 2014-11-19 16:14:29 -0800 (Wed, 19 Nov 2014)
New Revision: 8854

Modified:
   complete.html
   index
   source
Log:
[agiow] (0) Drop drawCustomFocusRing(), since no browsers have indicated interest in implementing it, and rename drawSystemFocusRing() to drawFocusIfNeeded() to match implementations.
Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=27049
Affected topics: Canvas

Modified: complete.html
===================================================================
--- complete.html	2014-11-19 23:35:39 UTC (rev 8853)
+++ complete.html	2014-11-20 00:14:29 UTC (rev 8854)
@@ -46544,19 +46544,17 @@
   void <a href=#dom-context-2d-fill id=2dcontext:dom-context-2d-fill-2>fill</a>(<a href=#path2d id=2dcontext:path2d>Path2D</a> path, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-2>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-3>nonzero</a>");
   void <a href=#dom-context-2d-stroke id=2dcontext:dom-context-2d-stroke>stroke</a>();
   void <a href=#dom-context-2d-stroke id=2dcontext:dom-context-2d-stroke-2>stroke</a>(<a href=#path2d id=2dcontext:path2d-2>Path2D</a> path);
-  void <a href=#dom-context-2d-drawsystemfocusring id=2dcontext:dom-context-2d-drawsystemfocusring>drawSystemFocusRing</a>(<a href=#element id=2dcontext:element>Element</a> element);
-  void <a href=#dom-context-2d-drawsystemfocusring id=2dcontext:dom-context-2d-drawsystemfocusring-2>drawSystemFocusRing</a>(<a href=#path2d id=2dcontext:path2d-3>Path2D</a> path, <a href=#element id=2dcontext:element-2>Element</a> element);
-  boolean <a href=#dom-context-2d-drawcustomfocusring id=2dcontext:dom-context-2d-drawcustomfocusring>drawCustomFocusRing</a>(<a href=#element id=2dcontext:element-3>Element</a> element);
-  boolean <a href=#dom-context-2d-drawcustomfocusring id=2dcontext:dom-context-2d-drawcustomfocusring-2>drawCustomFocusRing</a>(<a href=#path2d id=2dcontext:path2d-4>Path2D</a> path, <a href=#element id=2dcontext:element-4>Element</a> element);
+  void <a href=#dom-context-2d-drawfocusifneeded id=2dcontext:dom-context-2d-drawfocusifneeded>drawFocusIfNeeded</a>(<a href=#element id=2dcontext:element>Element</a> element);
+  void <a href=#dom-context-2d-drawfocusifneeded id=2dcontext:dom-context-2d-drawfocusifneeded-2>drawFocusIfNeeded</a>(<a href=#path2d id=2dcontext:path2d-3>Path2D</a> path, <a href=#element id=2dcontext:element-2>Element</a> element);
   void <a href=#dom-context-2d-scrollpathintoview id=2dcontext:dom-context-2d-scrollpathintoview>scrollPathIntoView</a>();
-  void <a href=#dom-context-2d-scrollpathintoview id=2dcontext:dom-context-2d-scrollpathintoview-2>scrollPathIntoView</a>(<a href=#path2d id=2dcontext:path2d-5>Path2D</a> path);
+  void <a href=#dom-context-2d-scrollpathintoview id=2dcontext:dom-context-2d-scrollpathintoview-2>scrollPathIntoView</a>(<a href=#path2d id=2dcontext:path2d-4>Path2D</a> path);
   void <a href=#dom-context-2d-clip id=2dcontext:dom-context-2d-clip>clip</a>(optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-3>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-4>nonzero</a>");
-  void <a href=#dom-context-2d-clip id=2dcontext:dom-context-2d-clip-2>clip</a>(<a href=#path2d id=2dcontext:path2d-6>Path2D</a> path, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-4>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-5>nonzero</a>");
+  void <a href=#dom-context-2d-clip id=2dcontext:dom-context-2d-clip-2>clip</a>(<a href=#path2d id=2dcontext:path2d-5>Path2D</a> path, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-4>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-5>nonzero</a>");
   void <a href=#dom-context-2d-resetclip id=2dcontext:dom-context-2d-resetclip>resetClip</a>();
   boolean <a href=#dom-context-2d-ispointinpath id=2dcontext:dom-context-2d-ispointinpath>isPointInPath</a>(unrestricted double x, unrestricted double y, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-5>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-6>nonzero</a>");
-  boolean <a href=#dom-context-2d-ispointinpath id=2dcontext:dom-context-2d-ispointinpath-2>isPointInPath</a>(<a href=#path2d id=2dcontext:path2d-7>Path2D</a> path, unrestricted double x, unrestricted double y, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-6>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-7>nonzero</a>");
+  boolean <a href=#dom-context-2d-ispointinpath id=2dcontext:dom-context-2d-ispointinpath-2>isPointInPath</a>(<a href=#path2d id=2dcontext:path2d-6>Path2D</a> path, unrestricted double x, unrestricted double y, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-6>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-7>nonzero</a>");
   boolean <a href=#dom-context-2d-ispointinstroke id=2dcontext:dom-context-2d-ispointinstroke>isPointInStroke</a>(unrestricted double x, unrestricted double y);
-  boolean <a href=#dom-context-2d-ispointinstroke id=2dcontext:dom-context-2d-ispointinstroke-2>isPointInStroke</a>(<a href=#path2d id=2dcontext:path2d-8>Path2D</a> path, unrestricted double x, unrestricted double y);
+  boolean <a href=#dom-context-2d-ispointinstroke id=2dcontext:dom-context-2d-ispointinstroke-2>isPointInStroke</a>(<a href=#path2d id=2dcontext:path2d-7>Path2D</a> path, unrestricted double x, unrestricted double y);
 
   // text (see also the <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-2>CanvasDrawingStyles</a> interface)
   void <a href=#dom-context-2d-filltext id=2dcontext:dom-context-2d-filltext>fillText</a>(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
@@ -46650,13 +46648,13 @@
 };
 
 dictionary <dfn id=hitregionoptions>HitRegionOptions</dfn> {
-  <a href=#path2d id=2dcontext:path2d-9>Path2D</a>? <a href=#dom-hitregionoptions-path id=2dcontext:dom-hitregionoptions-path>path</a> = null;
+  <a href=#path2d id=2dcontext:path2d-8>Path2D</a>? <a href=#dom-hitregionoptions-path id=2dcontext:dom-hitregionoptions-path>path</a> = null;
   <a href=#canvasfillrule id=2dcontext:canvasfillrule-7>CanvasFillRule</a> <a href=#dom-hitregionoptions-fillrule id=2dcontext:dom-hitregionoptions-fillrule>fillRule</a> = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-8>nonzero</a>";
   DOMString <a href=#dom-hitregionoptions-id id=2dcontext:dom-hitregionoptions-id>id</a> = ""; 
   DOMString? <a href=#dom-hitregionoptions-parentid id=2dcontext:dom-hitregionoptions-parentid>parentID</a> = null;
   DOMString <a href=#dom-hitregionoptions-cursor id=2dcontext:dom-hitregionoptions-cursor>cursor</a> = "inherit";
   // for control-backed regions:
-  <a href=#element id=2dcontext:element-5>Element</a>? <a href=#dom-hitregionoptions-control id=2dcontext:dom-hitregionoptions-control>control</a> = null;
+  <a href=#element id=2dcontext:element-3>Element</a>? <a href=#dom-hitregionoptions-control id=2dcontext:dom-hitregionoptions-control>control</a> = null;
   // for unbacked regions:
   DOMString? <a href=#dom-hitregionoptions-label id=2dcontext:dom-hitregionoptions-label>label</a> = null;
   DOMString? <a href=#dom-hitregionoptions-role id=2dcontext:dom-hitregionoptions-role>role</a> = null;
@@ -46671,23 +46669,23 @@
   readonly attribute <a href=#uint8clampedarray id=2dcontext:uint8clampedarray-2>Uint8ClampedArray</a> <a href=#dom-imagedata-data id=2dcontext:dom-imagedata-data>data</a>;
 };
 
-[<a href=#dom-drawingstyle id=2dcontext:dom-drawingstyle>Constructor</a>(optional <a href=#element id=2dcontext:element-6>Element</a> scope), Exposed=(Window,Worker)]
+[<a href=#dom-drawingstyle id=2dcontext:dom-drawingstyle>Constructor</a>(optional <a href=#element id=2dcontext:element-4>Element</a> scope), Exposed=(Window,Worker)]
 interface <dfn id=drawingstyle>DrawingStyle</dfn> { };
 <a href=#drawingstyle id=2dcontext:drawingstyle>DrawingStyle</a> implements <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-4>CanvasDrawingStyles</a>;
 
 [<a href=#dom-path2d id=2dcontext:dom-path2d>Constructor</a>,
- <a href=#dom-path2d-copy id=2dcontext:dom-path2d-copy>Constructor</a>(<a href=#path2d id=2dcontext:path2d-10>Path2D</a> path),
- <a href=#dom-path2d-merge id=2dcontext:dom-path2d-merge>Constructor</a>(<a href=#path2d id=2dcontext:path2d-11>Path2D</a>[] paths, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-8>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-9>nonzero</a>"),
+ <a href=#dom-path2d-copy id=2dcontext:dom-path2d-copy>Constructor</a>(<a href=#path2d id=2dcontext:path2d-9>Path2D</a> path),
+ <a href=#dom-path2d-merge id=2dcontext:dom-path2d-merge>Constructor</a>(<a href=#path2d id=2dcontext:path2d-10>Path2D</a>[] paths, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-8>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-9>nonzero</a>"),
  <a href=#dom-path2d-withdata id=2dcontext:dom-path2d-withdata>Constructor</a>(DOMString d), Exposed=(Window,Worker)]
 interface <dfn id=path2d>Path2D</dfn> {
-  void <a href=#dom-path2d-addpath id=2dcontext:dom-path2d-addpath>addPath</a>(<a href=#path2d id=2dcontext:path2d-12>Path2D</a> path, optional <a href=#svgmatrix id=2dcontext:svgmatrix-3>SVGMatrix</a>? transformation = null);
-  void <a href=#dom-path2d-addpathbystrokingpath id=2dcontext:dom-path2d-addpathbystrokingpath>addPathByStrokingPath</a>(<a href=#path2d id=2dcontext:path2d-13>Path2D</a> path, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-5>CanvasDrawingStyles</a> styles, optional <a href=#svgmatrix id=2dcontext:svgmatrix-4>SVGMatrix</a>? transformation = null);
+  void <a href=#dom-path2d-addpath id=2dcontext:dom-path2d-addpath>addPath</a>(<a href=#path2d id=2dcontext:path2d-11>Path2D</a> path, optional <a href=#svgmatrix id=2dcontext:svgmatrix-3>SVGMatrix</a>? transformation = null);
+  void <a href=#dom-path2d-addpathbystrokingpath id=2dcontext:dom-path2d-addpathbystrokingpath>addPathByStrokingPath</a>(<a href=#path2d id=2dcontext:path2d-12>Path2D</a> path, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-5>CanvasDrawingStyles</a> styles, optional <a href=#svgmatrix id=2dcontext:svgmatrix-4>SVGMatrix</a>? transformation = null);
   void <a href=#dom-path2d-addtext id=2dcontext:dom-path2d-addtext>addText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-6>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-5>SVGMatrix</a>? transformation, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
   void <a href=#dom-path2d-addpathbystrokingtext id=2dcontext:dom-path2d-addpathbystrokingtext>addPathByStrokingText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-7>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-6>SVGMatrix</a>? transformation, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
-  void <a href=#dom-path2d-addtext id=2dcontext:dom-path2d-addtext-2>addText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-8>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-7>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-14>Path2D</a> path, optional unrestricted double maxWidth);
-  void <a href=#dom-path2d-addpathbystrokingtext id=2dcontext:dom-path2d-addpathbystrokingtext-2>addPathByStrokingText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-9>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-8>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-15>Path2D</a> path, optional unrestricted double maxWidth);
+  void <a href=#dom-path2d-addtext id=2dcontext:dom-path2d-addtext-2>addText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-8>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-7>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-13>Path2D</a> path, optional unrestricted double maxWidth);
+  void <a href=#dom-path2d-addpathbystrokingtext id=2dcontext:dom-path2d-addpathbystrokingtext-2>addPathByStrokingText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-9>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-8>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-14>Path2D</a> path, optional unrestricted double maxWidth);
 };
-<a href=#path2d id=2dcontext:path2d-16>Path2D</a> implements <a href=#canvaspathmethods id=2dcontext:canvaspathmethods-3>CanvasPathMethods</a>;</pre>
+<a href=#path2d id=2dcontext:path2d-15>Path2D</a> implements <a href=#canvaspathmethods id=2dcontext:canvaspathmethods-3>CanvasPathMethods</a>;</pre>
 
  
 
@@ -48787,29 +48785,19 @@
     <p>Strokes the subpaths of the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-5>current default path</a> or the given path with the
     current stroke style.</p>
 
-   <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawsystemfocusring><a href=#dom-context-2d-drawsystemfocusring>drawSystemFocusRing</a></code>(<var>element</var>)<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawsystemfocusring-2><a href=#dom-context-2d-drawsystemfocusring>drawSystemFocusRing</a></code>(<var>path</var>, <var>element</var>)<dd>
+   <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawfocusifneeded><a href=#dom-context-2d-drawfocusifneeded>drawFocusIfNeeded</a></code>(<var>element</var>)<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawfocusifneeded-2><a href=#dom-context-2d-drawfocusifneeded>drawFocusIfNeeded</a></code>(<var>path</var>, <var>element</var>)<dd>
 
-
     <p>If the given element is <a href=#focused id=drawing-paths-to-the-canvas:focused>focused</a>, draws a focus ring around the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-6>current
     default path</a> or the given path, following the platform conventions for focus rings.</p>
 
-   <dt><var>shouldDraw</var> = <var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawcustomfocusring><a href=#dom-context-2d-drawcustomfocusring>drawCustomFocusRing</a></code>(<var>element</var>)<dt><var>shouldDraw</var> = <var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawcustomfocusring-2><a href=#dom-context-2d-drawcustomfocusring>drawCustomFocusRing</a></code>(<var>path</var>, <var>element</var>)<dd>
-
-    <p>If the given element is <a href=#focused id=drawing-paths-to-the-canvas:focused-2>focused</a>, and the user has configured his system to draw
-    focus rings in a particular manner (for example, high contrast focus rings), draws a focus ring
-    around the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-7>current default path</a> or the given path and returns false.</p>
-
-    <p>Otherwise, returns true if the given element is <a href=#focused id=drawing-paths-to-the-canvas:focused-3>focused</a>, and false otherwise.
-    This can thus be used to determine when to draw a focus ring (see <a href=#drawCustomFocusRingExample>the example</a> below).</p>
-
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-scrollpathintoview><a href=#dom-context-2d-scrollpathintoview>scrollPathIntoView</a></code>()<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-scrollpathintoview-2><a href=#dom-context-2d-scrollpathintoview>scrollPathIntoView</a></code>(<var>path</var>)<dd>
 
-    <p>Scrolls the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-8>current default path</a> or the given path into view. This is especially
+    <p>Scrolls the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-7>current default path</a> or the given path into view. This is especially
     useful on devices with small screens, where the whole canvas might not be visible at once.</p>
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-clip><a href=#dom-context-2d-clip>clip</a></code>( [ <var>fillRule</var> ] )<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-clip-2><a href=#dom-context-2d-clip>clip</a></code>(<var>path</var> [, <var>fillRule</var> ] )<dd>
 
-    <p>Further constrains the clipping region to the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-9>current default path</a> or the given
+    <p>Further constrains the clipping region to the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-8>current default path</a> or the given
     path, using the given fill rule to determine what points are in the path.</p>
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-resetclip><a href=#dom-context-2d-resetclip>resetClip</a></code>()<dd>
@@ -48818,31 +48806,31 @@
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinpath><a href=#dom-context-2d-ispointinpath>isPointInPath</a></code>(<var>x</var>, <var>y</var> [, <var>fillRule</var> ] )<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinpath-2><a href=#dom-context-2d-ispointinpath>isPointInPath</a></code>(<var>path</var>, <var>x</var>, <var>y</var> [, <var>fillRule</var> ] )<dd>
 
-    <p>Returns true if the given point is in the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-10>current default path</a> or the given
+    <p>Returns true if the given point is in the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-9>current default path</a> or the given
     path, using the given fill rule to determine what points are in the path.</p>
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinstroke><a href=#dom-context-2d-ispointinstroke>isPointInStroke</a></code>(<var>x</var>, <var>y</var>)<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinstroke-2><a href=#dom-context-2d-ispointinstroke>isPointInStroke</a></code>(<var>path</var>, <var>x</var>, <var>y</var>)<dd>
 
     <p>Returns true if the given point would be in the region covered by the stroke of the
-    <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-11>current default path</a> or the given path, given the current stroke style.</p>
+    <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-10>current default path</a> or the given path, given the current stroke style.</p>
 
    </dl>
 
   
 
   <p>The <dfn id=dom-context-2d-beginpath><code>beginPath()</code></dfn> method must empty the
-  list of subpaths in the context's <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-12>current default path</a> so that the it once again has
+  list of subpaths in the context's <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-11>current default path</a> so that the it once again has
   zero subpaths.</p>
 
   <p>Where the following method definitions use the term <i>intended path</i>, it means the
-  <code id=drawing-paths-to-the-canvas:path2d><a href=#path2d>Path2D</a></code> argument, if one was provided, or the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-13>current default path</a>
+  <code id=drawing-paths-to-the-canvas:path2d><a href=#path2d>Path2D</a></code> argument, if one was provided, or the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-12>current default path</a>
   otherwise.</p>
 
   <p>When the intended path is a <code id=drawing-paths-to-the-canvas:path2d-2><a href=#path2d>Path2D</a></code> object, the coordinates and lines of its
   subpaths must be transformed according to the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#transformations id=drawing-paths-to-the-canvas:transformations>current transformation matrix</a> when used by these
   methods (without affecting the <code id=drawing-paths-to-the-canvas:path2d-3><a href=#path2d>Path2D</a></code> object itself). When the intended path is the
-  <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-14>current default path</a>, it is not affected by the transform. (This is because
-  transformations already affect the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-15>current default path</a> when it is constructed, so
+  <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-13>current default path</a>, it is not affected by the transform. (This is because
+  transformations already affect the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-14>current default path</a> when it is constructed, so
   applying it when it is painted as well would result in a double transformation.)</p>
 
   <p>The <dfn id=dom-context-2d-fill><code>fill()</code></dfn> method must fill all the
@@ -48859,23 +48847,22 @@
   painted.</p>
 
   <p class=note>The stroke <em>style</em> is affected by the transformation during painting, even
-  if the intended path is the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-16>current default path</a>.</p>
+  if the intended path is the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-15>current default path</a>.</p>
 
-  <p>Paths, when filled or stroked, must be painted without affecting the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-17>current default
+  <p>Paths, when filled or stroked, must be painted without affecting the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-16>current default
   path</a> or any <code id=drawing-paths-to-the-canvas:path2d-4><a href=#path2d>Path2D</a></code> objects, and must be subject to <a href=#shadows id=drawing-paths-to-the-canvas:shadows>shadow effects</a>, <a href=#dom-context-2d-globalalpha id=drawing-paths-to-the-canvas:dom-context-2d-globalalpha>global
   alpha</a>, the <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region>clipping region</a>, and <a href=#dom-context-2d-globalcompositeoperation id=drawing-paths-to-the-canvas:dom-context-2d-globalcompositeoperation>global composition operators</a>. (The effect
   of transformations is described above and varies based on which path is being used.)</p>
 
   <hr>
 
-  <p id=dom-context-2d-drawosfocusring>The <dfn id=dom-context-2d-drawsystemfocusring><code>drawSystemFocusRing(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:<div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27049" title="Should reverse-engineer drawFocusIfNeeded() and update accordingly">27049</a></div>
+  <p id=dom-context-2d-drawosfocusring>The <dfn id=dom-context-2d-drawfocusifneeded><code>drawFocusIfNeeded(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
 
-  <ol><li><p>If <var>element</var> is not <a href=#focused id=drawing-paths-to-the-canvas:focused-4>focused</a> or is not a descendant of the element with
+  <ol><li><p>If <var>element</var> is not <a href=#focused id=drawing-paths-to-the-canvas:focused-2>focused</a> or is not a descendant of the element with
    whose context the method is associated, then abort these steps.<li>
 
-    <p>If the user has requested the use of particular focus rings (e.g. high-contrast focus rings),
-    or if the <var>element</var> would have a focus ring drawn around it, then draw a focus
-    ring of the appropriate style along the intended path, following platform conventions.</p>
+    <p>Draw a focus ring of the appropriate style along the intended path, following platform
+    conventions.</p>
 
     <p class=note>Some platforms only draw focus rings around elements that have been focused from
     the keyboard, and not those focused from the mouse. Other platforms simply don't draw focus
@@ -48902,32 +48889,6 @@
 
    </ol>
 
-  <p>The <dfn id=dom-context-2d-drawcustomfocusring><code>drawCustomFocusRing(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
-
-  <ol><li><p>If <var>element</var> is not <a href=#focused id=drawing-paths-to-the-canvas:focused-5>focused</a> or is not a descendant of the element with
-   whose context the method is associated, then return false and abort these steps.<li><p>Let <var>result</var> be true.<li>
-
-    <p>If the user has requested the use of particular focus rings (e.g. high-contrast focus rings),
-    then draw a focus ring of the appropriate style along the intended path, and set <var>result</var> to false.</p>
-
-    <p>The focus ring should not be subject to the <a href=#shadows id=drawing-paths-to-the-canvas:shadows-3>shadow effects</a>, the
-    <a href=#dom-context-2d-globalalpha id=drawing-paths-to-the-canvas:dom-context-2d-globalalpha-3>global alpha</a>, the <a href=#dom-context-2d-globalcompositeoperation id=drawing-paths-to-the-canvas:dom-context-2d-globalcompositeoperation-3>global composition operators</a>, the <code id=drawing-paths-to-the-canvas:dom-context-2d-fillstyle-3><a href=#dom-context-2d-fillstyle>fillStyle</a></code> attribute, the <code id=drawing-paths-to-the-canvas:dom-context-2d-strokestyle-3><a href=#dom-context-2d-strokestyle>strokeStyle</a></code> attribute, or any of the
-    <code id=drawing-paths-to-the-canvas:canvasdrawingstyles-2><a href=#canvasdrawingstyles>CanvasDrawingStyles</a></code> members, but <em>should</em> be subject to the <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region-3>clipping
-    region</a>. (The effect of transformations is described above and varies based on which path
-    is being used.)</p>
-
-   <li>
-
-    <p>Optionally, run the appropriate step from the following list:</p>
-
-    <dl><dt>If the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-4><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-2>context bitmap mode</a> is <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-2>fixed</a><dd><p><a href=#inform>Inform the user</a> that the focus is at the location given by the
-     intended path. The user agent may wait until the next time the <a href=#event-loop id=drawing-paths-to-the-canvas:event-loop-2>event loop</a> reaches
-     its <i>update the rendering</i> step to optionally inform the user.<dt>Otherwise<dd><p>Add instructions to the <a href=#scratch-bitmap id=drawing-paths-to-the-canvas:scratch-bitmap-2>scratch bitmap</a>'s <a href=#list-of-pending-interface-actions id=drawing-paths-to-the-canvas:list-of-pending-interface-actions-2>list of pending interface
-     actions</a> that <a href=#inform>inform the user</a> that the focus is at the location of
-     the bitmap given by the intended path.</dl>
-
-   <li><p>Return <var>result</var>.</ol>
-
   <p>User agents should not implicitly close open subpaths in the intended path when drawing the
   focus ring.</p>
 
@@ -48940,8 +48901,8 @@
   <hr>
 
   <p>The <dfn id=dom-context-2d-scrollpathintoview><code>scrollPathIntoView()</code></dfn>
-  method, when invoked, if the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-5><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-3>context bitmap mode</a> is <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-3>fixed</a>, must run the following steps; and otherwise, must add
-  instructions to the <a href=#scratch-bitmap id=drawing-paths-to-the-canvas:scratch-bitmap-3>scratch bitmap</a>'s <a href=#list-of-pending-interface-actions id=drawing-paths-to-the-canvas:list-of-pending-interface-actions-3>list of pending interface actions</a>
+  method, when invoked, if the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-4><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-2>context bitmap mode</a> is <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-2>fixed</a>, must run the following steps; and otherwise, must add
+  instructions to the <a href=#scratch-bitmap id=drawing-paths-to-the-canvas:scratch-bitmap-2>scratch bitmap</a>'s <a href=#list-of-pending-interface-actions id=drawing-paths-to-the-canvas:list-of-pending-interface-actions-2>list of pending interface actions</a>
   that run the following steps:</p>
 
   <ol><li><p>Let <var>the specified rectangle</var> be the rectangle of the bounding box of
@@ -48952,8 +48913,8 @@
 
    <li><p>Optionally, <a href=#inform>inform the user</a> that the caret or selection (or both)
    cover <var>the specified rectangle</var> of the canvas. If the
-   <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-6><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-4>context bitmap mode</a> was <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-4>fixed</a> when the method was invoked, the user agent may wait
-   until the next time the <a href=#event-loop id=drawing-paths-to-the-canvas:event-loop-3>event loop</a> reaches its <i>update the rendering</i> step to
+   <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-5><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-3>context bitmap mode</a> was <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-3>fixed</a> when the method was invoked, the user agent may wait
+   until the next time the <a href=#event-loop id=drawing-paths-to-the-canvas:event-loop-2>event loop</a> reaches its <i>update the rendering</i> step to
    optionally inform the user.</ol>
 
   <p id=inform>"Inform the user", as used in this section, does not imply any persistent state
@@ -48978,7 +48939,7 @@
   
 
   <p>The <dfn id=dom-context-2d-resetclip><code>resetClip()</code></dfn> method must create a
-  new <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region-4>clipping region</a> that is the largest infinite surface. The new clipping region
+  new <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region-3>clipping region</a> that is the largest infinite surface. The new clipping region
   replaces the current clipping region.</p>
 
   <hr>
@@ -48998,7 +48959,7 @@
   must return true if the point given by the <var>x</var> and <var>y</var>
   coordinates passed to the method, when treated as coordinates in the canvas coordinate space
   unaffected by the current transformation, is inside the path that results from <a href=#trace-a-path id=drawing-paths-to-the-canvas:trace-a-path-3>tracing</a> the intended path, using the <a href=#dom-context-2d-fillrule-nonzero id=drawing-paths-to-the-canvas:dom-context-2d-fillrule-nonzero-2>non-zero winding rule</a>, and using the
-  <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-7><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object for the line styles; and must return false otherwise.
+  <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-6><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object for the line styles; and must return false otherwise.
   Points on the resulting path must be considered to be inside the path. If either of the arguments
   is infinite or NaN, then the method must return false.</p>
 
@@ -49037,10 +48998,7 @@
    }
 <strong>   context.beginPath();
    context.rect(x-7, y-7, 12 + metrics.width+2, 14);
-   if (paint && context.drawCustomFocusRing(element)) {
-     context.strokeStyle = 'silver';
-     context.stroke();
-   }
+   context.drawFocusIfNeeded(element)) {
 </strong>   context.restore();
  }
  function drawBase() { /* ... */ }
@@ -50142,19 +50100,20 @@
 
   <h6 id=best-practices>4.12.4.2.21 Best practices</h6>
 
-  <p><i>This section is non-normative.</i></p>
-
   <p>When a canvas is interactive, authors should include focusable elements in the element's
   fallback content corresponding to each focusable part of the canvas, as in the <a href=#drawCustomFocusRingExample>example above</a>.</p>
 
   <p>To expose text and interactive content on a <code id=best-practices:the-canvas-element><a href=#the-canvas-element>canvas</a></code> to users of accessibility
   tools, authors should use the <code id=best-practices:dom-context-2d-addhitregion><a href=#dom-context-2d-addhitregion>addHitRegion()</a></code>
   API. When rendering focus rings, to ensure that focus rings have the appearance of native focus
-  rings, authors should use the <code id=best-practices:dom-context-2d-drawsystemfocusring><a href=#dom-context-2d-drawsystemfocusring>drawSystemFocusRing()</a></code> method, passing it the
+  rings, authors should use the <code id=best-practices:dom-context-2d-drawfocusifneeded><a href=#dom-context-2d-drawfocusifneeded>drawFocusIfNeeded()</a></code> method, passing it the
   element for which a ring is being drawn. This method only draws the focus ring if the element is
   <a href=#focused id=best-practices:focused>focused</a>, so that it can simply be called whenever drawing the element, without
   checking whether the element is focused or not first.</p>
 
+  <p>In addition to drawing focus rings, authors should use the <code id=best-practices:dom-context-2d-scrollpathintoview><a href=#dom-context-2d-scrollpathintoview>scrollPathIntoView()</a></code> method when an element in
+  the canvas is focused, to make sure it is visible on the screen (if applicable).</p>
+
   <p id=no-text-editing-in-canvas-please>Authors should avoid implementing text editing controls
   using the <code id=best-practices:the-canvas-element-2><a href=#the-canvas-element>canvas</a></code> element. Doing so has a large number of disadvantages:</p>
 
@@ -68598,7 +68557,7 @@
 
 
 
-  <h3 id=broadcasting-to-other-browsing-contexts>9.6 <dfn>Broadcasting to other browsing contexts</dfn></h3><div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27035" title="BroadcastChannel uses the responsible document for Workers accidentally">27035</a></div>
+  <h3 id=broadcasting-to-other-browsing-contexts>9.6 <dfn>Broadcasting to other browsing contexts</dfn></h3>
 
   <p>Pages on a single <a href=#origin-2 id=broadcasting-to-other-browsing-contexts:origin-2>origin</a> opened by the same user in the same user agent but in
   different unrelated <a href=#browsing-context id=broadcasting-to-other-browsing-contexts:browsing-context>browsing contexts</a> sometimes need to
@@ -69984,7 +69943,7 @@
   </table>
 
 
-  <h5 id=script-settings-for-workers>10.2.6.2 Script settings for workers</h5><div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27143" title="There's no reason to set a "responsible browsing context" since it is never used. Not having it for  [...]">27143</a>, <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27144" title="API base URL says to return /worker URL/ but that variable does not exist in the scope of this algorithm. I think you meant /script address/.">27144</a>, <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27145" title="I think it would be cleaner if the sole purpose we had responsible document for workers for was fact [...]">27145</a></div>
+  <h5 id=script-settings-for-workers>10.2.6.2 Script settings for workers</h5><div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27143" title="There's no reason to set a "responsible browsing context" since it is never used. Not having it for  [...]">27143</a>, <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27144" title="API base URL says to return /worker URL/ but that variable does not exist in the scope of this algorithm. I think you meant /script address/.">27144</a></div>
 
   <p>When the user agent is required to <dfn id=set-up-a-worker-environment-settings-object>set up a worker environment settings object</dfn>, given a
   <var>worker global scope</var> and a <a href=#url id=script-settings-for-workers:url>URL</a> <var>script

Modified: index
===================================================================
--- index	2014-11-19 23:35:39 UTC (rev 8853)
+++ index	2014-11-20 00:14:29 UTC (rev 8854)
@@ -46544,19 +46544,17 @@
   void <a href=#dom-context-2d-fill id=2dcontext:dom-context-2d-fill-2>fill</a>(<a href=#path2d id=2dcontext:path2d>Path2D</a> path, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-2>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-3>nonzero</a>");
   void <a href=#dom-context-2d-stroke id=2dcontext:dom-context-2d-stroke>stroke</a>();
   void <a href=#dom-context-2d-stroke id=2dcontext:dom-context-2d-stroke-2>stroke</a>(<a href=#path2d id=2dcontext:path2d-2>Path2D</a> path);
-  void <a href=#dom-context-2d-drawsystemfocusring id=2dcontext:dom-context-2d-drawsystemfocusring>drawSystemFocusRing</a>(<a href=#element id=2dcontext:element>Element</a> element);
-  void <a href=#dom-context-2d-drawsystemfocusring id=2dcontext:dom-context-2d-drawsystemfocusring-2>drawSystemFocusRing</a>(<a href=#path2d id=2dcontext:path2d-3>Path2D</a> path, <a href=#element id=2dcontext:element-2>Element</a> element);
-  boolean <a href=#dom-context-2d-drawcustomfocusring id=2dcontext:dom-context-2d-drawcustomfocusring>drawCustomFocusRing</a>(<a href=#element id=2dcontext:element-3>Element</a> element);
-  boolean <a href=#dom-context-2d-drawcustomfocusring id=2dcontext:dom-context-2d-drawcustomfocusring-2>drawCustomFocusRing</a>(<a href=#path2d id=2dcontext:path2d-4>Path2D</a> path, <a href=#element id=2dcontext:element-4>Element</a> element);
+  void <a href=#dom-context-2d-drawfocusifneeded id=2dcontext:dom-context-2d-drawfocusifneeded>drawFocusIfNeeded</a>(<a href=#element id=2dcontext:element>Element</a> element);
+  void <a href=#dom-context-2d-drawfocusifneeded id=2dcontext:dom-context-2d-drawfocusifneeded-2>drawFocusIfNeeded</a>(<a href=#path2d id=2dcontext:path2d-3>Path2D</a> path, <a href=#element id=2dcontext:element-2>Element</a> element);
   void <a href=#dom-context-2d-scrollpathintoview id=2dcontext:dom-context-2d-scrollpathintoview>scrollPathIntoView</a>();
-  void <a href=#dom-context-2d-scrollpathintoview id=2dcontext:dom-context-2d-scrollpathintoview-2>scrollPathIntoView</a>(<a href=#path2d id=2dcontext:path2d-5>Path2D</a> path);
+  void <a href=#dom-context-2d-scrollpathintoview id=2dcontext:dom-context-2d-scrollpathintoview-2>scrollPathIntoView</a>(<a href=#path2d id=2dcontext:path2d-4>Path2D</a> path);
   void <a href=#dom-context-2d-clip id=2dcontext:dom-context-2d-clip>clip</a>(optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-3>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-4>nonzero</a>");
-  void <a href=#dom-context-2d-clip id=2dcontext:dom-context-2d-clip-2>clip</a>(<a href=#path2d id=2dcontext:path2d-6>Path2D</a> path, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-4>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-5>nonzero</a>");
+  void <a href=#dom-context-2d-clip id=2dcontext:dom-context-2d-clip-2>clip</a>(<a href=#path2d id=2dcontext:path2d-5>Path2D</a> path, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-4>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-5>nonzero</a>");
   void <a href=#dom-context-2d-resetclip id=2dcontext:dom-context-2d-resetclip>resetClip</a>();
   boolean <a href=#dom-context-2d-ispointinpath id=2dcontext:dom-context-2d-ispointinpath>isPointInPath</a>(unrestricted double x, unrestricted double y, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-5>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-6>nonzero</a>");
-  boolean <a href=#dom-context-2d-ispointinpath id=2dcontext:dom-context-2d-ispointinpath-2>isPointInPath</a>(<a href=#path2d id=2dcontext:path2d-7>Path2D</a> path, unrestricted double x, unrestricted double y, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-6>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-7>nonzero</a>");
+  boolean <a href=#dom-context-2d-ispointinpath id=2dcontext:dom-context-2d-ispointinpath-2>isPointInPath</a>(<a href=#path2d id=2dcontext:path2d-6>Path2D</a> path, unrestricted double x, unrestricted double y, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-6>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-7>nonzero</a>");
   boolean <a href=#dom-context-2d-ispointinstroke id=2dcontext:dom-context-2d-ispointinstroke>isPointInStroke</a>(unrestricted double x, unrestricted double y);
-  boolean <a href=#dom-context-2d-ispointinstroke id=2dcontext:dom-context-2d-ispointinstroke-2>isPointInStroke</a>(<a href=#path2d id=2dcontext:path2d-8>Path2D</a> path, unrestricted double x, unrestricted double y);
+  boolean <a href=#dom-context-2d-ispointinstroke id=2dcontext:dom-context-2d-ispointinstroke-2>isPointInStroke</a>(<a href=#path2d id=2dcontext:path2d-7>Path2D</a> path, unrestricted double x, unrestricted double y);
 
   // text (see also the <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-2>CanvasDrawingStyles</a> interface)
   void <a href=#dom-context-2d-filltext id=2dcontext:dom-context-2d-filltext>fillText</a>(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
@@ -46650,13 +46648,13 @@
 };
 
 dictionary <dfn id=hitregionoptions>HitRegionOptions</dfn> {
-  <a href=#path2d id=2dcontext:path2d-9>Path2D</a>? <a href=#dom-hitregionoptions-path id=2dcontext:dom-hitregionoptions-path>path</a> = null;
+  <a href=#path2d id=2dcontext:path2d-8>Path2D</a>? <a href=#dom-hitregionoptions-path id=2dcontext:dom-hitregionoptions-path>path</a> = null;
   <a href=#canvasfillrule id=2dcontext:canvasfillrule-7>CanvasFillRule</a> <a href=#dom-hitregionoptions-fillrule id=2dcontext:dom-hitregionoptions-fillrule>fillRule</a> = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-8>nonzero</a>";
   DOMString <a href=#dom-hitregionoptions-id id=2dcontext:dom-hitregionoptions-id>id</a> = ""; 
   DOMString? <a href=#dom-hitregionoptions-parentid id=2dcontext:dom-hitregionoptions-parentid>parentID</a> = null;
   DOMString <a href=#dom-hitregionoptions-cursor id=2dcontext:dom-hitregionoptions-cursor>cursor</a> = "inherit";
   // for control-backed regions:
-  <a href=#element id=2dcontext:element-5>Element</a>? <a href=#dom-hitregionoptions-control id=2dcontext:dom-hitregionoptions-control>control</a> = null;
+  <a href=#element id=2dcontext:element-3>Element</a>? <a href=#dom-hitregionoptions-control id=2dcontext:dom-hitregionoptions-control>control</a> = null;
   // for unbacked regions:
   DOMString? <a href=#dom-hitregionoptions-label id=2dcontext:dom-hitregionoptions-label>label</a> = null;
   DOMString? <a href=#dom-hitregionoptions-role id=2dcontext:dom-hitregionoptions-role>role</a> = null;
@@ -46671,23 +46669,23 @@
   readonly attribute <a href=#uint8clampedarray id=2dcontext:uint8clampedarray-2>Uint8ClampedArray</a> <a href=#dom-imagedata-data id=2dcontext:dom-imagedata-data>data</a>;
 };
 
-[<a href=#dom-drawingstyle id=2dcontext:dom-drawingstyle>Constructor</a>(optional <a href=#element id=2dcontext:element-6>Element</a> scope), Exposed=(Window,Worker)]
+[<a href=#dom-drawingstyle id=2dcontext:dom-drawingstyle>Constructor</a>(optional <a href=#element id=2dcontext:element-4>Element</a> scope), Exposed=(Window,Worker)]
 interface <dfn id=drawingstyle>DrawingStyle</dfn> { };
 <a href=#drawingstyle id=2dcontext:drawingstyle>DrawingStyle</a> implements <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-4>CanvasDrawingStyles</a>;
 
 [<a href=#dom-path2d id=2dcontext:dom-path2d>Constructor</a>,
- <a href=#dom-path2d-copy id=2dcontext:dom-path2d-copy>Constructor</a>(<a href=#path2d id=2dcontext:path2d-10>Path2D</a> path),
- <a href=#dom-path2d-merge id=2dcontext:dom-path2d-merge>Constructor</a>(<a href=#path2d id=2dcontext:path2d-11>Path2D</a>[] paths, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-8>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-9>nonzero</a>"),
+ <a href=#dom-path2d-copy id=2dcontext:dom-path2d-copy>Constructor</a>(<a href=#path2d id=2dcontext:path2d-9>Path2D</a> path),
+ <a href=#dom-path2d-merge id=2dcontext:dom-path2d-merge>Constructor</a>(<a href=#path2d id=2dcontext:path2d-10>Path2D</a>[] paths, optional <a href=#canvasfillrule id=2dcontext:canvasfillrule-8>CanvasFillRule</a> fillRule = "<a href=#dom-context-2d-fillrule-nonzero id=2dcontext:dom-context-2d-fillrule-nonzero-9>nonzero</a>"),
  <a href=#dom-path2d-withdata id=2dcontext:dom-path2d-withdata>Constructor</a>(DOMString d), Exposed=(Window,Worker)]
 interface <dfn id=path2d>Path2D</dfn> {
-  void <a href=#dom-path2d-addpath id=2dcontext:dom-path2d-addpath>addPath</a>(<a href=#path2d id=2dcontext:path2d-12>Path2D</a> path, optional <a href=#svgmatrix id=2dcontext:svgmatrix-3>SVGMatrix</a>? transformation = null);
-  void <a href=#dom-path2d-addpathbystrokingpath id=2dcontext:dom-path2d-addpathbystrokingpath>addPathByStrokingPath</a>(<a href=#path2d id=2dcontext:path2d-13>Path2D</a> path, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-5>CanvasDrawingStyles</a> styles, optional <a href=#svgmatrix id=2dcontext:svgmatrix-4>SVGMatrix</a>? transformation = null);
+  void <a href=#dom-path2d-addpath id=2dcontext:dom-path2d-addpath>addPath</a>(<a href=#path2d id=2dcontext:path2d-11>Path2D</a> path, optional <a href=#svgmatrix id=2dcontext:svgmatrix-3>SVGMatrix</a>? transformation = null);
+  void <a href=#dom-path2d-addpathbystrokingpath id=2dcontext:dom-path2d-addpathbystrokingpath>addPathByStrokingPath</a>(<a href=#path2d id=2dcontext:path2d-12>Path2D</a> path, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-5>CanvasDrawingStyles</a> styles, optional <a href=#svgmatrix id=2dcontext:svgmatrix-4>SVGMatrix</a>? transformation = null);
   void <a href=#dom-path2d-addtext id=2dcontext:dom-path2d-addtext>addText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-6>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-5>SVGMatrix</a>? transformation, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
   void <a href=#dom-path2d-addpathbystrokingtext id=2dcontext:dom-path2d-addpathbystrokingtext>addPathByStrokingText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-7>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-6>SVGMatrix</a>? transformation, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
-  void <a href=#dom-path2d-addtext id=2dcontext:dom-path2d-addtext-2>addText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-8>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-7>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-14>Path2D</a> path, optional unrestricted double maxWidth);
-  void <a href=#dom-path2d-addpathbystrokingtext id=2dcontext:dom-path2d-addpathbystrokingtext-2>addPathByStrokingText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-9>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-8>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-15>Path2D</a> path, optional unrestricted double maxWidth);
+  void <a href=#dom-path2d-addtext id=2dcontext:dom-path2d-addtext-2>addText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-8>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-7>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-13>Path2D</a> path, optional unrestricted double maxWidth);
+  void <a href=#dom-path2d-addpathbystrokingtext id=2dcontext:dom-path2d-addpathbystrokingtext-2>addPathByStrokingText</a>(DOMString text, <a href=#canvasdrawingstyles id=2dcontext:canvasdrawingstyles-9>CanvasDrawingStyles</a> styles, <a href=#svgmatrix id=2dcontext:svgmatrix-8>SVGMatrix</a>? transformation, <a href=#path2d id=2dcontext:path2d-14>Path2D</a> path, optional unrestricted double maxWidth);
 };
-<a href=#path2d id=2dcontext:path2d-16>Path2D</a> implements <a href=#canvaspathmethods id=2dcontext:canvaspathmethods-3>CanvasPathMethods</a>;</pre>
+<a href=#path2d id=2dcontext:path2d-15>Path2D</a> implements <a href=#canvaspathmethods id=2dcontext:canvaspathmethods-3>CanvasPathMethods</a>;</pre>
 
  
 
@@ -48787,29 +48785,19 @@
     <p>Strokes the subpaths of the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-5>current default path</a> or the given path with the
     current stroke style.</p>
 
-   <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawsystemfocusring><a href=#dom-context-2d-drawsystemfocusring>drawSystemFocusRing</a></code>(<var>element</var>)<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawsystemfocusring-2><a href=#dom-context-2d-drawsystemfocusring>drawSystemFocusRing</a></code>(<var>path</var>, <var>element</var>)<dd>
+   <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawfocusifneeded><a href=#dom-context-2d-drawfocusifneeded>drawFocusIfNeeded</a></code>(<var>element</var>)<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawfocusifneeded-2><a href=#dom-context-2d-drawfocusifneeded>drawFocusIfNeeded</a></code>(<var>path</var>, <var>element</var>)<dd>
 
-
     <p>If the given element is <a href=#focused id=drawing-paths-to-the-canvas:focused>focused</a>, draws a focus ring around the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-6>current
     default path</a> or the given path, following the platform conventions for focus rings.</p>
 
-   <dt><var>shouldDraw</var> = <var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawcustomfocusring><a href=#dom-context-2d-drawcustomfocusring>drawCustomFocusRing</a></code>(<var>element</var>)<dt><var>shouldDraw</var> = <var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-drawcustomfocusring-2><a href=#dom-context-2d-drawcustomfocusring>drawCustomFocusRing</a></code>(<var>path</var>, <var>element</var>)<dd>
-
-    <p>If the given element is <a href=#focused id=drawing-paths-to-the-canvas:focused-2>focused</a>, and the user has configured his system to draw
-    focus rings in a particular manner (for example, high contrast focus rings), draws a focus ring
-    around the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-7>current default path</a> or the given path and returns false.</p>
-
-    <p>Otherwise, returns true if the given element is <a href=#focused id=drawing-paths-to-the-canvas:focused-3>focused</a>, and false otherwise.
-    This can thus be used to determine when to draw a focus ring (see <a href=#drawCustomFocusRingExample>the example</a> below).</p>
-
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-scrollpathintoview><a href=#dom-context-2d-scrollpathintoview>scrollPathIntoView</a></code>()<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-scrollpathintoview-2><a href=#dom-context-2d-scrollpathintoview>scrollPathIntoView</a></code>(<var>path</var>)<dd>
 
-    <p>Scrolls the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-8>current default path</a> or the given path into view. This is especially
+    <p>Scrolls the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-7>current default path</a> or the given path into view. This is especially
     useful on devices with small screens, where the whole canvas might not be visible at once.</p>
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-clip><a href=#dom-context-2d-clip>clip</a></code>( [ <var>fillRule</var> ] )<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-clip-2><a href=#dom-context-2d-clip>clip</a></code>(<var>path</var> [, <var>fillRule</var> ] )<dd>
 
-    <p>Further constrains the clipping region to the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-9>current default path</a> or the given
+    <p>Further constrains the clipping region to the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-8>current default path</a> or the given
     path, using the given fill rule to determine what points are in the path.</p>
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-resetclip><a href=#dom-context-2d-resetclip>resetClip</a></code>()<dd>
@@ -48818,31 +48806,31 @@
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinpath><a href=#dom-context-2d-ispointinpath>isPointInPath</a></code>(<var>x</var>, <var>y</var> [, <var>fillRule</var> ] )<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinpath-2><a href=#dom-context-2d-ispointinpath>isPointInPath</a></code>(<var>path</var>, <var>x</var>, <var>y</var> [, <var>fillRule</var> ] )<dd>
 
-    <p>Returns true if the given point is in the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-10>current default path</a> or the given
+    <p>Returns true if the given point is in the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-9>current default path</a> or the given
     path, using the given fill rule to determine what points are in the path.</p>
 
    <dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinstroke><a href=#dom-context-2d-ispointinstroke>isPointInStroke</a></code>(<var>x</var>, <var>y</var>)<dt><var>context</var> . <code id=drawing-paths-to-the-canvas:dom-context-2d-ispointinstroke-2><a href=#dom-context-2d-ispointinstroke>isPointInStroke</a></code>(<var>path</var>, <var>x</var>, <var>y</var>)<dd>
 
     <p>Returns true if the given point would be in the region covered by the stroke of the
-    <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-11>current default path</a> or the given path, given the current stroke style.</p>
+    <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-10>current default path</a> or the given path, given the current stroke style.</p>
 
    </dl>
 
   
 
   <p>The <dfn id=dom-context-2d-beginpath><code>beginPath()</code></dfn> method must empty the
-  list of subpaths in the context's <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-12>current default path</a> so that the it once again has
+  list of subpaths in the context's <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-11>current default path</a> so that the it once again has
   zero subpaths.</p>
 
   <p>Where the following method definitions use the term <i>intended path</i>, it means the
-  <code id=drawing-paths-to-the-canvas:path2d><a href=#path2d>Path2D</a></code> argument, if one was provided, or the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-13>current default path</a>
+  <code id=drawing-paths-to-the-canvas:path2d><a href=#path2d>Path2D</a></code> argument, if one was provided, or the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-12>current default path</a>
   otherwise.</p>
 
   <p>When the intended path is a <code id=drawing-paths-to-the-canvas:path2d-2><a href=#path2d>Path2D</a></code> object, the coordinates and lines of its
   subpaths must be transformed according to the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#transformations id=drawing-paths-to-the-canvas:transformations>current transformation matrix</a> when used by these
   methods (without affecting the <code id=drawing-paths-to-the-canvas:path2d-3><a href=#path2d>Path2D</a></code> object itself). When the intended path is the
-  <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-14>current default path</a>, it is not affected by the transform. (This is because
-  transformations already affect the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-15>current default path</a> when it is constructed, so
+  <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-13>current default path</a>, it is not affected by the transform. (This is because
+  transformations already affect the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-14>current default path</a> when it is constructed, so
   applying it when it is painted as well would result in a double transformation.)</p>
 
   <p>The <dfn id=dom-context-2d-fill><code>fill()</code></dfn> method must fill all the
@@ -48859,23 +48847,22 @@
   painted.</p>
 
   <p class=note>The stroke <em>style</em> is affected by the transformation during painting, even
-  if the intended path is the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-16>current default path</a>.</p>
+  if the intended path is the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-15>current default path</a>.</p>
 
-  <p>Paths, when filled or stroked, must be painted without affecting the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-17>current default
+  <p>Paths, when filled or stroked, must be painted without affecting the <a href=#current-default-path id=drawing-paths-to-the-canvas:current-default-path-16>current default
   path</a> or any <code id=drawing-paths-to-the-canvas:path2d-4><a href=#path2d>Path2D</a></code> objects, and must be subject to <a href=#shadows id=drawing-paths-to-the-canvas:shadows>shadow effects</a>, <a href=#dom-context-2d-globalalpha id=drawing-paths-to-the-canvas:dom-context-2d-globalalpha>global
   alpha</a>, the <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region>clipping region</a>, and <a href=#dom-context-2d-globalcompositeoperation id=drawing-paths-to-the-canvas:dom-context-2d-globalcompositeoperation>global composition operators</a>. (The effect
   of transformations is described above and varies based on which path is being used.)</p>
 
   <hr>
 
-  <p id=dom-context-2d-drawosfocusring>The <dfn id=dom-context-2d-drawsystemfocusring><code>drawSystemFocusRing(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:<div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27049" title="Should reverse-engineer drawFocusIfNeeded() and update accordingly">27049</a></div>
+  <p id=dom-context-2d-drawosfocusring>The <dfn id=dom-context-2d-drawfocusifneeded><code>drawFocusIfNeeded(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
 
-  <ol><li><p>If <var>element</var> is not <a href=#focused id=drawing-paths-to-the-canvas:focused-4>focused</a> or is not a descendant of the element with
+  <ol><li><p>If <var>element</var> is not <a href=#focused id=drawing-paths-to-the-canvas:focused-2>focused</a> or is not a descendant of the element with
    whose context the method is associated, then abort these steps.<li>
 
-    <p>If the user has requested the use of particular focus rings (e.g. high-contrast focus rings),
-    or if the <var>element</var> would have a focus ring drawn around it, then draw a focus
-    ring of the appropriate style along the intended path, following platform conventions.</p>
+    <p>Draw a focus ring of the appropriate style along the intended path, following platform
+    conventions.</p>
 
     <p class=note>Some platforms only draw focus rings around elements that have been focused from
     the keyboard, and not those focused from the mouse. Other platforms simply don't draw focus
@@ -48902,32 +48889,6 @@
 
    </ol>
 
-  <p>The <dfn id=dom-context-2d-drawcustomfocusring><code>drawCustomFocusRing(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
-
-  <ol><li><p>If <var>element</var> is not <a href=#focused id=drawing-paths-to-the-canvas:focused-5>focused</a> or is not a descendant of the element with
-   whose context the method is associated, then return false and abort these steps.<li><p>Let <var>result</var> be true.<li>
-
-    <p>If the user has requested the use of particular focus rings (e.g. high-contrast focus rings),
-    then draw a focus ring of the appropriate style along the intended path, and set <var>result</var> to false.</p>
-
-    <p>The focus ring should not be subject to the <a href=#shadows id=drawing-paths-to-the-canvas:shadows-3>shadow effects</a>, the
-    <a href=#dom-context-2d-globalalpha id=drawing-paths-to-the-canvas:dom-context-2d-globalalpha-3>global alpha</a>, the <a href=#dom-context-2d-globalcompositeoperation id=drawing-paths-to-the-canvas:dom-context-2d-globalcompositeoperation-3>global composition operators</a>, the <code id=drawing-paths-to-the-canvas:dom-context-2d-fillstyle-3><a href=#dom-context-2d-fillstyle>fillStyle</a></code> attribute, the <code id=drawing-paths-to-the-canvas:dom-context-2d-strokestyle-3><a href=#dom-context-2d-strokestyle>strokeStyle</a></code> attribute, or any of the
-    <code id=drawing-paths-to-the-canvas:canvasdrawingstyles-2><a href=#canvasdrawingstyles>CanvasDrawingStyles</a></code> members, but <em>should</em> be subject to the <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region-3>clipping
-    region</a>. (The effect of transformations is described above and varies based on which path
-    is being used.)</p>
-
-   <li>
-
-    <p>Optionally, run the appropriate step from the following list:</p>
-
-    <dl><dt>If the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-4><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-2>context bitmap mode</a> is <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-2>fixed</a><dd><p><a href=#inform>Inform the user</a> that the focus is at the location given by the
-     intended path. The user agent may wait until the next time the <a href=#event-loop id=drawing-paths-to-the-canvas:event-loop-2>event loop</a> reaches
-     its <i>update the rendering</i> step to optionally inform the user.<dt>Otherwise<dd><p>Add instructions to the <a href=#scratch-bitmap id=drawing-paths-to-the-canvas:scratch-bitmap-2>scratch bitmap</a>'s <a href=#list-of-pending-interface-actions id=drawing-paths-to-the-canvas:list-of-pending-interface-actions-2>list of pending interface
-     actions</a> that <a href=#inform>inform the user</a> that the focus is at the location of
-     the bitmap given by the intended path.</dl>
-
-   <li><p>Return <var>result</var>.</ol>
-
   <p>User agents should not implicitly close open subpaths in the intended path when drawing the
   focus ring.</p>
 
@@ -48940,8 +48901,8 @@
   <hr>
 
   <p>The <dfn id=dom-context-2d-scrollpathintoview><code>scrollPathIntoView()</code></dfn>
-  method, when invoked, if the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-5><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-3>context bitmap mode</a> is <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-3>fixed</a>, must run the following steps; and otherwise, must add
-  instructions to the <a href=#scratch-bitmap id=drawing-paths-to-the-canvas:scratch-bitmap-3>scratch bitmap</a>'s <a href=#list-of-pending-interface-actions id=drawing-paths-to-the-canvas:list-of-pending-interface-actions-3>list of pending interface actions</a>
+  method, when invoked, if the <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-4><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-2>context bitmap mode</a> is <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-2>fixed</a>, must run the following steps; and otherwise, must add
+  instructions to the <a href=#scratch-bitmap id=drawing-paths-to-the-canvas:scratch-bitmap-2>scratch bitmap</a>'s <a href=#list-of-pending-interface-actions id=drawing-paths-to-the-canvas:list-of-pending-interface-actions-2>list of pending interface actions</a>
   that run the following steps:</p>
 
   <ol><li><p>Let <var>the specified rectangle</var> be the rectangle of the bounding box of
@@ -48952,8 +48913,8 @@
 
    <li><p>Optionally, <a href=#inform>inform the user</a> that the caret or selection (or both)
    cover <var>the specified rectangle</var> of the canvas. If the
-   <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-6><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-4>context bitmap mode</a> was <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-4>fixed</a> when the method was invoked, the user agent may wait
-   until the next time the <a href=#event-loop id=drawing-paths-to-the-canvas:event-loop-3>event loop</a> reaches its <i>update the rendering</i> step to
+   <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-5><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#concept-canvas-context-bitmap-mode id=drawing-paths-to-the-canvas:concept-canvas-context-bitmap-mode-3>context bitmap mode</a> was <a href=#concept-canvas-fixed id=drawing-paths-to-the-canvas:concept-canvas-fixed-3>fixed</a> when the method was invoked, the user agent may wait
+   until the next time the <a href=#event-loop id=drawing-paths-to-the-canvas:event-loop-2>event loop</a> reaches its <i>update the rendering</i> step to
    optionally inform the user.</ol>
 
   <p id=inform>"Inform the user", as used in this section, does not imply any persistent state
@@ -48978,7 +48939,7 @@
   
 
   <p>The <dfn id=dom-context-2d-resetclip><code>resetClip()</code></dfn> method must create a
-  new <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region-4>clipping region</a> that is the largest infinite surface. The new clipping region
+  new <a href=#clipping-region id=drawing-paths-to-the-canvas:clipping-region-3>clipping region</a> that is the largest infinite surface. The new clipping region
   replaces the current clipping region.</p>
 
   <hr>
@@ -48998,7 +48959,7 @@
   must return true if the point given by the <var>x</var> and <var>y</var>
   coordinates passed to the method, when treated as coordinates in the canvas coordinate space
   unaffected by the current transformation, is inside the path that results from <a href=#trace-a-path id=drawing-paths-to-the-canvas:trace-a-path-3>tracing</a> the intended path, using the <a href=#dom-context-2d-fillrule-nonzero id=drawing-paths-to-the-canvas:dom-context-2d-fillrule-nonzero-2>non-zero winding rule</a>, and using the
-  <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-7><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object for the line styles; and must return false otherwise.
+  <code id=drawing-paths-to-the-canvas:canvasrenderingcontext2d-6><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object for the line styles; and must return false otherwise.
   Points on the resulting path must be considered to be inside the path. If either of the arguments
   is infinite or NaN, then the method must return false.</p>
 
@@ -49037,10 +48998,7 @@
    }
 <strong>   context.beginPath();
    context.rect(x-7, y-7, 12 + metrics.width+2, 14);
-   if (paint && context.drawCustomFocusRing(element)) {
-     context.strokeStyle = 'silver';
-     context.stroke();
-   }
+   context.drawFocusIfNeeded(element)) {
 </strong>   context.restore();
  }
  function drawBase() { /* ... */ }
@@ -50142,19 +50100,20 @@
 
   <h6 id=best-practices>4.12.4.2.21 Best practices</h6>
 
-  <p><i>This section is non-normative.</i></p>
-
   <p>When a canvas is interactive, authors should include focusable elements in the element's
   fallback content corresponding to each focusable part of the canvas, as in the <a href=#drawCustomFocusRingExample>example above</a>.</p>
 
   <p>To expose text and interactive content on a <code id=best-practices:the-canvas-element><a href=#the-canvas-element>canvas</a></code> to users of accessibility
   tools, authors should use the <code id=best-practices:dom-context-2d-addhitregion><a href=#dom-context-2d-addhitregion>addHitRegion()</a></code>
   API. When rendering focus rings, to ensure that focus rings have the appearance of native focus
-  rings, authors should use the <code id=best-practices:dom-context-2d-drawsystemfocusring><a href=#dom-context-2d-drawsystemfocusring>drawSystemFocusRing()</a></code> method, passing it the
+  rings, authors should use the <code id=best-practices:dom-context-2d-drawfocusifneeded><a href=#dom-context-2d-drawfocusifneeded>drawFocusIfNeeded()</a></code> method, passing it the
   element for which a ring is being drawn. This method only draws the focus ring if the element is
   <a href=#focused id=best-practices:focused>focused</a>, so that it can simply be called whenever drawing the element, without
   checking whether the element is focused or not first.</p>
 
+  <p>In addition to drawing focus rings, authors should use the <code id=best-practices:dom-context-2d-scrollpathintoview><a href=#dom-context-2d-scrollpathintoview>scrollPathIntoView()</a></code> method when an element in
+  the canvas is focused, to make sure it is visible on the screen (if applicable).</p>
+
   <p id=no-text-editing-in-canvas-please>Authors should avoid implementing text editing controls
   using the <code id=best-practices:the-canvas-element-2><a href=#the-canvas-element>canvas</a></code> element. Doing so has a large number of disadvantages:</p>
 
@@ -68598,7 +68557,7 @@
 
 
 
-  <h3 id=broadcasting-to-other-browsing-contexts>9.6 <dfn>Broadcasting to other browsing contexts</dfn></h3><div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27035" title="BroadcastChannel uses the responsible document for Workers accidentally">27035</a></div>
+  <h3 id=broadcasting-to-other-browsing-contexts>9.6 <dfn>Broadcasting to other browsing contexts</dfn></h3>
 
   <p>Pages on a single <a href=#origin-2 id=broadcasting-to-other-browsing-contexts:origin-2>origin</a> opened by the same user in the same user agent but in
   different unrelated <a href=#browsing-context id=broadcasting-to-other-browsing-contexts:browsing-context>browsing contexts</a> sometimes need to
@@ -69984,7 +69943,7 @@
   </table>
 
 
-  <h5 id=script-settings-for-workers>10.2.6.2 Script settings for workers</h5><div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27143" title="There's no reason to set a "responsible browsing context" since it is never used. Not having it for  [...]">27143</a>, <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27144" title="API base URL says to return /worker URL/ but that variable does not exist in the scope of this algorithm. I think you meant /script address/.">27144</a>, <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27145" title="I think it would be cleaner if the sole purpose we had responsible document for workers for was fact [...]">27145</a></div>
+  <h5 id=script-settings-for-workers>10.2.6.2 Script settings for workers</h5><div class=status><input onclick=toggleStatus(this) value=⋰ type=button><p class=bugs><strong>Spec bugs:</strong> <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27143" title="There's no reason to set a "responsible browsing context" since it is never used. Not having it for  [...]">27143</a>, <a href="https://www.w3.org/Bugs/Public/show_bug.cgi?id=27144" title="API base URL says to return /worker URL/ but that variable does not exist in the scope of this algorithm. I think you meant /script address/.">27144</a></div>
 
   <p>When the user agent is required to <dfn id=set-up-a-worker-environment-settings-object>set up a worker environment settings object</dfn>, given a
   <var>worker global scope</var> and a <a href=#url id=script-settings-for-workers:url>URL</a> <var>script

Modified: source
===================================================================
--- source	2014-11-19 23:35:39 UTC (rev 8853)
+++ source	2014-11-20 00:14:29 UTC (rev 8854)
@@ -60455,10 +60455,8 @@
   void <span data-x="dom-context-2d-fill">fill</span>(<span>Path2D</span> path, optional <span>CanvasFillRule</span> fillRule = "<span data-x="dom-context-2d-fillRule-nonzero">nonzero</span>");
   void <span data-x="dom-context-2d-stroke">stroke</span>();
   void <span data-x="dom-context-2d-stroke">stroke</span>(<span>Path2D</span> path);
-  void <span data-x="dom-context-2d-drawSystemFocusRing">drawSystemFocusRing</span>(<span>Element</span> element);
-  void <span data-x="dom-context-2d-drawSystemFocusRing">drawSystemFocusRing</span>(<span>Path2D</span> path, <span>Element</span> element);
-  boolean <span data-x="dom-context-2d-drawCustomFocusRing">drawCustomFocusRing</span>(<span>Element</span> element);
-  boolean <span data-x="dom-context-2d-drawCustomFocusRing">drawCustomFocusRing</span>(<span>Path2D</span> path, <span>Element</span> element);
+  void <span data-x="dom-context-2d-drawFocusIfNeeded">drawFocusIfNeeded</span>(<span>Element</span> element);
+  void <span data-x="dom-context-2d-drawFocusIfNeeded">drawFocusIfNeeded</span>(<span>Path2D</span> path, <span>Element</span> element);
   void <span data-x="dom-context-2d-scrollPathIntoView">scrollPathIntoView</span>();
   void <span data-x="dom-context-2d-scrollPathIntoView">scrollPathIntoView</span>(<span>Path2D</span> path);
   void <span data-x="dom-context-2d-clip">clip</span>(optional <span>CanvasFillRule</span> fillRule = "<span data-x="dom-context-2d-fillRule-nonzero">nonzero</span>");
@@ -64345,34 +64343,17 @@
    </dd>
 
 
-   <dt><var>context</var> . <code subdfn data-x="dom-context-2d-drawSystemFocusRing">drawSystemFocusRing</code>(<var>element</var>)</dt>
-   <dt><var>context</var> . <code data-x="dom-context-2d-drawSystemFocusRing">drawSystemFocusRing</code>(<var>path</var>, <var>element</var>)</dt>
+   <dt><var>context</var> . <code subdfn data-x="dom-context-2d-drawFocusIfNeeded">drawFocusIfNeeded</code>(<var>element</var>)</dt>
+   <dt><var>context</var> . <code data-x="dom-context-2d-drawFocusIfNeeded">drawFocusIfNeeded</code>(<var>path</var>, <var>element</var>)</dt>
 
    <dd>
 
-
     <p>If the given element is <span>focused</span>, draws a focus ring around the <span>current
     default path</span> or the given path, following the platform conventions for focus rings.</p>
 
    </dd>
 
 
-   <dt><var>shouldDraw</var> = <var>context</var> . <code subdfn data-x="dom-context-2d-drawCustomFocusRing">drawCustomFocusRing</code>(<var>element</var>)</dt>
-   <dt><var>shouldDraw</var> = <var>context</var> . <code data-x="dom-context-2d-drawCustomFocusRing">drawCustomFocusRing</code>(<var>path</var>, <var>element</var>)</dt>
-
-   <dd>
-
-    <p>If the given element is <span>focused</span>, and the user has configured his system to draw
-    focus rings in a particular manner (for example, high contrast focus rings), draws a focus ring
-    around the <span>current default path</span> or the given path and returns false.</p>
-
-    <p>Otherwise, returns true if the given element is <span>focused</span>, and false otherwise.
-    This can thus be used to determine when to draw a focus ring (see <a
-    href="#drawCustomFocusRingExample">the example</a> below).</p>
-
-   </dd>
-
-
    <dt><var>context</var> . <code subdfn data-x="dom-context-2d-scrollPathIntoView">scrollPathIntoView</code>()</dt>
    <dt><var>context</var> . <code data-x="dom-context-2d-scrollPathIntoView">scrollPathIntoView</code>(<var>path</var>)</dt>
 
@@ -64472,7 +64453,7 @@
 
   <hr>
 
-  <p id="dom-context-2d-drawosfocusring">The <dfn><code data-x="dom-context-2d-drawSystemFocusRing">drawSystemFocusRing(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
+  <p id="dom-context-2d-drawosfocusring">The <dfn><code data-x="dom-context-2d-drawFocusIfNeeded">drawFocusIfNeeded(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
 
   <ol>
 
@@ -64481,9 +64462,8 @@
 
    <li>
 
-    <p>If the user has requested the use of particular focus rings (e.g. high-contrast focus rings),
-    or if the <var>element</var> would have a focus ring drawn around it, then draw a focus
-    ring of the appropriate style along the intended path, following platform conventions.</p>
+    <p>Draw a focus ring of the appropriate style along the intended path, following platform
+    conventions.</p>
 
     <p class="note">Some platforms only draw focus rings around elements that have been focused from
     the keyboard, and not those focused from the mouse. Other platforms simply don't draw focus
@@ -64530,59 +64510,6 @@
 
   </ol>
 
-  <p>The <dfn><code data-x="dom-context-2d-drawCustomFocusRing">drawCustomFocusRing(<var>element</var>)</code></dfn> method, when invoked, must run the following steps:</p>
-
-  <ol>
-
-   <li><p>If <var>element</var> is not <span>focused</span> or is not a descendant of the element with
-   whose context the method is associated, then return false and abort these steps.</p></li>
-
-   <li><p>Let <var>result</var> be true.</p></li>
-
-   <li>
-
-    <p>If the user has requested the use of particular focus rings (e.g. high-contrast focus rings),
-    then draw a focus ring of the appropriate style along the intended path, and set <var>result</var> to false.</p>
-
-    <p>The focus ring should not be subject to the <span data-x="shadows">shadow effects</span>, the
-    <span data-x="dom-context-2d-globalAlpha">global alpha</span>, the <span
-    data-x="dom-context-2d-globalCompositeOperation">global composition operators</span>, the <code
-    data-x="dom-context-2d-fillStyle">fillStyle</code> attribute, the <code
-    data-x="dom-context-2d-strokeStyle">strokeStyle</code> attribute, or any of the
-    <code>CanvasDrawingStyles</code> members, but <em>should</em> be subject to the <span>clipping
-    region</span>. (The effect of transformations is described above and varies based on which path
-    is being used.)</p>
-
-   </li>
-
-   <li>
-
-    <p>Optionally, run the appropriate step from the following list:</p>
-
-    <dl>
-
-     <dt>If the <code>CanvasRenderingContext2D</code> object's <span
-     data-x="concept-canvas-context-bitmap-mode">context bitmap mode</span> is <span
-     data-x="concept-canvas-fixed">fixed</span></dt>
-
-     <dd><p><a href="#inform">Inform the user</a> that the focus is at the location given by the
-     intended path. The user agent may wait until the next time the <span>event loop</span> reaches
-     its <i>update the rendering</i> step to optionally inform the user.</p></dd>
-
-     <dt>Otherwise</dt>
-
-     <dd><p>Add instructions to the <span>scratch bitmap</span>'s <span>list of pending interface
-     actions</span> that <a href="#inform">inform the user</a> that the focus is at the location of
-     the bitmap given by the intended path.</p></dd>
-
-    </dl>
-
-   </li>
-
-   <li><p>Return <var>result</var>.</p></li>
-
-  </ol>
-
   <p>User agents should not implicitly close open subpaths in the intended path when drawing the
   focus ring.</p>
 
@@ -64711,10 +64638,7 @@
    }
 <strong>   context.beginPath();
    context.rect(x-7, y-7, 12 + metrics.width+2, 14);
-   if (paint && context.drawCustomFocusRing(element)) {
-     context.strokeStyle = 'silver';
-     context.stroke();
-   }
+   context.drawFocusIfNeeded(element)) {
 </strong>   context.restore();
  }
  function drawBase() { /* ... */ }
@@ -66393,8 +66317,6 @@
 
   <h6>Best practices</h6>
 
-  <!-- NON-NORMATIVE SECTION -->
-
   <p>When a canvas is interactive, authors should include focusable elements in the element's
   fallback content corresponding to each focusable part of the canvas, as in the <a
   href="#drawCustomFocusRingExample">example above</a>.</p>
@@ -66403,11 +66325,15 @@
   tools, authors should use the <code data-x="dom-context-2d-addHitRegion">addHitRegion()</code>
   API. When rendering focus rings, to ensure that focus rings have the appearance of native focus
   rings, authors should use the <code
-  data-x="dom-context-2d-drawSystemFocusRing">drawSystemFocusRing()</code> method, passing it the
+  data-x="dom-context-2d-drawFocusIfNeeded">drawFocusIfNeeded()</code> method, passing it the
   element for which a ring is being drawn. This method only draws the focus ring if the element is
   <span>focused</span>, so that it can simply be called whenever drawing the element, without
   checking whether the element is focused or not first.</p>
 
+  <p>In addition to drawing focus rings, authors should use the <code
+  data-x="dom-context-2d-scrollPathIntoView">scrollPathIntoView()</code> method when an element in
+  the canvas is focused, to make sure it is visible on the screen (if applicable).</p>
+
   <p id="no-text-editing-in-canvas-please">Authors should avoid implementing text editing controls
   using the <code>canvas</code> element. Doing so has a large number of disadvantages:</p>
 



More information about the Commit-Watchers mailing list