Chromium Code Reviews| Index: chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.cc |
| diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.cc |
| index 7424302ac5fb187933b0806bf737636c3c166b5a..e2ab68400e650f5a8e4eeffb4b57e6e471d0365a 100644 |
| --- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.cc |
| +++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.cc |
| @@ -18,9 +18,13 @@ |
| #include "base/task_scheduler/task_traits.h" |
| #include "base/threading/thread_restrictions.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| +#include "chrome/browser/browser_process.h" |
| #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_fetcher_win.h" |
| #include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win.h" |
| +#include "chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_win.h" |
| #include "chrome/browser/safe_browsing/chrome_cleaner/srt_client_info_win.h" |
| #include "components/chrome_cleaner/public/constants/constants.h" |
| #include "components/safe_browsing/common/safe_browsing_prefs.h" |
| @@ -110,6 +114,20 @@ bool ChromeCleanerControllerDelegate::IsMetricsAndCrashReportingEnabled() { |
| return ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); |
| } |
| +void ChromeCleanerControllerDelegate::InvokeTagForResetting(Profile* profile) { |
| + std::unique_ptr<PostCleanupSettingsResetter> resetter( |
| + PostCleanupSettingsResetter::Create()); |
|
robertshield
2017/06/12 15:00:04
Create() is documented as returning null if resett
ftirelo
2017/06/13 18:52:48
Simplified the interface as suggested.
|
| + resetter->TagForResetting(profile); |
| +} |
| + |
| +void ChromeCleanerControllerDelegate::InvokeResetTaggedProfiles( |
| + std::vector<Profile*> profiles, |
| + base::OnceClosure continuation) { |
| + std::unique_ptr<PostCleanupSettingsResetter> resetter( |
| + PostCleanupSettingsResetter::Create()); |
| + resetter->ResetTaggedProfiles(std::move(profiles), std::move(continuation)); |
| +} |
| + |
| // static |
| ChromeCleanerController* ChromeCleanerController::GetInstance() { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| @@ -159,6 +177,7 @@ void ChromeCleanerController::Scan( |
| } |
| void ChromeCleanerController::ReplyWithUserResponse( |
| + Profile* profile, |
| UserResponse user_response) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| DCHECK(prompt_user_callback_); |
| @@ -172,6 +191,7 @@ void ChromeCleanerController::ReplyWithUserResponse( |
| case UserResponse::kAccepted: |
| acceptance = PromptAcceptance::ACCEPTED; |
| new_state = State::kCleaning; |
| + delegate_->InvokeTagForResetting(profile); |
| break; |
| case UserResponse::kDenied: // Fallthrough |
| case UserResponse::kDismissed: |
| @@ -367,8 +387,10 @@ void ChromeCleanerController::OnCleanerProcessDone( |
| } |
| if (process_status.exit_code == kRebootNotRequiredExitCode) { |
| - idle_reason_ = IdleReason::kCleaningSucceeded; |
| - SetStateAndNotifyObservers(State::kIdle); |
| + delegate_->InvokeResetTaggedProfiles( |
| + g_browser_process->profile_manager()->GetLoadedProfiles(), |
| + base::BindOnce(&ChromeCleanerController::OnSettingsResetCompleted, |
| + base::Unretained(this))); |
| return; |
| } |
| @@ -376,4 +398,9 @@ void ChromeCleanerController::OnCleanerProcessDone( |
| SetStateAndNotifyObservers(State::kIdle); |
| } |
| +void ChromeCleanerController::OnSettingsResetCompleted() { |
| + idle_reason_ = IdleReason::kCleaningSucceeded; |
| + SetStateAndNotifyObservers(State::kIdle); |
| +} |
| + |
| } // namespace safe_browsing |