File: template_url_service_test_util.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (132 lines) | stat: -rw-r--r-- 4,236 bytes parent folder | download | duplicates (6)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_
#define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_

#include "base/scoped_observation.h"
#include "base/test/task_environment.h"
#include "components/prefs/testing_pref_service.h"
#include "components/search_engines/template_url_prepopulate_data_resolver.h"
#include "components/search_engines/template_url_service.h"
#include "components/search_engines/template_url_service_observer.h"
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "testing/gtest/include/gtest/gtest.h"

class WebDatabaseService;
class KeywordWebDataService;

namespace regional_capabilities {
class RegionalCapabilitiesService;
}

namespace search_engines {
class SearchEngineChoiceService;
}

namespace base {
class RunLoop;
}

namespace os_crypt_async {
class OSCryptAsync;
}

void RegisterPrefsForTemplateURLService(
    user_prefs::PrefRegistrySyncable* registry);

// One-shot observer that blocks until `template_url_service` is done loading.
class TemplateURLServiceLoadWaiter : public TemplateURLServiceObserver {
 public:
  TemplateURLServiceLoadWaiter();
  ~TemplateURLServiceLoadWaiter() override;

  void WaitForLoadComplete(TemplateURLService& template_url_service);

  void OnTemplateURLServiceChanged() override;

  void OnTemplateURLServiceShuttingDown() override;

 private:
  void UpdateStatus(bool force_quit = false);

  base::RunLoop run_loop_;

  base::ScopedObservation<TemplateURLService, TemplateURLServiceObserver>
      scoped_template_url_service_observation_{this};
};

class TemplateURLServiceUnitTestBase : public testing::Test {
 public:
  TemplateURLServiceUnitTestBase();
  ~TemplateURLServiceUnitTestBase() override;

  void SetUp() override;

  PrefService& pref_service() { return pref_service_; }

  regional_capabilities::RegionalCapabilitiesService&
  regional_capabilities_service() {
    return *regional_capabilities_service_.get();
  }

  TemplateURLPrepopulateData::Resolver& prepopulate_data_resolver() {
    return *prepopulate_data_resolver_.get();
  }

  search_engines::SearchEngineChoiceService& search_engine_choice_service() {
    return *search_engine_choice_service_.get();
  }

  TemplateURLService& template_url_service() {
    return *template_url_service_.get();
  }

 protected:
  virtual std::unique_ptr<TemplateURLService> CreateService();

 private:
  sync_preferences::TestingPrefServiceSyncable pref_service_;
  TestingPrefServiceSimple local_state_;
  std::unique_ptr<regional_capabilities::RegionalCapabilitiesService>
      regional_capabilities_service_;
  std::unique_ptr<TemplateURLPrepopulateData::Resolver>
      prepopulate_data_resolver_;
  std::unique_ptr<search_engines::SearchEngineChoiceService>
      search_engine_choice_service_;
  std::unique_ptr<TemplateURLService> template_url_service_;
};

class LoadedTemplateURLServiceUnitTestBase
    : public TemplateURLServiceUnitTestBase {
 public:
  LoadedTemplateURLServiceUnitTestBase();
  ~LoadedTemplateURLServiceUnitTestBase() override;

 protected:
  std::unique_ptr<TemplateURLService> CreateService() override;

  void SetUp() override;
  void TearDown() override;

  // Same as `TemplateURLService::GetTemplateURLs()`, but removes the starter
  // pack entries.
  TemplateURLService::TemplateURLVector GetKeywordTemplateURLs();

  // Returns `TemplateURLService::GetTemplateURLs()`, filtering to only entries
  // that have `keyword` as their keyword. In general it should return a single
  // elements, but in some cases there may be more.
  TemplateURLService::TemplateURLVector GetTemplateURLsMatchingKeyword(
      std::u16string keyword);

 private:
  base::test::TaskEnvironment task_environment{
      base::test::TaskEnvironment::MainThreadType::UI};
  scoped_refptr<WebDatabaseService> database_;
  std::unique_ptr<os_crypt_async::OSCryptAsync> os_crypt_;
  scoped_refptr<KeywordWebDataService> keyword_data_service_;
  TemplateURLServiceLoadWaiter template_url_service_load_waiter_;
};

#endif  // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_