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

Side by Side Diff: chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_win.cc

Issue 2906103002: Post-cleanup settings reset. (Closed)
Patch Set: Rebase Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // DO NOT SUBMIT. Please ignore changes to this file for the moment.
6
5 #include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_ win.h" 7 #include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_ win.h"
6 8
9 #include "base/barrier_closure.h"
7 #include "base/command_line.h" 10 #include "base/command_line.h"
8 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/profiles/profile_manager.h"
15 #include "chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_win.h"
16 #include "components/chrome_cleaner/public/constants/constants.h"
9 #include "content/public/browser/browser_thread.h" 17 #include "content/public/browser/browser_thread.h"
10 18
11 namespace safe_browsing { 19 namespace safe_browsing {
12 20
13 namespace { 21 namespace {
14 22
15 // Global instance that is set and unset by ChromeCleanerController's 23 // Global instance that is set and unset by ChromeCleanerController's
16 // constructor and destructor. 24 // constructor and destructor.
17 ChromeCleanerController* g_chrome_cleaner_controller = nullptr; 25 ChromeCleanerController* g_chrome_cleaner_controller = nullptr;
18 26
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 96 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
89 97
90 observer_list_.RemoveObserver(observer); 98 observer_list_.RemoveObserver(observer);
91 } 99 }
92 100
93 void ChromeCleanerController::Cleanup() { 101 void ChromeCleanerController::Cleanup() {
94 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 102 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
95 if (state_ != State::kInfected) 103 if (state_ != State::kInfected)
96 return; 104 return;
97 105
106 // Tag all loaded profiles for settings reset post-cleanup.
107 for (Profile* profile :
108 g_browser_process->profile_manager()->GetLoadedProfiles()) {
109 TagProfileForResetting(profile);
110 }
111
98 state_ = State::kCleaning; 112 state_ = State::kCleaning;
99 idle_reason_ = IdleReason::kInitialState; 113 idle_reason_ = IdleReason::kInitialState;
100 NotifyAllObservers(); 114 NotifyAllObservers();
101 SetKeepAlive(true); 115 SetKeepAlive(true);
102 116
103 // DO NOT SUBMIT 117 // DO NOT SUBMIT
104 // Temporary hack to fake scanning and cleaning work. 118 // Temporary hack to fake scanning and cleaning work.
105 one_shot_timer_for_testing_.Start( 119 one_shot_timer_for_testing_.Start(
106 FROM_HERE, base::TimeDelta::FromSeconds(3), 120 FROM_HERE, base::TimeDelta::FromSeconds(3),
107 base::Bind(&ChromeCleanerController::OnCleanupFinished, 121 base::Bind(&ChromeCleanerController::OnCleanupFinished,
(...skipping 21 matching lines...) Expand all
129 g_chrome_cleaner_controller = this; 143 g_chrome_cleaner_controller = this;
130 } 144 }
131 145
132 ChromeCleanerController::~ChromeCleanerController() { 146 ChromeCleanerController::~ChromeCleanerController() {
133 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 147 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
134 DCHECK_EQ(this, g_chrome_cleaner_controller); 148 DCHECK_EQ(this, g_chrome_cleaner_controller);
135 149
136 g_chrome_cleaner_controller = nullptr; 150 g_chrome_cleaner_controller = nullptr;
137 } 151 }
138 152
153 constexpr char kPostRebootResetPrefName[] =
154 "safebrowsing.chrome_cleaner.post_reboot_reset";
155
139 void ChromeCleanerController::OnCleanupFinished() { 156 void ChromeCleanerController::OnCleanupFinished() {
140 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 157 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
141 158
142 // DO NOT SUBMIT 159 // DO NOT SUBMIT
143 if (base::CommandLine::ForCurrentProcess()->HasSwitch("reboot-required")) { 160 if (base::CommandLine::ForCurrentProcess()->HasSwitch("reboot-required")) {
144 state_ = State::kRebootRequired; 161 state_ = State::kRebootRequired;
145 idle_reason_ = IdleReason::kInitialState; 162 idle_reason_ = IdleReason::kInitialState;
163 NotifyAllObservers();
164 SetKeepAlive(true);
146 } else { 165 } else {
147 state_ = State::kIdle; 166 state_ = State::kIdle;
148 idle_reason_ = GetIdleReasonFromCommandLine(); 167 idle_reason_ = GetIdleReasonFromCommandLine();
168 ResetPostCleanupSettingsIfTagged(
169 g_browser_process->profile_manager()->GetLoadedProfiles(),
170 base::BindOnce(&ChromeCleanerController::FinalizeCleanup,
171 base::RetainedRef(this)));
149 } 172 }
173 }
174
175 void ChromeCleanerController::FinalizeCleanup() {
176 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
150 177
151 NotifyAllObservers(); 178 NotifyAllObservers();
152 SetKeepAlive(false); 179 SetKeepAlive(false);
153 } 180 }
154 181
155 void ChromeCleanerController::NotifyObserver(Observer* observer) const { 182 void ChromeCleanerController::NotifyObserver(Observer* observer) const {
156 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 183 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
157 switch (state_) { 184 switch (state_) {
158 case State::kIdle: 185 case State::kIdle:
159 observer->OnIdle(idle_reason_); 186 observer->OnIdle(idle_reason_);
(...skipping 26 matching lines...) Expand all
186 return; 213 return;
187 214
188 keep_alive_ = keep_alive; 215 keep_alive_ = keep_alive;
189 if (keep_alive_) 216 if (keep_alive_)
190 AddRef(); 217 AddRef();
191 else 218 else
192 Release(); 219 Release();
193 } 220 }
194 221
195 } // namespace safe_browsing 222 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698