123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/metrics/date_changed_helper.h"
- #include "base/time/time.h"
- #include "base/time/time_override.h"
- #include "components/prefs/testing_pref_service.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace metrics {
- namespace {
- using base::subtle::TimeNowIgnoringOverride;
- const char kTestPrefName[] = "TestPref";
- // TODO(crbug.com/1004987): Use TaskEnvironment::TimeSource::MOCK_TIME here
- // instead of explicit clock overrides when it better supports setting a
- // specific time of day and rewinding time.
- class DateChangedHelperTest : public testing::Test {
- public:
- void SetUp() override {
- date_changed_helper::RegisterPref(prefs_.registry(), kTestPrefName);
- }
- protected:
- TestingPrefServiceSimple prefs_;
- };
- } // namespace
- // Should not consider date changed if the preference is not available.
- TEST_F(DateChangedHelperTest, TestNewDoesNotFire) {
- SCOPED_TRACE(base::Time::Now());
- ASSERT_FALSE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- // Should consider date changed if the preference is more than a day old.
- TEST_F(DateChangedHelperTest, TestOldFires) {
- SCOPED_TRACE(base::Time::Now());
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName);
- base::subtle::ScopedTimeClockOverrides time_override(
- []() { return TimeNowIgnoringOverride() + base::Hours(25); }, nullptr,
- nullptr);
- ASSERT_TRUE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- // Should consider date changed if the preference is more than a day in the
- // future.
- TEST_F(DateChangedHelperTest, TestFutureFires) {
- SCOPED_TRACE(base::Time::Now());
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName);
- base::subtle::ScopedTimeClockOverrides time_override(
- []() { return TimeNowIgnoringOverride() - base::Hours(25); }, nullptr,
- nullptr);
- ASSERT_TRUE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- // Should not consider date changed if the preference is earlier the same day.
- TEST_F(DateChangedHelperTest, TestEarlierSameDayNotFired) {
- SCOPED_TRACE(base::Time::Now());
- {
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() + base::Hours(2);
- },
- nullptr, nullptr);
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName);
- }
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() + base::Hours(22);
- },
- nullptr, nullptr);
- ASSERT_FALSE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- // Should not consider date changed if the preference is later the same day.
- TEST_F(DateChangedHelperTest, TestLaterSameDayNotFired) {
- SCOPED_TRACE(base::Time::Now());
- {
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() + base::Hours(22);
- },
- nullptr, nullptr);
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName);
- }
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() + base::Hours(2);
- },
- nullptr, nullptr);
- ASSERT_FALSE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- // Should consider date changed if the preference is in the previous day.
- TEST_F(DateChangedHelperTest, TestJustNextDayFired) {
- SCOPED_TRACE(base::Time::Now());
- {
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() - base::Minutes(5);
- },
- nullptr, nullptr);
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName);
- }
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() + base::Minutes(5);
- },
- nullptr, nullptr);
- ASSERT_TRUE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- // Should consider date changed if the preference is in the next day.
- TEST_F(DateChangedHelperTest, TestJustPreviousDayFired) {
- SCOPED_TRACE(base::Time::Now());
- {
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() + base::Minutes(5);
- },
- nullptr, nullptr);
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName);
- }
- base::subtle::ScopedTimeClockOverrides time_override(
- []() {
- return TimeNowIgnoringOverride().LocalMidnight() - base::Minutes(5);
- },
- nullptr, nullptr);
- ASSERT_TRUE(
- date_changed_helper::HasDateChangedSinceLastCall(&prefs_, kTestPrefName));
- }
- } // namespace metrics
|