| OLD | NEW |
| 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 "components/search_engines/default_search_manager.h" | 5 #include "components/search_engines/default_search_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 pref_value_map->SetValue(kDefaultSearchProviderDataPrefName, | 116 pref_value_map->SetValue(kDefaultSearchProviderDataPrefName, |
| 117 std::move(value)); | 117 std::move(value)); |
| 118 } | 118 } |
| 119 | 119 |
| 120 // static | 120 // static |
| 121 void DefaultSearchManager::SetFallbackSearchEnginesDisabledForTesting( | 121 void DefaultSearchManager::SetFallbackSearchEnginesDisabledForTesting( |
| 122 bool disabled) { | 122 bool disabled) { |
| 123 g_fallback_search_engines_disabled = disabled; | 123 g_fallback_search_engines_disabled = disabled; |
| 124 } | 124 } |
| 125 | 125 |
| 126 TemplateURLData* DefaultSearchManager::GetDefaultSearchEngine( | 126 const TemplateURLData* DefaultSearchManager::GetDefaultSearchEngine( |
| 127 Source* source) const { | 127 Source* source) const { |
| 128 if (default_search_controlled_by_policy_) { | 128 if (default_search_controlled_by_policy_) { |
| 129 if (source) | 129 if (source) |
| 130 *source = FROM_POLICY; | 130 *source = FROM_POLICY; |
| 131 return prefs_default_search_.get(); | 131 return prefs_default_search_.get(); |
| 132 } | 132 } |
| 133 if (extension_default_search_) { | 133 if (extension_default_search_) { |
| 134 if (source) | 134 if (source) |
| 135 *source = FROM_EXTENSION; | 135 *source = FROM_EXTENSION; |
| 136 return extension_default_search_.get(); | 136 return extension_default_search_.get(); |
| 137 } | 137 } |
| 138 if (prefs_default_search_) { | 138 if (prefs_default_search_) { |
| 139 if (source) | 139 if (source) |
| 140 *source = FROM_USER; | 140 *source = FROM_USER; |
| 141 return prefs_default_search_.get(); | 141 return prefs_default_search_.get(); |
| 142 } | 142 } |
| 143 | 143 |
| 144 if (source) | 144 if (source) |
| 145 *source = FROM_FALLBACK; | 145 *source = FROM_FALLBACK; |
| 146 return g_fallback_search_engines_disabled ? | 146 return GetFallbackSearchEngine(); |
| 147 NULL : fallback_default_search_.get(); | |
| 148 } | 147 } |
| 149 | 148 |
| 150 DefaultSearchManager::Source | 149 DefaultSearchManager::Source |
| 151 DefaultSearchManager::GetDefaultSearchEngineSource() const { | 150 DefaultSearchManager::GetDefaultSearchEngineSource() const { |
| 152 Source source; | 151 Source source; |
| 153 GetDefaultSearchEngine(&source); | 152 GetDefaultSearchEngine(&source); |
| 154 return source; | 153 return source; |
| 155 } | 154 } |
| 156 | 155 |
| 156 const TemplateURLData* DefaultSearchManager::GetFallbackSearchEngine() const { |
| 157 return g_fallback_search_engines_disabled ? nullptr |
| 158 : fallback_default_search_.get(); |
| 159 } |
| 160 |
| 157 void DefaultSearchManager::SetUserSelectedDefaultSearchEngine( | 161 void DefaultSearchManager::SetUserSelectedDefaultSearchEngine( |
| 158 const TemplateURLData& data) { | 162 const TemplateURLData& data) { |
| 159 if (!pref_service_) { | 163 if (!pref_service_) { |
| 160 prefs_default_search_.reset(new TemplateURLData(data)); | 164 prefs_default_search_.reset(new TemplateURLData(data)); |
| 161 MergePrefsDataWithPrepopulated(); | 165 MergePrefsDataWithPrepopulated(); |
| 162 NotifyObserver(); | 166 NotifyObserver(); |
| 163 return; | 167 return; |
| 164 } | 168 } |
| 165 | 169 |
| 166 pref_service_->Set(kDefaultSearchProviderDataPrefName, | 170 pref_service_->Set(kDefaultSearchProviderDataPrefName, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 197 // If we were/are FROM_USER or FROM_POLICY the effective DSE may have changed. | 201 // If we were/are FROM_USER or FROM_POLICY the effective DSE may have changed. |
| 198 if (source != FROM_USER && source != FROM_POLICY) | 202 if (source != FROM_USER && source != FROM_POLICY) |
| 199 source = GetDefaultSearchEngineSource(); | 203 source = GetDefaultSearchEngineSource(); |
| 200 if (source == FROM_USER || source == FROM_POLICY) | 204 if (source == FROM_USER || source == FROM_POLICY) |
| 201 NotifyObserver(); | 205 NotifyObserver(); |
| 202 } | 206 } |
| 203 | 207 |
| 204 void DefaultSearchManager::OnOverridesPrefChanged() { | 208 void DefaultSearchManager::OnOverridesPrefChanged() { |
| 205 LoadPrepopulatedDefaultSearch(); | 209 LoadPrepopulatedDefaultSearch(); |
| 206 | 210 |
| 207 TemplateURLData* effective_data = GetDefaultSearchEngine(NULL); | 211 const TemplateURLData* effective_data = GetDefaultSearchEngine(nullptr); |
| 208 if (effective_data && effective_data->prepopulate_id) { | 212 if (effective_data && effective_data->prepopulate_id) { |
| 209 // A user-selected, policy-selected or fallback pre-populated engine is | 213 // A user-selected, policy-selected or fallback pre-populated engine is |
| 210 // active and may have changed with this event. | 214 // active and may have changed with this event. |
| 211 NotifyObserver(); | 215 NotifyObserver(); |
| 212 } | 216 } |
| 213 } | 217 } |
| 214 | 218 |
| 215 void DefaultSearchManager::MergePrefsDataWithPrepopulated() { | 219 void DefaultSearchManager::MergePrefsDataWithPrepopulated() { |
| 216 if (!prefs_default_search_ || !prefs_default_search_->prepopulate_id) | 220 if (!prefs_default_search_ || !prefs_default_search_->prepopulate_id) |
| 217 return; | 221 return; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 void DefaultSearchManager::LoadPrepopulatedDefaultSearch() { | 277 void DefaultSearchManager::LoadPrepopulatedDefaultSearch() { |
| 274 std::unique_ptr<TemplateURLData> data = | 278 std::unique_ptr<TemplateURLData> data = |
| 275 TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(pref_service_); | 279 TemplateURLPrepopulateData::GetPrepopulatedDefaultSearch(pref_service_); |
| 276 fallback_default_search_ = std::move(data); | 280 fallback_default_search_ = std::move(data); |
| 277 MergePrefsDataWithPrepopulated(); | 281 MergePrefsDataWithPrepopulated(); |
| 278 } | 282 } |
| 279 | 283 |
| 280 void DefaultSearchManager::NotifyObserver() { | 284 void DefaultSearchManager::NotifyObserver() { |
| 281 if (!change_observer_.is_null()) { | 285 if (!change_observer_.is_null()) { |
| 282 Source source = FROM_FALLBACK; | 286 Source source = FROM_FALLBACK; |
| 283 TemplateURLData* data = GetDefaultSearchEngine(&source); | 287 const TemplateURLData* data = GetDefaultSearchEngine(&source); |
| 284 change_observer_.Run(data, source); | 288 change_observer_.Run(data, source); |
| 285 } | 289 } |
| 286 } | 290 } |
| OLD | NEW |