Skip to content

Commit 04d1c16

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

5 files changed

+134
-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: 72 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"
@@ -35,6 +36,7 @@
3536
#include "chrome/test/base/ui_test_utils.h"
3637
#include "components/country_codes/country_codes.h"
3738
#include "components/prefs/pref_service.h"
39+
#include "components/regional_capabilities/regional_capabilities_switches.h"
3840
#include "components/search_engines/search_engine_choice/search_engine_choice_service.h"
3941
#include "components/search_engines/search_engines_pref_names.h"
4042
#include "components/search_engines/search_engines_test_util.h"
@@ -279,6 +281,76 @@ INSTANTIATE_TEST_SUITE_P(
279281
{"ko_KR", true, false},
280282
{"ko_KR", false, false}}));
281283

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

284356
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)