Skip to content

Commit

Permalink
Updated Improved Search Suggestions default value
Browse files Browse the repository at this point in the history
fix brave/brave-browser#29517

We'll turn it on when Brave Search is default provider in specific countries.
  • Loading branch information
simonhong committed Apr 20, 2023
1 parent 6b8904a commit c3f04d7
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,17 @@

#include "brave/browser/search_engines/normal_window_search_engine_provider_service.h"

#include <string>

#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "brave/browser/search_engines/search_engine_provider_util.h"
#include "brave/components/l10n/common/locale_util.h"
#include "brave/components/search_engines/brave_prepopulated_engines.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "components/search_engines/search_engines_pref_names.h"
#include "components/search_engines/template_url_service.h"

Expand All @@ -22,6 +29,8 @@ NormalWindowSearchEngineProviderService::
base::Unretained(this)));

auto* service = TemplateURLServiceFactory::GetForProfile(profile_);
observation_.Observe(service);

if (service->loaded()) {
PrepareInitialPrivateSearchProvider();
return;
Expand All @@ -40,6 +49,7 @@ NormalWindowSearchEngineProviderService::
void NormalWindowSearchEngineProviderService::Shutdown() {
template_url_service_subscription_ = {};
private_search_provider_guid_.Destroy();
observation_.Reset();
}

void NormalWindowSearchEngineProviderService::OnTemplateURLServiceLoaded(
Expand All @@ -56,3 +66,36 @@ void NormalWindowSearchEngineProviderService::
void NormalWindowSearchEngineProviderService::OnPreferenceChanged() {
brave::UpdateDefaultPrivateSearchProviderData(profile_);
}

void NormalWindowSearchEngineProviderService::OnTemplateURLServiceChanged() {
UpdateSearchSuggestionsDefaultValue();
}

void NormalWindowSearchEngineProviderService::
UpdateSearchSuggestionsDefaultValue() {
// As we want to have different default value for search suggestions option,
// we should update whenever default provider is changed.
auto* service = TemplateURLServiceFactory::GetForProfile(profile_);
auto* template_url = service->GetDefaultSearchProvider();
if (!template_url) {
return;
}

const std::string default_country_code =
brave_l10n::GetDefaultISOCountryCodeString();
constexpr std::array<const char*, 11> kSupportedCountries = {
"IN", "CA", "DE", "FR", "GB", "US", "AT", "ES", "MX", "BR", "AR"};
const bool search_suggestions_default_value =
(template_url->prepopulate_id() ==
TemplateURLPrepopulateData::PREPOPULATED_ENGINE_ID_BRAVE) &&
base::Contains(kSupportedCountries, default_country_code);

profile_->GetPrefs()->SetDefaultPrefValue(
prefs::kSearchSuggestEnabled,
base::Value(search_suggestions_default_value));
}

void NormalWindowSearchEngineProviderService::
OnTemplateURLServiceShuttingDown() {
observation_.Reset();
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@

#include "base/callback_list.h"
#include "base/memory/raw_ptr.h"
#include "base/scoped_observation.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/prefs/pref_member.h"
#include "components/search_engines/template_url_service_observer.h"

class Profile;
class TemplateURLService;

// Set default prefs for private search provider as it's stored in normal
// profile. And update TemplateURLData for private search provider whenever
Expand All @@ -21,7 +24,9 @@ class Profile;
// In this situation, previous default provider should be default one with
// new list. To do that, cached TemplateURLData can be added to
// TemplateURLService.
class NormalWindowSearchEngineProviderService : public KeyedService {
class NormalWindowSearchEngineProviderService
: public KeyedService,
public TemplateURLServiceObserver {
public:
explicit NormalWindowSearchEngineProviderService(Profile* profile);
~NormalWindowSearchEngineProviderService() override;
Expand All @@ -35,13 +40,20 @@ class NormalWindowSearchEngineProviderService : public KeyedService {
// KeyedService overrides:
void Shutdown() override;

// TemplateURLServiceObserver overrides:
void OnTemplateURLServiceChanged() override;
void OnTemplateURLServiceShuttingDown() override;

void OnTemplateURLServiceLoaded(Profile* profile);
void PrepareInitialPrivateSearchProvider();
void OnPreferenceChanged();
void UpdateSearchSuggestionsDefaultValue();

raw_ptr<Profile> profile_ = nullptr;
StringPrefMember private_search_provider_guid_;
base::CallbackListSubscription template_url_service_subscription_;
base::ScopedObservation<TemplateURLService, TemplateURLServiceObserver>
observation_{this};
};

#endif // BRAVE_BROWSER_SEARCH_ENGINES_NORMAL_WINDOW_SEARCH_ENGINE_PROVIDER_SERVICE_H_

0 comments on commit c3f04d7

Please sign in to comment.