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/template_url_service.h" | 5 #include "components/search_engines/template_url_service.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 // notified of the new (fallback-provided) value in | 685 // notified of the new (fallback-provided) value in |
686 // ClearUserSelectedDefaultSearchEngine() above. Since we are here, the | 686 // ClearUserSelectedDefaultSearchEngine() above. Since we are here, the |
687 // value was presumably originally a fallback value (which may have been | 687 // value was presumably originally a fallback value (which may have been |
688 // repaired). | 688 // repaired). |
689 DefaultSearchManager::Source source; | 689 DefaultSearchManager::Source source; |
690 const TemplateURLData* new_dse = | 690 const TemplateURLData* new_dse = |
691 default_search_manager_.GetDefaultSearchEngine(&source); | 691 default_search_manager_.GetDefaultSearchEngine(&source); |
692 // ApplyDefaultSearchChange will notify observers once it is done. | 692 // ApplyDefaultSearchChange will notify observers once it is done. |
693 ApplyDefaultSearchChange(new_dse, source); | 693 ApplyDefaultSearchChange(new_dse, source); |
694 } else { | 694 } else { |
695 NotifyObservers(); | 695 // Set fallback engine as user selected, because repair is considered a user |
| 696 // action and we are expected to sync new fallback engine to other devices. |
| 697 const TemplateURLData* fallback_engine_data = |
| 698 default_search_manager_.GetFallbackSearchEngine(); |
| 699 if (fallback_engine_data) { |
| 700 TemplateURL* fallback_engine = |
| 701 FindPrepopulatedTemplateURL(fallback_engine_data->prepopulate_id); |
| 702 if (fallback_engine) { |
| 703 // Write fallback engine guid to sync pref. This will also set fallback |
| 704 // engine as new user selected in |
| 705 // OnSyncedDefaultSearchProviderGUIDChanged. |
| 706 prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID, |
| 707 fallback_engine->sync_guid()); |
| 708 } else { |
| 709 // Fallback engine can not be found by prepopulate_id. Write its data |
| 710 // to user pref. |
| 711 default_search_manager_.SetUserSelectedDefaultSearchEngine( |
| 712 *fallback_engine_data); |
| 713 } |
| 714 NotifyObservers(); |
| 715 } |
696 } | 716 } |
697 } | 717 } |
698 | 718 |
699 void TemplateURLService::AddObserver(TemplateURLServiceObserver* observer) { | 719 void TemplateURLService::AddObserver(TemplateURLServiceObserver* observer) { |
700 model_observers_.AddObserver(observer); | 720 model_observers_.AddObserver(observer); |
701 } | 721 } |
702 | 722 |
703 void TemplateURLService::RemoveObserver(TemplateURLServiceObserver* observer) { | 723 void TemplateURLService::RemoveObserver(TemplateURLServiceObserver* observer) { |
704 model_observers_.RemoveObserver(observer); | 724 model_observers_.RemoveObserver(observer); |
705 } | 725 } |
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1384 if (prefs_) { | 1404 if (prefs_) { |
1385 pref_change_registrar_.Init(prefs_); | 1405 pref_change_registrar_.Init(prefs_); |
1386 pref_change_registrar_.Add( | 1406 pref_change_registrar_.Add( |
1387 prefs::kSyncedDefaultSearchProviderGUID, | 1407 prefs::kSyncedDefaultSearchProviderGUID, |
1388 base::Bind( | 1408 base::Bind( |
1389 &TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged, | 1409 &TemplateURLService::OnSyncedDefaultSearchProviderGUIDChanged, |
1390 base::Unretained(this))); | 1410 base::Unretained(this))); |
1391 } | 1411 } |
1392 | 1412 |
1393 DefaultSearchManager::Source source = DefaultSearchManager::FROM_USER; | 1413 DefaultSearchManager::Source source = DefaultSearchManager::FROM_USER; |
1394 TemplateURLData* dse = | 1414 const TemplateURLData* dse = |
1395 default_search_manager_.GetDefaultSearchEngine(&source); | 1415 default_search_manager_.GetDefaultSearchEngine(&source); |
1396 ApplyDefaultSearchChange(dse, source); | 1416 ApplyDefaultSearchChange(dse, source); |
1397 | 1417 |
1398 if (num_initializers > 0) { | 1418 if (num_initializers > 0) { |
1399 // This path is only hit by test code and is used to simulate a loaded | 1419 // This path is only hit by test code and is used to simulate a loaded |
1400 // TemplateURLService. | 1420 // TemplateURLService. |
1401 ChangeToLoadedState(); | 1421 ChangeToLoadedState(); |
1402 | 1422 |
1403 // Add specific initializers, if any. | 1423 // Add specific initializers, if any. |
1404 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); | 1424 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1930 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); | 1950 KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); |
1931 if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY || | 1951 if (default_search_provider_source_ == DefaultSearchManager::FROM_POLICY || |
1932 source == DefaultSearchManager::FROM_POLICY) { | 1952 source == DefaultSearchManager::FROM_POLICY) { |
1933 // We do this both to remove any no-longer-applicable policy-defined DSE as | 1953 // We do this both to remove any no-longer-applicable policy-defined DSE as |
1934 // well as to add the new one, if appropriate. | 1954 // well as to add the new one, if appropriate. |
1935 UpdateProvidersCreatedByPolicy( | 1955 UpdateProvidersCreatedByPolicy( |
1936 &template_urls_, | 1956 &template_urls_, |
1937 source == DefaultSearchManager::FROM_POLICY ? data : nullptr); | 1957 source == DefaultSearchManager::FROM_POLICY ? data : nullptr); |
1938 } | 1958 } |
1939 | 1959 |
| 1960 // |default_search_provider_source_| must be set before calling |
| 1961 // UpdateNoNotify(), since that function needs to know the source of the |
| 1962 // update in question. |
| 1963 default_search_provider_source_ = source; |
| 1964 |
1940 if (!data) { | 1965 if (!data) { |
1941 default_search_provider_ = nullptr; | 1966 default_search_provider_ = nullptr; |
1942 } else if (source == DefaultSearchManager::FROM_EXTENSION) { | 1967 } else if (source == DefaultSearchManager::FROM_EXTENSION) { |
1943 default_search_provider_ = FindMatchingExtensionTemplateURL( | 1968 default_search_provider_ = FindMatchingExtensionTemplateURL( |
1944 *data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1969 *data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
1945 } else if (source == DefaultSearchManager::FROM_FALLBACK) { | 1970 } else if (source == DefaultSearchManager::FROM_FALLBACK) { |
1946 default_search_provider_ = | 1971 default_search_provider_ = |
1947 FindPrepopulatedTemplateURL(data->prepopulate_id); | 1972 FindPrepopulatedTemplateURL(data->prepopulate_id); |
1948 if (default_search_provider_) { | 1973 if (default_search_provider_) { |
1949 TemplateURLData update_data(*data); | 1974 TemplateURLData update_data(*data); |
(...skipping 30 matching lines...) Expand all Loading... |
1980 std::unique_ptr<TemplateURL> new_dse_ptr = | 2005 std::unique_ptr<TemplateURL> new_dse_ptr = |
1981 base::MakeUnique<TemplateURL>(new_data); | 2006 base::MakeUnique<TemplateURL>(new_data); |
1982 TemplateURL* new_dse = new_dse_ptr.get(); | 2007 TemplateURL* new_dse = new_dse_ptr.get(); |
1983 if (AddNoNotify(std::move(new_dse_ptr), true)) | 2008 if (AddNoNotify(std::move(new_dse_ptr), true)) |
1984 default_search_provider_ = new_dse; | 2009 default_search_provider_ = new_dse; |
1985 } | 2010 } |
1986 if (default_search_provider_ && prefs_) { | 2011 if (default_search_provider_ && prefs_) { |
1987 prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID, | 2012 prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID, |
1988 default_search_provider_->sync_guid()); | 2013 default_search_provider_->sync_guid()); |
1989 } | 2014 } |
1990 | |
1991 } | 2015 } |
1992 | 2016 |
1993 default_search_provider_source_ = source; | |
1994 | |
1995 bool changed = default_search_provider_ != previous_default_search_engine; | 2017 bool changed = default_search_provider_ != previous_default_search_engine; |
1996 if (changed) | 2018 if (changed) |
1997 RequestGoogleURLTrackerServerCheckIfNecessary(); | 2019 RequestGoogleURLTrackerServerCheckIfNecessary(); |
1998 | 2020 |
1999 NotifyObservers(); | 2021 NotifyObservers(); |
2000 | 2022 |
2001 return changed; | 2023 return changed; |
2002 } | 2024 } |
2003 | 2025 |
2004 TemplateURL* TemplateURLService::AddNoNotify( | 2026 TemplateURL* TemplateURLService::AddNoNotify( |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2477 | 2499 |
2478 if (most_recently_intalled_default) { | 2500 if (most_recently_intalled_default) { |
2479 base::AutoReset<DefaultSearchChangeOrigin> change_origin( | 2501 base::AutoReset<DefaultSearchChangeOrigin> change_origin( |
2480 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION); | 2502 &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION); |
2481 default_search_manager_.SetExtensionControlledDefaultSearchEngine( | 2503 default_search_manager_.SetExtensionControlledDefaultSearchEngine( |
2482 most_recently_intalled_default->data()); | 2504 most_recently_intalled_default->data()); |
2483 } else { | 2505 } else { |
2484 default_search_manager_.ClearExtensionControlledDefaultSearchEngine(); | 2506 default_search_manager_.ClearExtensionControlledDefaultSearchEngine(); |
2485 } | 2507 } |
2486 } | 2508 } |
OLD | NEW |