Index: base/time/time.cc |
diff --git a/base/time/time.cc b/base/time/time.cc |
index 4605d56ee007dba02029e17d9601618d528e23da..2c6388608ed714c9264cddb7d34804e568bdd6f5 100644 |
--- a/base/time/time.cc |
+++ b/base/time/time.cc |
@@ -17,40 +17,81 @@ namespace base { |
// TimeDelta ------------------------------------------------------------------ |
+// static |
+TimeDelta TimeDelta::Max() { |
+ return TimeDelta(std::numeric_limits<int64>::max()); |
+} |
+ |
int TimeDelta::InDays() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int>::max(); |
+ } |
return static_cast<int>(delta_ / Time::kMicrosecondsPerDay); |
} |
int TimeDelta::InHours() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int>::max(); |
+ } |
return static_cast<int>(delta_ / Time::kMicrosecondsPerHour); |
} |
int TimeDelta::InMinutes() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int>::max(); |
+ } |
return static_cast<int>(delta_ / Time::kMicrosecondsPerMinute); |
} |
double TimeDelta::InSecondsF() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<double>::infinity(); |
+ } |
return static_cast<double>(delta_) / Time::kMicrosecondsPerSecond; |
} |
int64 TimeDelta::InSeconds() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int64>::max(); |
+ } |
return delta_ / Time::kMicrosecondsPerSecond; |
} |
double TimeDelta::InMillisecondsF() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<double>::infinity(); |
+ } |
return static_cast<double>(delta_) / Time::kMicrosecondsPerMillisecond; |
} |
int64 TimeDelta::InMilliseconds() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int64>::max(); |
+ } |
return delta_ / Time::kMicrosecondsPerMillisecond; |
} |
int64 TimeDelta::InMillisecondsRoundedUp() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int64>::max(); |
+ } |
return (delta_ + Time::kMicrosecondsPerMillisecond - 1) / |
Time::kMicrosecondsPerMillisecond; |
} |
int64 TimeDelta::InMicroseconds() const { |
+ if (is_max()) { |
+ // Preserve max to prevent overflow. |
+ return std::numeric_limits<int64>::max(); |
+ } |
return delta_; |
} |