Title: [211332] trunk
Revision
211332
Author
joep...@webkit.org
Date
2017-01-28 01:26:14 -0800 (Sat, 28 Jan 2017)

Log Message

Add User Timing Experimental Feature
https://bugs.webkit.org/show_bug.cgi?id=167542
<rdar://problem/22746307>

Reviewed by Ryosuke Niwa.

Source/WebCore:

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::performanceTimelineEnabled):
* page/Performance.idl:
* page/PerformanceEntry.idl:
Make a better RuntimeEnabledFeature named "PerformanceTiming" 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.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (211331 => 211332)


--- trunk/LayoutTests/ChangeLog	2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/LayoutTests/ChangeLog	2017-01-28 09:26:14 UTC (rev 211332)
@@ -1,3 +1,20 @@
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        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.
+
 2017-01-27  Yusuke Suzuki  <utatane....@gmail.com>
 
         Lift template escape sequence restrictions in tagged templates

Modified: trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -993,6 +993,36 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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
+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, 'PerformanceNavigation').value is PerformanceNavigation
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -1138,6 +1138,11 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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

Modified: trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -1178,6 +1178,21 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -1173,6 +1173,21 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -1173,6 +1173,21 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -1168,6 +1168,21 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt (211331 => 211332)


--- 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)
@@ -868,6 +868,21 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Performance').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
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').value is PerformanceNavigation
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PerformanceNavigation').hasOwnProperty('set') is false

Modified: trunk/Source/WebCore/ChangeLog (211331 => 211332)


--- 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)
@@ -1,3 +1,42 @@
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        Reviewed by Ryosuke Niwa.
+
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::performanceTimelineEnabled):
+        * page/Performance.idl:
+        * page/PerformanceEntry.idl:
+        Make a better RuntimeEnabledFeature named "PerformanceTiming" 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.
+
 2017-01-27  Dan Bernstein  <m...@apple.com>
 
         Ignore Xcode’s project.xcworkspace and userdata directories in this new project like we do

Modified: trunk/Source/WebCore/page/Performance.idl (211331 => 211332)


--- 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)
@@ -45,9 +45,9 @@
     readonly attribute PerformanceTiming timing;
 
     // https://w3c.github.io/performance-timeline/
-    [EnabledAtRuntime=ResourceTiming] PerformanceEntryList getEntries();
-    [EnabledAtRuntime=ResourceTiming] PerformanceEntryList getEntriesByType(DOMString entryType);
-    [EnabledAtRuntime=ResourceTiming] PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType);
+    [EnabledAtRuntime=PerformanceTimeline] PerformanceEntryList getEntries();
+    [EnabledAtRuntime=PerformanceTimeline] PerformanceEntryList getEntriesByType(DOMString entryType);
+    [EnabledAtRuntime=PerformanceTimeline] PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType);
 
     // https://w3c.github.io/resource-timing/
     [EnabledAtRuntime=ResourceTiming] void clearResourceTimings();

Modified: trunk/Source/WebCore/page/PerformanceEntry.cpp (211331 => 211332)


--- 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)
@@ -47,26 +47,6 @@
 {
 }
 
-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;
-}
-
 } // namespace WebCore
 
 #endif // ENABLE(WEB_TIMING)

Modified: trunk/Source/WebCore/page/PerformanceEntry.h (211331 => 211332)


--- 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)
@@ -44,10 +44,10 @@
 public:
     virtual ~PerformanceEntry();
 
-    String name() const;
-    String entryType() const;
-    double startTime() const;
-    double duration() const;
+    String name() const { return m_name; }
+    String entryType() const { return m_entryType; }
+    double startTime() const { return m_startTime; }
+    double duration() const { return m_duration; }
 
     virtual bool isResource() const { return false; }
     virtual bool isMark() const { return false; }

Modified: trunk/Source/WebCore/page/PerformanceEntry.idl (211331 => 211332)


--- 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)
@@ -34,7 +34,7 @@
 
 [
     Conditional=WEB_TIMING,
-    EnabledAtRuntime=ResourceTiming,
+    EnabledAtRuntime=PerformanceTimeline,
     CustomToJSObject,
 ] interface PerformanceEntry {
     readonly attribute DOMString name;

Modified: trunk/Source/WebCore/page/PerformanceUserTiming.cpp (211331 => 211332)


--- 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)
@@ -46,6 +46,7 @@
 
 static NavigationTimingFunction restrictedMarkFunction(const String& markName)
 {
+    // FIXME: Update this list when moving to Navigation Timing Level 2.
     using MapPair = std::pair<ASCIILiteral, NavigationTimingFunction>;
     static const std::array<MapPair, 21> pairs = { {
         MapPair { ASCIILiteral("navigationStart"), &PerformanceTiming::navigationStart },
@@ -97,7 +98,7 @@
         performanceEntryMap.set(entry->name(), Vector<RefPtr<PerformanceEntry>> { WTFMove(entry) });
 }
 
-static void clearPeformanceEntries(PerformanceEntryMap& performanceEntryMap, const String& name)
+static void clearPerformanceEntries(PerformanceEntryMap& performanceEntryMap, const String& name)
 {
     if (name.isNull()) {
         performanceEntryMap.clear();
@@ -118,7 +119,7 @@
 
 void UserTiming::clearMarks(const String& markName)
 {
-    clearPeformanceEntries(m_marksMap, markName);
+    clearPerformanceEntries(m_marksMap, markName);
 }
 
 ExceptionOr<double> UserTiming::findExistingMarkStartTime(const String& markName)
@@ -148,7 +149,7 @@
         auto startMarkResult = findExistingMarkStartTime(startMark);
         if (startMarkResult.hasException())
             return startMarkResult.releaseException();
-        endTime = startMarkResult.releaseReturnValue();
+        startTime = startMarkResult.releaseReturnValue();
     } else {
         auto endMarkResult = findExistingMarkStartTime(endMark);
         if (endMarkResult.hasException())
@@ -166,7 +167,7 @@
 
 void UserTiming::clearMeasures(const String& measureName)
 {
-    clearPeformanceEntries(m_measuresMap, measureName);
+    clearPerformanceEntries(m_measuresMap, measureName);
 }
 
 static Vector<RefPtr<PerformanceEntry>> convertToEntrySequence(const PerformanceEntryMap& performanceEntryMap)

Modified: trunk/Source/WebCore/page/RuntimeEnabledFeatures.h (211331 => 211332)


--- 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)
@@ -58,6 +58,8 @@
     void setUserTimingEnabled(bool isEnabled) { m_isUserTimingEnabled = isEnabled; }
     bool userTimingEnabled() const { return m_isUserTimingEnabled; }
 
+    bool performanceTimelineEnabled() const { return resourceTimingEnabled() || userTimingEnabled(); }
+
     void setShadowDOMEnabled(bool isEnabled) { m_isShadowDOMEnabled = isEnabled; }
     bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; }
 

Modified: trunk/Source/WebKit/mac/ChangeLog (211331 => 211332)


--- 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)
@@ -1,3 +1,21 @@
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        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.
+
 2017-01-27  Wenson Hsieh  <wenson_hs...@apple.com>
 
         [WK1] Do not prevent the drag client from initializing on Mac

Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (211331 => 211332)


--- 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)
@@ -222,4 +222,4 @@
 #define WebKitMediaCaptureRequiresSecureConnectionPreferenceKey @"WebKitMediaCaptureRequiresSecureConnection"
 #define WebKitAttachmentElementEnabledPreferenceKey @"WebKitAttachmentElementEnabled"
 #define WebKitIntersectionObserverEnabledPreferenceKey @"WebKitIntersectionObserverEnabled"
-
+#define WebKitUserTimingEnabledPreferenceKey @"WebKitUserTimingEnabled"

Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (211331 => 211332)


--- 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)
@@ -642,15 +642,16 @@
 #if ENABLE(SUBTLE_CRYPTO)
         [NSNumber numberWithBool:YES], WebKitSubtleCryptoEnabledPreferenceKey,
 #endif
-
 #if ENABLE(MEDIA_STREAM)
         [NSNumber numberWithBool:NO], WebKitMediaStreamEnabledPreferenceKey,
 #endif
-
 #if ENABLE(WEB_RTC)
         [NSNumber numberWithBool:NO], WebKitPeerConnectionEnabledPreferenceKey,
 #endif
-
+#if ENABLE(INTERSECTION_OBSERVER)
+        @NO, WebKitIntersectionObserverEnabledPreferenceKey,
+#endif
+        @NO, WebKitUserTimingEnabledPreferenceKey,
         nil];
 
 #if !PLATFORM(IOS)
@@ -2924,6 +2925,16 @@
     [self _setBoolValue:flag forKey:WebKitIntersectionObserverEnabledPreferenceKey];
 }
 
+- (BOOL)userTimingEnabled
+{
+    return [self _boolValueForKey:WebKitUserTimingEnabledPreferenceKey];
+}
+
+- (void)setUserTimingEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitUserTimingEnabledPreferenceKey];
+}
+
 @end
 
 @implementation WebPreferences (WebInternal)

Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (211331 => 211332)


--- 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)
@@ -528,5 +528,6 @@
 @property (nonatomic) BOOL attachmentElementEnabled;
 @property (nonatomic) BOOL allowsInlineMediaPlaybackAfterFullscreen;
 @property (nonatomic) BOOL intersectionObserverEnabled;
+@property (nonatomic) BOOL userTimingEnabled;
 
 @end

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (211331 => 211332)


--- 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)
@@ -2910,6 +2910,8 @@
     RuntimeEnabledFeatures::sharedFeatures().setSubtleCryptoEnabled([preferences subtleCryptoEnabled]);
 #endif
 
+    RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(preferences.userTimingEnabled);
+
     NSTimeInterval timeout = [preferences incrementalRenderingSuppressionTimeoutInSeconds];
     if (timeout > 0)
         settings.setIncrementalRenderingSuppressionTimeoutInSeconds(timeout);

Modified: trunk/Source/WebKit/win/ChangeLog (211331 => 211332)


--- 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)
@@ -1,3 +1,22 @@
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        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.
+
 2017-01-26  Chris Dumez  <cdu...@apple.com>
 
         Crash when navigating back to a page in PacheCache when one of its frames has been removed

Modified: trunk/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl (211331 => 211332)


--- 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)
@@ -194,4 +194,6 @@
     HRESULT setApplicationId([in] BSTR applicationId);
     HRESULT webAnimationsEnabled([out, retval] BOOL*);
     HRESULT setWebAnimationsEnabled([in] BOOL enabled);
+    HRESULT userTimingEnabled([out, retval] BOOL*);
+    HRESULT setUserTimingEnabled([in] BOOL enabled);
 }

Modified: trunk/Source/WebKit/win/WebPreferenceKeysPrivate.h (211331 => 211332)


--- 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)
@@ -178,3 +178,5 @@
 #define WebKitModernMediaControlsEnabledPreferenceKey "WebKitModernMediaControlsEnabled"
 
 #define WebKitWebAnimationsEnabledPreferenceKey "WebKitWebAnimationsEnabled"
+
+#define WebKitUserTimingEnabledPreferenceKey "WebKitUserTimingEnabled"

Modified: trunk/Source/WebKit/win/WebPreferences.cpp (211331 => 211332)


--- 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)
@@ -307,6 +307,8 @@
 
     CFDictionaryAddValue(defaults, CFSTR(WebKitWebAnimationsEnabledPreferenceKey), kCFBooleanFalse);
 
+    CFDictionaryAddValue(defaults, CFSTR(WebKitUserTimingEnabledPreferenceKey), kCFBooleanFalse);
+
     defaultSettings = defaults;
 }
 
@@ -2025,3 +2027,17 @@
     *enabled = boolValueForKey(WebKitWebAnimationsEnabledPreferenceKey);
     return S_OK;
 }
+
+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;
+}

Modified: trunk/Source/WebKit/win/WebPreferences.h (211331 => 211332)


--- 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)
@@ -247,6 +247,8 @@
     virtual HRESULT STDMETHODCALLTYPE setApplicationId(BSTR);
     virtual HRESULT STDMETHODCALLTYPE webAnimationsEnabled(_Out_ BOOL*);
     virtual HRESULT STDMETHODCALLTYPE setWebAnimationsEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE userTimingEnabled(_Out_ BOOL*);
+    virtual HRESULT STDMETHODCALLTYPE setUserTimingEnabled(BOOL);
 
     // WebPreferences
 

Modified: trunk/Source/WebKit/win/WebView.cpp (211331 => 211332)


--- 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)
@@ -5262,6 +5262,11 @@
     RuntimeEnabledFeatures::sharedFeatures().setWebAnimationsEnabled(!!enabled);
 #endif
 
+    hr = prefsPrivate->userTimingEnabled(&enabled);
+    if (FAILED(hr))
+        return hr;
+    RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(!!enabled);
+
     hr = preferences->privateBrowsingEnabled(&enabled);
     if (FAILED(hr))
         return hr;

Modified: trunk/Source/WebKit2/ChangeLog (211331 => 211332)


--- 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)
@@ -1,3 +1,21 @@
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        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.
+
 2017-01-28  Dan Bernstein  <m...@apple.com>
 
         <rdar://problem/30247736> WebKit2-7604.1.5 has failed to build: error: only virtual member functions can be marked 'override'

Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (211331 => 211332)


--- 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)
@@ -318,6 +318,7 @@
     macro(ModernMediaControlsEnabled, modernMediaControlsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Modern Media Controls", "Use modern media controls look") \
     macro(InputEventsEnabled, inputEventsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Input Events", "Enable InputEvents support") \
     macro(SubtleCryptoEnabled, subtleCryptoEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "SubtleCrypto", "Enable SubtleCrypto support") \
+    macro(UserTimingEnabled, userTimingEnabled, Bool, bool, false, "User Timing", "Enable UserTiming API") \
     macro(WebAnimationsEnabled, webAnimationsEnabled, Bool, bool, false, "Web Animations", "Web Animations prototype") \
     macro(WebGL2Enabled, webGL2Enabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "WebGL 2.0", "WebGL 2 prototype") \
     \

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (211331 => 211332)


--- 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)
@@ -1581,6 +1581,16 @@
     return toImpl(preferencesRef)->intersectionObserverEnabled();
 }
 
+void WKPreferencesSetUserTimingEnabled(WKPreferencesRef preferencesRef, bool flag)
+{
+    toImpl(preferencesRef)->setUserTimingEnabled(flag);
+}
+
+bool WKPreferencesGetUserTimingEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)->userTimingEnabled();
+}
+
 void WKPreferencesSetSelectionPaintingWithoutSelectionGapsEnabled(WKPreferencesRef preferencesRef, bool flag)
 {
     toImpl(preferencesRef)->setSelectionPaintingWithoutSelectionGapsEnabled(flag);

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (211331 => 211332)


--- 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)
@@ -449,6 +449,10 @@
 WK_EXPORT void WKPreferencesSetIntersectionObserverEnabled(WKPreferencesRef, bool flag);
 WK_EXPORT bool WKPreferencesGetIntersectionObserverEnabled(WKPreferencesRef);
 
+// Defaults to false
+WK_EXPORT void WKPreferencesSetUserTimingEnabled(WKPreferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetUserTimingEnabled(WKPreferencesRef);
+
 // Defaults to true
 WK_EXPORT void WKPreferencesSetSubtleCryptoEnabled(WKPreferencesRef, bool flag);
 WK_EXPORT bool WKPreferencesGetSubtleCryptoEnabled(WKPreferencesRef);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (211331 => 211332)


--- 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)
@@ -3267,6 +3267,8 @@
     RuntimeEnabledFeatures::sharedFeatures().setIntersectionObserverEnabled(store.getBoolValueForKey(WebPreferencesKey::intersectionObserverEnabledKey()));
 #endif
 
+    RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(store.getBoolValueForKey(WebPreferencesKey::userTimingEnabledKey()));
+
     bool processSuppressionEnabled = store.getBoolValueForKey(WebPreferencesKey::pageVisibilityBasedProcessSuppressionEnabledKey());
     if (m_processSuppressionEnabled != processSuppressionEnabled) {
         m_processSuppressionEnabled = processSuppressionEnabled;

Modified: trunk/Tools/ChangeLog (211331 => 211332)


--- trunk/Tools/ChangeLog	2017-01-28 09:25:59 UTC (rev 211331)
+++ trunk/Tools/ChangeLog	2017-01-28 09:26:14 UTC (rev 211332)
@@ -1,5 +1,19 @@
 2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
 
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        Reviewed by Ryosuke Niwa.
+
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (enableExperimentalFeatures):
+        (resetWebPreferencesToConsistentValues):
+        * DumpRenderTree/win/DumpRenderTree.cpp:
+        (enableExperimentalFeatures):
+
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
         Patch Review: EWS Bubbles wrap to multiple lines but can fit on one line
         https://bugs.webkit.org/show_bug.cgi?id=167519
 

Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (211331 => 211332)


--- 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)
@@ -903,6 +903,8 @@
     [preferences setModernMediaControlsEnabled:YES];
     // FIXME: InputEvents
     [preferences setSubtleCryptoEnabled:YES];
+    [preferences setUserTimingEnabled:YES];
+    [preferences setWebAnimationsEnabled:YES];
     [preferences setWebGL2Enabled:YES];
 }
 
@@ -1009,7 +1011,6 @@
     
     [preferences setMediaStreamEnabled:YES];
     [preferences setPeerConnectionEnabled:YES];
-    [preferences setWebAnimationsEnabled:YES];
 
     [WebPreferences _clearNetworkLoaderSession];
     [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];

Modified: trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp (211331 => 211332)


--- 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)
@@ -777,6 +777,7 @@
     // FIXME: ModernMediaControls
     // FIXME: InputEvents
     // FIXME: SubtleCrypto
+    prefsPrivate4->setUserTimingEnabled(TRUE);
     prefsPrivate4->setWebAnimationsEnabled(TRUE);
     // FIXME: WebGL2
 }

Modified: trunk/Websites/webkit.org/ChangeLog (211331 => 211332)


--- 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)
@@ -1,3 +1,13 @@
+2017-01-28  Joseph Pecoraro  <pecor...@apple.com>
+
+        Add User Timing Experimental Feature
+        https://bugs.webkit.org/show_bug.cgi?id=167542
+        <rdar://problem/22746307>
+
+        Reviewed by Ryosuke Niwa.
+
+        * experimental-features.html:
+
 2017-01-27  Dean Jackson  <d...@apple.com>
 
         Add a simple demo for Touch stylus events

Modified: trunk/Websites/webkit.org/experimental-features.html (211331 => 211332)


--- 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)
@@ -106,6 +106,10 @@
     return window.crypto.subtle;
 }
 
+function testUserTiming() {
+    return window.performance.mark;
+}
+
 function testWebAnimations() {
     return !!window.Animation;
 }
@@ -138,6 +142,7 @@
         <div class="test" id="InputEvents"><p>HTML Input Events</p></div>
         <div class="test" id="SubtleCrypto"><p>SubtleCrypto</p></div>
         <div class="test" id="VariationFonts"><p>Variation Fonts</p></div>
+        <div class="test" id="UserTiming"><p>User Timing</p></div>
         <div class="test" id="WebAnimations"><p>Web Animations</p></div>
         <div class="test" id="WebGL2"><p>WebGL 2.0</p></div>
     </div>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to