Fix UnlockEndpointIsDelayed again.
[chromium-blink-merge.git] / chrome / browser / BUILD.gn
blob7359d61dc8092bc432a215277de93c1afe99894f
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.
5 import("//build/config/crypto.gni")
6 import("//build/config/features.gni")
7 import("//build/config/ui.gni")
8 import("//components/nacl/nacl_defines.gni")
10 # //build/config/android/rules.gni imports //tools/grit/grit_rule.gni, which
11 # produces a conflict for the "grit" template so we have to only include one.
12 if (is_android) {
13   import("//build/config/android/rules.gni")
14 } else {
15   import("//tools/grit/grit_rule.gni")
17 if (is_desktop_linux) {
18   import("//build/config/linux/pkg_config.gni")
21 about_credits_file = "$target_gen_dir/about_credits.html"
22 additional_modules_list_file =
23     "$root_gen_dir/chrome/browser/internal/additional_modules_list.txt"
25 gypi_values = exec_script("//build/gypi_to_gn.py",
26                           [ rebase_path("../chrome_browser.gypi") ],
27                           "scope",
28                           [ "../chrome_browser.gypi" ])
30 if (is_desktop_linux) {
31   # Gnome-keyring is normally dynamically loaded. The gnome_keyring config
32   # will set this up.
33   pkg_config("gnome_keyring") {
34     packages = [ "gnome-keyring-1" ]
35     defines = [
36       "USE_GNOME_KEYRING",
37       "DLOPEN_GNOME_KEYRING",
38     ]
39     ignore_libs = true
40   }
42   # If you want to link gnome-keyring directly (use only for unit tests)
43   # ADDITIONALLY add this config on top of ":gnome_keyring". pkg-config is a
44   # bit slow, so prefer not to run it again. In practice, gnome-keyring's libs
45   # are just itself and common gnome ones we link already, so we can get away
46   # with additionally just coding the library name here.
47   config("gnome_keyring_direct") {
48     libs = [ "gnome-keyring" ]
49   }
52 static_library("browser") {
53   configs += [
54     "//build/config/compiler:wexit_time_destructors",
55     "//third_party/WebKit/public:debug_devtools",
56   ]
57   defines = []
58   sources = []
59   libs = []
60   ldflags = []
62   # iOS/non-iOS shared deps. New dependencies should generally be added in the
63   # non-iOS deps below.
64   public_deps = [
65     "//components/autofill/core/browser",
66     "//content/public/browser",
67     "//sql",
68     "//sync",
69   ]
70   deps = [
71     "//base/allocator",
72     "//chrome:extra_resources",
73     "//chrome:resources",
74     "//chrome:strings",
75     "//chrome/app:generated_resources_map",
76     "//chrome/app/resources:platform_locale_settings",
77     "//chrome/app/theme:theme_resources",
78     "//chrome/browser/net:cert_logger_proto",
79     "//chrome/browser/net:probe_message_proto",
80     "//chrome/browser/ui",
81     "//chrome/common",
82     "//chrome/common/net",
83     "//components/autofill/core/browser",
84     "//components/bookmarks/browser",
85     "//components/captive_portal",
86     "//components/cloud_devices/common",
87     "//components/component_updater",
88     "//components/content_settings/core/browser",
89     "//components/content_settings/core/common",
90     "//components/crx_file",
91     "//components/data_reduction_proxy/core/browser",
92     "//components/domain_reliability",
93     "//components/enhanced_bookmarks",
94     "//components/favicon_base",
95     "//components/favicon/core",
96     "//components/feedback",
97     "//components/gcm_driver",
98     "//components/google/core/browser",
99     "//components/handoff",
100     "//components/history/core/browser",
101     "//components/history/core/browser:proto",
102     "//components/history/core/common",
103     "//components/infobars/core",
104     "//components/invalidation",
105     "//components/metrics:gpu",
106     "//components/metrics:net",
107     "//components/metrics:profiler",
108     "//components/metrics/proto:proto",
109     "//components/navigation_metrics",
110     "//components/network_time",
111     "//components/omnibox",
112     "//components/os_crypt",
113     "//components/packed_ct_ev_whitelist",
114     "//components/password_manager/core/browser",
115     "//components/password_manager/core/common",
116     "//components/policy:policy_component",
117     "//components/precache/core",
118     "//components/query_parser",
119     "//components/rappor",
120     "//components/renderer_context_menu",
121     "//components/search",
122     "//components/search_engines",
123     "//components/search_provider_logos",
124     "//components/signin/core/browser",
125     "//components/startup_metric_utils",
126     "//components/strings",
127     "//components/suggestions",
128     "//components/sync_driver",
129     "//components/translate/core/browser",
130     "//components/translate/core/common",
131     "//components/ui/zoom:ui_zoom",
132     "//components/update_client",
133     "//components/url_fixer",
134     "//components/user_prefs",
135     "//components/variations",
136     "//components/variations/net",
137     "//components/webdata/common",
138     "//components/webdata_services",
139     "//components/web_resource",
140     "//content/public/browser",
141     "//content/public/common",
142     "//courgette:courgette_lib",
143     "//crypto",
144     "//google_apis",
145     "//gpu/config",
146     "//jingle:notifier",
147     "//skia",
148     "//sql",
149     "//sync",
150     "//third_party/cacheinvalidation",
151     "//third_party/icu",
152     "//third_party/libxml",
153     "//third_party/libjingle",
154     "//third_party/widevine/cdm:version_h",
155     "//third_party/zlib",
156     "//third_party/zlib:minizip",
157     "//third_party/zlib:zip",
158     "//ui/base",
159     "//ui/events:events_base",
160     "//ui/gfx",
161     "//ui/gfx/geometry",
162     "//ui/message_center",
163     "//ui/shell_dialogs",
164     "//ui/strings",
165     "//ui/resources",
166   ]
168   sources +=
169       rebase_path(gypi_values.chrome_browser_undo_sources, ".", "//chrome")
171   if (!is_ios) {
172     sources +=
173         rebase_path(gypi_values.chrome_browser_non_ios_sources, ".", "//chrome")
174     sources += rebase_path(gypi_values.chrome_browser_autocomplete_sources,
175                            ".",
176                            "//chrome")
177     sources += rebase_path(gypi_values.chrome_browser_bookmark_sources,
178                            ".",
179                            "//chrome")
180     sources += rebase_path(gypi_values.chrome_browser_browser_process_sources,
181                            ".",
182                            "//chrome")
183     sources += rebase_path(gypi_values.chrome_browser_content_settings_sources,
184                            ".",
185                            "//chrome")
186     sources +=
187         rebase_path(gypi_values.chrome_browser_favicon_sources, ".", "//chrome")
188     sources +=
189         rebase_path(gypi_values.chrome_browser_google_sources, ".", "//chrome")
190     sources +=
191         rebase_path(gypi_values.chrome_browser_history_sources, ".", "//chrome")
192     sources +=
193         rebase_path(gypi_values.chrome_browser_metrics_sources, ".", "//chrome")
194     sources +=
195         rebase_path(gypi_values.chrome_browser_net_sources, ".", "//chrome")
196     sources += rebase_path(gypi_values.chrome_browser_password_manager_sources,
197                            ".",
198                            "//chrome")
199     sources += rebase_path(gypi_values.chrome_browser_predictor_sources,
200                            ".",
201                            "//chrome")
202     sources +=
203         rebase_path(gypi_values.chrome_browser_pref_sources, ".", "//chrome")
204     sources += rebase_path(gypi_values.chrome_browser_profiles_sources,
205                            ".",
206                            "//chrome")
207     sources += rebase_path(gypi_values.chrome_browser_search_engines_sources,
208                            ".",
209                            "//chrome")
210     sources += rebase_path(gypi_values.chrome_browser_services_sources,
211                            ".",
212                            "//chrome")
213     sources +=
214         rebase_path(gypi_values.chrome_browser_session_sources, ".", "//chrome")
215     sources +=
216         rebase_path(gypi_values.chrome_browser_signin_sources, ".", "//chrome")
217     sources +=
218         rebase_path(gypi_values.chrome_browser_ssl_sources, ".", "//chrome")
219     sources +=
220         rebase_path(gypi_values.chrome_browser_sync_sources, ".", "//chrome")
221     sources += rebase_path(gypi_values.chrome_browser_web_resource_sources,
222                            ".",
223                            "//chrome")
225     #TODO(GYP) Add these sources:
226     #        # These files are generated by GRIT.
227     #        '<(grit_out_dir)/grit/component_extension_resources_map.cc',
228     #        '<(grit_out_dir)/grit/theme_resources_map.cc',
229     #        '<(SHARED_INTERMEDIATE_DIR)/ui/resources/grit/ui_resources_map.cc',
230     #
231     #        # This file is generated by
232     #        # chrome/browser/metrics/variations/generate_resources_map.py
233     #        '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/metrics/variations/generated_resources_map.cc',
235     defines = nacl_defines
237     deps += [
238       "//apps",
239       "//cc",
240       "//chrome/browser/devtools",
241       "//chrome/installer/util",
242       "//components/app_modal",
243       "//components/autofill/content/browser",
244       "//components/dom_distiller/content",
245       "//components/history/content/browser",
246       "//components/keyed_service/content",
247       "//components/navigation_interception",
248       "//components/password_manager/content/browser",
249       "//components/precache/content",
250       "//components/sessions:sessions_content",
251       "//components/storage_monitor",
252       "//components/translate/content/browser",
253       "//components/url_matcher",
254       "//components/visitedlink/browser",
255       "//components/visitedlink/common",
256       "//components/web_cache/browser",
257       "//components/web_modal",
258       "//content/app/resources",
259       "//media",
260       "//mojo/common",
261       "//mojo/environment:chromium",
262       "//net:extras",
263       "//net:net_with_v8",
264       "//storage/browser",
265       "//storage/common",
266       "//third_party/WebKit/public:resources",
267       "//third_party/expat",
268       "//third_party/leveldatabase",
269       "//third_party/libaddressinput",
270       "//third_party/libyuv",
271       "//third_party/mojo/src/mojo/edk/system",
272       "//third_party/mojo/src/mojo/public/cpp/bindings",
273       "//third_party/mojo/src/mojo/public/js",
274       "//third_party/npapi",
275       "//third_party/re2",
276       "//third_party/smhasher:cityhash",
277       "//third_party/webrtc/modules/desktop_capture",
278       "//ui/gl",
279       "//ui/surface",
280       "//ui/web_dialogs",
281       "//v8",
283       ## TODO(tonyg): Remove this dependency (crbug.com/280157).
284       #"../testing/perf/perf_test.gyp:*",  TODO(GYP)
285     ]
286   } else {  # iOS
287     sources +=
288         rebase_path(gypi_values.chrome_browser_ios_sources, ".", "//chrome")
289     sources +=
290         rebase_path(gypi_values.chrome_browser_google_sources, ".", "//chrome")
291     deps += [ "//net" ]
292     libs += [
293       "CoreTelephony.framework",
294       "CoreText.framework",
295       "MobileCoreServices.framework",
296       "QuartzCore.framework",
297     ]
298     ldflags += [
299       "-weak_framework",
300       "CoreImage",
301     ]
302   }
304   if (is_win || is_mac) {
305     sources +=
306         rebase_path(gypi_values.chrome_browser_win_mac_sources, ".", "//chrome")
307   }
308   if (!is_android && !is_ios && !is_chromeos && enable_configuration_policy) {
309     sources += [
310       "net/disk_cache_dir_policy_handler.cc",
311       "net/disk_cache_dir_policy_handler.h",
312     ]
313   }
314   if (!is_android && !is_ios && enable_configuration_policy) {
315     sources += [
316       "download/download_dir_policy_handler.cc",
317       "download/download_dir_policy_handler.h",
318     ]
319   }
320   if (is_mac) {
321     sources +=
322         rebase_path(gypi_values.chrome_browser_mac_sources, ".", "//chrome")
323     deps += [
324       #"app_shim"  TODO(GYP)
325       #"browser_app_shim"  TODO(GYP)
326     ]
327   }
328   if (enable_extensions) {
329     public_deps += [ "//chrome/browser/extensions" ]
330     deps += [
331       "//chrome/browser/sync_file_system/drive_backend:sync_file_system_drive_proto",
332       "//chrome/common/extensions/api",
333       "//chrome/common/extensions/api:api_registration",
334       "//components/proximity_auth/cryptauth",
335       "//extensions/components/javascript_dialog_extensions_client",
336       "//media/cast:net",
337     ]
338     sources += rebase_path(gypi_values.chrome_browser_extensions_sources,
339                            ".",
340                            "//chrome")
341   }
342   if (enable_background) {
343     sources += rebase_path(gypi_values.chrome_browser_background_sources,
344                            ".",
345                            "//chrome")
346     if (!use_aura || is_win || is_chromeos) {
347       sources -= [ "background/background_mode_manager_aura.cc" ]
348     }
349     defines += [ "ENABLE_BACKGROUND=1" ]
350   }
351   if (enable_task_manager) {
352     sources += rebase_path(gypi_values.chrome_browser_task_manager_sources,
353                            ".",
354                            "//chrome")
355   }
356   if (enable_spellcheck) {
357     sources += rebase_path(gypi_values.chrome_browser_spellchecker_sources,
358                            ".",
359                            "//chrome")
360     deps += [ "//third_party/hunspell" ]
361   }
362   if (enable_nacl) {
363     sources +=
364         rebase_path(gypi_values.chrome_browser_nacl_sources, ".", "//chrome")
365     #deps += [ "//components/nacl:nacl_browser" ]  TODO(GYP)
366   }
368   if (enable_configuration_policy) {
369     sources +=
370         rebase_path(gypi_values.chrome_browser_policy_shared_with_ios_sources,
371                     ".",
372                     "//chrome")
373     deps += [
374       "//components/policy",
375       "//components/policy/proto",
376     ]
377     if (!is_ios) {
378       sources += rebase_path(gypi_values.chrome_browser_policy_non_ios_sources,
379                              ".",
380                              "//chrome")
381     }
382     if (!is_chromeos) {
383       sources += rebase_path(
384               gypi_values.chrome_browser_policy_shared_with_ios_not_chromeos_sources,
385               ".",
386               "//chrome")
387     }
388     if (is_win || is_mac || is_desktop_linux) {
389       sources += rebase_path(gypi_values.chrome_browser_policy_desktop_sources,
390                              ".",
391                              "//chrome")
392     }
393     if (is_android || is_ios) {
394       sources += rebase_path(gypi_values.chrome_browser_policy_mobile_sources,
395                              ".",
396                              "//chrome")
397     } else {
398       deps += [ "//chrome/browser/policy:path_parser" ]
399     }
400   } else {
401     # Configuration policy disabled.
402     sources += rebase_path(gypi_values.chrome_browser_policy_disabled_sources,
403                            ".",
404                            "//chrome")
405   }
407   if (enable_plugins) {
408     sources +=
409         rebase_path(gypi_values.chrome_browser_plugins_sources, ".", "//chrome")
410     deps += [
411       "//components/pdf/browser",
412       "//ppapi:ppapi_ipc",
413       "//third_party/adobe/flash:flapper_version_h",
414     ]
415   }
416   if (safe_browsing_mode != 0) {
417     sources +=
418         rebase_path(gypi_values.chrome_browser_safe_browsing_basic_sources,
419                     ".",
420                     "//chrome")
421     deps += [
422       "//chrome/browser/safe_browsing:chunk_proto",
423       "//chrome/browser/safe_browsing:metadata_proto",
424       "//chrome/browser/safe_browsing:report_proto",
425     ]
426     if (safe_browsing_mode == 1) {
427       sources +=
428           rebase_path(gypi_values.chrome_browser_safe_browsing_full_sources,
429                       ".",
430                       "//chrome")
431       defines += [ "FULL_SAFE_BROWSING" ]
432       deps += [ "//chrome/common/safe_browsing:proto" ]
433     } else if (safe_browsing_mode == 2) {
434       defines += [ "MOBILE_SAFE_BROWSING" ]
435     }
436   }
438   if (is_linux) {
439     deps += [
440       "//device/media_transfer_protocol",
441       "//device/udev_linux",
442     ]
443   }
444   if (is_linux && !is_chromeos) {
445     deps += [ "//third_party/speech-dispatcher" ]
446   }
448   if (is_chromeos) {
449     sources += rebase_path(gypi_values.chrome_browser_chromeos_sources,
450                            ".",
451                            "//chrome")
452     deps += [ "//chrome/browser/chromeos" ]
453   } else {
454     # Non-ChromeOS.
455     sources += rebase_path(gypi_values.chrome_browser_non_chromeos_sources,
456                            ".",
457                            "//chrome")
458   }
460   if (is_ios) {
461     sources -= [
462       "metrics/signin_status_metrics_provider_base.cc",
463       "metrics/signin_status_metrics_provider_base.h",
464     ]
465   }
467   if (is_chromeos || is_ios) {
468     sources -= [
469       "metrics/signin_status_metrics_provider.cc",
470       "metrics/signin_status_metrics_provider.h",
471     ]
472   }
474   if (use_cups) {
475     configs += [ "//printing:cups" ]
476   }
477   if (is_desktop_linux) {
478     sources += rebase_path(gypi_values.chrome_browser_gnome_keyring_sources,
479                            ".",
480                            "//chrome")
481     configs += [ ":gnome_keyring" ]
482   }
483   if (is_desktop_linux) {
484     sources += rebase_path(gypi_values.chrome_browser_libsecret_sources,
485                            ".",
486                            "//chrome")
487     defines += [ "USE_LIBSECRET" ]
488   }
489   if (use_aura) {
490     sources +=
491         rebase_path(gypi_values.chrome_browser_aura_sources, ".", "//chrome")
492     deps += [
493       "//ui/aura",
494       "//ui/compositor",
495       "//ui/keyboard",
496     ]
497   }
498   if (ui_compositor_image_transport) {
499     deps += [ "//ui/gl" ]
500   }
502   if (use_ash) {
503     sources +=
504         rebase_path(gypi_values.chrome_browser_ash_sources, ".", "//chrome")
505   }
507   if (use_x11) {
508     sources +=
509         rebase_path(gypi_values.chrome_browser_x11_sources, ".", "//chrome")
510   } else {
511     sources -= [ "password_manager/password_store_x.cc" ]
512   }
513   if (is_posix && !is_mac && !is_ios) {
514     sources += [
515       "//chrome/app/chrome_crash_reporter_client.cc",
516       "//chrome/app/chrome_crash_reporter_client.h",
517     ]
518     deps += [
519       "//components/crash/app",
520       "//components/crash/browser",
521     ]
522   }
523   if (use_nss_certs) {
524     sources +=
525         rebase_path(gypi_values.chrome_browser_nss_sources, ".", "//chrome")
526     if (is_chromeos) {
527       sources -= [ "net/nss_context_linux.cc" ]
528     }
529   }
530   if (enable_notifications) {
531     sources += rebase_path(gypi_values.chrome_browser_notifications_sources,
532                            ".",
533                            "//chrome")
534     if (!is_android) {
535       sources += rebase_path(
536               gypi_values.chrome_browser_notifications_non_android_sources,
537               ".",
538               "//chrome")
539     }
540   }
541   if (enable_themes) {
542     sources +=
543         rebase_path(gypi_values.chrome_browser_themes_sources, ".", "//chrome")
544   }
546   if (enable_basic_printing || enable_print_preview) {
547     # Some form of printing support.
548     sources += rebase_path(gypi_values.chrome_browser_printing_basic_sources,
549                            ".",
550                            "//chrome")
551     deps += [ "//printing" ]
552     if (is_win) {
553       sources += rebase_path(gypi_values.chrome_browser_printing_emf_sources,
554                              ".",
555                              "//chrome")
556     }
557     if (enable_print_preview) {
558       # Full printing on top of the above.
559       sources += rebase_path(gypi_values.chrome_browser_printing_full_sources,
560                              ".",
561                              "//chrome")
562     } else {
563       # Partial-only printing support.
564       sources +=
565           rebase_path(gypi_values.chrome_browser_printing_basic_only_sources,
566                       ".",
567                       "//chrome")
568     }
569   }
570   if (enable_captive_portal_detection) {
571     sources += rebase_path(gypi_values.chrome_browser_captive_portal_sources,
572                            ".",
573                            "//chrome")
574   }
575   if (enable_session_service) {
576     sources += rebase_path(gypi_values.chrome_browser_session_service_sources,
577                            ".",
578                            "//chrome")
579   }
581   if (!is_android && !is_ios && !is_chromeos) {
582     sources +=
583         rebase_path(gypi_values.chrome_browser_desktop_sources, ".", "//chrome")
584   }
586   if (is_android || is_ios) {
587     # Mobile.
588     sources +=
589         rebase_path(gypi_values.chrome_browser_mobile_sources, ".", "//chrome")
590   } else {
591     # Non-mobile.
592     sources += rebase_path(gypi_values.chrome_browser_non_mobile_sources,
593                            ".",
594                            "//chrome")
595     deps += [
596       "//device/core",
597       "//device/usb",
598     ]
599   }
601   if (is_android) {
602     sources +=
603         rebase_path(gypi_values.chrome_browser_android_sources, ".", "//chrome")
604     deps += [
605       ":jni_headers",
606       "//components/cdm/browser",
607       "//components/enhanced_bookmarks",
608       "//components/resources:components_resources",
609       "//components/web_contents_delegate_android",
610       "//third_party/android_opengl/etc1",
611       "//third_party/libaddressinput:util",
612     ]
613     deps -= [
614       "//third_party/libaddressinput",
615       "//components/feedback",
616       "//components/storage_monitor",
617       "//components/web_modal",
618     ]
619   }
621   if (is_mac) {
622     deps += [
623       "//third_party/google_toolbox_for_mac",
624       #"../third_party/mozilla/mozilla.gyp:mozilla",  TODO(GYP)
625     ]
626     libs += [
627       "Accelerate.framework",
628       "AddressBook.framework",
629       "AudioUnit.framework",
630       "DiskArbitration.framework",
631       "IOKit.framework",
632       "ImageCaptureCore.framework",
633       "OpenGL.framework",
634       "QuartzCore.framework",
635       "SecurityInterface.framework",
636     ]
637   }
639   if (enable_rlz) {
640     sources +=
641         rebase_path(gypi_values.chrome_browser_rlz_sources, ".", "//chrome")
642     deps += [ "//rlz:rlz_lib" ]
643   }
645   # TODO(GYP)
646   # Temporary fix to break the browser target into smaller chunks so it
647   # will link with goma builds.
648   #["OS=="win" and chromium_win_pch==0", {
649   #  "msvs_shard": 4,
650   #}],
652   if (is_win) {
653     sources +=
654         rebase_path(gypi_values.chrome_browser_win_sources, ".", "//chrome")
655     if (!is_chrome_branded) {
656       sources -= [
657         "google/did_run_updater_win.cc",
658         "google/did_run_updater_win.h",
659       ]
660     }
661     public_deps += [
662       "//ui/views",
663       "//ui/views/controls/webview",
664     ]
665     deps += [
666       ":chrome_process_finder",
667       "//chrome:version_header",
668       "//chrome/installer/util:strings",
669       "//chrome_elf",
670       "//chrome_elf:constants",
671       "//chrome_elf:dll_hash",
672       "//components/browser_watcher",
673       "//components/browser_watcher:browser_watcher_client",
674       "//google_update",
675       "//third_party/iaccessible2",
676       "//third_party/isimpledom",
677       "//third_party/wtl",
678       "//ui/metro_viewer",
679       "//win8:metro_viewer",
680     ]
681     libs += [ "credui.lib" ]
682   } else {
683     # Non-Windows.
684     sources +=
685         rebase_path(gypi_values.chrome_browser_non_win_sources, ".", "//chrome")
686     if (toolkit_views) {
687       deps += [
688         "//ui/views",
689         "//ui/views/controls/webview",
690       ]
691       # TODO(GYP) why is this needed? Very susicious.
692       #  "include_dirs": [
693       #    "<(INTERMEDIATE_DIR)/chrome",
694       #  ],
695     }
696   }
698   if (is_linux) {
699     sources +=
700         rebase_path(gypi_values.chrome_browser_linux_sources, ".", "//chrome")
701     if (use_aura) {
702       configs += [
703         "//build/config/linux:dbus",
704         "//build/config/linux:fontconfig",
705       ]
706       deps += [ "//dbus" ]
707     }
708     if (use_x11) {
709       configs += [ "//build/config/linux:x11" ]
710       deps += [ "//ui/gfx/x" ]
711     }
712   }
714   if (is_desktop_linux) {
715     sources += rebase_path(gypi_values.chrome_browser_linux_desktop_sources,
716                            ".",
717                            "//chrome")
718   }
719   if (enable_plugin_installation) {
720     sources +=
721         rebase_path(gypi_values.chrome_browser_plugin_installation_sources,
722                     ".",
723                     "//chrome")
724   }
725   if (enable_app_list) {
726     deps += [ "//ui/app_list" ]
727   }
728   if (enable_supervised_users) {
729     sources += rebase_path(gypi_values.chrome_browser_supervised_user_sources,
730                            ".",
731                            "//chrome")
732   }
733   if (enable_supervised_users && enable_themes) {
734     sources += rebase_path(
735             gypi_values.chrome_browser_supervised_user_and_themes_sources,
736             ".",
737             "//chrome")
738   }
739   if (enable_webrtc) {
740     sources +=
741         rebase_path(gypi_values.chrome_browser_webrtc_sources, ".", "//chrome")
742   }
743   if (enable_service_discovery) {
744     sources += rebase_path(gypi_values.chrome_browser_service_discovery_sources,
745                            ".",
746                            "//chrome")
747   }
748   if (enable_mdns) {
749     sources +=
750         rebase_path(gypi_values.chrome_browser_mdns_sources, ".", "//chrome")
751   }
752   if (!enable_autofill_dialog || is_android || is_ios) {
753     sources -= [
754       "autofill/validation_rules_storage_factory.cc",
755       "autofill/validation_rules_storage_factory.h",
756     ]
757   }
758   if (enable_wifi_bootstrapping) {
759     sources +=
760         rebase_path(gypi_values.chrome_browser_wifi_bootstrapping_sources,
761                     ".",
762                     "//chrome")
763     if (is_win || is_mac) {
764       # TODO(brettw) as of this writing wifi bootstrapping is set on Windows
765       # and Mac, so this test is meaningless. Can we merge these lists?
766       sources += rebase_path(
767               gypi_values.chrome_browser_wifi_bootstrapping_win_mac_sources,
768               ".",
769               "//chrome")
770     }
771   }
774 if (is_android) {
775   # GYP version: chrome/chrome_browser.gypi:chrome_browser_jni_headers
776   generate_jni("jni_headers") {
777     sources =
778         rebase_path(gypi_values.chrome_browser_jni_sources, ".", "//chrome")
779     jni_package = "chrome"
780   }
783 if (is_win) {
784   source_set("chrome_process_finder") {
785     sources = [
786       "chrome_process_finder_win.cc",
787       "chrome_process_finder_win.h",
788     ]
789     deps = [
790       "//base",
791       "//chrome/browser/metro_utils",
792       "//chrome/common:constants",
793     ]
794     if (enable_configuration_policy) {
795       deps += [ "//chrome/browser/policy:path_parser" ]
796     }
797   }
800 # GYP version: chrome/chrome_resources.gyp:chrome_resources
801 # (generate_browser_resources action)
802 grit("resources") {
803   source = "browser_resources.grd"
804   output_dir = "$root_gen_dir/chrome"
805   outputs = [
806     "grit/browser_resources.h",
807     "browser_resources.pak",
808   ]
810   omnibox_mojom_file =
811       "$root_gen_dir/chrome/browser/ui/webui/omnibox/omnibox.mojom.js"
813   grit_flags = [
814     "-E",
815     "about_credits_file=" + rebase_path(about_credits_file, root_build_dir),
816     "-E",
817     "additional_modules_list_file=" +
818         rebase_path(additional_modules_list_file, root_build_dir),
819     "-E",
820     "omnibox_mojom_file=" + rebase_path(omnibox_mojom_file, root_build_dir),
821   ]
823   deps = [
824     ":about_credits",
825     ":chrome_internal_resources_gen",
826   ]
827   inputs = [
828     omnibox_mojom_file,
829   ]
832 # GYP version: chrome/chrome_resource.gyp:about_credits
833 action("about_credits") {
834   script = "//tools/licenses.py"
836   inputs = [
837     # This is not a complete list. TODO(phajdan.jr, dbeam): licenses.py needs to
838     # generate a .d file with all the licenses/credits that about:credits uses.
839     # Then about:credits will automatically rebuild when one of them changes.
840     # See: depfile in gn's documentation (gn help depfile).
841     "resources/about_credits.tmpl",
842     "resources/about_credits_entry.tmpl",
843   ]
845   outputs = [
846     about_credits_file,
847   ]
849   args = [
850     "credits",
851     rebase_path(about_credits_file, root_build_dir),
852   ]
855 # GYP version: chrome/chrome_resource.gyp:chrome_internal_resources_gen
856 if (is_chrome_branded) {
857   action("chrome_internal_resources_gen") {
858     script = "internal/transform_additional_modules_list.py"
859     sources = [
860       "internal/resources/additional_modules_list.input",
861     ]
862     outputs = [
863       additional_modules_list_file,
864     ]
865     args = rebase_path(sources, root_build_dir) +
866            rebase_path(outputs, root_build_dir)
867   }
868 } else {
869   group("chrome_internal_resources_gen") {
870     # Empty placeholder.
871   }
874 # In GYP this is part of test_support_common.
875 source_set("test_support") {
876   testonly = true
878   # Always include this via the main test support target.
879   visibility = [ "//chrome/test:test_support" ]
881   sources = [
882     "browsing_data/mock_browsing_data_appcache_helper.cc",
883     "browsing_data/mock_browsing_data_appcache_helper.h",
884     "browsing_data/mock_browsing_data_channel_id_helper.cc",
885     "browsing_data/mock_browsing_data_channel_id_helper.h",
886     "browsing_data/mock_browsing_data_cookie_helper.cc",
887     "browsing_data/mock_browsing_data_cookie_helper.h",
888     "browsing_data/mock_browsing_data_database_helper.cc",
889     "browsing_data/mock_browsing_data_database_helper.h",
890     "browsing_data/mock_browsing_data_file_system_helper.cc",
891     "browsing_data/mock_browsing_data_file_system_helper.h",
892     "browsing_data/mock_browsing_data_flash_lso_helper.cc",
893     "browsing_data/mock_browsing_data_flash_lso_helper.h",
894     "browsing_data/mock_browsing_data_indexed_db_helper.cc",
895     "browsing_data/mock_browsing_data_indexed_db_helper.h",
896     "browsing_data/mock_browsing_data_local_storage_helper.cc",
897     "browsing_data/mock_browsing_data_local_storage_helper.h",
898     "browsing_data/mock_browsing_data_quota_helper.cc",
899     "browsing_data/mock_browsing_data_quota_helper.h",
900     "browsing_data/mock_browsing_data_service_worker_helper.cc",
901     "browsing_data/mock_browsing_data_service_worker_helper.h",
902     "download/download_test_file_activity_observer.cc",
903     "download/download_test_file_activity_observer.h",
904     "download/test_download_shelf.cc",
905     "download/test_download_shelf.h",
906     "invalidation/fake_invalidation_service.cc",
907     "invalidation/fake_invalidation_service.h",
908     "media/fake_desktop_media_list.cc",
909     "media/fake_desktop_media_list.h",
910     "net/dns_probe_test_util.cc",
911     "net/dns_probe_test_util.h",
912     "net/url_request_mock_util.cc",
913     "net/url_request_mock_util.h",
914     "notifications/notification_test_util.cc",
915     "notifications/notification_test_util.h",
916     "password_manager/mock_password_store_service.cc",
917     "password_manager/mock_password_store_service.h",
918     "password_manager/null_password_store_service.cc",
919     "password_manager/null_password_store_service.h",
920     "password_manager/test_password_store_service.cc",
921     "password_manager/test_password_store_service.h",
922     "prefs/pref_service_mock_factory.cc",
923     "prefs/pref_service_mock_factory.h",
924     "profile_resetter/profile_resetter_test_base.cc",
925     "profile_resetter/profile_resetter_test_base.h",
926     "search_engines/template_url_service_factory_test_util.cc",
927     "search_engines/template_url_service_factory_test_util.h",
928     "search_engines/template_url_service_test_util.cc",
929     "search_engines/template_url_service_test_util.h",
930     "sessions/session_restore_test_helper.cc",
931     "sessions/session_restore_test_helper.h",
932     "sessions/session_service_test_helper.cc",
933     "sessions/session_service_test_helper.h",
934     "signin/fake_account_reconcilor.cc",
935     "signin/fake_account_reconcilor.h",
936     "signin/fake_account_tracker_service.cc",
937     "signin/fake_account_tracker_service.h",
938     "signin/fake_profile_oauth2_token_service.cc",
939     "signin/fake_profile_oauth2_token_service.h",
940     "signin/fake_profile_oauth2_token_service_builder.cc",
941     "signin/fake_profile_oauth2_token_service_builder.h",
942     "signin/fake_signin_manager.cc",
943     "signin/fake_signin_manager.h",
944     "ssl/ssl_client_auth_requestor_mock.cc",
945     "ssl/ssl_client_auth_requestor_mock.h",
946     "sync/profile_sync_components_factory_mock.cc",
947     "sync/profile_sync_components_factory_mock.h",
948     "sync/profile_sync_service_mock.cc",
949     "sync/profile_sync_service_mock.h",
950     "ui/webui/signin/login_ui_test_utils.cc",
951     "ui/webui/signin/login_ui_test_utils.h",
952   ]
954   public_deps = [
955     ":browser",
956     "//chrome/browser/ui:test_support",
957   ]
958   deps = [
959     "//base:prefs_test_support",
960     "//chrome/browser",
961     "//chrome/common",
962     "//chrome/common/safe_browsing:proto",
963     "//components/invalidation",
964     "//components/invalidation:test_support",
965     "//components/password_manager/core/browser:test_support",
966     "//components/search_engines:test_support",
967     "//content/test:test_support",
968     "//chrome/app/theme:theme_resources",
969     "//net:test_support",
970     "//skia",
971     "//testing/gmock",
972     "//testing/gtest",
973     "//ui/gfx",
974   ]
976   if (!is_ios) {
977     deps += [
978       "//components/sessions:test_support",
979       "//google_apis:test_support",
980     ]
981   }
983   if (enable_extensions) {
984     sources += [
985       "extensions/extension_action_test_util.cc",
986       "extensions/extension_action_test_util.h",
987     ]
988     deps += [ "//extensions:test_support" ]
989   }
991   if (is_chromeos) {
992     sources += [
993       "chromeos/app_mode/fake_cws.cc",
994       "chromeos/app_mode/fake_cws.h",
995       "chromeos/file_manager/fake_disk_mount_manager.cc",
996       "chromeos/file_manager/fake_disk_mount_manager.h",
997       "chromeos/input_method/mock_candidate_window_controller.cc",
998       "chromeos/input_method/mock_candidate_window_controller.h",
999       "chromeos/input_method/mock_input_method_engine.cc",
1000       "chromeos/input_method/mock_input_method_engine.h",
1001       "chromeos/input_method/mock_input_method_manager.cc",
1002       "chromeos/input_method/mock_input_method_manager.h",
1003       "chromeos/login/fake_login_utils.cc",
1004       "chromeos/login/fake_login_utils.h",
1005       "chromeos/login/mock_login_utils.cc",
1006       "chromeos/login/mock_login_utils.h",
1007       "chromeos/login/screens/mock_device_disabled_screen_actor.cc",
1008       "chromeos/login/screens/mock_device_disabled_screen_actor.h",
1009       "chromeos/login/test/oobe_screen_waiter.cc",
1010       "chromeos/login/test/oobe_screen_waiter.h",
1011       "chromeos/login/test/js_checker.cc",
1012       "chromeos/login/test/js_checker.h",
1013       "chromeos/login/ui/mock_login_display.cc",
1014       "chromeos/login/ui/mock_login_display.h",
1015       "chromeos/login/ui/mock_login_display_host.cc",
1016       "chromeos/login/ui/mock_login_display_host.h",
1017       "chromeos/login/users/avatar/mock_user_image_manager.cc",
1018       "chromeos/login/users/avatar/mock_user_image_manager.h",
1019       "chromeos/login/users/fake_supervised_user_manager.cc",
1020       "chromeos/login/users/fake_supervised_user_manager.h",
1021       "chromeos/login/users/fake_user_manager.cc",
1022       "chromeos/login/users/fake_user_manager.h",
1023       "chromeos/login/users/mock_user_manager.cc",
1024       "chromeos/login/users/mock_user_manager.h",
1025       "chromeos/net/network_portal_detector_test_utils.cc",
1026       "chromeos/net/network_portal_detector_test_utils.h",
1027       "chromeos/policy/cloud_external_data_manager_base_test_util.cc",
1028       "chromeos/policy/cloud_external_data_manager_base_test_util.h",
1029       "chromeos/policy/device_policy_builder.cc",
1030       "chromeos/policy/device_policy_builder.h",
1031       "chromeos/policy/fake_consumer_management_service.cc",
1032       "chromeos/policy/fake_consumer_management_service.h",
1033       "chromeos/policy/fake_device_cloud_policy_initializer.cc",
1034       "chromeos/policy/fake_device_cloud_policy_initializer.h",
1035       "chromeos/policy/fake_device_cloud_policy_manager.cc",
1036       "chromeos/policy/fake_device_cloud_policy_manager.h",
1037       "chromeos/policy/stub_enterprise_install_attributes.cc",
1038       "chromeos/policy/stub_enterprise_install_attributes.h",
1039       "chromeos/settings/device_settings_test_helper.cc",
1040       "chromeos/settings/device_settings_test_helper.h",
1041       "chromeos/system/fake_input_device_settings.cc",
1042       "chromeos/system/fake_input_device_settings.h",
1043     ]
1044     configs += [ "//build/config/linux:dbus" ]
1045     deps += [ "//chromeos:test_support" ]
1046   }
1048   if (enable_configuration_policy) {
1049     sources += [
1050       "policy/test/local_policy_test_server.cc",
1051       "policy/test/local_policy_test_server.h",
1052     ]
1053     public_deps += [
1054       "//components/policy:policy_component_test_support",
1055       "//components/policy:test_support",
1056     ]
1057   }
1059   if (safe_browsing_mode == 1) {
1060     sources += [
1061       "extensions/fake_safe_browsing_database_manager.cc",
1062       "extensions/fake_safe_browsing_database_manager.h",
1063     ]
1064   }
1066   if (enable_extensions) {
1067     sources += [
1068       "drive/dummy_drive_service.cc",
1069       "drive/dummy_drive_service.h",
1070       "drive/fake_drive_service.cc",
1071       "drive/fake_drive_service.h",
1072       "drive/test_util.cc",
1073       "drive/test_util.h",
1074       "extensions/api/messaging/native_messaging_test_util.cc",
1075       "extensions/api/messaging/native_messaging_test_util.h",
1076       "extensions/extension_notification_observer.cc",
1077       "extensions/extension_notification_observer.h",
1078       "extensions/mock_extension_special_storage_policy.cc",
1079       "extensions/mock_extension_special_storage_policy.h",
1080       "extensions/test_blacklist.cc",
1081       "extensions/test_blacklist.h",
1082       "extensions/test_blacklist_state_fetcher.cc",
1083       "extensions/test_blacklist_state_fetcher.h",
1084       "extensions/test_extension_environment.cc",
1085       "extensions/test_extension_environment.h",
1086       "extensions/test_extension_dir.cc",
1087       "extensions/test_extension_dir.h",
1088       "extensions/test_extension_prefs.cc",
1089       "extensions/test_extension_prefs.h",
1090       "extensions/test_extension_service.cc",
1091       "extensions/test_extension_service.h",
1092       "extensions/test_extension_system.cc",
1093       "extensions/test_extension_system.h",
1094       "media_galleries/media_galleries_test_util.cc",
1095       "media_galleries/media_galleries_test_util.h",
1096     ]
1097     deps += [ "//components/storage_monitor:test_support" ]
1098   }
1100   if (enable_mdns) {
1101     sources += [
1102       "local_discovery/test_service_discovery_client.cc",
1103       "local_discovery/test_service_discovery_client.h",
1104     ]
1105   }
1107   if (enable_app_list) {
1108     sources += [
1109       "ui/app_list/test/chrome_app_list_test_support.cc",
1110       "ui/app_list/test/chrome_app_list_test_support.h",
1111       "ui/app_list/test/test_app_list_controller_delegate.cc",
1112       "ui/app_list/test/test_app_list_controller_delegate.h",
1113     ]
1114   }
1116   if (enable_wifi_bootstrapping) {
1117     sources += [
1118       "local_discovery/wifi/mock_wifi_manager.cc",
1119       "local_discovery/wifi/mock_wifi_manager.h",
1120     ]
1121   }