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