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

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

Issue 280113002: Revert of Use the DefaultSearchManager as the exclusive authority on DSE, ignoring Web Data. (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 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"
17 16
18 namespace { 17 namespace {
19 18
20 // Loads the user-selected DSE (if there is one, and it's not masked by policy 19 // Loads the user-selected DSE (if there is one, and it's not masked by policy
21 // or an extension) from legacy preferences. 20 // or an extension) from legacy preferences.
22 scoped_ptr<TemplateURLData> LoadDefaultSearchProviderFromPrefs( 21 scoped_ptr<TemplateURLData> LoadDefaultSearchProviderFromPrefs(
23 PrefService* pref_service) { 22 PrefService* pref_service) {
24 scoped_ptr<TemplateURLData> legacy_dse_from_prefs; 23 scoped_ptr<TemplateURLData> legacy_dse_from_prefs;
25 bool legacy_is_managed = false; 24 bool legacy_is_managed = false;
26 TemplateURLService::LoadDefaultSearchProviderFromPrefs( 25 TemplateURLService::LoadDefaultSearchProviderFromPrefs(
27 pref_service, &legacy_dse_from_prefs, &legacy_is_managed); 26 pref_service, &legacy_dse_from_prefs, &legacy_is_managed);
28 return legacy_is_managed ? 27 return legacy_is_managed ?
29 scoped_ptr<TemplateURLData>() : legacy_dse_from_prefs.Pass(); 28 scoped_ptr<TemplateURLData>() : legacy_dse_from_prefs.Pass();
30 } 29 }
31 30
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
51 void MigrateDefaultSearchPref(PrefService* pref_service) { 31 void MigrateDefaultSearchPref(PrefService* pref_service) {
52 DCHECK(pref_service); 32 DCHECK(pref_service);
53 33
54 scoped_ptr<TemplateURLData> legacy_dse_from_prefs = 34 scoped_ptr<TemplateURLData> legacy_dse_from_prefs =
55 LoadDefaultSearchProviderFromPrefs(pref_service); 35 LoadDefaultSearchProviderFromPrefs(pref_service);
56 if (!legacy_dse_from_prefs) 36 if (!legacy_dse_from_prefs)
57 return; 37 return;
58 38
59 DefaultSearchManager default_search_manager( 39 DefaultSearchManager default_search_manager(
60 pref_service, DefaultSearchManager::ObserverCallback()); 40 pref_service, DefaultSearchManager::ObserverCallback());
61 DefaultSearchManager::Source modern_source; 41 DefaultSearchManager::Source modern_source;
62 TemplateURLData* modern_value = 42 TemplateURLData* modern_value =
63 default_search_manager.GetDefaultSearchEngine(&modern_source); 43 default_search_manager.GetDefaultSearchEngine(&modern_source);
64 if (modern_source == DefaultSearchManager::FROM_FALLBACK) { 44 if (modern_source == DefaultSearchManager::FROM_FALLBACK) {
65 // |modern_value| is the prepopulated default. If it matches the legacy DSE 45 // |modern_value| is the prepopulated default. If it matches the legacy DSE
66 // we assume it is not a user-selected value. 46 // we assume it is not a user-selected value.
67 if (!modern_value || 47 if (!modern_value ||
68 legacy_dse_from_prefs->prepopulate_id != modern_value->prepopulate_id) { 48 legacy_dse_from_prefs->prepopulate_id != modern_value->prepopulate_id) {
69 // This looks like a user-selected value, so let's migrate it. 49 // This looks like a user-selected value, so let's migrate it.
70 // TODO(erikwright): Remove this migration logic when this stat approaches 50 // TODO(erikwright): Remove this migration logic when this stat approaches
71 // zero. 51 // zero.
72 UMA_HISTOGRAM_BOOLEAN("Search.MigratedPrefToDictionaryValue", true); 52 UMA_HISTOGRAM_BOOLEAN("Search.MigratedPrefToDictionaryValue", true);
73 default_search_manager.SetUserSelectedDefaultSearchEngine( 53 default_search_manager.SetUserSelectedDefaultSearchEngine(
74 *legacy_dse_from_prefs); 54 *legacy_dse_from_prefs);
75 } 55 }
76 } 56 }
77 57
78 ClearDefaultSearchProviderFromLegacyPrefs(pref_service); 58 // TODO(erikwright): Clear the legacy value when the modern value is the
59 // authority.
79 } 60 }
80 61
81 void OnPrefsInitialized(PrefService* pref_service, 62 void OnPrefsInitialized(PrefService* pref_service,
82 bool pref_service_initialization_success) { 63 bool pref_service_initialization_success) {
83 MigrateDefaultSearchPref(pref_service); 64 MigrateDefaultSearchPref(pref_service);
84 } 65 }
85 66
86 } // namespace 67 } // namespace
87 68
88 void ConfigureDefaultSearchPrefMigrationToDictionaryValue( 69 void ConfigureDefaultSearchPrefMigrationToDictionaryValue(
89 PrefService* pref_service) { 70 PrefService* pref_service) {
90 if (pref_service->GetInitializationStatus() == 71 if (pref_service->GetInitializationStatus() ==
91 PrefService::INITIALIZATION_STATUS_WAITING) { 72 PrefService::INITIALIZATION_STATUS_WAITING) {
92 pref_service->AddPrefInitObserver( 73 pref_service->AddPrefInitObserver(
93 base::Bind(&OnPrefsInitialized, base::Unretained(pref_service))); 74 base::Bind(&OnPrefsInitialized, base::Unretained(pref_service)));
94 } else { 75 } else {
95 MigrateDefaultSearchPref(pref_service); 76 MigrateDefaultSearchPref(pref_service);
96 } 77 }
97 } 78 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698