Regression(r222392?): Events can have a negative timestamp which causes app breakage
https://bugs.webkit.org/show_bug.cgi?id=185040
<rdar://problem/39638051>

Reviewed by Wenson Hsieh.

The real fix is in UIKit when generating the touch timestamps. However, this patch
does some hardening to make sure that Event.timestamp can never return a negative
value even if something goes wrong.

* dom/Event.cpp:
(WebCore::Event::timeStampForBindings const):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@231111 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 8eda24b..4e69617 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2018-04-27  Chris Dumez  <cdumez@apple.com>
+
+        Regression(r222392?): Events can have a negative timestamp which causes app breakage
+        https://bugs.webkit.org/show_bug.cgi?id=185040
+        <rdar://problem/39638051>
+
+        Reviewed by Wenson Hsieh.
+
+        The real fix is in UIKit when generating the touch timestamps. However, this patch
+        does some hardening to make sure that Event.timestamp can never return a negative
+        value even if something goes wrong.
+
+        * dom/Event.cpp:
+        (WebCore::Event::timeStampForBindings const):
+
 2018-04-27  Christopher Reid  <chris.reid@sony.com>
 
         URL::appendEncodedHostName is using the deprecated uidna_IDNToASCII function
diff --git a/Source/WebCore/dom/Event.cpp b/Source/WebCore/dom/Event.cpp
index 88c4381..c67822a 100644
--- a/Source/WebCore/dom/Event.cpp
+++ b/Source/WebCore/dom/Event.cpp
@@ -170,7 +170,7 @@
     if (!performance)
         return 0;
 
-    return performance->relativeTimeFromTimeOriginInReducedResolution(m_createTime);
+    return std::max(performance->relativeTimeFromTimeOriginInReducedResolution(m_createTime), 0.);
 }
 
 void Event::resetBeforeDispatch()