Changeset 197690 in webkit
- Timestamp:
- Mar 7, 2016, 10:41:56 AM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 18 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/dom/Document.cpp (modified) (2 diffs)
-
WebCore/dom/Document.h (modified) (1 diff)
-
WebCore/dom/ScriptExecutionContext.cpp (modified) (3 diffs)
-
WebCore/dom/ScriptExecutionContext.h (modified) (1 diff)
-
WebCore/page/DOMTimer.cpp (modified) (2 diffs)
-
WebCore/page/DOMTimer.h (modified) (4 diffs)
-
WebCore/page/Page.cpp (modified) (3 diffs)
-
WebCore/page/Page.h (modified) (2 diffs)
-
WebCore/page/Settings.cpp (modified) (1 diff)
-
WebCore/page/Settings.h (modified) (2 diffs)
-
WebCore/page/SuspendableTimer.h (modified) (2 diffs)
-
WebCore/platform/Timer.cpp (modified) (2 diffs)
-
WebCore/platform/Timer.h (modified) (5 diffs)
-
WebCore/testing/InternalSettings.cpp (modified) (1 diff)
-
WebCore/testing/InternalSettings.h (modified) (1 diff)
-
WebKit/win/ChangeLog (modified) (1 diff)
-
WebKit/win/WebView.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r197680 r197690 1 2016-03-06 Gavin Barraclough <barraclough@apple.com> 2 3 Convert DOMTimer to std::chrono::milliseconds 4 https://bugs.webkit.org/show_bug.cgi?id=155085 5 6 Reviewed by Andreas Kling. 7 8 DOMTimer currently uses a mix of millisecond (was int, now std::chrono) and second (as double) 9 time values. Constant conversion back and forth is a complete mess. Stop that. 10 11 * dom/Document.cpp: 12 (WebCore::Document::minimumTimerInterval): 13 (WebCore::Document::timerAlignmentInterval): 14 * dom/Document.h: 15 - double -> std::chrono::milliseconds 16 * dom/ScriptExecutionContext.cpp: 17 (WebCore::ScriptExecutionContext::adjustMinimumTimerInterval): 18 (WebCore::ScriptExecutionContext::minimumTimerInterval): 19 (WebCore::ScriptExecutionContext::timerAlignmentInterval): 20 * dom/ScriptExecutionContext.h: 21 - double -> std::chrono::milliseconds 22 * page/DOMTimer.cpp: 23 (WebCore::DOMTimer::updateTimerIntervalIfNecessary): 24 (WebCore::DOMTimer::intervalClampedToMinimum): 25 (WebCore::DOMTimer::alignedFireTime): 26 * page/DOMTimer.h: 27 - double -> std::chrono::milliseconds 28 * page/Page.cpp: 29 (WebCore::Page::setTimerThrottlingState): 30 (WebCore::Page::setTimerAlignmentIntervalIncreaseLimit): 31 (WebCore::Page::updateDOMTimerAlignmentInterval): 32 * page/Page.h: 33 - double -> std::chrono::milliseconds 34 * page/Settings.cpp: 35 (WebCore::Settings::setNeedsAdobeFrameReloadingQuirk): 36 (WebCore::Settings::setMinimumDOMTimerInterval): 37 * page/Settings.h: 38 - double -> std::chrono::milliseconds 39 * page/SuspendableTimer.h: 40 (WebCore::SuspendableTimer::startRepeating): 41 (WebCore::SuspendableTimer::startOneShot): 42 (WebCore::SuspendableTimer::repeatIntervalMS): 43 (WebCore::SuspendableTimer::augmentFireInterval): 44 (WebCore::SuspendableTimer::augmentRepeatInterval): 45 - added std::chrono::milliseconds interface. 46 * platform/Timer.cpp: 47 (WebCore::TimerBase::setNextFireTime): 48 - restructured for new alignedFireTime signatured, moved zero-delay handling to here. 49 This change made because inside alignedFireTime fireTime will have already been truncated. 50 * platform/Timer.h: 51 (WebCore::TimerBase::msToSeconds): 52 (WebCore::TimerBase::secondsToMS): 53 - internal helper functions to bridge std::chrono::milliseconds to internal double. 54 (WebCore::TimerBase::startRepeating): 55 (WebCore::TimerBase::startOneShot): 56 (WebCore::TimerBase::repeatIntervalMS): 57 (WebCore::TimerBase::augmentFireInterval): 58 (WebCore::TimerBase::augmentRepeatInterval): 59 - expanded std::chrono::milliseconds interface. 60 (WebCore::TimerBase::alignedFireTime): 61 - changed to std::chrono::milliseconds, made return value Optional (null means no alignment). 62 * testing/InternalSettings.cpp: 63 (WebCore::InternalSettings::setMinimumTimerInterval): 64 * testing/InternalSettings.h: 65 - double -> std::chrono::milliseconds 66 1 67 2016-03-07 Andreas Kling <akling@apple.com> 2 68 -
trunk/Source/WebCore/dom/Document.cpp
r197634 r197690 2916 2916 } 2917 2917 2918 doubleDocument::minimumTimerInterval() const2918 std::chrono::milliseconds Document::minimumTimerInterval() const 2919 2919 { 2920 2920 auto* page = this->page(); … … 2933 2933 } 2934 2934 2935 doubleDocument::timerAlignmentInterval(bool hasReachedMaxNestingLevel) const2936 { 2937 doublealignmentInterval = ScriptExecutionContext::timerAlignmentInterval(hasReachedMaxNestingLevel);2935 std::chrono::milliseconds Document::timerAlignmentInterval(bool hasReachedMaxNestingLevel) const 2936 { 2937 auto alignmentInterval = ScriptExecutionContext::timerAlignmentInterval(hasReachedMaxNestingLevel); 2938 2938 2939 2939 // Apply Document-level DOMTimer throttling only if timers have reached their maximum nesting level as the Page may still be visible. -
trunk/Source/WebCore/dom/Document.h
r197566 r197690 1356 1356 void addMessage(MessageSource, MessageLevel, const String& message, const String& sourceURL, unsigned lineNumber, unsigned columnNumber, RefPtr<Inspector::ScriptCallStack>&&, JSC::ExecState* = nullptr, unsigned long requestIdentifier = 0) final; 1357 1357 1358 doubleminimumTimerInterval() const final;1359 1360 doubletimerAlignmentInterval(bool hasReachedMaxNestingLevel) const final;1358 std::chrono::milliseconds minimumTimerInterval() const final; 1359 1360 std::chrono::milliseconds timerAlignmentInterval(bool hasReachedMaxNestingLevel) const final; 1361 1361 1362 1362 void updateTitleFromTitleElement(); -
trunk/Source/WebCore/dom/ScriptExecutionContext.cpp
r196563 r197690 427 427 } 428 428 429 void ScriptExecutionContext::adjustMinimumTimerInterval( doubleoldMinimumTimerInterval)429 void ScriptExecutionContext::adjustMinimumTimerInterval(std::chrono::milliseconds oldMinimumTimerInterval) 430 430 { 431 431 if (minimumTimerInterval() != oldMinimumTimerInterval) { … … 435 435 } 436 436 437 doubleScriptExecutionContext::minimumTimerInterval() const437 std::chrono::milliseconds ScriptExecutionContext::minimumTimerInterval() const 438 438 { 439 439 // The default implementation returns the DOMTimer's default … … 451 451 } 452 452 453 doubleScriptExecutionContext::timerAlignmentInterval(bool) const453 std::chrono::milliseconds ScriptExecutionContext::timerAlignmentInterval(bool) const 454 454 { 455 455 return DOMTimer::defaultAlignmentInterval(); -
trunk/Source/WebCore/dom/ScriptExecutionContext.h
r196242 r197690 171 171 172 172 // Interval is in seconds. 173 void adjustMinimumTimerInterval( doubleoldMinimumTimerInterval);174 virtual doubleminimumTimerInterval() const;173 void adjustMinimumTimerInterval(std::chrono::milliseconds oldMinimumTimerInterval); 174 virtual std::chrono::milliseconds minimumTimerInterval() const; 175 175 176 176 void didChangeTimerAlignmentInterval(); 177 virtual doubletimerAlignmentInterval(bool hasReachedMaxNestingLevel) const;177 virtual std::chrono::milliseconds timerAlignmentInterval(bool hasReachedMaxNestingLevel) const; 178 178 179 179 virtual EventQueue& eventQueue() const = 0; -
trunk/Source/WebCore/page/DOMTimer.cpp
r197603 r197690 54 54 55 55 static const std::chrono::milliseconds maxIntervalForUserGestureForwarding = std::chrono::milliseconds(1000); // One second matches Gecko. 56 static const int minIntervalForNonUserObservableChangeTimers = 1000; // Empirically determined to maximize battery life.56 static const std::chrono::milliseconds minIntervalForNonUserObservableChangeTimers = std::chrono::milliseconds(1000); // Empirically determined to maximize battery life. 57 57 static const int maxTimerNestingLevel = 5; 58 static const double oneMillisecond = 0.001;59 58 60 59 class DOMTimerFireState { … … 388 387 ASSERT(m_nestingLevel <= maxTimerNestingLevel); 389 388 390 doublepreviousInterval = m_currentTimerInterval;389 auto previousInterval = m_currentTimerInterval; 391 390 m_currentTimerInterval = intervalClampedToMinimum(); 392 393 if (WTF::areEssentiallyEqual(previousInterval, m_currentTimerInterval, oneMillisecond)) 391 if (previousInterval == m_currentTimerInterval) 394 392 return; 395 393 396 394 if (repeatInterval()) { 397 ASSERT( WTF::areEssentiallyEqual(repeatInterval(), previousInterval, oneMillisecond));398 LOG(DOMTimers, "%p - Updating DOMTimer's repeat interval from % g ms to %g ms due to throttling.", this, previousInterval * 1000., m_currentTimerInterval * 1000.);395 ASSERT(repeatIntervalMS() == previousInterval); 396 LOG(DOMTimers, "%p - Updating DOMTimer's repeat interval from %lld ms to %lld ms due to throttling.", this, previousInterval.count(), m_currentTimerInterval.count()); 399 397 augmentRepeatInterval(m_currentTimerInterval - previousInterval); 400 398 } else { 401 LOG(DOMTimers, "%p - Updating DOMTimer's fire interval from % g ms to %g ms due to throttling.", this, previousInterval * 1000., m_currentTimerInterval * 1000.);399 LOG(DOMTimers, "%p - Updating DOMTimer's fire interval from %lld ms to %lld ms due to throttling.", this, previousInterval.count(), m_currentTimerInterval.count()); 402 400 augmentFireInterval(m_currentTimerInterval - previousInterval); 403 401 } 404 402 } 405 403 406 doubleDOMTimer::intervalClampedToMinimum() const404 std::chrono::milliseconds DOMTimer::intervalClampedToMinimum() const 407 405 { 408 406 ASSERT(scriptExecutionContext()); 409 407 ASSERT(m_nestingLevel <= maxTimerNestingLevel); 410 408 411 double intervalInSeconds = std::max(oneMillisecond, m_originalInterval.count() * oneMillisecond);409 auto interval = std::max(std::chrono::milliseconds(1), m_originalInterval); 412 410 413 411 // Only apply throttling to repeating timers. 414 412 if (m_nestingLevel < maxTimerNestingLevel) 415 return interval InSeconds;413 return interval; 416 414 417 415 // Apply two throttles - the global (per Page) minimum, and also a per-timer throttle. 418 interval InSeconds = std::max(intervalInSeconds, scriptExecutionContext()->minimumTimerInterval());416 interval = std::max(interval, scriptExecutionContext()->minimumTimerInterval()); 419 417 if (m_throttleState == ShouldThrottle) 420 interval InSeconds = std::max(intervalInSeconds, minIntervalForNonUserObservableChangeTimers * oneMillisecond);421 return interval InSeconds;422 } 423 424 double DOMTimer::alignedFireTime(doublefireTime) const425 { 426 if (double alignmentInterval = scriptExecutionContext()->timerAlignmentInterval(m_nestingLevel >= maxTimerNestingLevel)) {427 // Don't mess with zero-delay timers.428 if (!fireTime)429 return fireTime;430 static const double randomizedAlignment= randomNumber();431 // Force alignment to randomizedAlignment fraction of the way between alignemntIntervals, e.g. 432 // if alignmentInterval is 10 and randomizedAlignment is 0.3 this will align to 3, 13, 23, ...433 return (ceil(fireTime / alignmentInterval - randomizedAlignment) + randomizedAlignment) * alignmentInterval;434 }435 436 return fireTime;418 interval = std::max(interval, minIntervalForNonUserObservableChangeTimers); 419 return interval; 420 } 421 422 Optional<std::chrono::milliseconds> DOMTimer::alignedFireTime(std::chrono::milliseconds fireTime) const 423 { 424 auto alignmentInterval = scriptExecutionContext()->timerAlignmentInterval(m_nestingLevel >= maxTimerNestingLevel); 425 if (alignmentInterval == std::chrono::milliseconds::zero()) 426 return Nullopt; 427 428 static const double randomizedProportion = randomNumber(); 429 430 // Force alignment to randomizedAlignment fraction of the way between alignemntIntervals, e.g. 431 // if alignmentInterval is 10 and randomizedAlignment is 0.3 this will align to 3, 13, 23, ... 432 auto randomizedOffset = std::chrono::duration_cast<std::chrono::milliseconds>(alignmentInterval * randomizedProportion); 433 auto adjustedFireTime = fireTime - randomizedOffset; 434 return adjustedFireTime - (adjustedFireTime % alignmentInterval) + alignmentInterval + randomizedOffset; 437 435 } 438 436 -
trunk/Source/WebCore/page/DOMTimer.h
r197599 r197690 47 47 virtual ~DOMTimer(); 48 48 49 static double defaultMinimumInterval() { return 0.004; } // 4 milliseconds.50 static double defaultAlignmentInterval() { return 0; }51 static double hiddenPageAlignmentInterval() { return 1.0; } // 1 second.49 static std::chrono::milliseconds defaultMinimumInterval() { return std::chrono::milliseconds(4); } 50 static std::chrono::milliseconds defaultAlignmentInterval() { return std::chrono::milliseconds::zero(); } 51 static std::chrono::milliseconds hiddenPageAlignmentInterval() { return std::chrono::milliseconds(1000); } 52 52 53 53 // Creates a new timer owned by specified ScriptExecutionContext, starts it … … 66 66 friend class Internals; 67 67 68 doubleintervalClampedToMinimum() const;68 std::chrono::milliseconds intervalClampedToMinimum() const; 69 69 70 70 bool isDOMTimersThrottlingEnabled(Document&) const; … … 74 74 void fired() override; 75 75 void didStop() override; 76 double alignedFireTime(double) const override;76 Optional<std::chrono::milliseconds> alignedFireTime(std::chrono::milliseconds) const override; 77 77 78 78 // ActiveDOMObject API. … … 90 90 std::chrono::milliseconds m_originalInterval; 91 91 TimerThrottleState m_throttleState; 92 doublem_currentTimerInterval;92 std::chrono::milliseconds m_currentTimerInterval; 93 93 bool m_shouldForwardUserGesture; 94 94 }; -
trunk/Source/WebCore/page/Page.cpp
r197588 r197690 1207 1207 1208 1208 m_timerThrottlingState = state; 1209 m_timerThrottlingStateLastChangedTime = monotonicallyIncreasingTime();1209 m_timerThrottlingStateLastChangedTime = std::chrono::steady_clock::now(); 1210 1210 1211 1211 updateDOMTimerAlignmentInterval(); … … 1222 1222 void Page::setTimerAlignmentIntervalIncreaseLimit(std::chrono::milliseconds limit) 1223 1223 { 1224 // FIXME: std::chrono-ify all timer allignment related code. 1225 m_timerAlignmentIntervalIncreaseLimit = limit.count() * 0.001; 1224 m_timerAlignmentIntervalIncreaseLimit = limit; 1226 1225 1227 1226 // If (m_timerAlignmentIntervalIncreaseLimit < m_timerAlignmentInterval) then we need … … 1249 1248 m_timerAlignmentInterval = m_timerAlignmentIntervalIncreaseLimit; 1250 1249 else { 1251 ASSERT(m_timerThrottlingStateLastChangedTime );1252 m_timerAlignmentInterval = monotonicallyIncreasingTime() - m_timerThrottlingStateLastChangedTime;1250 ASSERT(m_timerThrottlingStateLastChangedTime.time_since_epoch() != std::chrono::steady_clock::duration::zero()); 1251 m_timerAlignmentInterval = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - m_timerThrottlingStateLastChangedTime); 1253 1252 // If we're below the limit, set the timer. If above, clamp to limit. 1254 1253 if (m_timerAlignmentInterval < m_timerAlignmentIntervalIncreaseLimit) -
trunk/Source/WebCore/page/Page.h
r197581 r197690 220 220 BackForwardController& backForward() const { return *m_backForwardController; } 221 221 222 doubledomTimerAlignmentInterval() const { return m_timerAlignmentInterval; }222 std::chrono::milliseconds domTimerAlignmentInterval() const { return m_timerAlignmentInterval; } 223 223 224 224 #if ENABLE(VIEW_MODE_CSS_MEDIA) … … 622 622 623 623 TimerThrottlingState m_timerThrottlingState { TimerThrottlingState::Disabled }; 624 double m_timerThrottlingStateLastChangedTime { 0};625 doublem_timerAlignmentInterval;624 std::chrono::steady_clock::time_point m_timerThrottlingStateLastChangedTime { std::chrono::steady_clock::duration::zero() }; 625 std::chrono::milliseconds m_timerAlignmentInterval; 626 626 Timer m_timerAlignmentIntervalIncreaseTimer; 627 doublem_timerAlignmentIntervalIncreaseLimit { 0 };627 std::chrono::milliseconds m_timerAlignmentIntervalIncreaseLimit { 0 }; 628 628 629 629 bool m_isEditable; -
trunk/Source/WebCore/page/Settings.cpp
r197518 r197690 465 465 } 466 466 467 void Settings::setMinimumDOMTimerInterval( doubleinterval)468 { 469 doubleoldTimerInterval = m_minimumDOMTimerInterval;467 void Settings::setMinimumDOMTimerInterval(std::chrono::milliseconds interval) 468 { 469 auto oldTimerInterval = m_minimumDOMTimerInterval; 470 470 m_minimumDOMTimerInterval = interval; 471 471 -
trunk/Source/WebCore/page/Settings.h
r197518 r197690 153 153 bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; } 154 154 155 WEBCORE_EXPORT void setMinimumDOMTimerInterval( double); // Initialized to DOMTimer::defaultMinimumInterval().156 doubleminimumDOMTimerInterval() const { return m_minimumDOMTimerInterval; }155 WEBCORE_EXPORT void setMinimumDOMTimerInterval(std::chrono::milliseconds); // Initialized to DOMTimer::defaultMinimumInterval(). 156 std::chrono::milliseconds minimumDOMTimerInterval() const { return m_minimumDOMTimerInterval; } 157 157 158 158 WEBCORE_EXPORT void setLayoutInterval(std::chrono::milliseconds); … … 304 304 SecurityOrigin::StorageBlockingPolicy m_storageBlockingPolicy; 305 305 std::chrono::milliseconds m_layoutInterval; 306 doublem_minimumDOMTimerInterval;306 std::chrono::milliseconds m_minimumDOMTimerInterval; 307 307 308 308 #if ENABLE(TEXT_AUTOSIZING) -
trunk/Source/WebCore/page/SuspendableTimer.h
r197566 r197690 44 44 bool isActive() const { return TimerBase::isActive() || (m_suspended && m_savedIsActive); } 45 45 bool isSuspended() const { return m_suspended; } 46 46 47 void startRepeating(double repeatInterval); 47 48 void startOneShot(double interval); … … 49 50 void augmentFireInterval(double delta); 50 51 void augmentRepeatInterval(double delta); 52 53 void startRepeating(std::chrono::milliseconds repeatInterval) { startRepeating(msToSeconds(repeatInterval)); } 54 void startOneShot(std::chrono::milliseconds interval) { startOneShot(msToSeconds(interval)); } 55 std::chrono::milliseconds repeatIntervalMS() const { return secondsToMS(repeatInterval()); } 56 void augmentFireInterval(std::chrono::milliseconds delta) { augmentFireInterval(msToSeconds(delta)); } 57 void augmentRepeatInterval(std::chrono::milliseconds delta) { augmentRepeatInterval(msToSeconds(delta)); } 58 51 59 using TimerBase::didChangeAlignmentInterval; 52 60 using TimerBase::operator new; -
trunk/Source/WebCore/platform/Timer.cpp
r180058 r197690 368 368 } 369 369 370 void TimerBase::setNextFireTime(double new UnalignedTime)370 void TimerBase::setNextFireTime(double newTime) 371 371 { 372 372 ASSERT(canAccessThreadLocalDataForThread(m_thread)); 373 373 ASSERT(!m_wasDeleted); 374 374 375 if (m_unalignedNextFireTime != new UnalignedTime)376 m_unalignedNextFireTime = new UnalignedTime;375 if (m_unalignedNextFireTime != newTime) 376 m_unalignedNextFireTime = newTime; 377 377 378 378 // Accessing thread global data is slow. Cache the heap pointer. … … 382 382 // Keep heap valid while changing the next-fire time. 383 383 double oldTime = m_nextFireTime; 384 double newTime = alignedFireTime(newUnalignedTime); 384 // Don't realign zero-delay timers. 385 if (newTime) { 386 if (auto newAlignedTime = alignedFireTime(secondsToMS(newTime))) 387 newTime = msToSeconds(newAlignedTime.value()); 388 } 389 385 390 if (oldTime != newTime) { 386 391 m_nextFireTime = newTime; -
trunk/Source/WebCore/platform/Timer.h
r197563 r197690 30 30 #include <functional> 31 31 #include <wtf/Noncopyable.h> 32 #include <wtf/Optional.h> 32 33 #include <wtf/Threading.h> 33 34 #include <wtf/Vector.h> … … 46 47 WTF_MAKE_NONCOPYABLE(TimerBase); 47 48 WTF_MAKE_FAST_ALLOCATED; 49 protected: 50 static inline double msToSeconds(std::chrono::milliseconds duration) { return duration.count() * 0.001; } 51 static inline std::chrono::milliseconds secondsToMS(double duration) { return std::chrono::milliseconds((std::chrono::milliseconds::rep)(duration * 1000)); } 52 48 53 public: 49 54 WEBCORE_EXPORT TimerBase(); … … 53 58 54 59 void startRepeating(double repeatInterval) { start(repeatInterval, repeatInterval); } 55 void startRepeating(std::chrono::milliseconds repeatInterval) { startRepeating( repeatInterval.count() * 0.001); }60 void startRepeating(std::chrono::milliseconds repeatInterval) { startRepeating(msToSeconds(repeatInterval)); } 56 61 void startOneShot(double interval) { start(interval, 0); } 57 void startOneShot(std::chrono::milliseconds interval) { startOneShot( interval.count() * 0.001); }62 void startOneShot(std::chrono::milliseconds interval) { startOneShot(msToSeconds(interval)); } 58 63 59 64 WEBCORE_EXPORT void stop(); … … 63 68 double nextUnalignedFireInterval() const; 64 69 double repeatInterval() const { return m_repeatInterval; } 70 std::chrono::milliseconds repeatIntervalMS() const { return secondsToMS(repeatInterval()); } 65 71 66 72 void augmentFireInterval(double delta) { setNextFireTime(m_nextFireTime + delta); } 73 void augmentFireInterval(std::chrono::milliseconds delta) { augmentFireInterval(msToSeconds(delta)); } 67 74 void augmentRepeatInterval(double delta) { augmentFireInterval(delta); m_repeatInterval += delta; } 75 void augmentRepeatInterval(std::chrono::milliseconds delta) { augmentRepeatInterval(msToSeconds(delta)); } 68 76 69 77 void didChangeAlignmentInterval(); … … 74 82 virtual void fired() = 0; 75 83 76 virtual double alignedFireTime(double fireTime) const { return fireTime; }84 virtual Optional<std::chrono::milliseconds> alignedFireTime(std::chrono::milliseconds) const { return Nullopt; } 77 85 78 86 void checkConsistency() const; -
trunk/Source/WebCore/testing/InternalSettings.cpp
r197563 r197690 467 467 { 468 468 InternalSettingsGuardForSettings(); 469 settings()->setMinimumDOMTimerInterval( intervalInSeconds);469 settings()->setMinimumDOMTimerInterval(std::chrono::milliseconds((std::chrono::milliseconds::rep)(intervalInSeconds * 1000))); 470 470 } 471 471 -
trunk/Source/WebCore/testing/InternalSettings.h
r190202 r197690 76 76 bool m_langAttributeAwareFormControlUIEnabled; 77 77 bool m_imagesEnabled; 78 doublem_minimumTimerInterval;78 std::chrono::milliseconds m_minimumTimerInterval; 79 79 #if ENABLE(VIDEO_TRACK) 80 80 bool m_shouldDisplaySubtitles; -
trunk/Source/WebKit/win/ChangeLog
r197614 r197690 1 2016-03-06 Gavin Barraclough <barraclough@apple.com> 2 3 Convert DOMTimer to std::chrono::milliseconds 4 https://bugs.webkit.org/show_bug.cgi?id=155085 5 6 Reviewed by Andreas Kling. 7 8 DOMTimer currently uses a mix of millisecond (was int, now std::chrono) and second (as double) 9 time values. Constant conversion back and forth is a complete mess. Stop that. 10 11 * WebView.cpp: 12 (WebView::setMinimumTimerInterval): 13 - Convert double argument into std::chrono::milliseconds. 14 1 15 2016-03-05 Yusuke Suzuki <utatane.tea@gmail.com> 2 16 -
trunk/Source/WebKit/win/WebView.cpp
r195743 r197690 7221 7221 if (!interval) 7222 7222 return E_POINTER; 7223 *interval = DOMTimer::defaultMinimumInterval() ;7223 *interval = DOMTimer::defaultMinimumInterval().count() / 1000.; 7224 7224 return S_OK; 7225 7225 } … … 7230 7230 return E_FAIL; 7231 7231 7232 page()->settings().setMinimumDOMTimerInterval(interval); 7232 auto intervalMS = std::chrono::milliseconds((std::chrono::milliseconds::rep)(interval * 1000)); 7233 page()->settings().setMinimumDOMTimerInterval(intervalMS); 7233 7234 return S_OK; 7234 7235 }
Note:
See TracChangeset
for help on using the changeset viewer.