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

Side by Side Diff: chrome/browser/profile_resetter/profile_resetter.cc

Issue 2908143004: Replace deprecated base::NonThreadSafe in chrome/browser/profile_resetter in favor of SequenceCheck… (Closed)
Patch Set: 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
« no previous file with comments | « chrome/browser/profile_resetter/profile_resetter.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "chrome/browser/profile_resetter/profile_resetter.h" 5 #include "chrome/browser/profile_resetter/profile_resetter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 72
73 } // namespace 73 } // namespace
74 #endif // defined(OS_WIN) 74 #endif // defined(OS_WIN)
75 75
76 ProfileResetter::ProfileResetter(Profile* profile) 76 ProfileResetter::ProfileResetter(Profile* profile)
77 : profile_(profile), 77 : profile_(profile),
78 template_url_service_(TemplateURLServiceFactory::GetForProfile(profile_)), 78 template_url_service_(TemplateURLServiceFactory::GetForProfile(profile_)),
79 pending_reset_flags_(0), 79 pending_reset_flags_(0),
80 cookies_remover_(nullptr), 80 cookies_remover_(nullptr),
81 weak_ptr_factory_(this) { 81 weak_ptr_factory_(this) {
82 DCHECK(CalledOnValidThread()); 82 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
83 DCHECK(profile_); 83 DCHECK(profile_);
84 } 84 }
85 85
86 ProfileResetter::~ProfileResetter() { 86 ProfileResetter::~ProfileResetter() {
87 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
87 if (cookies_remover_) 88 if (cookies_remover_)
88 cookies_remover_->RemoveObserver(this); 89 cookies_remover_->RemoveObserver(this);
89 } 90 }
90 91
91 void ProfileResetter::Reset( 92 void ProfileResetter::Reset(
92 ProfileResetter::ResettableFlags resettable_flags, 93 ProfileResetter::ResettableFlags resettable_flags,
93 std::unique_ptr<BrandcodedDefaultSettings> master_settings, 94 std::unique_ptr<BrandcodedDefaultSettings> master_settings,
94 const base::Closure& callback) { 95 const base::Closure& callback) {
95 DCHECK(CalledOnValidThread()); 96 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
96 DCHECK(master_settings); 97 DCHECK(master_settings);
97 98
98 // We should never be called with unknown flags. 99 // We should never be called with unknown flags.
99 CHECK_EQ(static_cast<ResettableFlags>(0), resettable_flags & ~ALL); 100 CHECK_EQ(static_cast<ResettableFlags>(0), resettable_flags & ~ALL);
100 101
101 // We should never be called when a previous reset has not finished. 102 // We should never be called when a previous reset has not finished.
102 CHECK_EQ(static_cast<ResettableFlags>(0), pending_reset_flags_); 103 CHECK_EQ(static_cast<ResettableFlags>(0), pending_reset_flags_);
103 104
104 if (!resettable_flags) { 105 if (!resettable_flags) {
105 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, 106 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 138
138 DCHECK_EQ(resettable_flags, reset_triggered_for_flags); 139 DCHECK_EQ(resettable_flags, reset_triggered_for_flags);
139 } 140 }
140 141
141 bool ProfileResetter::IsActive() const { 142 bool ProfileResetter::IsActive() const {
142 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 143 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
143 return pending_reset_flags_ != 0; 144 return pending_reset_flags_ != 0;
144 } 145 }
145 146
146 void ProfileResetter::MarkAsDone(Resettable resettable) { 147 void ProfileResetter::MarkAsDone(Resettable resettable) {
147 DCHECK(CalledOnValidThread()); 148 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
148 149
149 // Check that we are never called twice or unexpectedly. 150 // Check that we are never called twice or unexpectedly.
150 CHECK(pending_reset_flags_ & resettable); 151 CHECK(pending_reset_flags_ & resettable);
151 152
152 pending_reset_flags_ &= ~resettable; 153 pending_reset_flags_ &= ~resettable;
153 154
154 if (!pending_reset_flags_) { 155 if (!pending_reset_flags_) {
155 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, 156 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
156 callback_); 157 callback_);
157 callback_.Reset(); 158 callback_.Reset();
158 master_settings_.reset(); 159 master_settings_.reset();
159 template_url_service_sub_.reset(); 160 template_url_service_sub_.reset();
160 } 161 }
161 } 162 }
162 163
163 void ProfileResetter::ResetDefaultSearchEngine() { 164 void ProfileResetter::ResetDefaultSearchEngine() {
164 DCHECK(CalledOnValidThread()); 165 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
165 DCHECK(template_url_service_); 166 DCHECK(template_url_service_);
166 // If TemplateURLServiceFactory is ready we can clean it right now. 167 // If TemplateURLServiceFactory is ready we can clean it right now.
167 // Otherwise, load it and continue from ProfileResetter::Observe. 168 // Otherwise, load it and continue from ProfileResetter::Observe.
168 if (template_url_service_->loaded()) { 169 if (template_url_service_->loaded()) {
169 PrefService* prefs = profile_->GetPrefs(); 170 PrefService* prefs = profile_->GetPrefs();
170 DCHECK(prefs); 171 DCHECK(prefs);
171 TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs( 172 TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs(
172 profile_->GetPrefs()); 173 profile_->GetPrefs());
173 std::unique_ptr<base::ListValue> search_engines( 174 std::unique_ptr<base::ListValue> search_engines(
174 master_settings_->GetSearchProviderOverrides()); 175 master_settings_->GetSearchProviderOverrides());
(...skipping 10 matching lines...) Expand all
185 } else { 186 } else {
186 template_url_service_sub_ = 187 template_url_service_sub_ =
187 template_url_service_->RegisterOnLoadedCallback( 188 template_url_service_->RegisterOnLoadedCallback(
188 base::Bind(&ProfileResetter::OnTemplateURLServiceLoaded, 189 base::Bind(&ProfileResetter::OnTemplateURLServiceLoaded,
189 weak_ptr_factory_.GetWeakPtr())); 190 weak_ptr_factory_.GetWeakPtr()));
190 template_url_service_->Load(); 191 template_url_service_->Load();
191 } 192 }
192 } 193 }
193 194
194 void ProfileResetter::ResetHomepage() { 195 void ProfileResetter::ResetHomepage() {
195 DCHECK(CalledOnValidThread()); 196 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
196 PrefService* prefs = profile_->GetPrefs(); 197 PrefService* prefs = profile_->GetPrefs();
197 DCHECK(prefs); 198 DCHECK(prefs);
198 std::string homepage; 199 std::string homepage;
199 bool homepage_is_ntp, show_home_button; 200 bool homepage_is_ntp, show_home_button;
200 201
201 if (master_settings_->GetHomepage(&homepage)) 202 if (master_settings_->GetHomepage(&homepage))
202 prefs->SetString(prefs::kHomePage, homepage); 203 prefs->SetString(prefs::kHomePage, homepage);
203 204
204 if (master_settings_->GetHomepageIsNewTab(&homepage_is_ntp)) 205 if (master_settings_->GetHomepageIsNewTab(&homepage_is_ntp))
205 prefs->SetBoolean(prefs::kHomePageIsNewTabPage, homepage_is_ntp); 206 prefs->SetBoolean(prefs::kHomePageIsNewTabPage, homepage_is_ntp);
206 else 207 else
207 prefs->ClearPref(prefs::kHomePageIsNewTabPage); 208 prefs->ClearPref(prefs::kHomePageIsNewTabPage);
208 209
209 if (master_settings_->GetShowHomeButton(&show_home_button)) 210 if (master_settings_->GetShowHomeButton(&show_home_button))
210 prefs->SetBoolean(prefs::kShowHomeButton, show_home_button); 211 prefs->SetBoolean(prefs::kShowHomeButton, show_home_button);
211 else 212 else
212 prefs->ClearPref(prefs::kShowHomeButton); 213 prefs->ClearPref(prefs::kShowHomeButton);
213 MarkAsDone(HOMEPAGE); 214 MarkAsDone(HOMEPAGE);
214 } 215 }
215 216
216 void ProfileResetter::ResetContentSettings() { 217 void ProfileResetter::ResetContentSettings() {
217 DCHECK(CalledOnValidThread()); 218 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
218 HostContentSettingsMap* map = 219 HostContentSettingsMap* map =
219 HostContentSettingsMapFactory::GetForProfile(profile_); 220 HostContentSettingsMapFactory::GetForProfile(profile_);
220 221
221 for (const content_settings::WebsiteSettingsInfo* info : 222 for (const content_settings::WebsiteSettingsInfo* info :
222 *content_settings::WebsiteSettingsRegistry::GetInstance()) { 223 *content_settings::WebsiteSettingsRegistry::GetInstance()) {
223 map->ClearSettingsForOneType(info->type()); 224 map->ClearSettingsForOneType(info->type());
224 } 225 }
225 226
226 // TODO(raymes): The default value isn't really used for website settings 227 // TODO(raymes): The default value isn't really used for website settings
227 // right now, but if it were we should probably reset that here too. 228 // right now, but if it were we should probably reset that here too.
228 for (const content_settings::ContentSettingsInfo* info : 229 for (const content_settings::ContentSettingsInfo* info :
229 *content_settings::ContentSettingsRegistry::GetInstance()) { 230 *content_settings::ContentSettingsRegistry::GetInstance()) {
230 map->SetDefaultContentSetting(info->website_settings_info()->type(), 231 map->SetDefaultContentSetting(info->website_settings_info()->type(),
231 CONTENT_SETTING_DEFAULT); 232 CONTENT_SETTING_DEFAULT);
232 } 233 }
233 MarkAsDone(CONTENT_SETTINGS); 234 MarkAsDone(CONTENT_SETTINGS);
234 } 235 }
235 236
236 void ProfileResetter::ResetCookiesAndSiteData() { 237 void ProfileResetter::ResetCookiesAndSiteData() {
237 DCHECK(CalledOnValidThread()); 238 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
238 DCHECK(!cookies_remover_); 239 DCHECK(!cookies_remover_);
239 240
240 cookies_remover_ = content::BrowserContext::GetBrowsingDataRemover(profile_); 241 cookies_remover_ = content::BrowserContext::GetBrowsingDataRemover(profile_);
241 cookies_remover_->AddObserver(this); 242 cookies_remover_->AddObserver(this);
242 int remove_mask = ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA | 243 int remove_mask = ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA |
243 content::BrowsingDataRemover::DATA_TYPE_CACHE; 244 content::BrowsingDataRemover::DATA_TYPE_CACHE;
244 PrefService* prefs = profile_->GetPrefs(); 245 PrefService* prefs = profile_->GetPrefs();
245 DCHECK(prefs); 246 DCHECK(prefs);
246 247
247 // Don't try to clear LSO data if it's not supported. 248 // Don't try to clear LSO data if it's not supported.
248 if (!prefs->GetBoolean(prefs::kClearPluginLSODataEnabled)) 249 if (!prefs->GetBoolean(prefs::kClearPluginLSODataEnabled))
249 remove_mask &= ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA; 250 remove_mask &= ~ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PLUGIN_DATA;
250 cookies_remover_->RemoveAndReply( 251 cookies_remover_->RemoveAndReply(
251 base::Time(), base::Time::Max(), remove_mask, 252 base::Time(), base::Time::Max(), remove_mask,
252 content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, this); 253 content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, this);
253 } 254 }
254 255
255 void ProfileResetter::ResetExtensions() { 256 void ProfileResetter::ResetExtensions() {
256 DCHECK(CalledOnValidThread()); 257 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
257 258
258 std::vector<std::string> brandcode_extensions; 259 std::vector<std::string> brandcode_extensions;
259 master_settings_->GetExtensions(&brandcode_extensions); 260 master_settings_->GetExtensions(&brandcode_extensions);
260 261
261 ExtensionService* extension_service = 262 ExtensionService* extension_service =
262 extensions::ExtensionSystem::Get(profile_)->extension_service(); 263 extensions::ExtensionSystem::Get(profile_)->extension_service();
263 DCHECK(extension_service); 264 DCHECK(extension_service);
264 extension_service->DisableUserExtensionsExcept(brandcode_extensions); 265 extension_service->DisableUserExtensionsExcept(brandcode_extensions);
265 266
266 // Reenable all disabled external component extensions. 267 // Reenable all disabled external component extensions.
(...skipping 11 matching lines...) Expand all
278 extension_ids_to_reenable.push_back(extension->id()); 279 extension_ids_to_reenable.push_back(extension->id());
279 } 280 }
280 for (const auto& extension_id : extension_ids_to_reenable) { 281 for (const auto& extension_id : extension_ids_to_reenable) {
281 extension_service->EnableExtension(extension_id); 282 extension_service->EnableExtension(extension_id);
282 } 283 }
283 284
284 MarkAsDone(EXTENSIONS); 285 MarkAsDone(EXTENSIONS);
285 } 286 }
286 287
287 void ProfileResetter::ResetStartupPages() { 288 void ProfileResetter::ResetStartupPages() {
288 DCHECK(CalledOnValidThread()); 289 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
289 PrefService* prefs = profile_->GetPrefs(); 290 PrefService* prefs = profile_->GetPrefs();
290 DCHECK(prefs); 291 DCHECK(prefs);
291 std::unique_ptr<base::ListValue> url_list( 292 std::unique_ptr<base::ListValue> url_list(
292 master_settings_->GetUrlsToRestoreOnStartup()); 293 master_settings_->GetUrlsToRestoreOnStartup());
293 if (url_list) 294 if (url_list)
294 ListPrefUpdate(prefs, prefs::kURLsToRestoreOnStartup)->Swap(url_list.get()); 295 ListPrefUpdate(prefs, prefs::kURLsToRestoreOnStartup)->Swap(url_list.get());
295 296
296 int restore_on_startup; 297 int restore_on_startup;
297 if (master_settings_->GetRestoreOnStartup(&restore_on_startup)) 298 if (master_settings_->GetRestoreOnStartup(&restore_on_startup))
298 prefs->SetInteger(prefs::kRestoreOnStartup, restore_on_startup); 299 prefs->SetInteger(prefs::kRestoreOnStartup, restore_on_startup);
(...skipping 30 matching lines...) Expand all
329 weak_ptr_factory_.GetWeakPtr(), 330 weak_ptr_factory_.GetWeakPtr(),
330 SHORTCUTS)); 331 SHORTCUTS));
331 #else 332 #else
332 MarkAsDone(SHORTCUTS); 333 MarkAsDone(SHORTCUTS);
333 #endif 334 #endif
334 } 335 }
335 336
336 void ProfileResetter::OnTemplateURLServiceLoaded() { 337 void ProfileResetter::OnTemplateURLServiceLoaded() {
337 // TemplateURLService has loaded. If we need to clean search engines, it's 338 // TemplateURLService has loaded. If we need to clean search engines, it's
338 // time to go on. 339 // time to go on.
339 DCHECK(CalledOnValidThread()); 340 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
340 template_url_service_sub_.reset(); 341 template_url_service_sub_.reset();
341 if (pending_reset_flags_ & DEFAULT_SEARCH_ENGINE) 342 if (pending_reset_flags_ & DEFAULT_SEARCH_ENGINE)
342 ResetDefaultSearchEngine(); 343 ResetDefaultSearchEngine();
343 } 344 }
344 345
345 void ProfileResetter::OnBrowsingDataRemoverDone() { 346 void ProfileResetter::OnBrowsingDataRemoverDone() {
346 cookies_remover_->RemoveObserver(this); 347 cookies_remover_->RemoveObserver(this);
347 cookies_remover_ = nullptr; 348 cookies_remover_ = nullptr;
348 MarkAsDone(COOKIES_AND_SITE_DATA); 349 MarkAsDone(COOKIES_AND_SITE_DATA);
349 } 350 }
(...skipping 19 matching lines...) Expand all
369 chrome_exe, 370 chrome_exe,
370 false, 371 false,
371 cancel, 372 cancel,
372 &shortcuts); 373 &shortcuts);
373 } 374 }
374 return shortcuts; 375 return shortcuts;
375 #else 376 #else
376 return std::vector<ShortcutCommand>(); 377 return std::vector<ShortcutCommand>();
377 #endif 378 #endif
378 } 379 }
OLDNEW
« no previous file with comments | « chrome/browser/profile_resetter/profile_resetter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698