| Index: base/time/time.h
|
| diff --git a/base/time/time.h b/base/time/time.h
|
| index 40566b92317a3c94ff183994a22c0029122fceb0..69a132431d6597514e44191a04db8bf461fb2c40 100644
|
| --- a/base/time/time.h
|
| +++ b/base/time/time.h
|
| @@ -61,9 +61,9 @@ class BASE_EXPORT TimeDelta {
|
| }
|
|
|
| // Converts units of time to TimeDeltas.
|
| - static TimeDelta FromDays(int64 days);
|
| - static TimeDelta FromHours(int64 hours);
|
| - static TimeDelta FromMinutes(int64 minutes);
|
| + static TimeDelta FromDays(int days);
|
| + static TimeDelta FromHours(int hours);
|
| + static TimeDelta FromMinutes(int minutes);
|
| static TimeDelta FromSeconds(int64 secs);
|
| static TimeDelta FromMilliseconds(int64 ms);
|
| static TimeDelta FromMicroseconds(int64 us);
|
| @@ -79,6 +79,11 @@ class BASE_EXPORT TimeDelta {
|
| return TimeDelta(delta);
|
| }
|
|
|
| + // Returns the maximum time delta, which should be greater than any reasonable
|
| + // time delta we might compare it to. Adding or subtracting the maximum time
|
| + // delta to a time or another time delta has an undefined result.
|
| + static TimeDelta Max();
|
| +
|
| // Returns the internal numeric value of the TimeDelta object. Please don't
|
| // use this and do arithmetic on it, as it is more error prone than using the
|
| // provided operators.
|
| @@ -87,6 +92,11 @@ class BASE_EXPORT TimeDelta {
|
| return delta_;
|
| }
|
|
|
| + // Returns true if the time delta is the maximum time delta.
|
| + bool is_max() const {
|
| + return delta_ == std::numeric_limits<int64>::max();
|
| + }
|
| +
|
| #if defined(OS_POSIX)
|
| struct timespec ToTimeSpec() const;
|
| #endif
|
| @@ -493,32 +503,50 @@ class BASE_EXPORT Time {
|
| // Inline the TimeDelta factory methods, for fast TimeDelta construction.
|
|
|
| // static
|
| -inline TimeDelta TimeDelta::FromDays(int64 days) {
|
| +inline TimeDelta TimeDelta::FromDays(int days) {
|
| + // Preserve max to prevent overflow.
|
| + if (days == std::numeric_limits<int>::max())
|
| + return Max();
|
| return TimeDelta(days * Time::kMicrosecondsPerDay);
|
| }
|
|
|
| // static
|
| -inline TimeDelta TimeDelta::FromHours(int64 hours) {
|
| +inline TimeDelta TimeDelta::FromHours(int hours) {
|
| + // Preserve max to prevent overflow.
|
| + if (hours == std::numeric_limits<int>::max())
|
| + return Max();
|
| return TimeDelta(hours * Time::kMicrosecondsPerHour);
|
| }
|
|
|
| // static
|
| -inline TimeDelta TimeDelta::FromMinutes(int64 minutes) {
|
| +inline TimeDelta TimeDelta::FromMinutes(int minutes) {
|
| + // Preserve max to prevent overflow.
|
| + if (minutes == std::numeric_limits<int>::max())
|
| + return Max();
|
| return TimeDelta(minutes * Time::kMicrosecondsPerMinute);
|
| }
|
|
|
| // static
|
| inline TimeDelta TimeDelta::FromSeconds(int64 secs) {
|
| + // Preserve max to prevent overflow.
|
| + if (secs == std::numeric_limits<int64>::max())
|
| + return Max();
|
| return TimeDelta(secs * Time::kMicrosecondsPerSecond);
|
| }
|
|
|
| // static
|
| inline TimeDelta TimeDelta::FromMilliseconds(int64 ms) {
|
| + // Preserve max to prevent overflow.
|
| + if (ms == std::numeric_limits<int64>::max())
|
| + return Max();
|
| return TimeDelta(ms * Time::kMicrosecondsPerMillisecond);
|
| }
|
|
|
| // static
|
| inline TimeDelta TimeDelta::FromMicroseconds(int64 us) {
|
| + // Preserve max to prevent overflow.
|
| + if (us == std::numeric_limits<int64>::max())
|
| + return Max();
|
| return TimeDelta(us);
|
| }
|
|
|
|
|