Skip to content

Commit 4c61034

Browse files
committed
Update default search in JP - phase 2
fix brave/brave-browser#44769
1 parent 2574bcc commit 4c61034

5 files changed

+130
-1
lines changed

browser/search_engines/normal_window_search_engine_provider_service.cc

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55

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

8+
#include <string>
9+
810
#include "base/functional/bind.h"
11+
#include "brave/browser/search_engines/pref_names.h"
912
#include "brave/browser/search_engines/search_engine_provider_util.h"
13+
#include "brave/components/l10n/common/country_code_util.h"
14+
#include "brave/components/search_engines/brave_prepopulated_engines.h"
1015
#include "chrome/browser/browser_process.h"
1116
#include "chrome/browser/profiles/profile.h"
1217
#include "chrome/browser/search_engines/template_url_service_factory.h"
18+
#include "chrome/common/pref_names.h"
19+
#include "components/country_codes/country_codes.h"
1320
#include "components/search_engines/search_engines_pref_names.h"
21+
#include "components/search_engines/template_url_prepopulate_data.h"
1422
#include "components/search_engines/template_url_service.h"
1523

1624
NormalWindowSearchEngineProviderService::
@@ -26,7 +34,7 @@ NormalWindowSearchEngineProviderService::
2634

2735
auto* service = TemplateURLServiceFactory::GetForProfile(profile_);
2836
if (service->loaded()) {
29-
PrepareInitialPrivateSearchProvider();
37+
OnTemplateURLServiceLoaded();
3038
return;
3139
}
3240

@@ -48,6 +56,7 @@ void NormalWindowSearchEngineProviderService::Shutdown() {
4856
void NormalWindowSearchEngineProviderService::OnTemplateURLServiceLoaded() {
4957
template_url_service_subscription_ = {};
5058
PrepareInitialPrivateSearchProvider();
59+
MigrateSearchEnginePrefsInJP();
5160
}
5261

5362
void NormalWindowSearchEngineProviderService::
@@ -58,3 +67,48 @@ void NormalWindowSearchEngineProviderService::
5867
void NormalWindowSearchEngineProviderService::OnPreferenceChanged() {
5968
brave::UpdateDefaultPrivateSearchProviderData(*profile_);
6069
}
70+
71+
void NormalWindowSearchEngineProviderService::MigrateSearchEnginePrefsInJP() {
72+
auto* prefs = profile_->GetPrefs();
73+
if (prefs->GetBoolean(kMigratedSearchDefaultInJP)) {
74+
return;
75+
}
76+
77+
prefs->SetBoolean(kMigratedSearchDefaultInJP, true);
78+
79+
const std::string country_string =
80+
brave_l10n::GetCountryCode(g_browser_process->local_state());
81+
if (country_string != "JP") {
82+
return;
83+
}
84+
85+
auto* preference =
86+
prefs->FindPreference(prefs::kSyncedDefaultSearchProviderGUID);
87+
if (preference->HasUserSetting()) {
88+
return;
89+
}
90+
91+
auto* service = TemplateURLServiceFactory::GetForProfile(profile_);
92+
if (service->loaded()) {
93+
return;
94+
}
95+
96+
if (service->GetDefaultSearchProvider()->prepopulate_id() ==
97+
TemplateURLPrepopulateData::PREPOPULATED_ENGINE_ID_YAHOO_JP) {
98+
return;
99+
}
100+
101+
auto data = TemplateURLPrepopulateData::GetPrepopulatedEngine(
102+
*prefs, country_codes::CountryStringToCountryID(country_string),
103+
TemplateURLPrepopulateData::PREPOPULATED_ENGINE_ID_YAHOO_JP);
104+
if (!data) {
105+
return;
106+
}
107+
108+
TemplateURL url(*data);
109+
service->SetUserSelectedDefaultSearchProvider(&url);
110+
111+
if (prefs->GetBoolean(prefs::kSearchSuggestEnabled)) {
112+
prefs->SetBoolean(prefs::kSearchSuggestEnabled, false);
113+
}
114+
}

browser/search_engines/normal_window_search_engine_provider_service.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class NormalWindowSearchEngineProviderService : public KeyedService {
3838
void OnTemplateURLServiceLoaded();
3939
void PrepareInitialPrivateSearchProvider();
4040
void OnPreferenceChanged();
41+
void MigrateSearchEnginePrefsInJP();
4142

4243
raw_ptr<Profile> profile_ = nullptr;
4344
StringPrefMember private_search_provider_guid_;

browser/search_engines/pref_names.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@
1010
inline constexpr char kEnableSearchSuggestionsByDefault[] =
1111
"brave.enable_search_suggestions_by_default";
1212

13+
// Profile prefs
14+
inline constexpr char kMigratedSearchDefaultInJP[] =
15+
"brave.migrated_search_default_in_jp";
16+
1317
#endif // BRAVE_BROWSER_SEARCH_ENGINES_PREF_NAMES_H_

browser/search_engines/search_engine_provider_service_browsertest.cc

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "brave/browser/profile_resetter/brave_profile_resetter.h"
1111
#include "brave/browser/profiles/brave_profile_manager.h"
1212
#include "brave/browser/profiles/profile_util.h"
13+
#include "brave/browser/search_engines/pref_names.h"
1314
#include "brave/browser/search_engines/search_engine_provider_service_factory.h"
1415
#include "brave/browser/search_engines/search_engine_provider_util.h"
1516
#include "brave/browser/ui/browser_commands.h"
@@ -279,6 +280,73 @@ INSTANTIATE_TEST_SUITE_P(
279280
{"ko_KR", true, false},
280281
{"ko_KR", false, false}}));
281282

283+
class MigrateSearchEnginePrefsInJPTest : public InProcessBrowserTest {
284+
public:
285+
MigrateSearchEnginePrefsInJPTest() = default;
286+
~MigrateSearchEnginePrefsInJPTest() override = default;
287+
288+
TemplateURLService* service() {
289+
return TemplateURLServiceFactory::GetForProfile(browser()->profile());
290+
}
291+
292+
PrefService* prefs() { return browser()->profile()->GetPrefs(); }
293+
294+
private:
295+
const brave_l10n::test::ScopedDefaultLocale default_locale{"ja_JP"};
296+
};
297+
298+
IN_PROC_BROWSER_TEST_F(MigrateSearchEnginePrefsInJPTest,
299+
PRE_PRE_DefaultSearchProviderUpdateTest) {
300+
EXPECT_TRUE(VerifyTemplateURLServiceLoad(service()));
301+
302+
// To simulate existing user at next launch, set 31
303+
// as we set yahoo as a default in jp at 31.
304+
// At the next launch, default provider will be yahoo by setting 31.
305+
prefs()->SetInteger(prefs::kBraveDefaultSearchVersion, 31);
306+
307+
// To run migration code again at the next launch.
308+
prefs()->ClearPref(kMigratedSearchDefaultInJP);
309+
prefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
310+
}
311+
312+
// To verify migration code doesn't touch search suggestions if current provider
313+
// is yahoo jp.
314+
IN_PROC_BROWSER_TEST_F(MigrateSearchEnginePrefsInJPTest,
315+
PRE_DefaultSearchProviderUpdateTest) {
316+
EXPECT_TRUE(VerifyTemplateURLServiceLoad(service()));
317+
318+
const int provider_id =
319+
service()->GetDefaultSearchProvider()->prepopulate_id();
320+
EXPECT_EQ(provider_id,
321+
static_cast<int>(
322+
TemplateURLPrepopulateData::PREPOPULATED_ENGINE_ID_YAHOO_JP));
323+
EXPECT_TRUE(prefs()->GetBoolean(prefs::kSearchSuggestEnabled));
324+
325+
// To simulate existing user at next launch, set older version than 31
326+
// as we set yahoo as a default in jp at 31.
327+
// At the next launch, default provider will be google by setting old
328+
// version number.
329+
prefs()->SetInteger(prefs::kBraveDefaultSearchVersion, 30);
330+
331+
// To run migration code again at the next launch.
332+
service()->SetUserSelectedDefaultSearchProvider(nullptr);
333+
prefs()->ClearPref(prefs::kSyncedDefaultSearchProviderGUID);
334+
prefs()->ClearPref(kMigratedSearchDefaultInJP);
335+
prefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
336+
}
337+
338+
IN_PROC_BROWSER_TEST_F(MigrateSearchEnginePrefsInJPTest,
339+
DefaultSearchProviderUpdateTest) {
340+
EXPECT_TRUE(VerifyTemplateURLServiceLoad(service()));
341+
342+
const int provider_id =
343+
service()->GetDefaultSearchProvider()->prepopulate_id();
344+
EXPECT_EQ(provider_id,
345+
static_cast<int>(
346+
TemplateURLPrepopulateData::PREPOPULATED_ENGINE_ID_YAHOO_JP));
347+
EXPECT_FALSE(prefs()->GetBoolean(prefs::kSearchSuggestEnabled));
348+
}
349+
282350
#if BUILDFLAG(ENABLE_EXTENSIONS)
283351

284352
namespace extensions {

browser/search_engines/search_engine_provider_service_factory.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "brave/browser/search_engines/private_window_search_engine_provider_service_android.h"
2424
#else
2525
#include "brave/browser/search_engines/normal_window_search_engine_provider_service.h"
26+
#include "brave/browser/search_engines/pref_names.h"
2627
#include "brave/browser/search_engines/private_window_search_engine_provider_service.h"
2728
#include "brave/browser/search_engines/tor_window_search_engine_provider_service.h"
2829
#endif
@@ -99,6 +100,7 @@ void SearchEngineProviderServiceFactory::RegisterProfilePrefs(
99100
#if !BUILDFLAG(IS_ANDROID)
100101
registry->RegisterBooleanPref(prefs::kDefaultSearchProviderByExtension,
101102
false);
103+
registry->RegisterBooleanPref(kMigratedSearchDefaultInJP, false);
102104
registry->RegisterStringPref(prefs::kSyncedDefaultPrivateSearchProviderGUID,
103105
std::string(),
104106
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);

0 commit comments

Comments
 (0)