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

Unified Diff: chrome/browser/search_engines/template_url_service.h

Issue 263823007: Handle TemplateURLService load failure better (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/search_engines/template_url_service.h
diff --git a/chrome/browser/search_engines/template_url_service.h b/chrome/browser/search_engines/template_url_service.h
index 172932304bac18700e878f52f7271b96987fd0cd..349d85687aabe78f27accbd9b585282409963327 100644
--- a/chrome/browser/search_engines/template_url_service.h
+++ b/chrome/browser/search_engines/template_url_service.h
@@ -112,11 +112,6 @@ class TemplateURLService : public WebDataServiceConsumer,
scoped_ptr<TemplateURLData>* default_provider_data,
bool* is_managed);
- // Saves enough of url to |prefs| so that it can be loaded from preferences on
- // start up.
- static void SaveDefaultSearchProviderToPrefs(const TemplateURL* url,
- PrefService* prefs);
-
// Generates a suitable keyword for the specified url, which must be valid.
// This is guaranteed not to return an empty string, since TemplateURLs should
// never have an empty keyword.
@@ -140,6 +135,11 @@ class TemplateURLService : public WebDataServiceConsumer,
const TemplateURL* t_url,
const SearchTermsData& search_terms_data);
+ // Saves enough of url to |prefs| so that it can be loaded from preferences on
+ // start up.
+ void SaveDefaultSearchProviderToPrefs(const TemplateURL* url,
+ PrefService* prefs) const;
+
// Returns true if there is no TemplateURL that conflicts with the
// keyword/url pair, or there is one but it can be replaced. If there is an
// existing keyword that can be replaced and template_url_to_replace is
@@ -409,18 +409,15 @@ class TemplateURLService : public WebDataServiceConsumer,
DontUpdateKeywordSearchForNonReplaceable);
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, ChangeGoogleBaseValue);
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, MergeDeletesUnusedProviders);
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest,
- CreateSyncDataFromTemplateURL);
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest,
- CreateTemplateURLFromSyncData);
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, UniquifyKeyword);
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest,
+ IsLocalTemplateURLBetter);
+ FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest,
ResolveSyncKeywordConflict);
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, PreSyncDeletes);
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest,
- IsLocalTemplateURLBetter);
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, MergeInSyncTemplateURL);
+ friend class TemplateURLServiceSyncTest;
friend class TemplateURLServiceTestUtilBase;
typedef std::map<base::string16, TemplateURL*> KeywordToTemplateMap;
@@ -476,6 +473,15 @@ class TemplateURLService : public WebDataServiceConsumer,
// Transitions to the loaded state.
void ChangeToLoadedState();
+ // Called when we transition to the loaded state without having loaded the web
+ // database from disk. This may be because of profile corruption, or because
+ // we're in a test. Disables further attempts to access the web database and
+ // ensures we won't attempt to sync any changes, then copies
+ // |initial_default_search_provider_| in as the default search provider, so
+ // the TemplateURLService consistently reports the same default provider
+ // before and after the attempted load.
+ void OnFailedLoad();
+
// Clears user preferences describing the default search engine.
void ClearDefaultProviderFromPrefs();
@@ -713,7 +719,7 @@ class TemplateURLService : public WebDataServiceConsumer,
// Whether the keywords have been loaded.
bool loaded_;
- // Did loading fail? This is only valid if loaded_ is true.
+ // Set by OnFailedLoad(); prevents writing to prefs or syncing.
bool load_failed_;
// If non-zero, we're waiting on a load.

Powered by Google App Engine
This is Rietveld 408576698