blob: 81019fc2ff4e060fcf044c90bad46072dbb53061 [file] [log] [blame]
// Copyright (c) 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/locale/special_locale_handler.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/search_engines/template_url_service_test_util.h"
#include "chrome/test/base/testing_profile.h"
#include "components/search_engines/prepopulated_engines.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_data_util.h"
#include "components/search_engines/template_url_prepopulate_data.h"
#include "components/search_engines/template_url_service.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
class MockSpecialLocaleHandler : public SpecialLocaleHandler {
public:
MockSpecialLocaleHandler(Profile* profile,
std::string locale,
TemplateURLService* service)
: SpecialLocaleHandler(profile, locale, service) {}
~MockSpecialLocaleHandler() override {}
protected:
std::vector<std::unique_ptr<TemplateURLData>> GetLocalPrepopulatedEngines(
Profile* profile) override {
std::vector<std::unique_ptr<TemplateURLData>> result;
result.push_back(TemplateURLDataFromPrepopulatedEngine(
TemplateURLPrepopulateData::so_360));
result.push_back(TemplateURLDataFromPrepopulatedEngine(
TemplateURLPrepopulateData::naver));
return result;
}
int GetDesignatedSearchEngine() override {
return TemplateURLPrepopulateData::naver.id;
}
};
class SpecialLocaleHandlerTest : public testing::Test {
public:
SpecialLocaleHandlerTest() {}
void SetUp() override;
void TearDown() override;
SpecialLocaleHandler* handler() { return handler_.get(); }
TemplateURLServiceTestUtil* test_util() { return test_util_.get(); }
TemplateURLService* model() { return test_util_->model(); }
private:
content::TestBrowserThreadBundle thread_bundle_; // To set up BrowserThreads.
std::unique_ptr<SpecialLocaleHandler> handler_;
std::unique_ptr<TemplateURLServiceTestUtil> test_util_;
DISALLOW_COPY_AND_ASSIGN(SpecialLocaleHandlerTest);
};
void SpecialLocaleHandlerTest::SetUp() {
test_util_.reset(new TemplateURLServiceTestUtil);
handler_.reset(
new MockSpecialLocaleHandler(test_util_->profile(), "jp", model()));
}
void SpecialLocaleHandlerTest::TearDown() {
handler_.reset();
test_util_.reset();
}
TEST_F(SpecialLocaleHandlerTest, AddLocalSearchEngines) {
test_util()->VerifyLoad();
auto naver = base::ASCIIToUTF16("naver.com");
auto keyword_so = base::ASCIIToUTF16("so.com");
ASSERT_EQ(NULL, model()->GetTemplateURLForKeyword(naver));
ASSERT_EQ(NULL, model()->GetTemplateURLForKeyword(keyword_so));
ASSERT_TRUE(handler()->LoadTemplateUrls(NULL, JavaParamRef<jobject>(NULL)));
ASSERT_EQ(TemplateURLPrepopulateData::naver.id,
model()->GetTemplateURLForKeyword(naver)->prepopulate_id());
ASSERT_EQ(TemplateURLPrepopulateData::so_360.id,
model()->GetTemplateURLForKeyword(keyword_so)->prepopulate_id());
}
TEST_F(SpecialLocaleHandlerTest, RemoveLocalSearchEngines) {
test_util()->VerifyLoad();
ASSERT_TRUE(handler()->LoadTemplateUrls(NULL, JavaParamRef<jobject>(NULL)));
// Make sure locale engines are loaded.
auto keyword_naver = base::ASCIIToUTF16("naver.com");
auto keyword_so = base::ASCIIToUTF16("so.com");
ASSERT_EQ(TemplateURLPrepopulateData::naver.id,
model()->GetTemplateURLForKeyword(keyword_naver)->prepopulate_id());
ASSERT_EQ(TemplateURLPrepopulateData::so_360.id,
model()->GetTemplateURLForKeyword(keyword_so)->prepopulate_id());
handler()->RemoveTemplateUrls(NULL, JavaParamRef<jobject>(NULL));
ASSERT_EQ(NULL, model()->GetTemplateURLForKeyword(keyword_naver));
ASSERT_EQ(NULL, model()->GetTemplateURLForKeyword(keyword_so));
}
TEST_F(SpecialLocaleHandlerTest, OverrideDefaultSearch) {
test_util()->VerifyLoad();
ASSERT_EQ(TemplateURLPrepopulateData::google.id,
model()->GetDefaultSearchProvider()->prepopulate_id());
// Load local search engines first.
ASSERT_TRUE(handler()->LoadTemplateUrls(NULL, JavaParamRef<jobject>(NULL)));
ASSERT_EQ(TemplateURLPrepopulateData::google.id,
model()->GetDefaultSearchProvider()->prepopulate_id());
// Set one of the local search engine as default.
handler()->OverrideDefaultSearchProvider(NULL, JavaParamRef<jobject>(NULL));
ASSERT_EQ(TemplateURLPrepopulateData::naver.id,
model()->GetDefaultSearchProvider()->prepopulate_id());
// Revert the default search engine tweak.
handler()->SetGoogleAsDefaultSearch(NULL, JavaParamRef<jobject>(NULL));
ASSERT_EQ(TemplateURLPrepopulateData::google.id,
model()->GetDefaultSearchProvider()->prepopulate_id());
}