blob: 9f8ecc8f1a6aa572f8322a85a803cf5618c6f5ac [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/relaunch_notification/relaunch_recommended_timer.h"
#include <utility>
#include "chrome/grit/branded_strings.h"
#include "ui/base/l10n/l10n_util.h"
RelaunchRecommendedTimer::RelaunchRecommendedTimer(
base::Time upgrade_detected_time,
base::RepeatingClosure callback)
: upgrade_detected_time_(upgrade_detected_time),
callback_(std::move(callback)) {
ScheduleNextTitleRefresh();
}
RelaunchRecommendedTimer::~RelaunchRecommendedTimer() = default;
std::u16string RelaunchRecommendedTimer::GetWindowTitle() const {
const base::TimeDelta elapsed = base::Time::Now() - upgrade_detected_time_;
return l10n_util::GetPluralStringFUTF16(IDS_RELAUNCH_RECOMMENDED_TITLE,
elapsed.InDays());
}
void RelaunchRecommendedTimer::ScheduleNextTitleRefresh() {
// Refresh at the next day boundary.
const base::Time now = base::Time::Now();
const base::TimeDelta elapsed = now - upgrade_detected_time_;
const base::TimeDelta delta = base::Days(elapsed.InDays() + 1) - elapsed;
refresh_timer_.Start(FROM_HERE, now + delta, this,
&RelaunchRecommendedTimer::OnTitleRefresh);
}
void RelaunchRecommendedTimer::OnTitleRefresh() {
callback_.Run();
ScheduleNextTitleRefresh();
}