| Index: chrome/browser/profile_resetter/profile_resetter.cc
|
| diff --git a/chrome/browser/profile_resetter/profile_resetter.cc b/chrome/browser/profile_resetter/profile_resetter.cc
|
| index 95fbd4af530797cb392384d94c2fc19f94c477d2..cb8aab3c70ba3fa63fa45738b49466ce4a9ba2bb 100644
|
| --- a/chrome/browser/profile_resetter/profile_resetter.cc
|
| +++ b/chrome/browser/profile_resetter/profile_resetter.cc
|
| @@ -5,14 +5,24 @@
|
| #include "chrome/browser/profile_resetter/profile_resetter.h"
|
|
|
| #include "base/prefs/pref_service.h"
|
| +#include "chrome/browser/google/google_url_tracker.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/search_engines/template_url_prepopulate_data.h"
|
| +#include "chrome/browser/search_engines/template_url_service.h"
|
| +#include "chrome/browser/search_engines/template_url_service_factory.h"
|
| +#include "chrome/common/chrome_notification_types.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "content/public/browser/browser_thread.h"
|
|
|
| ProfileResetter::ProfileResetter(Profile* profile)
|
| : profile_(profile),
|
| + template_url_service_(TemplateURLServiceFactory::GetForProfile(profile_)),
|
| pending_reset_flags_(0) {
|
| DCHECK(CalledOnValidThread());
|
| + DCHECK(profile_);
|
| + DCHECK(template_url_service_);
|
| + registrar_.Add(this, chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED,
|
| + content::Source<TemplateURLService>(template_url_service_));
|
| }
|
|
|
| ProfileResetter::~ProfileResetter() {}
|
| @@ -81,16 +91,32 @@ void ProfileResetter::MarkAsDone(Resettable resettable) {
|
|
|
| pending_reset_flags_ &= ~resettable;
|
|
|
| - if (!pending_reset_flags_)
|
| + if (!pending_reset_flags_) {
|
| content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
|
| callback_);
|
| + callback_.Reset();
|
| + }
|
| }
|
|
|
| void ProfileResetter::ResetDefaultSearchEngine() {
|
| DCHECK(CalledOnValidThread());
|
| - NOTIMPLEMENTED();
|
| - // TODO(battre/vabr): Implement
|
| - MarkAsDone(DEFAULT_SEARCH_ENGINE);
|
| +
|
| + // If TemplateURLServiceFactory is ready we can clean it right now.
|
| + // Otherwise, load it and continue from ProfileResetter::Observe.
|
| + if (template_url_service_->loaded()) {
|
| + // Reset Google search URL.
|
| + PrefService* prefs = profile_->GetPrefs();
|
| + DCHECK(prefs);
|
| + prefs->ClearPref(prefs::kLastPromptedGoogleURL);
|
| + GoogleURLTracker::RequestServerCheck(profile_);
|
| +
|
| + TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs(profile_);
|
| + template_url_service_->ResetNonExtensionURLs();
|
| +
|
| + MarkAsDone(DEFAULT_SEARCH_ENGINE);
|
| + } else {
|
| + template_url_service_->Load();
|
| + }
|
| }
|
|
|
| void ProfileResetter::ResetHomepage() {
|
| @@ -133,3 +159,13 @@ void ProfileResetter::ResetStartPage() {
|
| prefs->SetBoolean(prefs::kRestoreOnStartupMigrated, true);
|
| MarkAsDone(STARTUP_PAGE);
|
| }
|
| +
|
| +void ProfileResetter::Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) {
|
| + DCHECK(CalledOnValidThread());
|
| + // TemplateURLService has loaded. If we need to clean search engines, it's
|
| + // time to go on.
|
| + if (pending_reset_flags_ & DEFAULT_SEARCH_ENGINE)
|
| + ResetDefaultSearchEngine();
|
| +}
|
|
|