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

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

Issue 15572002: Implemented 'Reset Search engines' feature. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge with trunk + Peter's comments Created 7 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 (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 "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/google/google_url_tracker.h"
8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/search_engines/template_url_prepopulate_data.h"
11 #include "chrome/browser/search_engines/template_url_service.h"
12 #include "chrome/browser/search_engines/template_url_service_factory.h"
13 #include "chrome/common/chrome_notification_types.h"
9 #include "chrome/common/pref_names.h" 14 #include "chrome/common/pref_names.h"
10 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
11 16
12 ProfileResetter::ProfileResetter(Profile* profile) 17 ProfileResetter::ProfileResetter(Profile* profile)
13 : profile_(profile), 18 : profile_(profile),
19 template_url_service_(TemplateURLServiceFactory::GetForProfile(profile_)),
14 pending_reset_flags_(0) { 20 pending_reset_flags_(0) {
15 DCHECK(CalledOnValidThread()); 21 DCHECK(CalledOnValidThread());
22 DCHECK(profile_);
23 DCHECK(template_url_service_);
24 registrar_.Add(this, chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED,
25 content::Source<TemplateURLService>(template_url_service_));
16 } 26 }
17 27
18 ProfileResetter::~ProfileResetter() {} 28 ProfileResetter::~ProfileResetter() {}
19 29
20 void ProfileResetter::Reset(ProfileResetter::ResettableFlags resettable_flags, 30 void ProfileResetter::Reset(ProfileResetter::ResettableFlags resettable_flags,
21 ExtensionHandling extension_handling, 31 ExtensionHandling extension_handling,
22 const base::Closure& callback) { 32 const base::Closure& callback) {
23 DCHECK(CalledOnValidThread()); 33 DCHECK(CalledOnValidThread());
24 34
25 // We should never be called with unknown flags. 35 // We should never be called with unknown flags.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 } 84 }
75 85
76 void ProfileResetter::MarkAsDone(Resettable resettable) { 86 void ProfileResetter::MarkAsDone(Resettable resettable) {
77 DCHECK(CalledOnValidThread()); 87 DCHECK(CalledOnValidThread());
78 88
79 // Check that we are never called twice or unexpectedly. 89 // Check that we are never called twice or unexpectedly.
80 CHECK(pending_reset_flags_ & resettable); 90 CHECK(pending_reset_flags_ & resettable);
81 91
82 pending_reset_flags_ &= ~resettable; 92 pending_reset_flags_ &= ~resettable;
83 93
84 if (!pending_reset_flags_) 94 if (!pending_reset_flags_) {
85 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, 95 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
86 callback_); 96 callback_);
97 callback_.Reset();
98 }
87 } 99 }
88 100
89 void ProfileResetter::ResetDefaultSearchEngine() { 101 void ProfileResetter::ResetDefaultSearchEngine() {
90 DCHECK(CalledOnValidThread()); 102 DCHECK(CalledOnValidThread());
91 NOTIMPLEMENTED(); 103
92 // TODO(battre/vabr): Implement 104 // If TemplateURLServiceFactory is ready we can clean it right now.
93 MarkAsDone(DEFAULT_SEARCH_ENGINE); 105 // Otherwise, load it and continue from ProfileResetter::Observe.
106 if (template_url_service_->loaded()) {
107 // Reset Google search URL.
108 PrefService* prefs = profile_->GetPrefs();
109 DCHECK(prefs);
110 prefs->ClearPref(prefs::kLastPromptedGoogleURL);
111 GoogleURLTracker::RequestServerCheck(profile_);
112
113 TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs(profile_);
114 template_url_service_->ResetNonExtensionURLs();
115
116 MarkAsDone(DEFAULT_SEARCH_ENGINE);
117 } else {
118 template_url_service_->Load();
119 }
94 } 120 }
95 121
96 void ProfileResetter::ResetHomepage() { 122 void ProfileResetter::ResetHomepage() {
97 DCHECK(CalledOnValidThread()); 123 DCHECK(CalledOnValidThread());
98 PrefService* prefs = profile_->GetPrefs(); 124 PrefService* prefs = profile_->GetPrefs();
99 DCHECK(prefs); 125 DCHECK(prefs);
100 prefs->ClearPref(prefs::kHomePageIsNewTabPage); 126 prefs->ClearPref(prefs::kHomePageIsNewTabPage);
101 prefs->ClearPref(prefs::kHomePage); 127 prefs->ClearPref(prefs::kHomePage);
102 prefs->ClearPref(prefs::kShowHomeButton); 128 prefs->ClearPref(prefs::kShowHomeButton);
103 MarkAsDone(HOMEPAGE); 129 MarkAsDone(HOMEPAGE);
(...skipping 22 matching lines...) Expand all
126 152
127 void ProfileResetter::ResetStartPage() { 153 void ProfileResetter::ResetStartPage() {
128 DCHECK(CalledOnValidThread()); 154 DCHECK(CalledOnValidThread());
129 PrefService* prefs = profile_->GetPrefs(); 155 PrefService* prefs = profile_->GetPrefs();
130 DCHECK(prefs); 156 DCHECK(prefs);
131 prefs->ClearPref(prefs::kRestoreOnStartup); 157 prefs->ClearPref(prefs::kRestoreOnStartup);
132 prefs->ClearPref(prefs::kURLsToRestoreOnStartup); 158 prefs->ClearPref(prefs::kURLsToRestoreOnStartup);
133 prefs->SetBoolean(prefs::kRestoreOnStartupMigrated, true); 159 prefs->SetBoolean(prefs::kRestoreOnStartupMigrated, true);
134 MarkAsDone(STARTUP_PAGE); 160 MarkAsDone(STARTUP_PAGE);
135 } 161 }
162
163 void ProfileResetter::Observe(int type,
164 const content::NotificationSource& source,
165 const content::NotificationDetails& details) {
166 DCHECK(CalledOnValidThread());
167 // TemplateURLService has loaded. If we need to clean search engines, it's
168 // time to go on.
169 if (pending_reset_flags_ & DEFAULT_SEARCH_ENGINE)
170 ResetDefaultSearchEngine();
171 }
OLDNEW
« no previous file with comments | « chrome/browser/profile_resetter/profile_resetter.h ('k') | chrome/browser/profile_resetter/profile_resetter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698