| 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 ce874ab3c967716d85b29b8e7ce84732f0c1629c..d8ba4d1170a692820f914d5bddcc92350f923f3c 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
|
| @@ -2,10 +2,18 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +// DO NOT SUBMIT. Please ignore changes to this file for the moment.
|
| +
|
| #include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.h"
|
|
|
| +#include "base/barrier_closure.h"
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/profiles/profile_manager.h"
|
| +#include "chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_win.h"
|
| +#include "components/chrome_cleaner/public/constants/constants.h"
|
| #include "content/public/browser/browser_thread.h"
|
|
|
| namespace safe_browsing {
|
| @@ -95,6 +103,12 @@ void ChromeCleanerController::Cleanup() {
|
| if (state_ != State::kInfected)
|
| return;
|
|
|
| + // Tag all loaded profiles for settings reset post-cleanup.
|
| + for (Profile* profile :
|
| + g_browser_process->profile_manager()->GetLoadedProfiles()) {
|
| + TagProfileForResetting(profile);
|
| + }
|
| +
|
| state_ = State::kCleaning;
|
| idle_reason_ = IdleReason::kInitialState;
|
| NotifyAllObservers();
|
| @@ -136,6 +150,9 @@ ChromeCleanerController::~ChromeCleanerController() {
|
| g_chrome_cleaner_controller = nullptr;
|
| }
|
|
|
| +constexpr char kPostRebootResetPrefName[] =
|
| + "safebrowsing.chrome_cleaner.post_reboot_reset";
|
| +
|
| void ChromeCleanerController::OnCleanupFinished() {
|
| DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
|
|
| @@ -143,10 +160,20 @@ void ChromeCleanerController::OnCleanupFinished() {
|
| if (base::CommandLine::ForCurrentProcess()->HasSwitch("reboot-required")) {
|
| state_ = State::kRebootRequired;
|
| idle_reason_ = IdleReason::kInitialState;
|
| + NotifyAllObservers();
|
| + SetKeepAlive(true);
|
| } else {
|
| state_ = State::kIdle;
|
| idle_reason_ = GetIdleReasonFromCommandLine();
|
| + ResetPostCleanupSettingsIfTagged(
|
| + g_browser_process->profile_manager()->GetLoadedProfiles(),
|
| + base::BindOnce(&ChromeCleanerController::FinalizeCleanup,
|
| + base::RetainedRef(this)));
|
| }
|
| +}
|
| +
|
| +void ChromeCleanerController::FinalizeCleanup() {
|
| + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
|
|
| NotifyAllObservers();
|
| SetKeepAlive(false);
|
|
|