File: omnibox_pedals_unittest.cc

package info (click to toggle)
chromium 120.0.6099.224-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,112,112 kB
  • sloc: cpp: 32,907,025; ansic: 8,148,123; javascript: 3,679,536; python: 2,031,248; asm: 959,718; java: 804,675; xml: 617,256; sh: 111,417; objc: 100,835; perl: 88,443; cs: 53,032; makefile: 29,579; fortran: 24,137; php: 21,162; tcl: 21,147; sql: 20,809; ruby: 17,735; pascal: 12,864; yacc: 8,045; lisp: 3,388; lex: 1,323; ada: 727; awk: 329; jsp: 267; csh: 117; exp: 43; sed: 37
file content (54 lines) | stat: -rw-r--r-- 2,823 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// 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 "build/chromeos_buildflags.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);
  }
}