1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/buildflag_header.gni")
6import("//build/config/jumbo.gni")
7import("//build/config/ui.gni")
8import("//components/vector_icons/vector_icons.gni")
9import("//device/vr/buildflags/buildflags.gni")
10import("//testing/libfuzzer/fuzzer_test.gni")
11import("//third_party/protobuf/proto_library.gni")
12
13if (is_android) {
14  import("//build/config/android/rules.gni")
15}
16
17buildflag_header("buildflags") {
18  header = "buildflags.h"
19  flags = [ "ENABLE_VR=$enable_vr" ]
20}
21
22aggregate_vector_icons("omnibox_vector_icons") {
23  icon_directory = "vector_icons"
24
25  icons = [
26    "answer_calculator.icon",
27    "answer_currency.icon",
28    "answer_default.icon",
29    "answer_dictionary.icon",
30    "answer_finance.icon",
31    "answer_sunrise.icon",
32    "answer_translation.icon",
33    "answer_when_is.icon",
34    "blank.icon",
35    "bookmark.icon",
36    "calculator.icon",
37    "clear.icon",
38    "clock.icon",
39    "drive_docs.icon",
40    "drive_folder.icon",
41    "drive_forms.icon",
42    "drive_image.icon",
43    "drive_logo.icon",
44    "drive_pdf.icon",
45    "drive_sheets.icon",
46    "drive_slides.icon",
47    "drive_video.icon",
48    "extension_app.icon",
49    "find_in_page.icon",
50    "http.icon",
51    "https_valid.icon",
52    "https_valid_in_chip.icon",
53    "keyword_search.icon",
54    "not_secure_warning.icon",
55    "offline_pin.icon",
56    "page.icon",
57    "pedal.icon",
58    "plus.icon",
59    "product.icon",
60    "star_active.icon",
61    "star.icon",
62    "switch.icon",
63    "tab.icon",
64  ]
65}
66
67static_library("vector_icons") {
68  sources = get_target_outputs(":omnibox_vector_icons")
69  deps = [
70    ":omnibox_vector_icons",
71    "//components/vector_icons",
72    "//skia",
73    "//ui/gfx",
74  ]
75}
76
77jumbo_static_library("browser") {
78  sources = [
79    "answers_cache.cc",
80    "answers_cache.h",
81    "autocomplete_classifier.cc",
82    "autocomplete_classifier.h",
83    "autocomplete_controller.cc",
84    "autocomplete_controller.h",
85    "autocomplete_input.cc",
86    "autocomplete_input.h",
87    "autocomplete_match.cc",
88    "autocomplete_match.h",
89    "autocomplete_match_classification.cc",
90    "autocomplete_match_classification.h",
91    "autocomplete_match_type.cc",
92    "autocomplete_match_type.h",
93    "autocomplete_provider.cc",
94    "autocomplete_provider.h",
95    "autocomplete_provider_client.cc",
96    "autocomplete_provider_client.h",
97    "autocomplete_provider_debouncer.cc",
98    "autocomplete_provider_debouncer.h",
99    "autocomplete_result.cc",
100    "autocomplete_result.h",
101    "autocomplete_scheme_classifier.h",
102    "base_search_provider.cc",
103    "base_search_provider.h",
104    "bookmark_provider.cc",
105    "bookmark_provider.h",
106    "builtin_provider.cc",
107    "builtin_provider.h",
108    "clipboard_provider.cc",
109    "clipboard_provider.h",
110    "document_provider.cc",
111    "document_provider.h",
112    "document_suggestions_service.cc",
113    "document_suggestions_service.h",
114    "favicon_cache.cc",
115    "favicon_cache.h",
116    "history_match.cc",
117    "history_match.h",
118    "history_provider.cc",
119    "history_provider.h",
120    "history_quick_provider.cc",
121    "history_quick_provider.h",
122    "history_url_provider.cc",
123    "history_url_provider.h",
124    "in_memory_url_index.cc",
125    "in_memory_url_index.h",
126    "in_memory_url_index_types.cc",
127    "in_memory_url_index_types.h",
128    "keyword_extensions_delegate.cc",
129    "keyword_extensions_delegate.h",
130    "keyword_provider.cc",
131    "keyword_provider.h",
132    "local_history_zero_suggest_provider.cc",
133    "local_history_zero_suggest_provider.h",
134    "location_bar_model.h",
135    "location_bar_model_delegate.cc",
136    "location_bar_model_delegate.h",
137    "location_bar_model_impl.cc",
138    "location_bar_model_impl.h",
139    "match_compare.h",
140    "omnibox_client.cc",
141    "omnibox_client.h",
142    "omnibox_controller.cc",
143    "omnibox_controller.h",
144    "omnibox_controller_emitter.cc",
145    "omnibox_controller_emitter.h",
146    "omnibox_edit_controller.cc",
147    "omnibox_edit_controller.h",
148    "omnibox_edit_model.cc",
149    "omnibox_edit_model.h",
150    "omnibox_event_global_tracker.cc",
151    "omnibox_event_global_tracker.h",
152    "omnibox_field_trial.cc",
153    "omnibox_field_trial.h",
154    "omnibox_log.cc",
155    "omnibox_log.h",
156    "omnibox_metrics_provider.cc",
157    "omnibox_metrics_provider.h",
158    "omnibox_navigation_observer.h",
159    "omnibox_pedal.cc",
160    "omnibox_pedal.h",
161    "omnibox_pedal_concepts.h",
162    "omnibox_pedal_implementations.cc",
163    "omnibox_pedal_implementations.h",
164    "omnibox_pedal_provider.cc",
165    "omnibox_pedal_provider.h",
166    "omnibox_popup_model.cc",
167    "omnibox_popup_model.h",
168    "omnibox_popup_view.h",
169    "omnibox_pref_names.cc",
170    "omnibox_pref_names.h",
171    "omnibox_view.cc",
172    "omnibox_view.h",
173    "on_device_head_model.cc",
174    "on_device_head_model.h",
175    "on_device_head_provider.cc",
176    "on_device_head_provider.h",
177    "on_device_model_update_listener.cc",
178    "on_device_model_update_listener.h",
179    "remote_suggestions_service.cc",
180    "remote_suggestions_service.h",
181    "scored_history_match.cc",
182    "scored_history_match.h",
183    "search_provider.cc",
184    "search_provider.h",
185    "search_suggestion_parser.cc",
186    "search_suggestion_parser.h",
187    "shortcuts_backend.cc",
188    "shortcuts_backend.h",
189    "shortcuts_constants.cc",
190    "shortcuts_constants.h",
191    "shortcuts_database.cc",
192    "shortcuts_database.h",
193    "shortcuts_provider.cc",
194    "shortcuts_provider.h",
195    "suggestion_answer.cc",
196    "suggestion_answer.h",
197    "tailored_word_break_iterator.cc",
198    "tailored_word_break_iterator.h",
199    "titled_url_match_utils.cc",
200    "titled_url_match_utils.h",
201    "url_index_private_data.cc",
202    "url_index_private_data.h",
203    "url_prefix.cc",
204    "url_prefix.h",
205    "verbatim_match.cc",
206    "verbatim_match.h",
207    "zero_suggest_provider.cc",
208    "zero_suggest_provider.h",
209  ]
210
211  defines = [ "OMNIBOX_BROWSER_IMPLEMENTATION" ]
212
213  public_deps = [
214    "//base",
215    "//base:i18n",
216    "//components/history/core/browser",
217    "//components/omnibox/common",
218    "//components/omnibox/resources:omnibox_resources",
219    "//components/security_state/core",
220    "//third_party/metrics_proto",
221    "//url",
222  ]
223  deps = [
224    ":buildflags",
225    ":in_memory_url_index_cache_proto",
226    "//components/bookmarks/browser",
227    "//components/component_updater",
228    "//components/dom_distiller/core:core",
229    "//components/favicon/core",
230    "//components/favicon_base",
231    "//components/keyed_service/core",
232    "//components/metrics",
233    "//components/navigation_metrics",
234    "//components/open_from_clipboard",
235    "//components/pref_registry",
236    "//components/prefs",
237    "//components/query_parser",
238    "//components/resources",
239    "//components/search",
240    "//components/search_engines",
241    "//components/sessions",
242    "//components/signin/public/identity_manager",
243    "//components/strings",
244    "//components/sync",
245    "//components/url_formatter",
246    "//components/variations",
247    "//components/variations/net",
248    "//extensions/common:common_constants",
249    "//net",
250    "//skia",
251    "//sql",
252    "//third_party/protobuf:protobuf_lite",
253    "//third_party/re2",
254    "//ui/base",
255    "//ui/gfx",
256  ]
257
258  if ((!is_android || enable_vr) && !is_ios) {
259    deps += [ ":vector_icons" ]
260  }
261
262  if (is_android) {
263    sources += [
264      "autocomplete_scheme_classifier_android.cc",
265      "autocomplete_scheme_classifier_android.h",
266      "omnibox_url_emphasizer.cc",
267    ]
268    deps += [ ":jni_headers" ]
269  }
270
271  if (!is_ios) {
272    deps += [ "//components/keyed_service/content" ]
273  }
274}
275
276if (is_android) {
277  android_resources("java_resources") {
278    sources = [
279      "android/java/res/drawable-hdpi/omnibox_https_valid.png",
280      "android/java/res/drawable-hdpi/omnibox_info.png",
281      "android/java/res/drawable-hdpi/omnibox_not_secure_warning.png",
282      "android/java/res/drawable-mdpi/omnibox_https_valid.png",
283      "android/java/res/drawable-mdpi/omnibox_info.png",
284      "android/java/res/drawable-mdpi/omnibox_not_secure_warning.png",
285      "android/java/res/drawable-xhdpi/omnibox_https_valid.png",
286      "android/java/res/drawable-xhdpi/omnibox_info.png",
287      "android/java/res/drawable-xhdpi/omnibox_not_secure_warning.png",
288      "android/java/res/drawable-xxhdpi/omnibox_https_valid.png",
289      "android/java/res/drawable-xxhdpi/omnibox_info.png",
290      "android/java/res/drawable-xxhdpi/omnibox_not_secure_warning.png",
291      "android/java/res/drawable-xxxhdpi/omnibox_https_valid.png",
292      "android/java/res/drawable-xxxhdpi/omnibox_info.png",
293      "android/java/res/drawable-xxxhdpi/omnibox_not_secure_warning.png",
294      "android/java/res/values/colors.xml",
295    ]
296    deps = [
297      "//components/browser_ui/strings/android:browser_ui_strings_grd",
298      "//ui/android:ui_java_resources",
299    ]
300    custom_package = "org.chromium.components.omnibox"
301  }
302
303  android_library("browser_java") {
304    sources = [
305      "android/java/src/org/chromium/components/omnibox/AutocompleteSchemeClassifier.java",
306      "android/java/src/org/chromium/components/omnibox/OmniboxUrlEmphasizer.java",
307      "android/java/src/org/chromium/components/omnibox/SecurityStatusIcon.java",
308      "android/java/src/org/chromium/components/omnibox/SuggestionAnswer.java",
309    ]
310
311    deps = [
312      ":java_resources",
313      "//base:base_java",
314      "//base:jni_java",
315      "//components/embedder_support/android:util_java",
316      "//components/security_state/core:security_state_enums_java",
317      "//content/public/android:content_java",
318      "//third_party/android_deps:androidx_core_core_java",
319    ]
320
321    srcjar_deps = [ ":browser_java_enums_srcjar" ]
322    annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
323  }
324
325  java_cpp_enum("browser_java_enums_srcjar") {
326    sources = [
327      "autocomplete_match.h",
328      "autocomplete_match_type.h",
329      "suggestion_answer.h",
330    ]
331  }
332
333  generate_jni("jni_headers") {
334    sources = [
335      "android/java/src/org/chromium/components/omnibox/AutocompleteSchemeClassifier.java",
336      "android/java/src/org/chromium/components/omnibox/OmniboxUrlEmphasizer.java",
337      "android/java/src/org/chromium/components/omnibox/SuggestionAnswer.java",
338    ]
339  }
340}
341
342proto_library("in_memory_url_index_cache_proto") {
343  sources = [ "in_memory_url_index_cache.proto" ]
344}
345
346jumbo_static_library("test_support") {
347  testonly = true
348  sources = [
349    "fake_autocomplete_provider_client.cc",
350    "fake_autocomplete_provider_client.h",
351    "history_index_restore_observer.cc",
352    "history_index_restore_observer.h",
353    "history_test_util.cc",
354    "history_test_util.h",
355    "in_memory_url_index_test_util.cc",
356    "in_memory_url_index_test_util.h",
357    "mock_autocomplete_provider_client.cc",
358    "mock_autocomplete_provider_client.h",
359    "shortcuts_provider_test_util.cc",
360    "shortcuts_provider_test_util.h",
361    "test_location_bar_model.cc",
362    "test_location_bar_model.h",
363    "test_omnibox_client.cc",
364    "test_omnibox_client.h",
365    "test_omnibox_edit_controller.cc",
366    "test_omnibox_edit_controller.h",
367    "test_omnibox_edit_model.cc",
368    "test_omnibox_edit_model.h",
369    "test_omnibox_view.cc",
370    "test_omnibox_view.h",
371    "test_scheme_classifier.cc",
372    "test_scheme_classifier.h",
373  ]
374
375  public_deps = [
376    ":browser",
377    "//base",
378  ]
379
380  deps = [
381    "//base/test:test_support",
382    "//components/bookmarks/browser",
383    "//components/bookmarks/test",
384    "//components/history/core/browser",
385    "//components/history/core/test",
386    "//components/resources",
387    "//components/search_engines",
388    "//components/sessions",
389    "//net",
390    "//services/network:test_support",
391    "//testing/gmock",
392    "//testing/gtest",
393    "//third_party/metrics_proto",
394    "//ui/base",
395    "//ui/gfx",
396  ]
397
398  if (toolkit_views) {
399    # Needed to get the TOOLKIT_VIEWS define.
400    deps += [ "//ui/views" ]
401  }
402}
403
404bundle_data("unit_tests_bundle_data") {
405  visibility = [ ":unit_tests" ]
406  testonly = true
407  sources = [
408    "//components/test/data/omnibox/Shortcuts.no_fill_into_edit.sql",
409    "//components/test/data/omnibox/Shortcuts.v0.sql",
410    "//components/test/data/omnibox/Shortcuts.v1.sql",
411    "//components/test/data/omnibox/in_memory_url_index_test.sql",
412    "//components/test/data/omnibox/in_memory_url_index_test_limited.sql",
413    "//components/test/data/omnibox/on_device_head_test_model_index.bin",
414  ]
415  outputs = [ "{{bundle_resources_dir}}/" +
416              "{{source_root_relative_dir}}/{{source_file_part}}" ]
417}
418
419source_set("unit_tests") {
420  testonly = true
421  sources = [
422    "answers_cache_unittest.cc",
423    "autocomplete_input_unittest.cc",
424    "autocomplete_match_type_unittest.cc",
425    "autocomplete_match_unittest.cc",
426    "autocomplete_provider_unittest.cc",
427    "autocomplete_result_unittest.cc",
428    "base_search_provider_unittest.cc",
429    "bookmark_provider_unittest.cc",
430    "builtin_provider_unittest.cc",
431    "clipboard_provider_unittest.cc",
432    "document_provider_unittest.cc",
433    "document_suggestions_service_unittest.cc",
434    "favicon_cache_unittest.cc",
435    "history_provider_unittest.cc",
436    "history_quick_provider_unittest.cc",
437    "history_url_provider_unittest.cc",
438    "in_memory_url_index_types_unittest.cc",
439    "in_memory_url_index_unittest.cc",
440    "keyword_provider_unittest.cc",
441    "local_history_zero_suggest_provider_unittest.cc",
442    "location_bar_model_impl_unittest.cc",
443    "omnibox_controller_unittest.cc",
444    "omnibox_edit_model_unittest.cc",
445    "omnibox_field_trial_unittest.cc",
446    "omnibox_pedal_implementations_unittest.cc",
447    "omnibox_pedal_provider_unittest.cc",
448    "omnibox_pedal_unittest.cc",
449    "omnibox_popup_model_unittest.cc",
450    "omnibox_view_unittest.cc",
451    "on_device_head_model_unittest.cc",
452    "on_device_head_provider_unittest.cc",
453    "remote_suggestions_service_unittest.cc",
454    "scored_history_match_unittest.cc",
455    "search_suggestion_parser_unittest.cc",
456    "shortcuts_backend_unittest.cc",
457    "shortcuts_database_unittest.cc",
458    "shortcuts_provider_unittest.cc",
459    "suggestion_answer_unittest.cc",
460    "tailored_word_break_iterator_unittest.cc",
461    "titled_url_match_utils_unittest.cc",
462    "url_prefix_unittest.cc",
463    "zero_suggest_provider_unittest.cc",
464  ]
465
466  deps = [
467    ":browser",
468    ":test_support",
469    ":unit_tests_bundle_data",
470    "//base",
471    "//base/test:test_support",
472    "//components/bookmarks/browser",
473    "//components/bookmarks/test",
474    "//components/dom_distiller/core:core",
475    "//components/favicon/core/test:test_support",
476    "//components/history/core/test",
477    "//components/open_from_clipboard:test_support",
478    "//components/prefs:test_support",
479    "//components/search",
480    "//components/search_engines",
481    "//components/search_engines:test_support",
482    "//components/sessions",
483    "//components/signin/public/identity_manager:test_support",
484    "//components/strings",
485    "//components/sync_preferences:test_support",
486    "//components/url_formatter",
487    "//components/variations",
488    "//components/variations/net:net",
489    "//services/network:test_support",
490    "//sql",
491    "//sql:test_support",
492    "//testing/gmock",
493    "//testing/gtest",
494    "//ui/base:test_support",
495    "//ui/gfx:test_support",
496    "//url",
497  ]
498}
499
500fuzzer_test("autocomplete_input_fuzzer") {
501  sources = [ "autocomplete_input_fuzzer.cc" ]
502  deps = [
503    ":browser",
504    ":test_support",
505    "//base",
506    "//base:i18n",
507    "//third_party/metrics_proto:metrics_proto",
508  ]
509}
510
511fuzzer_test("omnibox_view_fuzzer") {
512  sources = [ "omnibox_view_fuzzer.cc" ]
513  deps = [
514    ":browser",
515    "//base",
516  ]
517}
518
519fuzzer_test("search_suggestion_parser_fuzzer") {
520  sources = [ "search_suggestion_parser_fuzzer.cc" ]
521  deps = [
522    ":browser",
523    ":test_support",
524    "//base",
525    "//base:i18n",
526    "//third_party/icu:icui18n",
527    "//third_party/metrics_proto:metrics_proto",
528  ]
529}
530