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

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

Issue 2906103002: Post-cleanup settings reset. (Closed)
Patch Set: Created 3 years, 7 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
7 #include "base/command_line.h" 9 #include "base/command_line.h"
8 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "chrome/browser/profiles/profile_manager.h"
12 #include "chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_win.h"
13 #include "components/chrome_cleaner/public/constants/constants.h"
9 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
10 15
11 namespace safe_browsing { 16 namespace safe_browsing {
12 17
13 namespace { 18 namespace {
14 19
15 // Global instance that is set and unset by ChromeCleanerController's 20 // Global instance that is set and unset by ChromeCleanerController's
16 // constructor and destructor. 21 // constructor and destructor.
17 ChromeCleanerController* g_chrome_cleaner_controller = nullptr; 22 ChromeCleanerController* g_chrome_cleaner_controller = nullptr;
18 23
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 93 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
89 94
90 observer_list_.RemoveObserver(observer); 95 observer_list_.RemoveObserver(observer);
91 } 96 }
92 97
93 void ChromeCleanerController::Cleanup() { 98 void ChromeCleanerController::Cleanup() {
94 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 99 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
95 if (state_ != State::kInfected) 100 if (state_ != State::kInfected)
96 return; 101 return;
97 102
103 TagCurrentProfileForResetting();
104
98 state_ = State::kCleaning; 105 state_ = State::kCleaning;
99 idle_reason_ = IdleReason::kInitialState; 106 idle_reason_ = IdleReason::kInitialState;
100 NotifyAllObservers(); 107 NotifyAllObservers();
101 SetKeepAlive(true); 108 SetKeepAlive(true);
102 109
103 // DO NOT SUBMIT 110 // DO NOT SUBMIT
104 // Temporary hack to fake scanning and cleaning work. 111 // Temporary hack to fake scanning and cleaning work.
105 one_shot_timer_for_testing_.Start( 112 one_shot_timer_for_testing_.Start(
106 FROM_HERE, base::TimeDelta::FromSeconds(3), 113 FROM_HERE, base::TimeDelta::FromSeconds(3),
107 base::Bind(&ChromeCleanerController::OnCleanupFinished, 114 base::Bind(&ChromeCleanerController::OnCleanupFinished,
(...skipping 21 matching lines...) Expand all
129 g_chrome_cleaner_controller = this; 136 g_chrome_cleaner_controller = this;
130 } 137 }
131 138
132 ChromeCleanerController::~ChromeCleanerController() { 139 ChromeCleanerController::~ChromeCleanerController() {
133 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 140 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
134 DCHECK_EQ(this, g_chrome_cleaner_controller); 141 DCHECK_EQ(this, g_chrome_cleaner_controller);
135 142
136 g_chrome_cleaner_controller = nullptr; 143 g_chrome_cleaner_controller = nullptr;
137 } 144 }
138 145
146 constexpr char kPostRebootResetPrefName[] =
147 "safebrowsing.chrome_cleaner.post_reboot_reset";
148
139 void ChromeCleanerController::OnCleanupFinished() { 149 void ChromeCleanerController::OnCleanupFinished() {
140 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 150 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
141 151
142 // DO NOT SUBMIT 152 // DO NOT SUBMIT
143 if (base::CommandLine::ForCurrentProcess()->HasSwitch("reboot-required")) { 153 if (base::CommandLine::ForCurrentProcess()->HasSwitch("reboot-required")) {
144 state_ = State::kRebootRequired; 154 state_ = State::kRebootRequired;
145 idle_reason_ = IdleReason::kInitialState; 155 idle_reason_ = IdleReason::kInitialState;
156 NotifyAllObservers();
157 SetKeepAlive(true);
146 } else { 158 } else {
147 state_ = State::kIdle; 159 state_ = State::kIdle;
148 idle_reason_ = GetIdleReasonFromCommandLine(); 160 idle_reason_ = GetIdleReasonFromCommandLine();
161 ResetCurrentProfilePostCleanupIfTagged(base::BindOnce(
162 &ChromeCleanerController::FinalizeCleanup, base::RetainedRef(this)));
149 } 163 }
164 }
165
166 void ChromeCleanerController::FinalizeCleanup() {
167 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
150 168
151 NotifyAllObservers(); 169 NotifyAllObservers();
152 SetKeepAlive(false); 170 SetKeepAlive(false);
153 } 171 }
154 172
155 void ChromeCleanerController::NotifyObserver(Observer* observer) const { 173 void ChromeCleanerController::NotifyObserver(Observer* observer) const {
156 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); 174 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
157 switch (state_) { 175 switch (state_) {
158 case State::kIdle: 176 case State::kIdle:
159 observer->OnIdle(idle_reason_); 177 observer->OnIdle(idle_reason_);
(...skipping 26 matching lines...) Expand all
186 return; 204 return;
187 205
188 keep_alive_ = keep_alive; 206 keep_alive_ = keep_alive;
189 if (keep_alive_) 207 if (keep_alive_)
190 AddRef(); 208 AddRef();
191 else 209 else
192 Release(); 210 Release();
193 } 211 }
194 212
195 } // namespace safe_browsing 213 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698