| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/environment.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/test/scoped_feature_list.h" |
| #include "chrome/browser/ui/omnibox/omnibox_pedal_implementations.h" |
| #include "components/omnibox/browser/actions/omnibox_pedal_provider.h" |
| #include "components/omnibox/browser/autocomplete_input.h" |
| #include "components/omnibox/browser/mock_autocomplete_provider_client.h" |
| #include "components/omnibox/common/omnibox_features.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/base/resource/resource_bundle.h" |
| |
| // Note: Pedals have their own components unit tests, which should be |
| // the preferred place for testing the classes. The tests here are for |
| // testing things that depend on Chrome resources, for example GRIT strings. |
| |
| TEST(OmniboxPedals, DataLoadsForAllLocales) { |
| // Locale selection is platform sensitive. On Linux, environment is used. |
| std::unique_ptr<base::Environment> env = base::Environment::Create(); |
| MockAutocompleteProviderClient client; |
| |
| // This is an exhaustive list of pedals-supported locales used to ensure |
| // translation data for each loads below. |
| const std::string locales[] = { |
| "am", "ar", "bg", "bn", "ca", "cs", "da", "de", "el", |
| "en", "en-GB", "es", "es-419", "et", "fa", "fi", "fil", "fr", |
| "gu", "he", "hi", "hr", "hu", "id", "it", "ja", "kn", |
| "ko", "lt", "lv", "ml", "mr", "ms", "nl", "pl", "pt-BR", |
| "pt-PT", "ro", "ru", "sk", "sl", "sr", "sv", "sw", "ta", |
| "te", "th", "tr", "uk", "vi", "zh-CN", "zh-TW", |
| }; |
| for (const std::string& locale : locales) { |
| // Prepare the shared ResourceBundle with data for tested locale. |
| env->SetVar("LANG", locale); |
| ui::ResourceBundle::GetSharedInstance().ReloadLocaleResources(locale); |
| |
| // Instantiating the provider loads concept data from shared ResourceBundle, |
| // or from omnibox_pedal_synonyms.grd if using translation console. |
| // Note, with translation console process, we don't have specific cover |
| // cases to test, and there is no fallback to English. Just instantiating |
| // the provider above confirms that any available translation data loads |
| // because the `OmniboxPedalProvider` ctor loads, parses, transforms, and |
| // checks all trigger grit strings. |
| client.set_pedal_provider(std::make_unique<OmniboxPedalProvider>( |
| client, |
| GetPedalImplementations(client.IsIncognitoProfile(), |
| client.IsGuestSession(), /*testing=*/true))); |
| EXPECT_EQ(client.GetPedalProvider()->FindPedalMatch(u""), nullptr); |
| } |
| } |