Commit 673b8465 authored by derat@chromium.org's avatar derat@chromium.org

chromeos: Fix a bug in the battery-time-rounding code.

Avoid reporting that 60 minutes remain when the time
interval is just under an hour boundary.

BUG=368261

Review URL: https://codereview.chromium.org/258303002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267044 0039d316-1c4b-4281-b951-d872f2087c98
parent 826b2504
...@@ -117,10 +117,9 @@ void PowerStatus::SplitTimeIntoHoursAndMinutes(const base::TimeDelta& time, ...@@ -117,10 +117,9 @@ void PowerStatus::SplitTimeIntoHoursAndMinutes(const base::TimeDelta& time,
int* minutes) { int* minutes) {
DCHECK(hours); DCHECK(hours);
DCHECK(minutes); DCHECK(minutes);
*hours = time.InHours(); const int total_minutes = static_cast<int>(time.InSecondsF() / 60 + 0.5);
const double seconds = *hours = total_minutes / 60;
(time - base::TimeDelta::FromHours(*hours)).InSecondsF(); *minutes = total_minutes % 60;
*minutes = static_cast<int>(seconds / 60.0 + 0.5);
} }
void PowerStatus::AddObserver(Observer* observer) { void PowerStatus::AddObserver(Observer* observer) {
......
...@@ -138,6 +138,18 @@ TEST_F(PowerStatusTest, SplitTimeIntoHoursAndMinutes) { ...@@ -138,6 +138,18 @@ TEST_F(PowerStatusTest, SplitTimeIntoHoursAndMinutes) {
base::TimeDelta::FromSeconds(2 * 3600 + 3 * 60 + 29), &hours, &minutes); base::TimeDelta::FromSeconds(2 * 3600 + 3 * 60 + 29), &hours, &minutes);
EXPECT_EQ(2, hours); EXPECT_EQ(2, hours);
EXPECT_EQ(3, minutes); EXPECT_EQ(3, minutes);
// Check that times close to hour boundaries aren't incorrectly rounded such
// that they display 60 minutes: http://crbug.com/368261
PowerStatus::SplitTimeIntoHoursAndMinutes(
base::TimeDelta::FromSecondsD(3599.9), &hours, &minutes);
EXPECT_EQ(1, hours);
EXPECT_EQ(0, minutes);
PowerStatus::SplitTimeIntoHoursAndMinutes(
base::TimeDelta::FromSecondsD(3600.1), &hours, &minutes);
EXPECT_EQ(1, hours);
EXPECT_EQ(0, minutes);
} }
} // namespace ash } // namespace ash
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment