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

Side by Side Diff: chrome/browser/search_engines/default_search_pref_migration.cc

Issue 268643002: Use the DefaultSearchManager as the exclusive authority on DSE, ignoring Web Data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Final review nits. 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/search_engines/default_search_pref_migration.h" 5 #include "chrome/browser/search_engines/default_search_pref_migration.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "chrome/browser/search_engines/default_search_manager.h" 13 #include "chrome/browser/search_engines/default_search_manager.h"
14 #include "chrome/browser/search_engines/template_url.h" 14 #include "chrome/browser/search_engines/template_url.h"
15 #include "chrome/browser/search_engines/template_url_service.h" 15 #include "chrome/browser/search_engines/template_url_service.h"
16 #include "chrome/common/pref_names.h"
16 17
17 namespace { 18 namespace {
18 19
19 // Loads the user-selected DSE (if there is one, and it's not masked by policy 20 // Loads the user-selected DSE (if there is one, and it's not masked by policy
20 // or an extension) from legacy preferences. 21 // or an extension) from legacy preferences.
21 scoped_ptr<TemplateURLData> LoadDefaultSearchProviderFromPrefs( 22 scoped_ptr<TemplateURLData> LoadDefaultSearchProviderFromPrefs(
22 PrefService* pref_service) { 23 PrefService* pref_service) {
23 scoped_ptr<TemplateURLData> legacy_dse_from_prefs; 24 scoped_ptr<TemplateURLData> legacy_dse_from_prefs;
24 bool legacy_is_managed = false; 25 bool legacy_is_managed = false;
25 TemplateURLService::LoadDefaultSearchProviderFromPrefs( 26 TemplateURLService::LoadDefaultSearchProviderFromPrefs(
26 pref_service, &legacy_dse_from_prefs, &legacy_is_managed); 27 pref_service, &legacy_dse_from_prefs, &legacy_is_managed);
27 return legacy_is_managed ? 28 return legacy_is_managed ?
28 scoped_ptr<TemplateURLData>() : legacy_dse_from_prefs.Pass(); 29 scoped_ptr<TemplateURLData>() : legacy_dse_from_prefs.Pass();
29 } 30 }
30 31
32 void ClearDefaultSearchProviderFromLegacyPrefs(PrefService* prefs) {
33 prefs->ClearPref(prefs::kDefaultSearchProviderName);
34 prefs->ClearPref(prefs::kDefaultSearchProviderKeyword);
35 prefs->ClearPref(prefs::kDefaultSearchProviderSearchURL);
36 prefs->ClearPref(prefs::kDefaultSearchProviderSuggestURL);
37 prefs->ClearPref(prefs::kDefaultSearchProviderInstantURL);
38 prefs->ClearPref(prefs::kDefaultSearchProviderImageURL);
39 prefs->ClearPref(prefs::kDefaultSearchProviderNewTabURL);
40 prefs->ClearPref(prefs::kDefaultSearchProviderSearchURLPostParams);
41 prefs->ClearPref(prefs::kDefaultSearchProviderSuggestURLPostParams);
42 prefs->ClearPref(prefs::kDefaultSearchProviderInstantURLPostParams);
43 prefs->ClearPref(prefs::kDefaultSearchProviderImageURLPostParams);
44 prefs->ClearPref(prefs::kDefaultSearchProviderIconURL);
45 prefs->ClearPref(prefs::kDefaultSearchProviderEncodings);
46 prefs->ClearPref(prefs::kDefaultSearchProviderPrepopulateID);
47 prefs->ClearPref(prefs::kDefaultSearchProviderAlternateURLs);
48 prefs->ClearPref(prefs::kDefaultSearchProviderSearchTermsReplacementKey);
49 }
50
31 void MigrateDefaultSearchPref(PrefService* pref_service) { 51 void MigrateDefaultSearchPref(PrefService* pref_service) {
32 DCHECK(pref_service); 52 DCHECK(pref_service);
33 53
34 scoped_ptr<TemplateURLData> legacy_dse_from_prefs = 54 scoped_ptr<TemplateURLData> legacy_dse_from_prefs =
35 LoadDefaultSearchProviderFromPrefs(pref_service); 55 LoadDefaultSearchProviderFromPrefs(pref_service);
36 if (!legacy_dse_from_prefs) 56 if (!legacy_dse_from_prefs)
37 return; 57 return;
38 58
39 DefaultSearchManager default_search_manager( 59 DefaultSearchManager default_search_manager(
40 pref_service, DefaultSearchManager::ObserverCallback()); 60 pref_service, DefaultSearchManager::ObserverCallback());
41 DefaultSearchManager::Source modern_source; 61 DefaultSearchManager::Source modern_source;
42 TemplateURLData* modern_value = 62 TemplateURLData* modern_value =
43 default_search_manager.GetDefaultSearchEngine(&modern_source); 63 default_search_manager.GetDefaultSearchEngine(&modern_source);
44 if (modern_source == DefaultSearchManager::FROM_FALLBACK) { 64 if (modern_source == DefaultSearchManager::FROM_FALLBACK) {
45 // |modern_value| is the prepopulated default. If it matches the legacy DSE 65 // |modern_value| is the prepopulated default. If it matches the legacy DSE
46 // we assume it is not a user-selected value. 66 // we assume it is not a user-selected value.
47 if (!modern_value || 67 if (!modern_value ||
48 legacy_dse_from_prefs->prepopulate_id != modern_value->prepopulate_id) { 68 legacy_dse_from_prefs->prepopulate_id != modern_value->prepopulate_id) {
49 // This looks like a user-selected value, so let's migrate it. 69 // This looks like a user-selected value, so let's migrate it.
50 // TODO(erikwright): Remove this migration logic when this stat approaches 70 // TODO(erikwright): Remove this migration logic when this stat approaches
51 // zero. 71 // zero.
52 UMA_HISTOGRAM_BOOLEAN("Search.MigratedPrefToDictionaryValue", true); 72 UMA_HISTOGRAM_BOOLEAN("Search.MigratedPrefToDictionaryValue", true);
53 default_search_manager.SetUserSelectedDefaultSearchEngine( 73 default_search_manager.SetUserSelectedDefaultSearchEngine(
54 *legacy_dse_from_prefs); 74 *legacy_dse_from_prefs);
55 } 75 }
56 } 76 }
57 77
58 // TODO(erikwright): Clear the legacy value when the modern value is the 78 ClearDefaultSearchProviderFromLegacyPrefs(pref_service);
59 // authority.
60 } 79 }
61 80
62 void OnPrefsInitialized(PrefService* pref_service, 81 void OnPrefsInitialized(PrefService* pref_service,
63 bool pref_service_initialization_success) { 82 bool pref_service_initialization_success) {
64 MigrateDefaultSearchPref(pref_service); 83 MigrateDefaultSearchPref(pref_service);
65 } 84 }
66 85
67 } // namespace 86 } // namespace
68 87
69 void ConfigureDefaultSearchPrefMigrationToDictionaryValue( 88 void ConfigureDefaultSearchPrefMigrationToDictionaryValue(
70 PrefService* pref_service) { 89 PrefService* pref_service) {
71 if (pref_service->GetInitializationStatus() == 90 if (pref_service->GetInitializationStatus() ==
72 PrefService::INITIALIZATION_STATUS_WAITING) { 91 PrefService::INITIALIZATION_STATUS_WAITING) {
73 pref_service->AddPrefInitObserver( 92 pref_service->AddPrefInitObserver(
74 base::Bind(&OnPrefsInitialized, base::Unretained(pref_service))); 93 base::Bind(&OnPrefsInitialized, base::Unretained(pref_service)));
75 } else { 94 } else {
76 MigrateDefaultSearchPref(pref_service); 95 MigrateDefaultSearchPref(pref_service);
77 } 96 }
78 } 97 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698