1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_prefs_manager.h"
6
7 #include <algorithm>
8 #include <initializer_list>
9
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/common/pref_names.h"
12 #include "components/pref_registry/pref_registry_syncable.h"
13 #include "components/prefs/pref_service.h"
14
15 namespace safe_browsing {
16
SettingsResetPromptPrefsManager(Profile * profile,int prompt_wave)17 SettingsResetPromptPrefsManager::SettingsResetPromptPrefsManager(
18 Profile* profile,
19 int prompt_wave)
20 : profile_(profile), prefs_(profile->GetPrefs()) {
21 DCHECK(profile_);
22 DCHECK(prefs_);
23
24 // If we are in a new prompt_wave, clear previous prefs.
25 int prefs_prompt_wave =
26 prefs_->GetInteger(prefs::kSettingsResetPromptPromptWave);
27 if (prompt_wave != prefs_prompt_wave) {
28 prefs_->SetInteger(prefs::kSettingsResetPromptPromptWave, prompt_wave);
29 prefs_->ClearPref(prefs::kSettingsResetPromptLastTriggeredForDefaultSearch);
30 prefs_->ClearPref(prefs::kSettingsResetPromptLastTriggeredForStartupUrls);
31 prefs_->ClearPref(prefs::kSettingsResetPromptLastTriggeredForHomepage);
32 }
33 }
34
~SettingsResetPromptPrefsManager()35 SettingsResetPromptPrefsManager::~SettingsResetPromptPrefsManager() {}
36
37 // static
RegisterProfilePrefs(user_prefs::PrefRegistrySyncable * registry)38 void SettingsResetPromptPrefsManager::RegisterProfilePrefs(
39 user_prefs::PrefRegistrySyncable* registry) {
40 DCHECK(registry);
41 registry->RegisterIntegerPref(prefs::kSettingsResetPromptPromptWave, 0);
42 registry->RegisterInt64Pref(
43 prefs::kSettingsResetPromptLastTriggeredForDefaultSearch, 0);
44 registry->RegisterInt64Pref(
45 prefs::kSettingsResetPromptLastTriggeredForStartupUrls, 0);
46 registry->RegisterInt64Pref(
47 prefs::kSettingsResetPromptLastTriggeredForHomepage, 0);
48 }
49
LastTriggeredPrompt() const50 base::Time SettingsResetPromptPrefsManager::LastTriggeredPrompt() const {
51 return std::max({LastTriggeredPromptForDefaultSearch(),
52 LastTriggeredPromptForStartupUrls(),
53 LastTriggeredPromptForHomepage()});
54 }
55
56 base::Time
LastTriggeredPromptForDefaultSearch() const57 SettingsResetPromptPrefsManager::LastTriggeredPromptForDefaultSearch() const {
58 return base::Time::FromInternalValue(prefs_->GetInt64(
59 prefs::kSettingsResetPromptLastTriggeredForDefaultSearch));
60 }
61
LastTriggeredPromptForStartupUrls() const62 base::Time SettingsResetPromptPrefsManager::LastTriggeredPromptForStartupUrls()
63 const {
64 return base::Time::FromInternalValue(
65 prefs_->GetInt64(prefs::kSettingsResetPromptLastTriggeredForStartupUrls));
66 }
67
LastTriggeredPromptForHomepage() const68 base::Time SettingsResetPromptPrefsManager::LastTriggeredPromptForHomepage()
69 const {
70 return base::Time::FromInternalValue(
71 prefs_->GetInt64(prefs::kSettingsResetPromptLastTriggeredForHomepage));
72 }
73
RecordPromptShownForDefaultSearch(const base::Time & prompt_time)74 void SettingsResetPromptPrefsManager::RecordPromptShownForDefaultSearch(
75 const base::Time& prompt_time) {
76 prefs_->SetInt64(prefs::kSettingsResetPromptLastTriggeredForDefaultSearch,
77 prompt_time.ToInternalValue());
78 }
79
RecordPromptShownForStartupUrls(const base::Time & prompt_time)80 void SettingsResetPromptPrefsManager::RecordPromptShownForStartupUrls(
81 const base::Time& prompt_time) {
82 prefs_->SetInt64(prefs::kSettingsResetPromptLastTriggeredForStartupUrls,
83 prompt_time.ToInternalValue());
84 }
85
RecordPromptShownForHomepage(const base::Time & prompt_time)86 void SettingsResetPromptPrefsManager::RecordPromptShownForHomepage(
87 const base::Time& prompt_time) {
88 prefs_->SetInt64(prefs::kSettingsResetPromptLastTriggeredForHomepage,
89 prompt_time.ToInternalValue());
90 }
91
92 } // namespace safe_browsing
93