Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 /* | 1 /* | 
| 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | 
| 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) | 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) | 
| 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 
| 5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. | 
| 6 * | 6 * | 
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or | 
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public | 
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either | 
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. | 
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 | 22 | 
| 23 #include "config.h" | 23 #include "config.h" | 
| 24 #include "core/events/Event.h" | 24 #include "core/events/Event.h" | 
| 25 | 25 | 
| 26 #include "core/dom/StaticNodeList.h" | 26 #include "core/dom/StaticNodeList.h" | 
| 27 #include "core/events/EventDispatchMediator.h" | 27 #include "core/events/EventDispatchMediator.h" | 
| 28 #include "core/events/EventTarget.h" | 28 #include "core/events/EventTarget.h" | 
| 29 #include "core/frame/OriginsUsingFeatures.h" | 29 #include "core/frame/OriginsUsingFeatures.h" | 
| 30 #include "core/frame/UseCounter.h" | 30 #include "core/frame/UseCounter.h" | 
| 31 #include "core/svg/SVGElement.h" | 31 #include "core/svg/SVGElement.h" | 
| 32 #include "core/timing/PerformanceBase.h" | |
| 32 #include "wtf/CurrentTime.h" | 33 #include "wtf/CurrentTime.h" | 
| 33 | 34 | 
| 34 namespace blink { | 35 namespace blink { | 
| 35 | 36 | 
| 37 static const double millisPerSecond = 1000.0; | |
| 38 | |
| 36 Event::Event() | 39 Event::Event() | 
| 37 : Event("", false, false) | 40 : Event("", false, false) | 
| 38 { | 41 { | 
| 39 } | 42 } | 
| 40 | 43 | 
| 41 Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableAr g) | 44 Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableAr g) | 
| 42 : m_type(eventType) | 45 : m_type(eventType) | 
| 43 , m_canBubble(canBubbleArg) | 46 , m_canBubble(canBubbleArg) | 
| 44 , m_cancelable(cancelableArg) | 47 , m_cancelable(cancelableArg) | 
| 45 , m_propagationStopped(false) | 48 , m_propagationStopped(false) | 
| 46 , m_immediatePropagationStopped(false) | 49 , m_immediatePropagationStopped(false) | 
| 47 , m_defaultPrevented(false) | 50 , m_defaultPrevented(false) | 
| 48 , m_defaultHandled(false) | 51 , m_defaultHandled(false) | 
| 49 , m_cancelBubble(false) | 52 , m_cancelBubble(false) | 
| 50 , m_isTrusted(false) | 53 , m_isTrusted(false) | 
| 51 , m_eventPhase(0) | 54 , m_eventPhase(0) | 
| 52 , m_currentTarget(nullptr) | 55 , m_currentTarget(nullptr) | 
| 53 , m_createTime(convertSecondsToDOMTimeStamp(currentTime())) | 56 , m_createTime(convertSecondsToDOMTimeStamp(currentTime())) | 
| 54 , m_uiCreateTime(0) | 57 , m_platformTimeStamp(monotonicallyIncreasingTime()) | 
| 55 { | 58 { | 
| 56 } | 59 } | 
| 57 | 60 | 
| 58 Event::Event(const AtomicString& eventType, const EventInit& initializer) | 61 Event::Event(const AtomicString& eventType, const EventInit& initializer) | 
| 59 : Event(eventType, initializer.bubbles(), initializer.cancelable()) | 62 : Event(eventType, initializer.bubbles(), initializer.cancelable()) | 
| 60 { | 63 { | 
| 61 } | 64 } | 
| 62 | 65 | 
| 63 Event::~Event() | 66 Event::~Event() | 
| 64 { | 67 { | 
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 250 if (!m_currentTarget) | 253 if (!m_currentTarget) | 
| 251 return nullptr; | 254 return nullptr; | 
| 252 Node* node = m_currentTarget->toNode(); | 255 Node* node = m_currentTarget->toNode(); | 
| 253 if (node && node->isSVGElement()) { | 256 if (node && node->isSVGElement()) { | 
| 254 if (SVGElement* svgElement = toSVGElement(node)->correspondingElement()) | 257 if (SVGElement* svgElement = toSVGElement(node)->correspondingElement()) | 
| 255 return svgElement; | 258 return svgElement; | 
| 256 } | 259 } | 
| 257 return m_currentTarget.get(); | 260 return m_currentTarget.get(); | 
| 258 } | 261 } | 
| 259 | 262 | 
| 263 double Event::timeStamp(ScriptState* scriptState) const | |
| 264 { | |
| 265 double timeStamp = 0; | |
| 266 // TODO(majidvp): Get rid of m_createTime once the flag is enabled by defaul t; | |
| 267 if (UNLIKELY(RuntimeEnabledFeatures::hiResEventTimeStampEnabled())) { | |
| 268 // Only expose monotonic time after changing its origin to its target | |
| 269 // document's time origin. | |
| 270 if (scriptState && scriptState->domWindow() && scriptState->domWindow()- >document()) { | |
| 
 
Rick Byers
2015/09/25 17:29:33
It feels a little weird to depend on a Document he
 
majidvp
2015/09/29 14:21:31
There is a way to obtain the performance timing di
 
Rick Byers
2015/09/29 15:57:59
Nice, this makes a lot more sense to me (and seems
 
 | |
| 271 double docTimeStamp = scriptState->domWindow()->document()->monotoni cTimeToZeroBasedDocumentTime(m_platformTimeStamp); | |
| 272 timeStamp = toSafePrecisionTime(docTimeStamp) * millisPerSecond; | |
| 273 } | |
| 274 } else { | |
| 275 timeStamp = m_createTime; | |
| 276 } | |
| 277 | |
| 278 return timeStamp; | |
| 279 } | |
| 280 | |
| 260 DEFINE_TRACE(Event) | 281 DEFINE_TRACE(Event) | 
| 261 { | 282 { | 
| 262 visitor->trace(m_currentTarget); | 283 visitor->trace(m_currentTarget); | 
| 263 visitor->trace(m_target); | 284 visitor->trace(m_target); | 
| 264 visitor->trace(m_underlyingEvent); | 285 visitor->trace(m_underlyingEvent); | 
| 265 visitor->trace(m_eventPath); | 286 visitor->trace(m_eventPath); | 
| 266 } | 287 } | 
| 267 | 288 | 
| 268 } // namespace blink | 289 } // namespace blink | 
| OLD | NEW |