Title: [136565] trunk/Source/WebCore
Revision
136565
Author
[email protected]
Date
2012-12-04 14:04:41 -0800 (Tue, 04 Dec 2012)

Log Message

[User Timing] Fix clang build by removing need for exit time destructor
https://bugs.webkit.org/show_bug.cgi?id=104036

Reviewed by Tony Gentilcore.

Modeled after r99588.

No new tests. No change in functionality.

* page/PerformanceUserTiming.cpp:
(WebCore::UserTiming::UserTiming):
(WebCore::UserTiming::mark):
(WebCore::UserTiming::findExistingMarkStartTime):
* page/PerformanceUserTiming.h:
(UserTiming):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (136564 => 136565)


--- trunk/Source/WebCore/ChangeLog	2012-12-04 22:04:22 UTC (rev 136564)
+++ trunk/Source/WebCore/ChangeLog	2012-12-04 22:04:41 UTC (rev 136565)
@@ -1,5 +1,23 @@
 2012-12-04  James Simonsen  <[email protected]>
 
+        [User Timing] Fix clang build by removing need for exit time destructor
+        https://bugs.webkit.org/show_bug.cgi?id=104036
+
+        Reviewed by Tony Gentilcore.
+
+        Modeled after r99588.
+
+        No new tests. No change in functionality.
+
+        * page/PerformanceUserTiming.cpp:
+        (WebCore::UserTiming::UserTiming):
+        (WebCore::UserTiming::mark):
+        (WebCore::UserTiming::findExistingMarkStartTime):
+        * page/PerformanceUserTiming.h:
+        (UserTiming):
+
+2012-12-04  James Simonsen  <[email protected]>
+
         [User Timing] Fix negative durations
         https://bugs.webkit.org/show_bug.cgi?id=104038
 

Modified: trunk/Source/WebCore/page/PerformanceUserTiming.cpp (136564 => 136565)


--- trunk/Source/WebCore/page/PerformanceUserTiming.cpp	2012-12-04 22:04:22 UTC (rev 136564)
+++ trunk/Source/WebCore/page/PerformanceUserTiming.cpp	2012-12-04 22:04:41 UTC (rev 136565)
@@ -36,46 +36,43 @@
 
 namespace WebCore {
 
-HashMap<String, NavigationTimingFunction> UserTiming::m_restrictedKeyMap;
+namespace {
 
-UserTiming::UserTiming(Performance* performance)
-    : m_performance(performance)
+typedef HashMap<String, NavigationTimingFunction> RestrictedKeyMap;
+static RestrictedKeyMap restrictedKeyMap()
 {
-    static const struct RestrictedField {
-        String key;
-        NavigationTimingFunction navigationTimingFunction;
-    } defaultRestrictions[] = {
-        {"navigationStart", &PerformanceTiming::navigationStart},
-        {"unloadEventStart", &PerformanceTiming::unloadEventStart},
-        {"unloadEventEnd", &PerformanceTiming::unloadEventEnd},
-        {"redirectStart", &PerformanceTiming::redirectStart},
-        {"redirectEnd", &PerformanceTiming::redirectEnd},
-        {"fetchStart", &PerformanceTiming::fetchStart},
-        {"domainLookupStart", &PerformanceTiming::domainLookupStart},
-        {"domainLookupEnd", &PerformanceTiming::domainLookupEnd},
-        {"connectStart", &PerformanceTiming::connectStart},
-        {"connectEnd", &PerformanceTiming::connectEnd},
-        {"secureConnectionStart", &PerformanceTiming::secureConnectionStart},
-        {"requestStart", &PerformanceTiming::requestStart},
-        {"responseStart", &PerformanceTiming::responseStart},
-        {"responseEnd", &PerformanceTiming::responseEnd},
-        {"domLoading", &PerformanceTiming::domLoading},
-        {"domInteractive", &PerformanceTiming::domInteractive},
-        {"domContentLoadedEventStart", &PerformanceTiming::domContentLoadedEventStart},
-        {"domContentLoadedEventEnd", &PerformanceTiming::domContentLoadedEventEnd},
-        {"domComplete", &PerformanceTiming::domComplete},
-        {"loadEventStart", &PerformanceTiming::loadEventStart},
-        {"loadEventEnd", &PerformanceTiming::loadEventEnd}
-    };
+    DEFINE_STATIC_LOCAL(RestrictedKeyMap, map, ());
+    if (map.isEmpty()) {
+        map.add("navigationStart", &PerformanceTiming::navigationStart);
+        map.add("unloadEventStart", &PerformanceTiming::unloadEventStart);
+        map.add("unloadEventEnd", &PerformanceTiming::unloadEventEnd);
+        map.add("redirectStart", &PerformanceTiming::redirectStart);
+        map.add("redirectEnd", &PerformanceTiming::redirectEnd);
+        map.add("fetchStart", &PerformanceTiming::fetchStart);
+        map.add("domainLookupStart", &PerformanceTiming::domainLookupStart);
+        map.add("domainLookupEnd", &PerformanceTiming::domainLookupEnd);
+        map.add("connectStart", &PerformanceTiming::connectStart);
+        map.add("connectEnd", &PerformanceTiming::connectEnd);
+        map.add("secureConnectionStart", &PerformanceTiming::secureConnectionStart);
+        map.add("requestStart", &PerformanceTiming::requestStart);
+        map.add("responseStart", &PerformanceTiming::responseStart);
+        map.add("responseEnd", &PerformanceTiming::responseEnd);
+        map.add("domLoading", &PerformanceTiming::domLoading);
+        map.add("domInteractive", &PerformanceTiming::domInteractive);
+        map.add("domContentLoadedEventStart", &PerformanceTiming::domContentLoadedEventStart);
+        map.add("domContentLoadedEventEnd", &PerformanceTiming::domContentLoadedEventEnd);
+        map.add("domComplete", &PerformanceTiming::domComplete);
+        map.add("loadEventStart", &PerformanceTiming::loadEventStart);
+        map.add("loadEventEnd", &PerformanceTiming::loadEventEnd);
+    }
+    return map;
+}
 
-    if (!m_restrictedKeyMap.isEmpty())
-        return;
+} // namespace anonymous
 
-    for (const struct RestrictedField* restriction = defaultRestrictions;
-        static_cast<unsigned>(restriction - defaultRestrictions) < ARRAY_SIZE(defaultRestrictions);
-        ++restriction) {
-        m_restrictedKeyMap.add(restriction->key, restriction->navigationTimingFunction);
-    }
+UserTiming::UserTiming(Performance* performance)
+    : m_performance(performance)
+{
 }
 
 static void insertPerformanceEntry(PerformanceEntryMap& performanceEntryMap, PassRefPtr<PerformanceEntry> performanceEntry)
@@ -105,7 +102,7 @@
 void UserTiming::mark(const String& markName, ExceptionCode& ec)
 {
     ec = 0;
-    if (m_restrictedKeyMap.contains(markName)) {
+    if (restrictedKeyMap().contains(markName)) {
         ec = SYNTAX_ERR;
         return;
     }
@@ -126,8 +123,8 @@
     if (m_marksMap.contains(markName))
         return m_marksMap.get(markName).last()->startTime();
 
-    if (m_restrictedKeyMap.contains(markName))
-        return static_cast<double>((m_performance->timing()->*(m_restrictedKeyMap.get(markName)))()) - m_performance->timing()->navigationStart();
+    if (restrictedKeyMap().contains(markName))
+        return static_cast<double>((m_performance->timing()->*(restrictedKeyMap().get(markName)))()) - m_performance->timing()->navigationStart();
 
     ec = SYNTAX_ERR;
     return 0.0;

Modified: trunk/Source/WebCore/page/PerformanceUserTiming.h (136564 => 136565)


--- trunk/Source/WebCore/page/PerformanceUserTiming.h	2012-12-04 22:04:22 UTC (rev 136564)
+++ trunk/Source/WebCore/page/PerformanceUserTiming.h	2012-12-04 22:04:41 UTC (rev 136565)
@@ -49,6 +49,7 @@
 class UserTiming : public RefCounted<UserTiming> {
 public:
     static PassRefPtr<UserTiming> create(Performance* performance) { return adoptRef(new UserTiming(performance)); }
+
     void mark(const String& markName, ExceptionCode&);
     void clearMarks(const String& markName);
 
@@ -63,8 +64,7 @@
 
 private:
     explicit UserTiming(Performance*);
-    static HashMap<String, NavigationTimingFunction> m_restrictedKeyMap;
-    
+
     double findExistingMarkStartTime(const String& markName, ExceptionCode&);
     Performance* m_performance;
     PerformanceEntryMap m_marksMap;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to