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/ui.gni")
7import("//components/vector_icons/vector_icons.gni")
8import("//device/vr/buildflags/buildflags.gni")
9import("//testing/libfuzzer/fuzzer_test.gni")
10import("//third_party/protobuf/proto_library.gni")
11
12if (is_android) {
13  import("//build/config/android/rules.gni")
14}
15
16buildflag_header("buildflags") {
17  header = "buildflags.h"
18  flags = [ "ENABLE_VR=$enable_vr" ]
19}
20
21aggregate_vector_icons("omnibox_vector_icons") {
22  icon_directory = "vector_icons"
23
24  sources = [
25    "answer_calculator.icon",
26    "answer_currency.icon",
27    "answer_default.icon",
28    "answer_dictionary.icon",
29    "answer_finance.icon",
30    "answer_sunrise.icon",
31    "answer_translation.icon",
32    "answer_when_is.icon",
33    "blank.icon",
34    "bookmark.icon",
35    "calculator.icon",
36    "chevron.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    "install_desktop.icon",
54    "install_download.icon",
55    "keyword_search.icon",
56    "not_secure_warning.icon",
57    "offline_pin.icon",
58    "page.icon",
59    "pedal.icon",
60    "plus.icon",
61    "product.icon",
62    "star.icon",
63    "star_active.icon",
64    "switch.icon",
65    "tab.icon",
66    "trending_up.icon",
67  ]
68}
69
70static_library("vector_icons") {
71  sources = get_target_outputs(":omnibox_vector_icons")
72  deps = [
73    ":omnibox_vector_icons",
74    "//components/vector_icons",
75    "//skia",
76    "//ui/gfx",
77  ]
78}
79
80static_library("browser") {
81  sources = [
82    "answers_cache.cc",
83    "answers_cache.h",
84    "autocomplete_classifier.cc",
85    "autocomplete_classifier.h",
86    "autocomplete_controller.cc",
87    "autocomplete_controller.h",
88    "autocomplete_match.cc",
89    "autocomplete_match.h",
90    "autocomplete_match_classification.cc",
91    "autocomplete_match_classification.h",
92    "autocomplete_match_type.cc",
93    "autocomplete_match_type.h",
94    "autocomplete_provider.cc",
95    "autocomplete_provider.h",
96    "autocomplete_provider_client.cc",
97    "autocomplete_provider_client.h",
98    "autocomplete_provider_debouncer.cc",
99    "autocomplete_provider_debouncer.h",
100    "autocomplete_result.cc",
101    "autocomplete_result.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    "inline_autocompletion_util.cc",
129    "inline_autocompletion_util.h",
130    "intranet_redirector_state.cc",
131    "intranet_redirector_state.h",
132    "keyword_extensions_delegate.cc",
133    "keyword_extensions_delegate.h",
134    "keyword_provider.cc",
135    "keyword_provider.h",
136    "local_history_zero_suggest_provider.cc",
137    "local_history_zero_suggest_provider.h",
138    "match_compare.h",
139    "most_visited_sites_provider.cc",
140    "most_visited_sites_provider.h",
141    "omnibox_client.cc",
142    "omnibox_client.h",
143    "omnibox_controller.cc",
144    "omnibox_controller.h",
145    "omnibox_controller_emitter.cc",
146    "omnibox_controller_emitter.h",
147    "omnibox_edit_controller.cc",
148    "omnibox_edit_controller.h",
149    "omnibox_edit_model.cc",
150    "omnibox_edit_model.h",
151    "omnibox_event_global_tracker.cc",
152    "omnibox_event_global_tracker.h",
153    "omnibox_field_trial.cc",
154    "omnibox_field_trial.h",
155    "omnibox_log.cc",
156    "omnibox_log.h",
157    "omnibox_metrics_provider.cc",
158    "omnibox_metrics_provider.h",
159    "omnibox_navigation_observer.h",
160    "omnibox_pedal.cc",
161    "omnibox_pedal.h",
162    "omnibox_pedal_concepts.h",
163    "omnibox_pedal_implementations.cc",
164    "omnibox_pedal_implementations.h",
165    "omnibox_pedal_provider.cc",
166    "omnibox_pedal_provider.h",
167    "omnibox_popup_model.cc",
168    "omnibox_popup_model.h",
169    "omnibox_popup_view.h",
170    "omnibox_prefs.cc",
171    "omnibox_prefs.h",
172    "omnibox_triggered_feature_service.cc",
173    "omnibox_triggered_feature_service.h",
174    "omnibox_view.cc",
175    "omnibox_view.h",
176    "on_device_head_model.cc",
177    "on_device_head_model.h",
178    "on_device_head_provider.cc",
179    "on_device_head_provider.h",
180    "on_device_model_update_listener.cc",
181    "on_device_model_update_listener.h",
182    "query_tile_provider.cc",
183    "query_tile_provider.h",
184    "remote_suggestions_service.cc",
185    "remote_suggestions_service.h",
186    "scored_history_match.cc",
187    "scored_history_match.h",
188    "search_provider.cc",
189    "search_provider.h",
190    "search_suggestion_parser.cc",
191    "search_suggestion_parser.h",
192    "shortcuts_backend.cc",
193    "shortcuts_backend.h",
194    "shortcuts_constants.cc",
195    "shortcuts_constants.h",
196    "shortcuts_database.cc",
197    "shortcuts_database.h",
198    "shortcuts_provider.cc",
199    "shortcuts_provider.h",
200    "suggestion_answer.cc",
201    "suggestion_answer.h",
202    "tailored_word_break_iterator.cc",
203    "tailored_word_break_iterator.h",
204    "titled_url_match_utils.cc",
205    "titled_url_match_utils.h",
206    "url_index_private_data.cc",
207    "url_index_private_data.h",
208    "url_prefix.cc",
209    "url_prefix.h",
210    "verbatim_match.cc",
211    "verbatim_match.h",
212    "zero_suggest_provider.cc",
213    "zero_suggest_provider.h",
214    "zero_suggest_verbatim_match_provider.cc",
215    "zero_suggest_verbatim_match_provider.h",
216  ]
217
218  public_deps = [
219    ":buildflags",
220    ":location_bar",
221    "//base",
222    "//base:i18n",
223    "//components/history/core/browser",
224    "//components/omnibox/common",
225    "//components/omnibox/resources:omnibox_resources",
226    "//components/security_state/core",
227    "//third_party/metrics_proto",
228    "//url",
229  ]
230  deps = [
231    ":in_memory_url_index_cache_proto",
232    "//components/bookmarks/browser",
233    "//components/component_updater",
234    "//components/dom_distiller/core:core",
235    "//components/favicon/core",
236    "//components/favicon_base",
237    "//components/keyed_service/core",
238    "//components/metrics",
239    "//components/navigation_metrics",
240    "//components/open_from_clipboard",
241    "//components/pref_registry",
242    "//components/prefs",
243    "//components/query_parser",
244    "//components/query_tiles",
245    "//components/resources",
246    "//components/search",
247    "//components/search_engines",
248    "//components/sessions",
249    "//components/signin/public/identity_manager",
250    "//components/strings",
251    "//components/sync",
252    "//components/url_formatter",
253    "//components/variations",
254    "//components/variations/net",
255    "//extensions/common:common_constants",
256    "//net",
257    "//skia",
258    "//sql",
259    "//third_party/protobuf:protobuf_lite",
260    "//third_party/re2",
261    "//ui/base",
262    "//ui/gfx",
263  ]
264
265  if ((!is_android || enable_vr) && !is_ios) {
266    deps += [ ":vector_icons" ]
267  }
268
269  if (!is_ios) {
270    deps += [ "//components/keyed_service/content" ]
271  }
272
273  if (is_android) {
274    deps += [ ":jni_headers" ]
275  }
276}
277
278# A target that contains the minimal amount of code necessary for displaying a
279# smart location bar. This code provides special processing of URLs without
280# bringing in many extra dependencies.
281static_library("location_bar") {
282  sources = [
283    "autocomplete_input.cc",
284    "autocomplete_input.h",
285    "autocomplete_scheme_classifier.h",
286    "location_bar_model.h",
287    "location_bar_model_delegate.cc",
288    "location_bar_model_delegate.h",
289    "location_bar_model_impl.cc",
290    "location_bar_model_impl.h",
291    "location_bar_model_util.cc",
292    "location_bar_model_util.h",
293  ]
294
295  public_deps = [
296    "//base",
297    "//components/omnibox/common",
298    "//components/security_state/core",
299    "//third_party/metrics_proto",
300    "//url",
301  ]
302  deps = [
303    ":buildflags",
304    "//components/dom_distiller/core:core",
305    "//components/search_engines",
306    "//components/strings",
307    "//components/url_formatter",
308    "//net",
309    "//third_party/protobuf:protobuf_lite",
310    "//third_party/re2",
311    "//ui/base",
312    "//ui/gfx",
313  ]
314
315  if ((!is_android || enable_vr) && !is_ios) {
316    deps += [ ":vector_icons" ]
317  }
318
319  if (is_android) {
320    sources += [
321      "autocomplete_scheme_classifier_android.cc",
322      "autocomplete_scheme_classifier_android.h",
323      "omnibox_url_emphasizer.cc",
324    ]
325    deps += [ ":jni_headers" ]
326  }
327}
328
329if (is_android) {
330  android_resources("java_resources") {
331    sources = [
332      "android/java/res/drawable-hdpi/omnibox_https_valid.png",
333      "android/java/res/drawable-hdpi/omnibox_info.png",
334      "android/java/res/drawable-hdpi/omnibox_not_secure_warning.png",
335      "android/java/res/drawable-mdpi/omnibox_https_valid.png",
336      "android/java/res/drawable-mdpi/omnibox_info.png",
337      "android/java/res/drawable-mdpi/omnibox_not_secure_warning.png",
338      "android/java/res/drawable-xhdpi/omnibox_https_valid.png",
339      "android/java/res/drawable-xhdpi/omnibox_info.png",
340      "android/java/res/drawable-xhdpi/omnibox_not_secure_warning.png",
341      "android/java/res/drawable-xxhdpi/omnibox_https_valid.png",
342      "android/java/res/drawable-xxhdpi/omnibox_info.png",
343      "android/java/res/drawable-xxhdpi/omnibox_not_secure_warning.png",
344      "android/java/res/drawable-xxxhdpi/omnibox_https_valid.png",
345      "android/java/res/drawable-xxxhdpi/omnibox_info.png",
346      "android/java/res/drawable-xxxhdpi/omnibox_not_secure_warning.png",
347      "android/java/res/values/colors.xml",
348    ]
349    deps = [
350      "//components/browser_ui/strings/android:browser_ui_strings_grd",
351      "//ui/android:ui_java_resources",
352    ]
353  }
354
355  android_library("browser_java") {
356    sources = [
357      "android/java/src/org/chromium/components/omnibox/AutocompleteSchemeClassifier.java",
358      "android/java/src/org/chromium/components/omnibox/OmniboxUrlEmphasizer.java",
359      "android/java/src/org/chromium/components/omnibox/SecurityButtonAnimationDelegate.java",
360      "android/java/src/org/chromium/components/omnibox/SecurityStatusIcon.java",
361      "android/java/src/org/chromium/components/omnibox/SuggestionAnswer.java",
362    ]
363
364    resources_package = "org.chromium.components.omnibox"
365    deps = [
366      ":java_resources",
367      "//base:base_java",
368      "//base:jni_java",
369      "//components/browser_ui/widget/android:java",
370      "//components/embedder_support/android:util_java",
371      "//components/security_state/core:security_state_enums_java",
372      "//content/public/android:content_java",
373      "//third_party/android_deps:androidx_annotation_annotation_java",
374      "//third_party/android_deps:androidx_core_core_java",
375      "//ui/android:ui_full_java",
376    ]
377
378    srcjar_deps = [ ":browser_java_enums_srcjar" ]
379    annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
380  }
381
382  java_cpp_enum("browser_java_enums_srcjar") {
383    sources = [
384      "autocomplete_match.h",
385      "autocomplete_match_type.h",
386      "suggestion_answer.h",
387    ]
388  }
389
390  generate_jni("jni_headers") {
391    sources = [
392      "android/java/src/org/chromium/components/omnibox/AutocompleteSchemeClassifier.java",
393      "android/java/src/org/chromium/components/omnibox/OmniboxUrlEmphasizer.java",
394      "android/java/src/org/chromium/components/omnibox/SuggestionAnswer.java",
395    ]
396  }
397}
398
399proto_library("in_memory_url_index_cache_proto") {
400  sources = [ "in_memory_url_index_cache.proto" ]
401}
402
403static_library("test_support") {
404  testonly = true
405  sources = [
406    "fake_autocomplete_provider_client.cc",
407    "fake_autocomplete_provider_client.h",
408    "history_index_restore_observer.cc",
409    "history_index_restore_observer.h",
410    "history_test_util.cc",
411    "history_test_util.h",
412    "in_memory_url_index_test_util.cc",
413    "in_memory_url_index_test_util.h",
414    "mock_autocomplete_provider_client.cc",
415    "mock_autocomplete_provider_client.h",
416    "shortcuts_provider_test_util.cc",
417    "shortcuts_provider_test_util.h",
418    "test_location_bar_model.cc",
419    "test_location_bar_model.h",
420    "test_omnibox_client.cc",
421    "test_omnibox_client.h",
422    "test_omnibox_edit_controller.cc",
423    "test_omnibox_edit_controller.h",
424    "test_omnibox_edit_model.cc",
425    "test_omnibox_edit_model.h",
426    "test_omnibox_view.cc",
427    "test_omnibox_view.h",
428    "test_scheme_classifier.cc",
429    "test_scheme_classifier.h",
430  ]
431
432  public_deps = [
433    ":browser",
434    "//base",
435  ]
436
437  deps = [
438    "//base/test:test_support",
439    "//components/bookmarks/browser",
440    "//components/bookmarks/test",
441    "//components/history/core/browser",
442    "//components/history/core/test",
443    "//components/prefs:test_support",
444    "//components/query_tiles/test:test_support",
445    "//components/resources",
446    "//components/search_engines",
447    "//components/sessions",
448    "//net",
449    "//services/network:test_support",
450    "//testing/gmock",
451    "//testing/gtest",
452    "//third_party/metrics_proto",
453    "//ui/base",
454    "//ui/gfx",
455  ]
456
457  if (toolkit_views) {
458    # Needed to get the TOOLKIT_VIEWS define.
459    deps += [ "//ui/views" ]
460  }
461}
462
463bundle_data("unit_tests_bundle_data") {
464  visibility = [ ":unit_tests" ]
465  testonly = true
466  sources = [
467    "//components/test/data/omnibox/Shortcuts.no_fill_into_edit.sql",
468    "//components/test/data/omnibox/Shortcuts.v0.sql",
469    "//components/test/data/omnibox/Shortcuts.v1.sql",
470    "//components/test/data/omnibox/in_memory_url_index_test.sql",
471    "//components/test/data/omnibox/in_memory_url_index_test_limited.sql",
472    "//components/test/data/omnibox/on_device_head_test_model_index.bin",
473  ]
474  outputs = [ "{{bundle_resources_dir}}/" +
475              "{{source_root_relative_dir}}/{{source_file_part}}" ]
476}
477
478source_set("unit_tests") {
479  testonly = true
480  sources = [
481    "answers_cache_unittest.cc",
482    "autocomplete_input_unittest.cc",
483    "autocomplete_match_type_unittest.cc",
484    "autocomplete_match_unittest.cc",
485    "autocomplete_provider_unittest.cc",
486    "autocomplete_result_unittest.cc",
487    "base_search_provider_unittest.cc",
488    "bookmark_provider_unittest.cc",
489    "builtin_provider_unittest.cc",
490    "clipboard_provider_unittest.cc",
491    "document_provider_unittest.cc",
492    "document_suggestions_service_unittest.cc",
493    "favicon_cache_unittest.cc",
494    "history_provider_unittest.cc",
495    "history_quick_provider_unittest.cc",
496    "history_url_provider_unittest.cc",
497    "in_memory_url_index_types_unittest.cc",
498    "in_memory_url_index_unittest.cc",
499    "inline_autocompletion_util_unittest.cc",
500    "keyword_provider_unittest.cc",
501    "local_history_zero_suggest_provider_unittest.cc",
502    "location_bar_model_impl_unittest.cc",
503    "most_visited_sites_provider_unittest.cc",
504    "omnibox_controller_unittest.cc",
505    "omnibox_edit_model_unittest.cc",
506    "omnibox_field_trial_unittest.cc",
507    "omnibox_pedal_implementations_unittest.cc",
508    "omnibox_pedal_provider_unittest.cc",
509    "omnibox_pedal_unittest.cc",
510    "omnibox_popup_model_unittest.cc",
511    "omnibox_prefs_unittest.cc",
512    "omnibox_view_unittest.cc",
513    "on_device_head_model_unittest.cc",
514    "on_device_head_provider_unittest.cc",
515    "query_tile_provider_unittest.cc",
516    "remote_suggestions_service_unittest.cc",
517    "scored_history_match_unittest.cc",
518    "search_suggestion_parser_unittest.cc",
519    "shortcuts_backend_unittest.cc",
520    "shortcuts_database_unittest.cc",
521    "shortcuts_provider_unittest.cc",
522    "suggestion_answer_unittest.cc",
523    "tailored_word_break_iterator_unittest.cc",
524    "titled_url_match_utils_unittest.cc",
525    "url_prefix_unittest.cc",
526    "zero_suggest_provider_unittest.cc",
527    "zero_suggest_verbatim_match_provider_unittest.cc",
528  ]
529
530  if ((!is_android || enable_vr) && !is_ios) {
531    sources += [ "location_bar_model_util_unittest.cc" ]
532  }
533
534  deps = [
535    ":browser",
536    ":test_support",
537    ":unit_tests_bundle_data",
538    "//base",
539    "//base/test:test_support",
540    "//components/bookmarks/browser",
541    "//components/bookmarks/test",
542    "//components/dom_distiller/core:core",
543    "//components/favicon/core/test:test_support",
544    "//components/history/core/test",
545    "//components/omnibox/common",
546    "//components/open_from_clipboard:test_support",
547    "//components/prefs:test_support",
548    "//components/search",
549    "//components/search_engines",
550    "//components/search_engines:test_support",
551    "//components/sessions",
552    "//components/signin/public/identity_manager:test_support",
553    "//components/strings",
554    "//components/sync_preferences:test_support",
555    "//components/url_formatter",
556    "//components/variations",
557    "//components/variations/net:net",
558    "//services/network:test_support",
559    "//sql",
560    "//sql:test_support",
561    "//testing/gmock",
562    "//testing/gtest",
563    "//ui/base:test_support",
564    "//ui/gfx:test_support",
565    "//url",
566  ]
567
568  if ((!is_android || enable_vr) && !is_ios) {
569    deps += [
570      ":buildflags",
571      "//components/omnibox/browser:vector_icons",
572      "//components/vector_icons:vector_icons",
573    ]
574  }
575}
576
577fuzzer_test("autocomplete_input_fuzzer") {
578  sources = [ "autocomplete_input_fuzzer.cc" ]
579  deps = [
580    ":browser",
581    ":test_support",
582    "//base",
583    "//base:i18n",
584    "//third_party/metrics_proto:metrics_proto",
585  ]
586}
587
588fuzzer_test("omnibox_view_fuzzer") {
589  sources = [ "omnibox_view_fuzzer.cc" ]
590  deps = [
591    ":browser",
592    "//base",
593  ]
594}
595
596fuzzer_test("search_suggestion_parser_fuzzer") {
597  sources = [ "search_suggestion_parser_fuzzer.cc" ]
598  deps = [
599    ":browser",
600    ":test_support",
601    "//base",
602    "//base:i18n",
603    "//third_party/icu:icui18n",
604    "//third_party/metrics_proto:metrics_proto",
605  ]
606  seed_corpus = "fuzz_corpus_suggest"
607}
608