<!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>[210169] releases/WebKitGTK/webkit-2.14/Source/WebKit2</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/210169">210169</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2016-12-27 08:36:58 -0800 (Tue, 27 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/208495">r208495</a> - Experimental features should not be enabled by default
https://bugs.webkit.org/show_bug.cgi?id=164367

Reviewed by Darin Adler.

We have two classes of experimental features:

(1) Features that are unstable and should be off by default, except for the developers
    currently working on them. This is straightforward to handle; the default value should
    be false.
(2) Features that are still not ready for end users, but are stable enough for testing. We
    want these features to be enabled in testing environments like the bots, MiniBrowser,
    Safari Tech Preview, and so forth, but not in stable release builds.

Implement this. It is better than having all experimental features on unconditionally, and
expecting them to be disabled manually on release branches, which is not something we are
keen to do. An exception is Cocoa ports, which to my knowledge do not currently have any
concept of development builds. These ports seem happy to continue disabling features
manually in release branches, and should continue to do so at least for now.

We also have features that we wish to enumerate at runtime, yet have enabled by default
unconditionally. We do not currently have any infrastructure to support this and should not
abuse the experimental status for this purpose; it requires future work. All settings can
still be toggled at runtime by clients that know about them using the existing runtime
features API.

Lastly, the custom elements feature is ready to be enabled by default, so it's no longer
experimental and can graduate to the list of normal boolean features.

* Shared/WebPreferencesDefinitions.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit214SourceWebKit2ChangeLog">releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit214SourceWebKit2SharedWebPreferencesDefinitionsh">releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/WebPreferencesDefinitions.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit214SourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog (210168 => 210169)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog        2016-12-27 15:26:52 UTC (rev 210168)
+++ releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog        2016-12-27 16:36:58 UTC (rev 210169)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2016-11-09  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
+
+        Experimental features should not be enabled by default
+        https://bugs.webkit.org/show_bug.cgi?id=164367
+
+        Reviewed by Darin Adler.
+
+        We have two classes of experimental features:
+
+        (1) Features that are unstable and should be off by default, except for the developers
+            currently working on them. This is straightforward to handle; the default value should
+            be false.
+        (2) Features that are still not ready for end users, but are stable enough for testing. We
+            want these features to be enabled in testing environments like the bots, MiniBrowser,
+            Safari Tech Preview, and so forth, but not in stable release builds.
+
+        Implement this. It is better than having all experimental features on unconditionally, and
+        expecting them to be disabled manually on release branches, which is not something we are
+        keen to do. An exception is Cocoa ports, which to my knowledge do not currently have any
+        concept of development builds. These ports seem happy to continue disabling features
+        manually in release branches, and should continue to do so at least for now.
+
+        We also have features that we wish to enumerate at runtime, yet have enabled by default
+        unconditionally. We do not currently have any infrastructure to support this and should not
+        abuse the experimental status for this purpose; it requires future work. All settings can
+        still be toggled at runtime by clients that know about them using the existing runtime
+        features API.
+
+        Lastly, the custom elements feature is ready to be enabled by default, so it's no longer
+        experimental and can graduate to the list of normal boolean features.
+
+        * Shared/WebPreferencesDefinitions.h:
+
</ins><span class="cx"> 2016-11-03  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.2 release.
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214SourceWebKit2SharedWebPreferencesDefinitionsh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/WebPreferencesDefinitions.h (210168 => 210169)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/WebPreferencesDefinitions.h        2016-12-27 15:26:52 UTC (rev 210168)
+++ releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/WebPreferencesDefinitions.h        2016-12-27 16:36:58 UTC (rev 210169)
</span><span class="lines">@@ -278,20 +278,30 @@
</span><span class="cx"> #define FOR_EACH_WEBKIT_DEBUG_UINT32_PREFERENCE(macro) \
</span><span class="cx">     macro(VisibleDebugOverlayRegions, visibleDebugOverlayRegions, UInt32, uint32_t, 0, &quot;&quot;, &quot;&quot;)
</span><span class="cx"> 
</span><ins>+// Our XCode build system does not currently have any concept of DEVELOPER_MODE.
+// Cocoa ports must disable experimental features on release branches for now.
+#if ENABLE(DEVELOPER_MODE) || PLATFORM(COCOA)
+#define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED true
+#else
+#define DEFAULT_EXPERIMENTAL_FEATURES_ENABLED false
+#endif
+
</ins><span class="cx"> // For experimental features:
</span><span class="cx"> // - The type should be boolean.
</span><span class="cx"> // - You must provide the last two parameters for all experimental features. They
</span><span class="cx"> //   are the text exposed to the user from the WebKit client.
</span><span class="cx"> // - They should be alphabetically ordered by the human readable text.
</span><del>-// - They should be false by default, although they are currently set to true while we develop client UI.
</del><ins>+// - The default value may be either false (for very unstable features) or
+//   DEFAULT_EXPERIMENTAL_FEATURE_ENABLED (for features that are ready for
+//   wider testing).
</ins><span class="cx"> 
</span><span class="cx"> #define FOR_EACH_WEBKIT_EXPERIMENTAL_FEATURE_PREFERENCE(macro) \
</span><del>-    macro(CSSGridLayoutEnabled, cssGridLayoutEnabled, Bool, bool, false, &quot;CSS Grid&quot;, &quot;CSS Grid Layout Module support&quot;) \
-    macro(CustomElementsEnabled, customElementsEnabled, Bool, bool, false, &quot;Custom Elements&quot;, &quot;HTML Custom Elements prototype&quot;) \
-    macro(GamepadsEnabled, gamepadsEnabled, Bool, bool, false, &quot;Gamepads&quot;, &quot;Web Gamepad API support&quot;) \
-    macro(SpringTimingFunctionEnabled, springTimingFunctionEnabled, Bool, bool, true, &quot;CSS Spring Animations&quot;, &quot;CSS Spring Animation prototype&quot;) \
-    macro(WebGL2Enabled, webGL2Enabled, Bool, bool, true, &quot;WebGL 2.0&quot;, &quot;WebGL 2 prototype&quot;) \
-    macro(VisualViewportEnabled, visualViewportEnabled, Bool, bool, false, &quot;Visual Viewport&quot;, &quot;Use Visual Viewport for fixed elements when zooming&quot;) \
</del><ins>+    macro(CSSGridLayoutEnabled, cssGridLayoutEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;CSS Grid&quot;, &quot;CSS Grid Layout Module support&quot;) \
+    macro(SpringTimingFunctionEnabled, springTimingFunctionEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;CSS Spring Animations&quot;, &quot;CSS Spring Animation prototype&quot;) \
+    macro(CustomElementsEnabled, customElementsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;&quot;, &quot;&quot;) \
+    macro(GamepadsEnabled, gamepadsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;Gamepads&quot;, &quot;Web Gamepad API support&quot;) \
+    macro(WebGL2Enabled, webGL2Enabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;WebGL 2.0&quot;, &quot;WebGL 2 prototype&quot;) \
+    macro(VisualViewportEnabled, visualViewportEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;Visual Viewport&quot;, &quot;Use Visual Viewport for fixed elements when zooming&quot;) \
</ins><span class="cx">     \
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span></span></pre>
</div>
</div>

</body>
</html>