<!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>[211332] 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/211332">211332</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2017-01-28 01:26:14 -0800 (Sat, 28 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add User Timing Experimental Feature
https://bugs.webkit.org/show_bug.cgi?id=167542
&lt;rdar://problem/22746307&gt;

Reviewed by Ryosuke Niwa.

Source/WebCore:

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::performanceTimelineEnabled):
* page/Performance.idl:
* page/PerformanceEntry.idl:
Make a better RuntimeEnabledFeature named &quot;PerformanceTiming&quot; which
is enabled if either UserTiming or ResourceTiming is enabled. This
will then expose the APIs that are only useful when at least one of
the APIs are available.

* page/PerformanceEntry.cpp:
(WebCore::PerformanceEntry::name): Deleted.
(WebCore::PerformanceEntry::entryType): Deleted.
(WebCore::PerformanceEntry::startTime): Deleted.
(WebCore::PerformanceEntry::duration): Deleted.
* page/PerformanceEntry.h:
(WebCore::PerformanceEntry::name):
(WebCore::PerformanceEntry::entryType):
(WebCore::PerformanceEntry::startTime):
(WebCore::PerformanceEntry::duration):
Inline simple accessors.

* page/PerformanceUserTiming.cpp:
(WebCore::UserTiming::measure):
Fix a bug introduced by ExceptionOr refactoring.

(WebCore::UserTiming::clearMarks):
(WebCore::UserTiming::clearMeasures):
(WebCore::clearPerformanceEntries):
(WebCore::clearPeformanceEntries): Deleted.
Fix method name typo.

Source/WebKit/mac:

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences userTimingEnabled]):
(-[WebPreferences setUserTimingEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Add setting for User Timing runtime enabled feature.

Source/WebKit/win:

* Interfaces/IWebPreferencesPrivate.idl:
* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
(WebPreferences::setUserTimingEnabled):
(WebPreferences::userTimingEnabled):
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):
Add setting for User Timing runtime enabled feature.

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetUserTimingEnabled):
(WKPreferencesGetUserTimingEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Experimental feature. Off for now while we update ResourceTiming
and NavigationTiming to be compatible with Performance Timing 2.

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
* DumpRenderTree/win/DumpRenderTree.cpp:
(enableExperimentalFeatures):

Websites/webkit.org:

* experimental-features.html:

LayoutTests:

* platform/efl/js/dom/global-constructors-attributes-expected.txt:
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* platform/win/js/dom/global-constructors-attributes-expected.txt:
Update results now that experimental User Timing feature is enabled in tests.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformefljsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtkjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacelcapitanjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1jsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformwinjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceidl">trunk/Source/WebCore/page/Performance.idl</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceEntrycpp">trunk/Source/WebCore/page/PerformanceEntry.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceEntryh">trunk/Source/WebCore/page/PerformanceEntry.h</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceEntryidl">trunk/Source/WebCore/page/PerformanceEntry.idl</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceUserTimingcpp">trunk/Source/WebCore/page/PerformanceUserTiming.cpp</a></li>
<li><a href="#trunkSourceWebCorepageRuntimeEnabledFeaturesh">trunk/Source/WebCore/page/RuntimeEnabledFeatures.h</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPreferenceKeysPrivateh">trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPreferencesmm">trunk/Source/WebKit/mac/WebView/WebPreferences.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebPreferencesPrivateh">trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinInterfacesIWebPreferencesPrivateidl">trunk/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl</a></li>
<li><a href="#trunkSourceWebKitwinWebPreferenceKeysPrivateh">trunk/Source/WebKit/win/WebPreferenceKeysPrivate.h</a></li>
<li><a href="#trunkSourceWebKitwinWebPreferencescpp">trunk/Source/WebKit/win/WebPreferences.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebPreferencesh">trunk/Source/WebKit/win/WebPreferences.h</a></li>
<li><a href="#trunkSourceWebKitwinWebViewcpp">trunk/Source/WebKit/win/WebView.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebPreferencesDefinitionsh">trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPreferencescpp">trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPreferencesRefPrivateh">trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreemacDumpRenderTreemm">trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm</a></li>
<li><a href="#trunkToolsDumpRenderTreewinDumpRenderTreecpp">trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp</a></li>
<li><a href="#trunkWebsiteswebkitorgChangeLog">trunk/Websites/webkit.org/ChangeLog</a></li>
<li><a href="#trunkWebsiteswebkitorgexperimentalfeatureshtml">trunk/Websites/webkit.org/experimental-features.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * platform/efl/js/dom/global-constructors-attributes-expected.txt:
+        * platform/gtk/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac/js/dom/global-constructors-attributes-expected.txt:
+        * platform/win/js/dom/global-constructors-attributes-expected.txt:
+        Update results now that experimental User Timing feature is enabled in tests.
+
</ins><span class="cx"> 2017-01-27  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Lift template escape sequence restrictions in tagged templates
</span></span></pre></div>
<a id="trunkLayoutTestsplatformefljsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -993,6 +993,36 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1138,6 +1138,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1178,6 +1178,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacelcapitanjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1173,6 +1173,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1jsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1173,6 +1173,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1168,6 +1168,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwinjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -868,6 +868,21 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::performanceTimelineEnabled):
+        * page/Performance.idl:
+        * page/PerformanceEntry.idl:
+        Make a better RuntimeEnabledFeature named &quot;PerformanceTiming&quot; which
+        is enabled if either UserTiming or ResourceTiming is enabled. This
+        will then expose the APIs that are only useful when at least one of
+        the APIs are available.
+
+        * page/PerformanceEntry.cpp:
+        (WebCore::PerformanceEntry::name): Deleted.
+        (WebCore::PerformanceEntry::entryType): Deleted.
+        (WebCore::PerformanceEntry::startTime): Deleted.
+        (WebCore::PerformanceEntry::duration): Deleted.
+        * page/PerformanceEntry.h:
+        (WebCore::PerformanceEntry::name):
+        (WebCore::PerformanceEntry::entryType):
+        (WebCore::PerformanceEntry::startTime):
+        (WebCore::PerformanceEntry::duration):
+        Inline simple accessors.
+
+        * page/PerformanceUserTiming.cpp:
+        (WebCore::UserTiming::measure):
+        Fix a bug introduced by ExceptionOr refactoring.
+
+        (WebCore::UserTiming::clearMarks):
+        (WebCore::UserTiming::clearMeasures):
+        (WebCore::clearPerformanceEntries):
+        (WebCore::clearPeformanceEntries): Deleted.
+        Fix method name typo.
+
</ins><span class="cx"> 2017-01-27  Dan Bernstein  &lt;mitz@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Ignore Xcode’s project.xcworkspace and userdata directories in this new project like we do
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Performance.idl (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Performance.idl        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/page/Performance.idl        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -45,9 +45,9 @@
</span><span class="cx">     readonly attribute PerformanceTiming timing;
</span><span class="cx"> 
</span><span class="cx">     // https://w3c.github.io/performance-timeline/
</span><del>-    [EnabledAtRuntime=ResourceTiming] PerformanceEntryList getEntries();
-    [EnabledAtRuntime=ResourceTiming] PerformanceEntryList getEntriesByType(DOMString entryType);
-    [EnabledAtRuntime=ResourceTiming] PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType);
</del><ins>+    [EnabledAtRuntime=PerformanceTimeline] PerformanceEntryList getEntries();
+    [EnabledAtRuntime=PerformanceTimeline] PerformanceEntryList getEntriesByType(DOMString entryType);
+    [EnabledAtRuntime=PerformanceTimeline] PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType);
</ins><span class="cx"> 
</span><span class="cx">     // https://w3c.github.io/resource-timing/
</span><span class="cx">     [EnabledAtRuntime=ResourceTiming] void clearResourceTimings();
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceEntrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PerformanceEntry.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PerformanceEntry.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/page/PerformanceEntry.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -47,26 +47,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String PerformanceEntry::name() const
-{
-    return m_name;
-}
-
-String PerformanceEntry::entryType() const
-{
-    return m_entryType;
-}
-
-double PerformanceEntry::startTime() const
-{
-    return m_startTime;
-}
-
-double PerformanceEntry::duration() const
-{
-    return m_duration;
-}
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_TIMING)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceEntryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PerformanceEntry.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PerformanceEntry.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/page/PerformanceEntry.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -44,10 +44,10 @@
</span><span class="cx"> public:
</span><span class="cx">     virtual ~PerformanceEntry();
</span><span class="cx"> 
</span><del>-    String name() const;
-    String entryType() const;
-    double startTime() const;
-    double duration() const;
</del><ins>+    String name() const { return m_name; }
+    String entryType() const { return m_entryType; }
+    double startTime() const { return m_startTime; }
+    double duration() const { return m_duration; }
</ins><span class="cx"> 
</span><span class="cx">     virtual bool isResource() const { return false; }
</span><span class="cx">     virtual bool isMark() const { return false; }
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceEntryidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PerformanceEntry.idl (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PerformanceEntry.idl        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/page/PerformanceEntry.idl        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     Conditional=WEB_TIMING,
</span><del>-    EnabledAtRuntime=ResourceTiming,
</del><ins>+    EnabledAtRuntime=PerformanceTimeline,
</ins><span class="cx">     CustomToJSObject,
</span><span class="cx"> ] interface PerformanceEntry {
</span><span class="cx">     readonly attribute DOMString name;
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceUserTimingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PerformanceUserTiming.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PerformanceUserTiming.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/page/PerformanceUserTiming.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> static NavigationTimingFunction restrictedMarkFunction(const String&amp; markName)
</span><span class="cx"> {
</span><ins>+    // FIXME: Update this list when moving to Navigation Timing Level 2.
</ins><span class="cx">     using MapPair = std::pair&lt;ASCIILiteral, NavigationTimingFunction&gt;;
</span><span class="cx">     static const std::array&lt;MapPair, 21&gt; pairs = { {
</span><span class="cx">         MapPair { ASCIILiteral(&quot;navigationStart&quot;), &amp;PerformanceTiming::navigationStart },
</span><span class="lines">@@ -97,7 +98,7 @@
</span><span class="cx">         performanceEntryMap.set(entry-&gt;name(), Vector&lt;RefPtr&lt;PerformanceEntry&gt;&gt; { WTFMove(entry) });
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void clearPeformanceEntries(PerformanceEntryMap&amp; performanceEntryMap, const String&amp; name)
</del><ins>+static void clearPerformanceEntries(PerformanceEntryMap&amp; performanceEntryMap, const String&amp; name)
</ins><span class="cx"> {
</span><span class="cx">     if (name.isNull()) {
</span><span class="cx">         performanceEntryMap.clear();
</span><span class="lines">@@ -118,7 +119,7 @@
</span><span class="cx"> 
</span><span class="cx"> void UserTiming::clearMarks(const String&amp; markName)
</span><span class="cx"> {
</span><del>-    clearPeformanceEntries(m_marksMap, markName);
</del><ins>+    clearPerformanceEntries(m_marksMap, markName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ExceptionOr&lt;double&gt; UserTiming::findExistingMarkStartTime(const String&amp; markName)
</span><span class="lines">@@ -148,7 +149,7 @@
</span><span class="cx">         auto startMarkResult = findExistingMarkStartTime(startMark);
</span><span class="cx">         if (startMarkResult.hasException())
</span><span class="cx">             return startMarkResult.releaseException();
</span><del>-        endTime = startMarkResult.releaseReturnValue();
</del><ins>+        startTime = startMarkResult.releaseReturnValue();
</ins><span class="cx">     } else {
</span><span class="cx">         auto endMarkResult = findExistingMarkStartTime(endMark);
</span><span class="cx">         if (endMarkResult.hasException())
</span><span class="lines">@@ -166,7 +167,7 @@
</span><span class="cx"> 
</span><span class="cx"> void UserTiming::clearMeasures(const String&amp; measureName)
</span><span class="cx"> {
</span><del>-    clearPeformanceEntries(m_measuresMap, measureName);
</del><ins>+    clearPerformanceEntries(m_measuresMap, measureName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static Vector&lt;RefPtr&lt;PerformanceEntry&gt;&gt; convertToEntrySequence(const PerformanceEntryMap&amp; performanceEntryMap)
</span></span></pre></div>
<a id="trunkSourceWebCorepageRuntimeEnabledFeaturesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/RuntimeEnabledFeatures.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/RuntimeEnabledFeatures.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebCore/page/RuntimeEnabledFeatures.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -58,6 +58,8 @@
</span><span class="cx">     void setUserTimingEnabled(bool isEnabled) { m_isUserTimingEnabled = isEnabled; }
</span><span class="cx">     bool userTimingEnabled() const { return m_isUserTimingEnabled; }
</span><span class="cx"> 
</span><ins>+    bool performanceTimelineEnabled() const { return resourceTimingEnabled() || userTimingEnabled(); }
+
</ins><span class="cx">     void setShadowDOMEnabled(bool isEnabled) { m_isShadowDOMEnabled = isEnabled; }
</span><span class="cx">     bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/mac/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences userTimingEnabled]):
+        (-[WebPreferences setUserTimingEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+        Add setting for User Timing runtime enabled feature.
+
</ins><span class="cx"> 2017-01-27  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WK1] Do not prevent the drag client from initializing on Mac
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPreferenceKeysPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -222,4 +222,4 @@
</span><span class="cx"> #define WebKitMediaCaptureRequiresSecureConnectionPreferenceKey @&quot;WebKitMediaCaptureRequiresSecureConnection&quot;
</span><span class="cx"> #define WebKitAttachmentElementEnabledPreferenceKey @&quot;WebKitAttachmentElementEnabled&quot;
</span><span class="cx"> #define WebKitIntersectionObserverEnabledPreferenceKey @&quot;WebKitIntersectionObserverEnabled&quot;
</span><del>-
</del><ins>+#define WebKitUserTimingEnabledPreferenceKey @&quot;WebKitUserTimingEnabled&quot;
</ins></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPreferencesmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -642,15 +642,16 @@
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">         [NSNumber numberWithBool:YES], WebKitSubtleCryptoEnabledPreferenceKey,
</span><span class="cx"> #endif
</span><del>-
</del><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="cx">         [NSNumber numberWithBool:NO], WebKitMediaStreamEnabledPreferenceKey,
</span><span class="cx"> #endif
</span><del>-
</del><span class="cx"> #if ENABLE(WEB_RTC)
</span><span class="cx">         [NSNumber numberWithBool:NO], WebKitPeerConnectionEnabledPreferenceKey,
</span><span class="cx"> #endif
</span><del>-
</del><ins>+#if ENABLE(INTERSECTION_OBSERVER)
+        @NO, WebKitIntersectionObserverEnabledPreferenceKey,
+#endif
+        @NO, WebKitUserTimingEnabledPreferenceKey,
</ins><span class="cx">         nil];
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="lines">@@ -2924,6 +2925,16 @@
</span><span class="cx">     [self _setBoolValue:flag forKey:WebKitIntersectionObserverEnabledPreferenceKey];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (BOOL)userTimingEnabled
+{
+    return [self _boolValueForKey:WebKitUserTimingEnabledPreferenceKey];
+}
+
+- (void)setUserTimingEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitUserTimingEnabledPreferenceKey];
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation WebPreferences (WebInternal)
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebPreferencesPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -528,5 +528,6 @@
</span><span class="cx"> @property (nonatomic) BOOL attachmentElementEnabled;
</span><span class="cx"> @property (nonatomic) BOOL allowsInlineMediaPlaybackAfterFullscreen;
</span><span class="cx"> @property (nonatomic) BOOL intersectionObserverEnabled;
</span><ins>+@property (nonatomic) BOOL userTimingEnabled;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -2910,6 +2910,8 @@
</span><span class="cx">     RuntimeEnabledFeatures::sharedFeatures().setSubtleCryptoEnabled([preferences subtleCryptoEnabled]);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(preferences.userTimingEnabled);
+
</ins><span class="cx">     NSTimeInterval timeout = [preferences incrementalRenderingSuppressionTimeoutInSeconds];
</span><span class="cx">     if (timeout &gt; 0)
</span><span class="cx">         settings.setIncrementalRenderingSuppressionTimeoutInSeconds(timeout);
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/win/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * Interfaces/IWebPreferencesPrivate.idl:
+        * WebPreferenceKeysPrivate.h:
+        * WebPreferences.cpp:
+        (WebPreferences::initializeDefaultSettings):
+        (WebPreferences::setUserTimingEnabled):
+        (WebPreferences::userTimingEnabled):
+        * WebPreferences.h:
+        * WebView.cpp:
+        (WebView::notifyPreferencesChanged):
+        Add setting for User Timing runtime enabled feature.
+
</ins><span class="cx"> 2017-01-26  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Crash when navigating back to a page in PacheCache when one of its frames has been removed
</span></span></pre></div>
<a id="trunkSourceWebKitwinInterfacesIWebPreferencesPrivateidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -194,4 +194,6 @@
</span><span class="cx">     HRESULT setApplicationId([in] BSTR applicationId);
</span><span class="cx">     HRESULT webAnimationsEnabled([out, retval] BOOL*);
</span><span class="cx">     HRESULT setWebAnimationsEnabled([in] BOOL enabled);
</span><ins>+    HRESULT userTimingEnabled([out, retval] BOOL*);
+    HRESULT setUserTimingEnabled([in] BOOL enabled);
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebPreferenceKeysPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebPreferenceKeysPrivate.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebPreferenceKeysPrivate.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/win/WebPreferenceKeysPrivate.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -178,3 +178,5 @@
</span><span class="cx"> #define WebKitModernMediaControlsEnabledPreferenceKey &quot;WebKitModernMediaControlsEnabled&quot;
</span><span class="cx"> 
</span><span class="cx"> #define WebKitWebAnimationsEnabledPreferenceKey &quot;WebKitWebAnimationsEnabled&quot;
</span><ins>+
+#define WebKitUserTimingEnabledPreferenceKey &quot;WebKitUserTimingEnabled&quot;
</ins></span></pre></div>
<a id="trunkSourceWebKitwinWebPreferencescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebPreferences.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebPreferences.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/win/WebPreferences.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -307,6 +307,8 @@
</span><span class="cx"> 
</span><span class="cx">     CFDictionaryAddValue(defaults, CFSTR(WebKitWebAnimationsEnabledPreferenceKey), kCFBooleanFalse);
</span><span class="cx"> 
</span><ins>+    CFDictionaryAddValue(defaults, CFSTR(WebKitUserTimingEnabledPreferenceKey), kCFBooleanFalse);
+
</ins><span class="cx">     defaultSettings = defaults;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2025,3 +2027,17 @@
</span><span class="cx">     *enabled = boolValueForKey(WebKitWebAnimationsEnabledPreferenceKey);
</span><span class="cx">     return S_OK;
</span><span class="cx"> }
</span><ins>+
+HRESULT WebPreferences::setUserTimingEnabled(BOOL enabled)
+{
+    setBoolValue(WebKitUserTimingEnabledPreferenceKey, enabled);
+    return S_OK;
+}
+
+HRESULT WebPreferences::userTimingEnabled(_Out_ BOOL* enabled)
+{
+    if (!enabled)
+        return E_POINTER;
+    *enabled = boolValueForKey(WebKitUserTimingEnabledPreferenceKey);
+    return S_OK;
+}
</ins></span></pre></div>
<a id="trunkSourceWebKitwinWebPreferencesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebPreferences.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebPreferences.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/win/WebPreferences.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -247,6 +247,8 @@
</span><span class="cx">     virtual HRESULT STDMETHODCALLTYPE setApplicationId(BSTR);
</span><span class="cx">     virtual HRESULT STDMETHODCALLTYPE webAnimationsEnabled(_Out_ BOOL*);
</span><span class="cx">     virtual HRESULT STDMETHODCALLTYPE setWebAnimationsEnabled(BOOL);
</span><ins>+    virtual HRESULT STDMETHODCALLTYPE userTimingEnabled(_Out_ BOOL*);
+    virtual HRESULT STDMETHODCALLTYPE setUserTimingEnabled(BOOL);
</ins><span class="cx"> 
</span><span class="cx">     // WebPreferences
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebView.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebView.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit/win/WebView.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -5262,6 +5262,11 @@
</span><span class="cx">     RuntimeEnabledFeatures::sharedFeatures().setWebAnimationsEnabled(!!enabled);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    hr = prefsPrivate-&gt;userTimingEnabled(&amp;enabled);
+    if (FAILED(hr))
+        return hr;
+    RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(!!enabled);
+
</ins><span class="cx">     hr = preferences-&gt;privateBrowsingEnabled(&amp;enabled);
</span><span class="cx">     if (FAILED(hr))
</span><span class="cx">         return hr;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit2/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * Shared/WebPreferencesDefinitions.h:
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesSetUserTimingEnabled):
+        (WKPreferencesGetUserTimingEnabled):
+        * UIProcess/API/C/WKPreferencesRefPrivate.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences):
+        Experimental feature. Off for now while we update ResourceTiming
+        and NavigationTiming to be compatible with Performance Timing 2.
+
</ins><span class="cx"> 2017-01-28  Dan Bernstein  &lt;mitz@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;rdar://problem/30247736&gt; WebKit2-7604.1.5 has failed to build: error: only virtual member functions can be marked 'override'
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebPreferencesDefinitionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -318,6 +318,7 @@
</span><span class="cx">     macro(ModernMediaControlsEnabled, modernMediaControlsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;Modern Media Controls&quot;, &quot;Use modern media controls look&quot;) \
</span><span class="cx">     macro(InputEventsEnabled, inputEventsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;Input Events&quot;, &quot;Enable InputEvents support&quot;) \
</span><span class="cx">     macro(SubtleCryptoEnabled, subtleCryptoEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;SubtleCrypto&quot;, &quot;Enable SubtleCrypto support&quot;) \
</span><ins>+    macro(UserTimingEnabled, userTimingEnabled, Bool, bool, false, &quot;User Timing&quot;, &quot;Enable UserTiming API&quot;) \
</ins><span class="cx">     macro(WebAnimationsEnabled, webAnimationsEnabled, Bool, bool, false, &quot;Web Animations&quot;, &quot;Web Animations prototype&quot;) \
</span><span class="cx">     macro(WebGL2Enabled, webGL2Enabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, &quot;WebGL 2.0&quot;, &quot;WebGL 2 prototype&quot;) \
</span><span class="cx">     \
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPreferencescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1581,6 +1581,16 @@
</span><span class="cx">     return toImpl(preferencesRef)-&gt;intersectionObserverEnabled();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKPreferencesSetUserTimingEnabled(WKPreferencesRef preferencesRef, bool flag)
+{
+    toImpl(preferencesRef)-&gt;setUserTimingEnabled(flag);
+}
+
+bool WKPreferencesGetUserTimingEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)-&gt;userTimingEnabled();
+}
+
</ins><span class="cx"> void WKPreferencesSetSelectionPaintingWithoutSelectionGapsEnabled(WKPreferencesRef preferencesRef, bool flag)
</span><span class="cx"> {
</span><span class="cx">     toImpl(preferencesRef)-&gt;setSelectionPaintingWithoutSelectionGapsEnabled(flag);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPreferencesRefPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -449,6 +449,10 @@
</span><span class="cx"> WK_EXPORT void WKPreferencesSetIntersectionObserverEnabled(WKPreferencesRef, bool flag);
</span><span class="cx"> WK_EXPORT bool WKPreferencesGetIntersectionObserverEnabled(WKPreferencesRef);
</span><span class="cx"> 
</span><ins>+// Defaults to false
+WK_EXPORT void WKPreferencesSetUserTimingEnabled(WKPreferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetUserTimingEnabled(WKPreferencesRef);
+
</ins><span class="cx"> // Defaults to true
</span><span class="cx"> WK_EXPORT void WKPreferencesSetSubtleCryptoEnabled(WKPreferencesRef, bool flag);
</span><span class="cx"> WK_EXPORT bool WKPreferencesGetSubtleCryptoEnabled(WKPreferencesRef);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -3267,6 +3267,8 @@
</span><span class="cx">     RuntimeEnabledFeatures::sharedFeatures().setIntersectionObserverEnabled(store.getBoolValueForKey(WebPreferencesKey::intersectionObserverEnabledKey()));
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(store.getBoolValueForKey(WebPreferencesKey::userTimingEnabledKey()));
+
</ins><span class="cx">     bool processSuppressionEnabled = store.getBoolValueForKey(WebPreferencesKey::pageVisibilityBasedProcessSuppressionEnabledKey());
</span><span class="cx">     if (m_processSuppressionEnabled != processSuppressionEnabled) {
</span><span class="cx">         m_processSuppressionEnabled = processSuppressionEnabled;
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Tools/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,5 +1,19 @@
</span><span class="cx"> 2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (enableExperimentalFeatures):
+        (resetWebPreferencesToConsistentValues):
+        * DumpRenderTree/win/DumpRenderTree.cpp:
+        (enableExperimentalFeatures):
+
+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
</ins><span class="cx">         Patch Review: EWS Bubbles wrap to multiple lines but can fit on one line
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=167519
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreemacDumpRenderTreemm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -903,6 +903,8 @@
</span><span class="cx">     [preferences setModernMediaControlsEnabled:YES];
</span><span class="cx">     // FIXME: InputEvents
</span><span class="cx">     [preferences setSubtleCryptoEnabled:YES];
</span><ins>+    [preferences setUserTimingEnabled:YES];
+    [preferences setWebAnimationsEnabled:YES];
</ins><span class="cx">     [preferences setWebGL2Enabled:YES];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1009,7 +1011,6 @@
</span><span class="cx">     
</span><span class="cx">     [preferences setMediaStreamEnabled:YES];
</span><span class="cx">     [preferences setPeerConnectionEnabled:YES];
</span><del>-    [preferences setWebAnimationsEnabled:YES];
</del><span class="cx"> 
</span><span class="cx">     [WebPreferences _clearNetworkLoaderSession];
</span><span class="cx">     [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinDumpRenderTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -777,6 +777,7 @@
</span><span class="cx">     // FIXME: ModernMediaControls
</span><span class="cx">     // FIXME: InputEvents
</span><span class="cx">     // FIXME: SubtleCrypto
</span><ins>+    prefsPrivate4-&gt;setUserTimingEnabled(TRUE);
</ins><span class="cx">     prefsPrivate4-&gt;setWebAnimationsEnabled(TRUE);
</span><span class="cx">     // FIXME: WebGL2
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkWebsiteswebkitorgChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Websites/webkit.org/ChangeLog (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/ChangeLog        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Websites/webkit.org/ChangeLog        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2017-01-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        &lt;rdar://problem/22746307&gt;
+
+        Reviewed by Ryosuke Niwa.
+
+        * experimental-features.html:
+
</ins><span class="cx"> 2017-01-27  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add a simple demo for Touch stylus events
</span></span></pre></div>
<a id="trunkWebsiteswebkitorgexperimentalfeatureshtml"></a>
<div class="modfile"><h4>Modified: trunk/Websites/webkit.org/experimental-features.html (211331 => 211332)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/webkit.org/experimental-features.html        2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Websites/webkit.org/experimental-features.html        2017-01-28 09:26:14 UTC (rev 211332)
</span><span class="lines">@@ -106,6 +106,10 @@
</span><span class="cx">     return window.crypto.subtle;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+function testUserTiming() {
+    return window.performance.mark;
+}
+
</ins><span class="cx"> function testWebAnimations() {
</span><span class="cx">     return !!window.Animation;
</span><span class="cx"> }
</span><span class="lines">@@ -138,6 +142,7 @@
</span><span class="cx">         &lt;div class=&quot;test&quot; id=&quot;InputEvents&quot;&gt;&lt;p&gt;HTML Input Events&lt;/p&gt;&lt;/div&gt;
</span><span class="cx">         &lt;div class=&quot;test&quot; id=&quot;SubtleCrypto&quot;&gt;&lt;p&gt;SubtleCrypto&lt;/p&gt;&lt;/div&gt;
</span><span class="cx">         &lt;div class=&quot;test&quot; id=&quot;VariationFonts&quot;&gt;&lt;p&gt;Variation Fonts&lt;/p&gt;&lt;/div&gt;
</span><ins>+        &lt;div class=&quot;test&quot; id=&quot;UserTiming&quot;&gt;&lt;p&gt;User Timing&lt;/p&gt;&lt;/div&gt;
</ins><span class="cx">         &lt;div class=&quot;test&quot; id=&quot;WebAnimations&quot;&gt;&lt;p&gt;Web Animations&lt;/p&gt;&lt;/div&gt;
</span><span class="cx">         &lt;div class=&quot;test&quot; id=&quot;WebGL2&quot;&gt;&lt;p&gt;WebGL 2.0&lt;/p&gt;&lt;/div&gt;
</span><span class="cx">     &lt;/div&gt;
</span></span></pre>
</div>
</div>

</body>
</html>