Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3168)

Unified Diff: chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc

Issue 2727063006: Settings reset prompt: add startup logic (Closed)
Patch Set: Nits Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
diff --git a/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc b/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
index 23cbdab949e6f0006f3946802a626dffb157bd35..807a38ed451f76e4395b30c3897038c66e0eaacd 100644
--- a/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
+++ b/chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_model.cc
@@ -218,6 +218,19 @@ void SettingsResetPromptModel::PerformReset(
done_callback);
}
+void SettingsResetPromptModel::DialogShown() {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(SomeSettingRequiresReset());
+
+ base::Time now = base::Time::Now();
+ if (default_search_reset_state() == RESET_REQUIRED)
+ prefs_manager_.RecordPromptShownForDefaultSearch(now);
+ if (startup_urls_reset_state() == RESET_REQUIRED)
+ prefs_manager_.RecordPromptShownForStartupUrls(now);
+ if (homepage_reset_state() == RESET_REQUIRED)
+ prefs_manager_.RecordPromptShownForHomepage(now);
+}
+
GURL SettingsResetPromptModel::homepage() const {
return homepage_url_;
}
@@ -283,10 +296,13 @@ SettingsResetPromptModel::SettingsResetPromptModel(
std::unique_ptr<BrandcodedDefaultSettings> default_settings,
std::unique_ptr<ProfileResetter> profile_resetter)
: profile_(profile),
+ prefs_manager_(profile, prompt_config->prompt_wave()),
prompt_config_(std::move(prompt_config)),
settings_snapshot_(std::move(settings_snapshot)),
default_settings_(std::move(default_settings)),
profile_resetter_(std::move(profile_resetter)),
+ time_since_last_prompt_(base::Time::Now() -
+ prefs_manager_.LastTriggeredPrompt()),
settings_types_initialized_(0),
homepage_reset_domain_id_(-1),
homepage_reset_state_(NO_RESET_REQUIRED_DUE_TO_DOMAIN_NOT_MATCHED),
@@ -322,7 +338,8 @@ void SettingsResetPromptModel::InitDefaultSearchData() {
if (default_search_reset_domain_id_ < 0)
return;
- default_search_reset_state_ = RESET_REQUIRED;
+ default_search_reset_state_ = GetResetStateForSetting(
+ prefs_manager_.LastTriggeredPromptForDefaultSearch());
}
void SettingsResetPromptModel::InitStartupUrlsData() {
@@ -341,14 +358,16 @@ void SettingsResetPromptModel::InitStartupUrlsData() {
startup_urls_.push_back(fixed_url);
int reset_domain_id = prompt_config_->UrlToResetDomainId(fixed_url);
if (reset_domain_id >= 0) {
- startup_urls_reset_state_ =
- SomeSettingRequiresReset()
- ? NO_RESET_REQUIRED_DUE_TO_OTHER_SETTING_REQUIRING_RESET
- : RESET_REQUIRED;
startup_urls_to_reset_.push_back(fixed_url);
domain_ids_for_startup_urls_to_reset_.insert(reset_domain_id);
}
}
+
+ if (startup_urls_to_reset_.empty())
+ return;
+
+ startup_urls_reset_state_ = GetResetStateForSetting(
+ prefs_manager_.LastTriggeredPromptForStartupUrls());
}
void SettingsResetPromptModel::InitHomepageData() {
@@ -376,9 +395,7 @@ void SettingsResetPromptModel::InitHomepageData() {
return;
homepage_reset_state_ =
- SomeSettingRequiresReset()
- ? NO_RESET_REQUIRED_DUE_TO_OTHER_SETTING_REQUIRING_RESET
- : RESET_REQUIRED;
+ GetResetStateForSetting(prefs_manager_.LastTriggeredPromptForHomepage());
}
// Populate |extensions_to_disable_| with all enabled extensions that override
@@ -420,6 +437,21 @@ void SettingsResetPromptModel::InitExtensionData() {
}
}
+SettingsResetPromptModel::ResetState
+SettingsResetPromptModel::GetResetStateForSetting(
+ const base::Time& last_triggered_for_setting) const {
+ if (!last_triggered_for_setting.is_null())
+ return NO_RESET_REQUIRED_DUE_TO_ALREADY_PROMPTED_FOR_SETTING;
+
+ if (time_since_last_prompt_ < prompt_config_->time_between_prompts())
+ return NO_RESET_REQUIRED_DUE_TO_RECENTLY_PROMPTED;
+
+ if (SomeSettingRequiresReset())
+ return NO_RESET_REQUIRED_DUE_TO_OTHER_SETTING_REQUIRING_RESET;
+
+ return RESET_REQUIRED;
+}
+
bool SettingsResetPromptModel::SomeSettingRequiresReset() const {
return default_search_reset_state_ == RESET_REQUIRED ||
startup_urls_reset_state_ == RESET_REQUIRED ||

Powered by Google App Engine
This is Rietveld 408576698