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

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: Restore DSP origin change metric. Restore some naming and ordering. 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 if (legacy_is_managed) 28 if (legacy_is_managed)
28 legacy_dse_from_prefs.reset(); 29 legacy_dse_from_prefs.reset();
29 return legacy_dse_from_prefs.Pass(); 30 return legacy_dse_from_prefs.Pass();
30 } 31 }
31 32
33 void ClearDefaultSearchProviderFromLegacyPrefs(PrefService* prefs) {
34 prefs->ClearPref(prefs::kDefaultSearchProviderName);
35 prefs->ClearPref(prefs::kDefaultSearchProviderKeyword);
36 prefs->ClearPref(prefs::kDefaultSearchProviderSearchURL);
37 prefs->ClearPref(prefs::kDefaultSearchProviderSuggestURL);
38 prefs->ClearPref(prefs::kDefaultSearchProviderInstantURL);
39 prefs->ClearPref(prefs::kDefaultSearchProviderImageURL);
40 prefs->ClearPref(prefs::kDefaultSearchProviderNewTabURL);
41 prefs->ClearPref(prefs::kDefaultSearchProviderSearchURLPostParams);
42 prefs->ClearPref(prefs::kDefaultSearchProviderSuggestURLPostParams);
43 prefs->ClearPref(prefs::kDefaultSearchProviderInstantURLPostParams);
44 prefs->ClearPref(prefs::kDefaultSearchProviderImageURLPostParams);
45 prefs->ClearPref(prefs::kDefaultSearchProviderIconURL);
46 prefs->ClearPref(prefs::kDefaultSearchProviderEncodings);
47 prefs->ClearPref(prefs::kDefaultSearchProviderPrepopulateID);
48 prefs->ClearPref(prefs::kDefaultSearchProviderAlternateURLs);
49 prefs->ClearPref(prefs::kDefaultSearchProviderSearchTermsReplacementKey);
50 }
51
32 void MigrateDefaultSearchPref(PrefService* pref_service) { 52 void MigrateDefaultSearchPref(PrefService* pref_service) {
33 DCHECK(pref_service); 53 DCHECK(pref_service);
34 54
35 scoped_ptr<TemplateURLData> legacy_dse_from_prefs = 55 scoped_ptr<TemplateURLData> legacy_dse_from_prefs =
36 LoadDefaultSearchProviderFromPrefs(pref_service); 56 LoadDefaultSearchProviderFromPrefs(pref_service);
37 if (!legacy_dse_from_prefs) 57 if (!legacy_dse_from_prefs)
38 return; 58 return;
39 59
40 DefaultSearchManager default_search_manager( 60 DefaultSearchManager default_search_manager(
41 pref_service, DefaultSearchManager::ObserverCallback()); 61 pref_service, DefaultSearchManager::ObserverCallback());
42 DefaultSearchManager::Source modern_source; 62 DefaultSearchManager::Source modern_source;
43 TemplateURLData* modern_value = 63 TemplateURLData* modern_value =
44 default_search_manager.GetDefaultSearchEngine(&modern_source); 64 default_search_manager.GetDefaultSearchEngine(&modern_source);
45 if (modern_source == DefaultSearchManager::FROM_FALLBACK) { 65 if (modern_source == DefaultSearchManager::FROM_FALLBACK) {
46 // |modern_value| is the prepopulated default. If it matches the legacy DSE 66 // |modern_value| is the prepopulated default. If it matches the legacy DSE
47 // we assume it is not a user-selected value. 67 // we assume it is not a user-selected value.
48 if (!modern_value || 68 if (!modern_value ||
49 legacy_dse_from_prefs->prepopulate_id != modern_value->prepopulate_id) { 69 legacy_dse_from_prefs->prepopulate_id != modern_value->prepopulate_id) {
50 // This looks like a user-selected value, so let's migrate it. 70 // This looks like a user-selected value, so let's migrate it.
51 // TODO(erikwright): Remove this migration logic when this stat approaches 71 // TODO(erikwright): Remove this migration logic when this stat approaches
52 // zero. 72 // zero.
53 UMA_HISTOGRAM_BOOLEAN("Search.MigratedPrefToDictionaryValue", true); 73 UMA_HISTOGRAM_BOOLEAN("Search.MigratedPrefToDictionaryValue", true);
54 default_search_manager.SetUserSelectedDefaultSearchEngine( 74 default_search_manager.SetUserSelectedDefaultSearchEngine(
55 *legacy_dse_from_prefs); 75 *legacy_dse_from_prefs);
56 } 76 }
57 } 77 }
58 78
59 // TODO(erikwright): Clear the legacy value when the modern value is the 79 ClearDefaultSearchProviderFromLegacyPrefs(pref_service);
60 // authority.
61 } 80 }
62 81
63 void OnPrefsInitialized(PrefService* pref_service, 82 void OnPrefsInitialized(PrefService* pref_service,
64 bool pref_service_initialization_success) { 83 bool pref_service_initialization_success) {
65 MigrateDefaultSearchPref(pref_service); 84 MigrateDefaultSearchPref(pref_service);
66 } 85 }
67 86
68 } // namespace 87 } // namespace
69 88
70 void ConfigureDefaultSearchPrefMigrationToDictionaryValue( 89 void ConfigureDefaultSearchPrefMigrationToDictionaryValue(
71 PrefService* pref_service) { 90 PrefService* pref_service) {
72 if (pref_service->GetInitializationStatus() == 91 if (pref_service->GetInitializationStatus() ==
73 PrefService::INITIALIZATION_STATUS_WAITING) { 92 PrefService::INITIALIZATION_STATUS_WAITING) {
74 pref_service->AddPrefInitObserver( 93 pref_service->AddPrefInitObserver(
75 base::Bind(&OnPrefsInitialized, base::Unretained(pref_service))); 94 base::Bind(&OnPrefsInitialized, base::Unretained(pref_service)));
76 } else { 95 } else {
77 MigrateDefaultSearchPref(pref_service); 96 MigrateDefaultSearchPref(pref_service);
78 } 97 }
79 } 98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698