<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[193488] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/193488">193488</a></dd>
<dt>Author</dt> <dd>jond@apple.com</dd>
<dt>Date</dt> <dd>2015-12-04 16:42:28 -0800 (Fri, 04 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Update feature status for up-to-date status information.
https://bugs.webkit.org/show_bug.cgi?id=151821

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* features.json:

Source/WebCore:

* features.json:

Websites/webkit.org:

* wp-content/themes/webkit/status.php:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorefeaturesjson">trunk/Source/JavaScriptCore/features.json</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorefeaturesjson">trunk/Source/WebCore/features.json</a></li>
<li><a href="#trunkWebsiteswebkitorgChangeLog">trunk/Websites/webkit.org/ChangeLog</a></li>
<li><a href="#trunkWebsiteswebkitorgwpcontentthemeswebkitstatusphp">trunk/Websites/webkit.org/wp-content/themes/webkit/status.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (193487 => 193488)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-12-05 00:31:30 UTC (rev 193487)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-12-05 00:42:28 UTC (rev 193488)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2015-12-04  Jonathan Davis  &lt;jond@apple.com&gt;
+
+        Update feature status for up-to-date status information.
+        https://bugs.webkit.org/show_bug.cgi?id=151821
+
+        Reviewed by Timothy Hatcher.
+
+        * features.json:
+
</ins><span class="cx"> 2015-12-04  Saam barati  &lt;sbarati@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         OSR exits that are exception handlers should emit less code eagerly in the thunk generator, and instead, should defer as much code generation as possible to be lazily generated in the exit itself
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorefeaturesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/features.json (193487 => 193488)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/features.json        2015-12-05 00:31:30 UTC (rev 193487)
+++ trunk/Source/JavaScriptCore/features.json        2015-12-05 00:42:28 UTC (rev 193488)
</span><span class="lines">@@ -126,18 +126,6 @@
</span><span class="cx">         &quot;specification&quot;: &quot;ES6&quot;
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        &quot;name&quot;: &quot;for...of Loops&quot;,
-        &quot;status&quot;: {
-            &quot;status&quot;: &quot;Done&quot;,
-            &quot;enabled-by-default&quot;: true
-        },
-        &quot;url&quot;: &quot;http://people.mozilla.org/~jorendorff/es6-draft.html#sec-for-in-and-for-of-statements&quot;,
-        &quot;documentation-url&quot;: &quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of&quot;,
-        &quot;description&quot;: &quot;The for...of loops iterate over the values provided by the iterator of the target object.&quot;,
-        &quot;specification&quot;: &quot;ES6&quot;,
-        &quot;comment&quot;: &quot;Older versions of WebKit only supported iterating JavaScript arrays.&quot;
-    },
-    {
</del><span class="cx">         &quot;name&quot;: &quot;Generators&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><span class="cx">             &quot;status&quot;: &quot;In Development&quot;,
</span><span class="lines">@@ -177,17 +165,6 @@
</span><span class="cx">         &quot;specification&quot;: &quot;ES6&quot;
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        &quot;name&quot;: &quot;new.target&quot;,
-        &quot;status&quot;: {
-            &quot;status&quot;: &quot;Done&quot;,
-            &quot;enabled-by-default&quot;: true
-        },
-        &quot;url&quot;: &quot;http://www.ecma-international.org/ecma-262/6.0/#sec-built-in-function-objects&quot;,
-        &quot;documentation-url&quot;: &quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target&quot;,
-        &quot;description&quot;: &quot;new.target allows you to detect if a function or constructor was instantiated with the new operator, or if instead it was called using normal function calling syntax.&quot;,
-        &quot;specification&quot;: &quot;ES6&quot;
-    },
-    {
</del><span class="cx">         &quot;name&quot;: &quot;Number Object Extensions&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><span class="cx">             &quot;status&quot;: &quot;Done&quot;,
</span><span class="lines">@@ -225,9 +202,10 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;Proxy Objects&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;No active development&quot;
</del><ins>+            &quot;status&quot;: &quot;Under Consideration&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;http://www.ecma-international.org/ecma-262/6.0/index.html#sec-proxy-objects&quot;,
</span><ins>+        &quot;webkit-url&quot;: &quot;https://bugs.webkit.org/show_bug.cgi?id=35731&quot;,
</ins><span class="cx">         &quot;specification&quot;: &quot;ES6&quot;,
</span><span class="cx">         &quot;description&quot;: &quot;An intermediary object that defines custom basic behaviors of another object such as property lookup, assignment, enumeration.&quot;,
</span><span class="cx">         &quot;contact&quot;: {
</span><span class="lines">@@ -344,6 +322,29 @@
</span><span class="cx">             &quot;name&quot;: &quot;Yusuke Suzuki&quot;,
</span><span class="cx">             &quot;email&quot;: &quot;utatane.tea@gmail.com&quot;
</span><span class="cx">         }
</span><ins>+    },
+    {
+        &quot;name&quot;: &quot;for...of Loops&quot;,
+        &quot;status&quot;: {
+            &quot;status&quot;: &quot;Done&quot;,
+            &quot;enabled-by-default&quot;: true
+        },
+        &quot;url&quot;: &quot;http://people.mozilla.org/~jorendorff/es6-draft.html#sec-for-in-and-for-of-statements&quot;,
+        &quot;documentation-url&quot;: &quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of&quot;,
+        &quot;description&quot;: &quot;The for...of loops iterate over the values provided by the iterator of the target object.&quot;,
+        &quot;specification&quot;: &quot;ES6&quot;,
+        &quot;comment&quot;: &quot;Older versions of WebKit only supported iterating JavaScript arrays.&quot;
+    },
+    {
+        &quot;name&quot;: &quot;new.target&quot;,
+        &quot;status&quot;: {
+            &quot;status&quot;: &quot;Done&quot;,
+            &quot;enabled-by-default&quot;: true
+        },
+        &quot;url&quot;: &quot;http://www.ecma-international.org/ecma-262/6.0/#sec-built-in-function-objects&quot;,
+        &quot;documentation-url&quot;: &quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target&quot;,
+        &quot;description&quot;: &quot;new.target allows you to detect if a function or constructor was instantiated with the new operator, or if instead it was called using normal function calling syntax.&quot;,
+        &quot;specification&quot;: &quot;ES6&quot;
</ins><span class="cx">     }
</span><span class="cx">     ]
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (193487 => 193488)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-12-05 00:31:30 UTC (rev 193487)
+++ trunk/Source/WebCore/ChangeLog        2015-12-05 00:42:28 UTC (rev 193488)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2015-12-04  Jonathan Davis  &lt;jond@apple.com&gt;
+
+        Update feature status for up-to-date status information.
+        https://bugs.webkit.org/show_bug.cgi?id=151821
+
+        Reviewed by Timothy Hatcher.
+
+        * features.json:
+
</ins><span class="cx"> 2015-12-04  Brady Eidson  &lt;beidson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Modern IDB: Flip test expectations around so we only list failures.
</span></span></pre></div>
<a id="trunkSourceWebCorefeaturesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/features.json (193487 => 193488)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/features.json        2015-12-05 00:31:30 UTC (rev 193487)
+++ trunk/Source/WebCore/features.json        2015-12-05 00:42:28 UTC (rev 193488)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;CSS Painting API Level 1&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;Under consideration&quot;
</del><ins>+            &quot;status&quot;: &quot;Under Consideration&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;https://drafts.css-houdini.org/css-paint-api/&quot;,
</span><span class="cx">         &quot;keywords&quot;: [&quot;css&quot;, &quot;houdini&quot;],
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;CSS Properties and Values API Level 1&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;Under consideration&quot;
</del><ins>+            &quot;status&quot;: &quot;Under Consideration&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;https://drafts.css-houdini.org/css-properties-values-api/&quot;,
</span><span class="cx">         &quot;keywords&quot;: [&quot;css&quot;, &quot;houdini&quot;],
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;Service Workers&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;No active development&quot;
</del><ins>+            &quot;status&quot;: &quot;Under Consideration&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;http://www.w3.org/TR/2015/WD-service-workers-20150625/&quot;,
</span><span class="cx">         &quot;keywords&quot;: [&quot;service workers&quot;],
</span><span class="lines">@@ -209,9 +209,10 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;WebRTC&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;No active development&quot;
</del><ins>+            &quot;status&quot;: &quot;In Development&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;http://www.w3.org/TR/webrtc/&quot;,
</span><ins>+        &quot;webkit-url&quot;: &quot;https://bugs.webkit.org/show_bug.cgi?id=124288&quot;,
</ins><span class="cx">         &quot;keywords&quot;: [&quot;webrtc&quot;],
</span><span class="cx">         &quot;category&quot;: &quot;webapps&quot;,
</span><span class="cx">         &quot;description&quot;: &quot;An API to facilitate real-time communication for browser-to-browser applications.&quot;,
</span><span class="lines">@@ -332,9 +333,10 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;Custom Elements&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;No active development&quot;
</del><ins>+            &quot;status&quot;: &quot;Prototyping&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;http://w3c.github.io/webcomponents/spec/custom/&quot;,
</span><ins>+        &quot;webkit-url&quot;: &quot;https://bugs.webkit.org/show_bug.cgi?id=150225&quot;,
</ins><span class="cx">         &quot;specification&quot;: &quot;Web Components&quot;,
</span><span class="cx">         &quot;description&quot;: &quot;Define a custom HTML tag and associate it with an ES6 class.&quot;,
</span><span class="cx">         &quot;contact&quot;: {
</span><span class="lines">@@ -382,7 +384,7 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;HTML imports&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;No active development&quot;
</del><ins>+            &quot;status&quot;: &quot;Not Considering&quot;
</ins><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;http://w3c.github.io/webcomponents/spec/imports/&quot;,
</span><span class="cx">         &quot;specification&quot;: &quot;Web Components&quot;,
</span><span class="lines">@@ -437,7 +439,7 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;Picture element&quot;,
</span><span class="cx">         &quot;status&quot;: {
</span><del>-            &quot;status&quot;: &quot;In development&quot;,
</del><ins>+            &quot;status&quot;: &quot;In Development&quot;,
</ins><span class="cx">             &quot;enabled-by-default&quot;: false
</span><span class="cx">         },
</span><span class="cx">         &quot;url&quot;: &quot;https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element&quot;,
</span></span></pre></div>
<a id="trunkWebsiteswebkitorgChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Websites/webkit.org/ChangeLog (193487 => 193488)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/ChangeLog        2015-12-05 00:31:30 UTC (rev 193487)
+++ trunk/Websites/webkit.org/ChangeLog        2015-12-05 00:42:28 UTC (rev 193488)
</span><span class="lines">@@ -1,5 +1,14 @@
</span><span class="cx"> 2015-12-04  Jonathan Davis  &lt;jond@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Update feature status for up-to-date status information.
+        https://bugs.webkit.org/show_bug.cgi?id=151821
+
+        Reviewed by Timothy Hatcher.
+
+        * wp-content/themes/webkit/status.php:
+
+2015-12-04  Jonathan Davis  &lt;jond@apple.com&gt;
+
</ins><span class="cx">         Added redirects for old webkit.org archive.
</span><span class="cx"> 
</span><span class="cx">         * .htaccess:
</span></span></pre></div>
<a id="trunkWebsiteswebkitorgwpcontentthemeswebkitstatusphp"></a>
<div class="modfile"><h4>Modified: trunk/Websites/webkit.org/wp-content/themes/webkit/status.php (193487 => 193488)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/wp-content/themes/webkit/status.php        2015-12-05 00:31:30 UTC (rev 193487)
+++ trunk/Websites/webkit.org/wp-content/themes/webkit/status.php        2015-12-05 00:42:28 UTC (rev 193488)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">         xhrRequest.send();
</span><span class="cx">     });
</span><span class="cx"> }
</span><del>-var origin = new URL(&quot;https://svn.webkit.org/&quot;);
</del><ins>+var origin = new URL(&quot;https://&lt;?php echo WP_HOST == &quot;webkit.org&quot; ? &quot;svn.webkit.org&quot; : WP_HOST; ?&gt;/&quot;);
</ins><span class="cx"> var loadJavaScriptCoreFeatures = xhrPromise(new URL(&quot;/repository/webkit/trunk/Source/JavaScriptCore/features.json&quot;, origin));
</span><span class="cx"> var loadWebCoreFeatures = xhrPromise(new URL(&quot;/repository/webkit/trunk/Source/WebCore/features.json&quot;, origin));
</span><span class="cx"> &lt;/script&gt;
</span><span class="lines">@@ -108,8 +108,8 @@
</span><span class="cx">     border-radius: 3px;
</span><span class="cx">     padding: 1em;
</span><span class="cx">     margin: 1em 0 !important;
</span><del>-    max-height: intrinsic;  
-    min-height: 3rem;          
</del><ins>+    max-height: intrinsic;
+    min-height: 3rem;
</ins><span class="cx">     overflow-y: hidden;
</span><span class="cx">     cursor: pointer;
</span><span class="cx">     -webkit-transition: background-color 0.3s ease-in;
</span><span class="lines">@@ -181,6 +181,10 @@
</span><span class="cx">     padding-left: 0.5em;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+.feature-header h3 a {
+    color: #444;
+}
+
</ins><span class="cx"> .feature-header h3 .internal-reference a:hover {
</span><span class="cx">     color: inherit;
</span><span class="cx">     text-decoration: underline;
</span><span class="lines">@@ -202,7 +206,7 @@
</span><span class="cx">     display: inline-block;
</span><span class="cx">     position: relative;
</span><span class="cx">     min-width: 4em;
</span><del>-    text-align: right; 
</del><ins>+    text-align: right;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> .feature-status,
</span><span class="lines">@@ -272,6 +276,16 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+#status-filters .under-consideration,
+.feature-status.under-consideration,
+.feature-status.under-consideration a {
+    color: #cc9d00;
+}
+
+.status-marker.under-consideration {
+    border-color: #FFC500 transparent transparent transparent;
+}
+
</ins><span class="cx"> .feature-status.removed,
</span><span class="cx"> .feature-status.removed a {
</span><span class="cx">     color: #999999;
</span><span class="lines">@@ -281,9 +295,6 @@
</span><span class="cx">     border-color: #999999 transparent transparent transparent;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-
-
-
</del><span class="cx"> .feature-filters {
</span><span class="cx">     position: relative;
</span><span class="cx">     top: 0;
</span><span class="lines">@@ -319,12 +330,19 @@
</span><span class="cx">     top: -3px;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+h3 a[name], .admin-bar h3 a[name] {
+    top: initial;
+    width: auto;
+    display: inline-block;
+    visibility: visible;
+}
+
</ins><span class="cx"> @media only screen and (max-width: 508px) {
</span><span class="cx">     #feature-filters,
</span><span class="cx">     #feature-list {
</span><span class="cx">         width: 100%;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     #feature-filters {
</span><span class="cx">         border: 1px solid #dddddd;
</span><span class="cx">         border-radius: 3px;
</span><span class="lines">@@ -334,7 +352,15 @@
</span><span class="cx">         margin-right: 0;
</span><span class="cx">         margin-bottom: 3rem;
</span><span class="cx">     }
</span><del>-    
</del><ins>+
+    .feature-header h3 {
+        font-size: 2rem;
+    }
+
+    .feature-status {
+        font-size: 1.6rem;
+        margin-top: 0.4rem;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> &lt;/style&gt;
</span><span class="lines">@@ -348,7 +374,7 @@
</span><span class="cx">                 &lt;input type=&quot;text&quot; id=&quot;search&quot; placeholder=&quot;Search filter&amp;hellip;&quot; title=&quot;Filter the feature list.&quot; required&gt;
</span><span class="cx">                 &lt;ul id=&quot;status-filters&quot;&gt;
</span><span class="cx">                 &lt;/ul&gt;
</span><del>-                
</del><ins>+
</ins><span class="cx">             &lt;/form&gt;
</span><span class="cx"> 
</span><span class="cx">             &lt;div id=&quot;feature-list&quot;&gt;
</span><span class="lines">@@ -377,14 +403,14 @@
</span><span class="cx"> 
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> function initializeStatusPage() {
</span><del>-    
</del><ins>+
</ins><span class="cx">     function sortAlphabetically(array) {
</span><span class="cx">         array.sort(function(a, b){
</span><span class="cx">             var aName = a.name.toLowerCase();
</span><span class="cx">             var bName = b.name.toLowerCase();
</span><span class="cx"> 
</span><span class="cx">             var nameCompareResult = aName.localeCompare(bName);
</span><del>-            
</del><ins>+
</ins><span class="cx">             if ( nameCompareResult )
</span><span class="cx">                 return nameCompareResult;
</span><span class="cx"> 
</span><span class="lines">@@ -420,25 +446,30 @@
</span><span class="cx">         var hasReferenceLink = &quot;url&quot; in featureObject;
</span><span class="cx">         var hasContactObject = &quot;contact&quot; in featureObject;
</span><span class="cx">         var hasSpecificationObject = &quot;specification&quot; in featureObject;
</span><del>-        
</del><ins>+
</ins><span class="cx">         container.addEventListener('click', function (e) {
</span><span class="cx">             if ( container.className.indexOf('opened') !== -1 ) {
</span><span class="cx">                 container.className = container.className.replace(' opened','');
</span><span class="cx">             } else container.className += &quot; opened&quot;;
</span><span class="cx">         });
</span><del>-        
</del><ins>+
</ins><span class="cx">         container.className = &quot;feature&quot;;
</span><span class="cx"> 
</span><ins>+        var slug = featureObject.name.toLowerCase().replace(/ /g, '-');
</ins><span class="cx">         if (&quot;features&quot; in featureObject) {
</span><del>-            container.setAttribute(&quot;id&quot;, &quot;specification-&quot; + featureObject.name);
</del><ins>+            container.setAttribute(&quot;id&quot;, &quot;specification-&quot; + slug);
</ins><span class="cx">         } else {
</span><del>-            container.setAttribute(&quot;id&quot;, &quot;feature-&quot; + featureObject.name);
</del><ins>+            container.setAttribute(&quot;id&quot;, &quot;feature-&quot; + slug);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        if (window.location.hash &amp;&amp; window.location.hash == &quot;#&quot; + container.getAttribute('id')) {
+            container.className += &quot; opened&quot;;
+        }
+
</ins><span class="cx">         var cornerStatus = document.createElement('div');
</span><span class="cx">         cornerStatus.className = &quot;status-marker &quot;;
</span><span class="cx">         container.appendChild(cornerStatus);
</span><del>-        
</del><ins>+
</ins><span class="cx">         var descriptionContainer = document.createElement('div');
</span><span class="cx">         descriptionContainer.className = &quot;feature-description&quot;;
</span><span class="cx"> 
</span><span class="lines">@@ -447,7 +478,11 @@
</span><span class="cx">         descriptionContainer.appendChild(featureHeaderContainer);
</span><span class="cx"> 
</span><span class="cx">         var titleElement = document.createElement(&quot;h3&quot;);
</span><del>-        titleElement.textContent = featureObject.name;
</del><ins>+        var anchorLinkElement = document.createElement(&quot;a&quot;);
+        anchorLinkElement.href = &quot;#&quot; + container.getAttribute(&quot;id&quot;);
+        anchorLinkElement.name = container.getAttribute(&quot;id&quot;);
+        anchorLinkElement.textContent = featureObject.name;
+        titleElement.appendChild(anchorLinkElement);
</ins><span class="cx"> 
</span><span class="cx">         // Add sub-feature here
</span><span class="cx">         if (hasSpecificationObject) {
</span><span class="lines">@@ -456,6 +491,7 @@
</span><span class="cx">             specSpan.className = &quot;internal-reference&quot;;
</span><span class="cx">             titleElement.appendChild(specSpan);
</span><span class="cx">         }
</span><ins>+
</ins><span class="cx">         featureHeaderContainer.appendChild(titleElement);
</span><span class="cx"> 
</span><span class="cx">         if (&quot;status&quot; in featureObject) {
</span><span class="lines">@@ -572,11 +608,11 @@
</span><span class="cx">         var inputField = document.getElementById('search');
</span><span class="cx">         var featuresEls = document.querySelectorAll('.features &gt; li');
</span><span class="cx">         var statusFilters = {};
</span><del>-        
</del><ins>+
</ins><span class="cx">         featuresArray.forEach(function(feature, i) {
</span><span class="cx">             feature.el = featuresEls[i];
</span><span class="cx">             feature.visible = true;
</span><del>-            
</del><ins>+
</ins><span class="cx">             if (feature.status != undefined) {
</span><span class="cx">                 featureStatusKey = feature.status.status.toLocaleLowerCase();
</span><span class="cx"> 
</span><span class="lines">@@ -585,9 +621,9 @@
</span><span class="cx"> 
</span><span class="cx">             }
</span><span class="cx">         });
</span><del>-        
</del><ins>+
</ins><span class="cx">         var statusLength = statusFilters.length;
</span><del>-        
</del><ins>+
</ins><span class="cx">         for (var key in statusFilters) {
</span><span class="cx">             var status = statusFilters[key];
</span><span class="cx">             var entry = document.createElement(&quot;li&quot;);
</span><span class="lines">@@ -602,7 +638,7 @@
</span><span class="cx">             entry.appendChild(label);
</span><span class="cx">             statusContainer.appendChild(entry);
</span><span class="cx">         }
</span><del>-                
</del><ins>+
</ins><span class="cx">         filtersForm.addEventListener('click', function (e) {
</span><span class="cx">             if ( filtersForm.className.indexOf('opened') !== -1 ) {
</span><span class="cx">                 filtersForm.className = filtersForm.className.replace(' opened','');
</span><span class="lines">@@ -610,7 +646,7 @@
</span><span class="cx">         });
</span><span class="cx"> 
</span><span class="cx">         inputField.addEventListener('input', search);
</span><del>-        
</del><ins>+
</ins><span class="cx">         var inputs = [].slice.call(filtersForm.getElementsByTagName('input'));
</span><span class="cx">         inputs.forEach(function (input,i) {
</span><span class="cx">             input.addEventListener('click', function (e) {
</span><span class="lines">@@ -634,13 +670,13 @@
</span><span class="cx">     function searchFeatures(featuresArray, searchTerm, statusFilters) {
</span><span class="cx">         featuresArray.forEach(function(feature) {
</span><span class="cx">             var visible = isSearchMatch(feature, searchTerm) &amp;&amp; isStatusFiltered(feature, statusFilters);
</span><del>-            
</del><ins>+
</ins><span class="cx">             if (visible &amp;&amp; !feature.visible) {
</span><span class="cx">                 feature.el.className = 'feature';
</span><span class="cx">             } else if (!visible &amp;&amp; feature.visible) {
</span><span class="cx">                 feature.el.className = 'feature is-hidden';
</span><span class="cx">             }
</span><del>-            
</del><ins>+
</ins><span class="cx">             feature.visible = visible;
</span><span class="cx">         });
</span><span class="cx">     }
</span><span class="lines">@@ -660,11 +696,11 @@
</span><span class="cx">     function isStatusFiltered(feature, activeFilters) {
</span><span class="cx">         if (activeFilters.length == 0)
</span><span class="cx">             return true;
</span><del>-        if (feature.status === undefined) 
</del><ins>+        if (feature.status === undefined)
</ins><span class="cx">             return false;
</span><span class="cx">         if (activeFilters.indexOf(feature.status.status.toLowerCase()) != -1)
</span><span class="cx">             return true;
</span><del>-        
</del><ins>+
</ins><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -700,10 +736,16 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         var everythingToShow = allFeatures.concat(allSpecifications);
</span><del>-        
</del><ins>+
</ins><span class="cx">         sortAlphabetically(everythingToShow);
</span><span class="cx">         renderFeaturesAndSpecifications(everythingToShow);
</span><span class="cx">         initSearch(everythingToShow);
</span><ins>+
+        if (window.location.hash) {
+            var hash = window.location.hash;
+            window.location.hash = &quot;&quot;; // Change hash so navigation takes place
+            window.location.hash = hash;
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     function displayError(error) {
</span></span></pre>
</div>
</div>

</body>
</html>