Add a Notification Settings Button to all web notifications behind the web platform...
[chromium-blink-merge.git] / chrome / browser / BUILD.gn
blob2c5489ea90b4c974348bb45b02afbe0e084e3579
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/chrome_build.gni")
6 import("//build/config/crypto.gni")
7 import("//build/config/features.gni")
8 import("//build/config/ui.gni")
9 import("//third_party/protobuf/proto_library.gni")
11 # //build/config/android/rules.gni imports //tools/grit/grit_rule.gni, which
12 # produces a conflict for the "grit" template so we have to only include one.
13 if (is_android) {
14   import("//build/config/android/rules.gni")
15 } else {
16   import("//tools/grit/grit_rule.gni")
18 if (is_desktop_linux) {
19   import("//build/config/linux/pkg_config.gni")
22 declare_args() {
23   # 'Ok Google' hotwording is disabled by default. Set to true to enable. (This
24   # will download a closed-source NaCl module at startup.) Chrome-branded
25   # ChromeOS builds have this enabled by default.
26   enable_hotwording = is_chrome_branded && is_chromeos
29 about_credits_file = "$target_gen_dir/about_credits.html"
30 additional_modules_list_file =
31     "$root_gen_dir/chrome/browser/internal/additional_modules_list.txt"
33 gypi_values = exec_script("//build/gypi_to_gn.py",
34                           [ rebase_path("../chrome_browser.gypi") ],
35                           "scope",
36                           [ "../chrome_browser.gypi" ])
38 if (is_win) {
39   # This is in a separate config so the flags can be applied to dependents.
40   # ldflags in GN aren't automatically inherited.
41   config("browser_win_linker_flags") {
42     libs = [
43       "credui.lib",
44       "netapi32.lib",
45       "ndfapi.lib",  # Used by browser/net/net_error_diagnostics_dialog_win.h
46     ]
47     ldflags = [ "/DELAYLOAD:ndfapi.dll" ]
48   }
51 if (is_desktop_linux) {
52   # Gnome-keyring is normally dynamically loaded. The gnome_keyring config
53   # will set this up.
54   pkg_config("gnome_keyring") {
55     packages = [ "gnome-keyring-1" ]
56     defines = [
57       "USE_GNOME_KEYRING",
58       "DLOPEN_GNOME_KEYRING",
59     ]
60     ignore_libs = true
61   }
63   # If you want to link gnome-keyring directly (use only for unit tests)
64   # ADDITIONALLY add this config on top of ":gnome_keyring". pkg-config is a
65   # bit slow, so prefer not to run it again. In practice, gnome-keyring's libs
66   # are just itself and common gnome ones we link already, so we can get away
67   # with additionally just coding the library name here.
68   config("gnome_keyring_direct") {
69     libs = [ "gnome-keyring" ]
70   }
73 source_set("browser") {
74   configs += [
75     "//build/config/compiler:wexit_time_destructors",
76     "//build/config:precompiled_headers",
77     "//third_party/WebKit/public:debug_devtools",
78   ]
79   defines = []
80   sources = []
81   libs = []
82   ldflags = []
84   # iOS/non-iOS shared deps. New dependencies should generally be added in the
85   # non-iOS deps below.
86   public_deps = [
87     "//components/autofill/core/browser",
88     "//content/public/browser",
89     "//sql",
90     "//sync",
91   ]
92   deps = [
93     "//base/allocator",
94     "//chrome:extra_resources",
95     "//chrome:resources",
96     "//chrome:strings",
97     "//chrome/app:generated_resources_map",
98     "//chrome/app/resources:platform_locale_settings",
99     "//chrome/app/theme:theme_resources",
100     "//chrome/browser/net:probe_message_proto",
101     "//chrome/browser/ui",
102     "//chrome/common",
103     "//components/autofill/core/browser",
104     "//components/bookmarks/browser",
105     "//components/bookmarks/managed",
106     "//components/captive_portal",
107     "//components/certificate_reporting",
108     "//components/cloud_devices/common",
109     "//components/component_updater",
110     "//components/compression",
111     "//components/content_settings/content/common",
112     "//components/content_settings/core/browser",
113     "//components/content_settings/core/common",
114     "//components/crx_file",
115     "//components/data_reduction_proxy/core/browser",
116     "//components/data_use_measurement/core",
117     "//components/device_event_log",
118     "//components/domain_reliability",
119     "//components/enhanced_bookmarks",
120     "//components/favicon/core",
121     "//components/favicon_base",
122     "//components/gcm_driver",
123     "//components/gcm_driver/instance_id",
124     "//components/google/core/browser",
125     "//components/guest_view/browser",
126     "//components/handoff",
127     "//components/history/core/browser",
128     "//components/history/core/common",
129     "//components/infobars/core",
130     "//components/invalidation/impl",
131     "//components/metrics:gpu",
132     "//components/metrics:net",
133     "//components/metrics:profiler",
134     "//components/metrics/proto:proto",
135     "//components/mime_util",
136     "//components/navigation_metrics",
137     "//components/network_time",
138     "//components/offline_pages",
139     "//components/omnibox/browser",
140     "//components/os_crypt",
141     "//components/packed_ct_ev_whitelist",
142     "//components/password_manager/core/browser",
143     "//components/password_manager/core/common",
144     "//components/policy:policy_component",
145     "//components/proxy_config",
146     "//components/query_parser",
147     "//components/rappor",
148     "//components/renderer_context_menu",
149     "//components/search",
150     "//components/search_engines",
151     "//components/search_provider_logos",
152     "//components/security_interstitials/core",
153     "//components/signin/core/browser",
154     "//components/ssl_errors",
155     "//components/startup_metric_utils",
156     "//components/strings",
157     "//components/suggestions",
158     "//components/sync_driver",
159     "//components/tracing:startup_tracing",
160     "//components/translate/core/browser",
161     "//components/translate/core/common",
162     "//components/ui/zoom",
163     "//components/undo",
164     "//components/update_client",
165     "//components/url_formatter",
166     "//components/user_prefs",
167     "//components/user_prefs/tracked:user_prefs_tracked",
168     "//components/variations",
169     "//components/variations/net",
170     "//components/variations/service",
171     "//components/webdata/common",
172     "//components/webdata_services",
173     "//components/web_resource",
174     "//content/public/browser",
175     "//content/public/common",
176     "//courgette:courgette_lib",
177     "//crypto",
178     "//google_apis",
179     "//gpu/config",
180     "//skia",
181     "//sql",
182     "//sync",
183     "//third_party/cacheinvalidation",
184     "//third_party/icu",
185     "//third_party/libxml",
186     "//third_party/libjingle",
187     "//third_party/widevine/cdm:version_h",
188     "//third_party/zlib",
189     "//third_party/zlib:minizip",
190     "//third_party/zlib:zip",
191     "//ui/base",
192     "//ui/events:events_base",
193     "//ui/gfx",
194     "//ui/gfx/geometry",
195     "//ui/message_center",
196     "//ui/shell_dialogs",
197     "//ui/strings",
198     "//ui/resources",
199   ]
201   sources +=
202       rebase_path(gypi_values.chrome_browser_undo_sources, ".", "//chrome")
204   if (!is_ios) {
205     sources +=
206         rebase_path(gypi_values.chrome_browser_non_ios_sources, ".", "//chrome")
207     sources += rebase_path(gypi_values.chrome_browser_autocomplete_sources,
208                            ".",
209                            "//chrome")
210     sources += rebase_path(gypi_values.chrome_browser_bookmark_sources,
211                            ".",
212                            "//chrome")
213     sources += rebase_path(gypi_values.chrome_browser_browser_process_sources,
214                            ".",
215                            "//chrome")
216     sources += rebase_path(gypi_values.chrome_browser_content_settings_sources,
217                            ".",
218                            "//chrome")
219     sources += rebase_path(gypi_values.chrome_browser_engagement_sources,
220                            ".",
221                            "//chrome")
222     sources +=
223         rebase_path(gypi_values.chrome_browser_favicon_sources, ".", "//chrome")
224     sources +=
225         rebase_path(gypi_values.chrome_browser_google_sources, ".", "//chrome")
226     sources +=
227         rebase_path(gypi_values.chrome_browser_history_sources, ".", "//chrome")
228     sources +=
229         rebase_path(gypi_values.chrome_browser_metrics_sources, ".", "//chrome")
230     sources +=
231         rebase_path(gypi_values.chrome_browser_net_sources, ".", "//chrome")
232     sources += rebase_path(gypi_values.chrome_browser_password_manager_sources,
233                            ".",
234                            "//chrome")
235     sources += rebase_path(gypi_values.chrome_browser_permissions_sources,
236                            ".",
237                            "//chrome")
238     sources += rebase_path(gypi_values.chrome_browser_predictor_sources,
239                            ".",
240                            "//chrome")
241     sources +=
242         rebase_path(gypi_values.chrome_browser_pref_sources, ".", "//chrome")
243     sources += rebase_path(gypi_values.chrome_browser_profiles_sources,
244                            ".",
245                            "//chrome")
246     sources += rebase_path(gypi_values.chrome_browser_search_engines_sources,
247                            ".",
248                            "//chrome")
249     sources += rebase_path(gypi_values.chrome_browser_services_sources,
250                            ".",
251                            "//chrome")
252     sources +=
253         rebase_path(gypi_values.chrome_browser_session_sources, ".", "//chrome")
254     sources +=
255         rebase_path(gypi_values.chrome_browser_signin_sources, ".", "//chrome")
256     sources +=
257         rebase_path(gypi_values.chrome_browser_ssl_sources, ".", "//chrome")
258     sources +=
259         rebase_path(gypi_values.chrome_browser_sync_sources, ".", "//chrome")
260     sources += rebase_path(gypi_values.chrome_browser_web_resource_sources,
261                            ".",
262                            "//chrome")
264     deps += [
265       "//apps",
266       "//cc",
267       "//chrome/app:generated_resources_map",
268       "//chrome/app/theme:theme_resources",
269       "//chrome/browser/devtools",
270       "//chrome/browser/resources:component_extension_resources",
271       "//chrome/common/net",
272       "//chrome/installer/util",
273       "//components/about_handler",
274       "//components/app_modal",
275       "//components/autofill/content/browser",
276       "//components/browsing_data",
277       "//components/data_reduction_proxy/content/browser",
278       "//components/data_use_measurement/content",
279       "//components/devtools_discovery",
280       "//components/devtools_http_handler",
281       "//components/dom_distiller/content:content_browser",
282       "//components/error_page/common",
283       "//components/favicon/content",
284       "//components/history/content/browser",
285       "//components/keyed_service/content",
286       "//components/navigation_interception",
287       "//components/network_hints/common",
288       "//components/password_manager/content/browser",
289       "//components/password_manager/sync/browser",
290       "//components/plugins/common",
291       "//components/proxy_config",
292       "//components/safe_json",
293       "//components/sessions",
294       "//components/storage_monitor",
295       "//components/syncable_prefs",
296       "//components/translate/content/browser",
297       "//components/upload_list",
298       "//components/url_matcher",
299       "//components/visitedlink/browser",
300       "//components/visitedlink/common",
301       "//components/web_cache/browser",
302       "//components/web_modal",
303       "//content/app/resources",
304       "//media",
305       "//media/midi",
306       "//mojo/application/public/cpp",
307       "//mojo/common",
308       "//mojo/environment:chromium",
309       "//net:extras",
310       "//net:net_with_v8",
311       "//storage/browser",
312       "//storage/common",
313       "//third_party/WebKit/public:image_resources",
314       "//third_party/WebKit/public:resources",
315       "//third_party/leveldatabase",
316       "//third_party/libaddressinput",
317       "//third_party/libyuv",
318       "//third_party/mojo/src/mojo/edk/system",
319       "//third_party/mojo/src/mojo/public/cpp/bindings",
320       "//third_party/mojo/src/mojo/public/js",
321       "//third_party/re2",
322       "//third_party/smhasher:cityhash",
323       "//third_party/webrtc/modules/desktop_capture",
324       "//ui/base/ime",
325       "//ui/gl",
326       "//ui/resources",
327       "//ui/surface",
328       "//ui/web_dialogs",
329       "//v8",
330     ]
332     if (toolkit_views) {
333       deps += [ "//ui/views" ]
334     }
335   } else {  # iOS
336     sources +=
337         rebase_path(gypi_values.chrome_browser_ios_sources, ".", "//chrome")
338     sources +=
339         rebase_path(gypi_values.chrome_browser_google_sources, ".", "//chrome")
340     deps += [ "//net" ]
341     libs += [
342       "CoreTelephony.framework",
343       "CoreText.framework",
344       "MobileCoreServices.framework",
345       "QuartzCore.framework",
346     ]
347     ldflags += [
348       "-weak_framework",
349       "CoreImage",
350     ]
351   }
353   if (is_win || is_mac) {
354     sources +=
355         rebase_path(gypi_values.chrome_browser_win_mac_sources, ".", "//chrome")
356   }
357   if (!is_win && !is_mac && !is_ios) {
358     sources += [ "net/net_error_diagnostics_dialog_generic.cc" ]
359   }
360   if (!is_android && !is_ios && !is_chromeos && enable_configuration_policy) {
361     sources += [
362       "net/disk_cache_dir_policy_handler.cc",
363       "net/disk_cache_dir_policy_handler.h",
364     ]
365   }
366   if (!is_android && !is_ios && enable_configuration_policy) {
367     sources += [
368       "download/download_dir_policy_handler.cc",
369       "download/download_dir_policy_handler.h",
370     ]
371   }
372   if (is_mac) {
373     sources +=
374         rebase_path(gypi_values.chrome_browser_mac_sources, ".", "//chrome")
375     deps += [
376       #"app_shim"  TODO(GYP) bug 512600
377       #"browser_app_shim"  TODO(GYP) bug 512600
378     ]
379   }
380   if (is_mac || is_android) {
381     sources += rebase_path(
382             gypi_values.chrome_browser_password_manager_mac_android_sources,
383             ".",
384             "//chrome")
385   }
386   if (enable_extensions) {
387     public_deps += [ "//chrome/browser/extensions" ]
388     deps += [
389       "//chrome/browser/sync_file_system/drive_backend:sync_file_system_drive_proto",
390       "//chrome/common/extensions/api",
391       "//chrome/common/extensions/api:api_registration",
392       "//components/drive:drive",
393       "//components/proximity_auth/ble",
394       "//components/proximity_auth/cryptauth",
395       "//extensions/components/javascript_dialog_extensions_client",
396       "//media/cast:net",
397     ]
398     sources += rebase_path(gypi_values.chrome_browser_extensions_sources,
399                            ".",
400                            "//chrome")
401   }
402   if (enable_background) {
403     sources += rebase_path(gypi_values.chrome_browser_background_sources,
404                            ".",
405                            "//chrome")
406     if (!use_aura || is_win || is_chromeos) {
407       sources -= [ "background/background_mode_manager_aura.cc" ]
408     }
409   }
410   if (enable_task_manager) {
411     sources += rebase_path(gypi_values.chrome_browser_task_manager_sources,
412                            ".",
413                            "//chrome")
414   }
415   if (enable_spellcheck) {
416     sources += rebase_path(gypi_values.chrome_browser_spellchecker_sources,
417                            ".",
418                            "//chrome")
419     if (!is_android) {
420       deps += [ "//third_party/hunspell" ]
421     }
422   }
423   if (enable_nacl) {
424     sources +=
425         rebase_path(gypi_values.chrome_browser_nacl_sources, ".", "//chrome")
426     deps += [ "//components/nacl:nacl_browser" ]
427   }
429   if (enable_configuration_policy) {
430     sources +=
431         rebase_path(gypi_values.chrome_browser_policy_shared_with_ios_sources,
432                     ".",
433                     "//chrome")
434     deps += [
435       "//components/policy",
436       "//components/policy/proto",
437     ]
438     if (!is_ios) {
439       sources += rebase_path(gypi_values.chrome_browser_policy_non_ios_sources,
440                              ".",
441                              "//chrome")
442     }
443     if (!is_chromeos) {
444       sources += rebase_path(
445               gypi_values.chrome_browser_policy_shared_with_ios_not_chromeos_sources,
446               ".",
447               "//chrome")
448     }
449     if (is_win || is_mac || is_desktop_linux) {
450       sources += rebase_path(gypi_values.chrome_browser_policy_desktop_sources,
451                              ".",
452                              "//chrome")
453     }
454     if (is_android || is_ios) {
455       sources += rebase_path(gypi_values.chrome_browser_policy_mobile_sources,
456                              ".",
457                              "//chrome")
458     } else {
459       deps += [
460         "//chrome/browser/policy:path_parser",
461         "//net:net_browser_services",
462       ]
463     }
464   } else {
465     # Configuration policy disabled.
466     sources += rebase_path(gypi_values.chrome_browser_policy_disabled_sources,
467                            ".",
468                            "//chrome")
469   }
471   if (enable_plugins) {
472     sources +=
473         rebase_path(gypi_values.chrome_browser_plugins_sources, ".", "//chrome")
474     deps += [
475       "//components/pdf/browser",
476       "//ppapi/proxy:ipc",
477       "//third_party/adobe/flash:flapper_version_h",
478     ]
479   }
480   if (safe_browsing_mode != 0) {
481     sources +=
482         rebase_path(gypi_values.chrome_browser_safe_browsing_basic_sources,
483                     ".",
484                     "//chrome")
485     deps += [
486       "//chrome/browser/safe_browsing:chunk_proto",
487       "//chrome/browser/safe_browsing:metadata_proto",
488       "//chrome/browser/safe_browsing:report_proto",
489     ]
490     if (safe_browsing_mode == 1) {
491       sources +=
492           rebase_path(gypi_values.chrome_browser_safe_browsing_full_sources,
493                       ".",
494                       "//chrome")
495       deps += [ "//chrome/common/safe_browsing:proto" ]
496       if (is_win) {
497         deps += [ "//chrome/browser/safe_browsing/incident_reporting:state_store_data_proto" ]
498       }
499     } else if (safe_browsing_mode == 3) {
500       sources += rebase_path(
501               gypi_values.chrome_browser_safe_browsing_mobile_extended_sources,
502               ".",
503               "//chrome")
504     }
505   }
507   if (enable_hotwording) {
508     defines += [ "ENABLE_HOTWORDING" ]
509   }
511   if (is_linux) {
512     deps += [ "//device/media_transfer_protocol" ]
513   }
515   if (use_udev) {
516     deps += [ "//device/udev_linux" ]
517   }
519   if (is_linux && !is_chromeos) {
520     deps += [ "//third_party/speech-dispatcher" ]
521   }
523   if (is_chromeos) {
524     sources += rebase_path(gypi_values.chrome_browser_chromeos_sources,
525                            ".",
526                            "//chrome")
527     deps += [ "//chrome/browser/chromeos" ]
528   }
530   if (is_ios) {
531     sources -= [
532       "metrics/signin_status_metrics_provider_base.cc",
533       "metrics/signin_status_metrics_provider_base.h",
534     ]
535   }
537   if (is_chromeos || is_ios) {
538     sources -= [
539       "metrics/signin_status_metrics_provider.cc",
540       "metrics/signin_status_metrics_provider.h",
541     ]
542   }
544   if (use_cups) {
545     configs += [ "//printing:cups" ]
546   }
547   if (is_desktop_linux) {
548     sources += rebase_path(gypi_values.chrome_browser_gnome_keyring_sources,
549                            ".",
550                            "//chrome")
551     configs += [ ":gnome_keyring" ]
552   }
553   if (is_desktop_linux) {
554     sources += rebase_path(gypi_values.chrome_browser_libsecret_sources,
555                            ".",
556                            "//chrome")
557     defines += [ "USE_LIBSECRET" ]
558   }
559   if (use_aura) {
560     sources +=
561         rebase_path(gypi_values.chrome_browser_aura_sources, ".", "//chrome")
562     deps += [
563       "//ui/aura",
564       "//ui/compositor",
565       "//ui/keyboard",
566     ]
567   }
568   if (ui_compositor_image_transport) {
569     deps += [ "//ui/gl" ]
570   }
572   if (use_ash) {
573     sources +=
574         rebase_path(gypi_values.chrome_browser_ash_sources, ".", "//chrome")
575   }
577   if (use_x11) {
578     sources +=
579         rebase_path(gypi_values.chrome_browser_x11_sources, ".", "//chrome")
580   } else {
581     sources -= [ "password_manager/password_store_x.cc" ]
582   }
583   if (is_posix && !is_mac && !is_ios) {
584     sources += [
585       "//chrome/app/chrome_crash_reporter_client.cc",
586       "//chrome/app/chrome_crash_reporter_client.h",
587     ]
588     deps += [
589       "//components/crash/content/app",
590       "//components/crash/content/browser",
591     ]
592   }
593   if (use_nss_certs) {
594     sources +=
595         rebase_path(gypi_values.chrome_browser_nss_sources, ".", "//chrome")
596     if (is_chromeos) {
597       sources -= [ "net/nss_context_linux.cc" ]
598     }
599   }
600   if (enable_notifications) {
601     sources += rebase_path(gypi_values.chrome_browser_notifications_sources,
602                            ".",
603                            "//chrome")
604     if (!is_android) {
605       sources += rebase_path(
606               gypi_values.chrome_browser_notifications_non_android_sources,
607               ".",
608               "//chrome")
609     }
610   }
611   if (enable_themes) {
612     sources +=
613         rebase_path(gypi_values.chrome_browser_themes_sources, ".", "//chrome")
614   }
616   if (enable_basic_printing || enable_print_preview) {
617     # Some form of printing support.
618     sources += rebase_path(gypi_values.chrome_browser_printing_basic_sources,
619                            ".",
620                            "//chrome")
621     deps += [
622       "//printing",
623       "//components/printing/browser",
624     ]
626     if (is_win) {
627       sources += rebase_path(gypi_values.chrome_browser_printing_emf_sources,
628                              ".",
629                              "//chrome")
630     }
631     if (enable_print_preview) {
632       # Full printing on top of the above.
633       sources += rebase_path(gypi_values.chrome_browser_printing_full_sources,
634                              ".",
635                              "//chrome")
636     } else {
637       # Partial-only printing support.
638       sources +=
639           rebase_path(gypi_values.chrome_browser_printing_basic_only_sources,
640                       ".",
641                       "//chrome")
642     }
643   }
644   if (enable_captive_portal_detection) {
645     sources += rebase_path(gypi_values.chrome_browser_captive_portal_sources,
646                            ".",
647                            "//chrome")
648   }
649   if (enable_session_service) {
650     sources += rebase_path(gypi_values.chrome_browser_session_service_sources,
651                            ".",
652                            "//chrome")
653   }
655   if (!is_android && !is_ios && !is_chromeos) {
656     sources +=
657         rebase_path(gypi_values.chrome_browser_desktop_sources, ".", "//chrome")
658   }
660   if (is_android || is_ios) {
661     # Mobile.
662     sources +=
663         rebase_path(gypi_values.chrome_browser_mobile_sources, ".", "//chrome")
664   } else {
665     # Non-mobile.
666     sources += rebase_path(gypi_values.chrome_browser_non_mobile_sources,
667                            ".",
668                            "//chrome")
669     deps += [
670       "//components/feedback",
671       "//components/webusb",
672       "//device/core",
673       "//device/devices_app/public/cpp",
674       "//device/devices_app/public/cpp:factory",
675       "//device/usb",
676     ]
677   }
679   if (!is_official_build) {
680     sources += [
681       "search/local_files_ntp_source.cc",
682       "search/local_files_ntp_source.h",
683     ]
684   }
686   if (is_android) {
687     sources +=
688         rebase_path(gypi_values.chrome_browser_android_sources, ".", "//chrome")
689     sources += rebase_path(gypi_values.chrome_browser_bookmark_android_sources,
690                            ".",
691                            "//chrome")
692     deps += [
693       ":client_discourse_context_proto",
694       ":delta_file_proto",
695       ":jni_headers",
696       "//components/cdm/browser",
697       "//components/enhanced_bookmarks",
698       "//components/precache/content",
699       "//components/precache/core",
700       "//components/resources:components_resources",
701       "//components/service_tab_launcher",
702       "//components/toolbar",
703       "//components/web_contents_delegate_android",
704       "//third_party/android_opengl/etc1",
705       "//third_party/android_tools:cpu_features",
706       "//third_party/libaddressinput:util",
707     ]
708     deps -= [
709       "//third_party/libaddressinput",
710       "//components/storage_monitor",
711       "//components/web_modal",
712     ]
713     defines += [ "ENABLE_DATA_REDUCTION_PROXY_DEBUGGING" ]
715     if (use_seccomp_bpf) {
716       defines += [ "USE_SECCOMP_BPF" ]
717       deps += [ "//sandbox/linux:seccomp_bpf" ]
718     }
719   }
721   if (is_mac) {
722     deps += [
723       "//third_party/google_toolbox_for_mac",
724       "//third_party/mozilla",
725     ]
726     libs += [
727       "Accelerate.framework",
728       "AddressBook.framework",
729       "AudioUnit.framework",
730       "DiskArbitration.framework",
731       "IOKit.framework",
732       "ImageCaptureCore.framework",
733       "OpenGL.framework",
734       "QuartzCore.framework",
735       "SecurityInterface.framework",
736     ]
737   }
739   if (enable_rlz) {
740     deps += [ ":rlz" ]
741   }
743   # TODO(GYP)
744   # Temporary fix to break the browser target into smaller chunks so it
745   # will link with goma builds.
746   #["OS=="win" and chromium_win_pch==0", {
747   #  "msvs_shard": 4,
748   #}],
750   if (is_win) {
751     sources +=
752         rebase_path(gypi_values.chrome_browser_win_sources, ".", "//chrome")
753     public_deps += [
754       "//ui/views",
755       "//ui/views/controls/webview",
756     ]
757     deps += [
758       ":chrome_process_finder",
759       "//chrome:version_header",
760       "//chrome/installer/util:strings",
761       "//chrome_elf",
762       "//chrome_elf:constants",
763       "//chrome_elf:dll_hash",
764       "//components/browser_watcher",
765       "//components/browser_watcher:browser_watcher_client",
766       "//google_update",
767       "//third_party/iaccessible2",
768       "//third_party/isimpledom",
769       "//third_party/wtl",
770       "//ui/metro_viewer",
771       "//win8:metro_viewer",
772     ]
774     all_dependent_configs = [ ":browser_win_linker_flags" ]
776     if (!is_chrome_branded) {
777       deps -= [ "//google_update" ]
778       sources -= [
779         "google/did_run_updater_win.cc",
780         "google/did_run_updater_win.h",
781         "google/google_update_win.cc",
782         "google/google_update_win.h",
783       ]
784     }
785   } else {
786     # Non-Windows.
787     sources +=
788         rebase_path(gypi_values.chrome_browser_non_win_sources, ".", "//chrome")
789     if (toolkit_views) {
790       deps += [
791         "//ui/views",
792         "//ui/views/controls/webview",
793       ]
794     }
795   }
797   if (is_linux) {
798     sources +=
799         rebase_path(gypi_values.chrome_browser_linux_sources, ".", "//chrome")
800     if (use_aura) {
801       configs += [
802         "//build/config/linux:dbus",
803         "//build/config/linux:fontconfig",
804       ]
805       deps += [ "//dbus" ]
806     }
807     if (use_x11) {
808       configs += [ "//build/config/linux:x11" ]
809       deps += [ "//ui/gfx/x" ]
810     }
811   }
813   if (is_desktop_linux) {
814     sources += rebase_path(gypi_values.chrome_browser_linux_desktop_sources,
815                            ".",
816                            "//chrome")
817   }
818   if (enable_plugin_installation) {
819     sources +=
820         rebase_path(gypi_values.chrome_browser_plugin_installation_sources,
821                     ".",
822                     "//chrome")
823   }
824   if (enable_app_list) {
825     deps += [ "//ui/app_list" ]
826   }
827   if (enable_supervised_users) {
828     sources += rebase_path(gypi_values.chrome_browser_supervised_user_sources,
829                            ".",
830                            "//chrome")
831   }
832   if (enable_supervised_users && !is_android && !is_ios) {
833     sources +=
834         rebase_path(gypi_values.chrome_browser_supervised_user_legacy_sources,
835                     ".",
836                     "//chrome")
837   }
838   if (enable_supervised_users && enable_themes) {
839     sources += rebase_path(
840             gypi_values.chrome_browser_supervised_user_and_themes_sources,
841             ".",
842             "//chrome")
843   }
844   if (enable_webrtc) {
845     sources +=
846         rebase_path(gypi_values.chrome_browser_webrtc_sources, ".", "//chrome")
847   }
848   if (enable_service_discovery) {
849     sources += rebase_path(gypi_values.chrome_browser_service_discovery_sources,
850                            ".",
851                            "//chrome")
852   }
853   if (enable_mdns) {
854     sources +=
855         rebase_path(gypi_values.chrome_browser_mdns_sources, ".", "//chrome")
856   }
857   if (!enable_autofill_dialog || is_android || is_ios) {
858     sources -= [
859       "autofill/validation_rules_storage_factory.cc",
860       "autofill/validation_rules_storage_factory.h",
861     ]
862   }
863   if (enable_wifi_bootstrapping) {
864     sources +=
865         rebase_path(gypi_values.chrome_browser_wifi_bootstrapping_sources,
866                     ".",
867                     "//chrome")
868     if (is_win || is_mac) {
869       # TODO(brettw) as of this writing wifi bootstrapping is set on Windows
870       # and Mac, so this test is meaningless. Can we merge these lists?
871       sources += rebase_path(
872               gypi_values.chrome_browser_wifi_bootstrapping_win_mac_sources,
873               ".",
874               "//chrome")
875     }
876   }
877   if (enable_media_router) {
878     deps += [ "//chrome/browser/media/router" ]
879   }
882 if (is_android) {
883   # GYP version: chrome/chrome_browser.gypi:chrome_browser_jni_headers
884   generate_jni("jni_headers") {
885     sources =
886         rebase_path(gypi_values.chrome_browser_jni_sources, ".", "//chrome")
887     jni_package = "chrome"
888   }
890   #GYP: '//chrome/chrome_browser.gypi:client_discourse_context_proto'
891   proto_library("client_discourse_context_proto") {
892     sources = [
893       "android/proto/client_discourse_context.proto",
894     ]
895   }
897   #GYP: '//chrome/chrome_browser.gypi:delta_file_proto'
898   proto_library("delta_file_proto") {
899     sources = [
900       "android/proto/delta_file.proto",
901     ]
902   }
905 if (is_win) {
906   source_set("chrome_process_finder") {
907     sources = [
908       "chrome_process_finder_win.cc",
909       "chrome_process_finder_win.h",
910     ]
911     deps = [
912       "//base",
913       "//chrome/browser/metro_utils",
914       "//chrome/common:constants",
915     ]
916     if (enable_configuration_policy) {
917       deps += [ "//chrome/browser/policy:path_parser" ]
918     }
919   }
922 # GYP version: chrome/chrome_resources.gyp:chrome_resources
923 # (generate_browser_resources action)
924 grit("resources") {
925   source = "browser_resources.grd"
926   output_dir = "$root_gen_dir/chrome"
927   outputs = [
928     "grit/browser_resources.h",
929     "browser_resources.pak",
930   ]
932   omnibox_mojom_file =
933       "$root_gen_dir/chrome/browser/ui/webui/omnibox/omnibox.mojom.js"
935   grit_flags = [
936     "-E",
937     "about_credits_file=" + rebase_path(about_credits_file, root_build_dir),
938     "-E",
939     "additional_modules_list_file=" +
940         rebase_path(additional_modules_list_file, root_build_dir),
941     "-E",
942     "omnibox_mojom_file=" + rebase_path(omnibox_mojom_file, root_build_dir),
943   ]
945   deps = [
946     ":about_credits",
947     ":chrome_internal_resources_gen",
949     # Depend only on the generated mojo bindings since we read the .mojom.js
950     # file, rather than the whole mojo target which will link the C++ bindings.
951     "//chrome/browser/ui/webui/omnibox:mojo_bindings__generator",
952   ]
953   inputs = [
954     omnibox_mojom_file,
955   ]
958 # GYP version: chrome/chrome_resource.gyp:about_credits
959 action("about_credits") {
960   script = "//tools/licenses.py"
962   inputs = [
963     # This is not a complete list. TODO(phajdan.jr, dbeam): licenses.py needs to
964     # generate a .d file with all the licenses/credits that about:credits uses.
965     # Then about:credits will automatically rebuild when one of them changes.
966     # See: depfile in gn's documentation (gn help depfile).
967     "resources/about_credits.tmpl",
968     "resources/about_credits_entry.tmpl",
969   ]
971   outputs = [
972     about_credits_file,
973   ]
975   args = [
976     "credits",
977     rebase_path(about_credits_file, root_build_dir),
978   ]
981 # GYP version: chrome/chrome_resource.gyp:chrome_internal_resources_gen
982 if (is_chrome_branded) {
983   action("chrome_internal_resources_gen") {
984     script = "internal/transform_additional_modules_list.py"
985     sources = [
986       "internal/resources/additional_modules_list.input",
987     ]
988     outputs = [
989       additional_modules_list_file,
990     ]
991     args = rebase_path(sources, root_build_dir) +
992            rebase_path(outputs, root_build_dir)
993   }
994 } else {
995   group("chrome_internal_resources_gen") {
996     # Empty placeholder.
997   }
1000 # In GYP this is part of test_support_common.
1001 source_set("test_support") {
1002   testonly = true
1004   # Always include this via the main test support target.
1005   visibility = [ "//chrome/test:test_support" ]
1007   sources = [
1008     "browsing_data/mock_browsing_data_appcache_helper.cc",
1009     "browsing_data/mock_browsing_data_appcache_helper.h",
1010     "browsing_data/mock_browsing_data_cache_storage_helper.cc",
1011     "browsing_data/mock_browsing_data_cache_storage_helper.h",
1012     "browsing_data/mock_browsing_data_channel_id_helper.cc",
1013     "browsing_data/mock_browsing_data_channel_id_helper.h",
1014     "browsing_data/mock_browsing_data_cookie_helper.cc",
1015     "browsing_data/mock_browsing_data_cookie_helper.h",
1016     "browsing_data/mock_browsing_data_database_helper.cc",
1017     "browsing_data/mock_browsing_data_database_helper.h",
1018     "browsing_data/mock_browsing_data_file_system_helper.cc",
1019     "browsing_data/mock_browsing_data_file_system_helper.h",
1020     "browsing_data/mock_browsing_data_flash_lso_helper.cc",
1021     "browsing_data/mock_browsing_data_flash_lso_helper.h",
1022     "browsing_data/mock_browsing_data_indexed_db_helper.cc",
1023     "browsing_data/mock_browsing_data_indexed_db_helper.h",
1024     "browsing_data/mock_browsing_data_local_storage_helper.cc",
1025     "browsing_data/mock_browsing_data_local_storage_helper.h",
1026     "browsing_data/mock_browsing_data_quota_helper.cc",
1027     "browsing_data/mock_browsing_data_quota_helper.h",
1028     "browsing_data/mock_browsing_data_service_worker_helper.cc",
1029     "browsing_data/mock_browsing_data_service_worker_helper.h",
1030     "download/download_test_file_activity_observer.cc",
1031     "download/download_test_file_activity_observer.h",
1032     "download/test_download_shelf.cc",
1033     "download/test_download_shelf.h",
1034     "invalidation/fake_invalidation_service.cc",
1035     "invalidation/fake_invalidation_service.h",
1036     "media/fake_desktop_media_list.cc",
1037     "media/fake_desktop_media_list.h",
1038     "net/dns_probe_test_util.cc",
1039     "net/dns_probe_test_util.h",
1040     "net/url_request_mock_util.cc",
1041     "net/url_request_mock_util.h",
1042     "notifications/notification_test_util.cc",
1043     "notifications/notification_test_util.h",
1044     "password_manager/mock_password_store_service.cc",
1045     "password_manager/mock_password_store_service.h",
1046     "password_manager/null_password_store_service.cc",
1047     "password_manager/null_password_store_service.h",
1048     "password_manager/password_manager_test_base.cc",
1049     "password_manager/password_manager_test_base.h",
1050     "password_manager/test_password_store_service.cc",
1051     "password_manager/test_password_store_service.h",
1052     "profile_resetter/profile_resetter_test_base.cc",
1053     "profile_resetter/profile_resetter_test_base.h",
1054     "search_engines/template_url_service_factory_test_util.cc",
1055     "search_engines/template_url_service_factory_test_util.h",
1056     "search_engines/template_url_service_test_util.cc",
1057     "search_engines/template_url_service_test_util.h",
1058     "sessions/session_restore_test_helper.cc",
1059     "sessions/session_restore_test_helper.h",
1060     "sessions/session_service_test_helper.cc",
1061     "sessions/session_service_test_helper.h",
1062     "signin/fake_account_fetcher_service_builder.cc",
1063     "signin/fake_account_fetcher_service_builder.h",
1064     "signin/fake_gaia_cookie_manager_service.cc",
1065     "signin/fake_gaia_cookie_manager_service.h",
1066     "signin/fake_profile_oauth2_token_service_builder.cc",
1067     "signin/fake_profile_oauth2_token_service_builder.h",
1068     "signin/fake_signin_manager_builder.cc",
1069     "signin/fake_signin_manager_builder.h",
1070     "ssl/ssl_client_auth_requestor_mock.cc",
1071     "ssl/ssl_client_auth_requestor_mock.h",
1072     "sync/profile_sync_components_factory_mock.cc",
1073     "sync/profile_sync_components_factory_mock.h",
1074     "sync/profile_sync_service_mock.cc",
1075     "sync/profile_sync_service_mock.h",
1076     "ui/webui/signin/login_ui_test_utils.cc",
1077     "ui/webui/signin/login_ui_test_utils.h",
1078   ]
1080   configs += [ "//build/config:precompiled_headers" ]
1082   public_deps = [
1083     ":browser",
1084     "//chrome/browser/ui:test_support",
1085   ]
1086   deps = [
1087     "//base:prefs_test_support",
1088     "//chrome/browser",
1089     "//chrome/common",
1090     "//chrome/common/safe_browsing:proto",
1091     "//components/invalidation/impl",
1092     "//components/invalidation/impl:test_support",
1093     "//components/password_manager/core/browser:test_support",
1094     "//components/search_engines:test_support",
1095     "//components/syncable_prefs:test_support",
1096     "//components/user_prefs/tracked:user_prefs_tracked_test_support",
1097     "//content/test:test_support",
1098     "//chrome/app/theme:theme_resources",
1099     "//net:test_support",
1100     "//skia",
1101     "//testing/gmock",
1102     "//testing/gtest",
1103     "//ui/gfx",
1104   ]
1106   if (!is_ios) {
1107     deps += [
1108       "//components/sessions:test_support",
1109       "//google_apis:test_support",
1110     ]
1111   }
1113   if (enable_extensions) {
1114     sources += [
1115       "extensions/extension_action_test_util.cc",
1116       "extensions/extension_action_test_util.h",
1117     ]
1118     deps += [ "//extensions:test_support" ]
1119   }
1121   if (is_chromeos) {
1122     sources += [
1123       "chromeos/app_mode/fake_cws.cc",
1124       "chromeos/app_mode/fake_cws.h",
1125       "chromeos/file_manager/fake_disk_mount_manager.cc",
1126       "chromeos/file_manager/fake_disk_mount_manager.h",
1127       "chromeos/input_method/mock_candidate_window_controller.cc",
1128       "chromeos/input_method/mock_candidate_window_controller.h",
1129       "chromeos/input_method/mock_input_method_engine.cc",
1130       "chromeos/input_method/mock_input_method_engine.h",
1131       "chromeos/input_method/mock_input_method_manager.cc",
1132       "chromeos/input_method/mock_input_method_manager.h",
1133       "chromeos/login/screens/mock_device_disabled_screen_actor.cc",
1134       "chromeos/login/screens/mock_device_disabled_screen_actor.h",
1135       "chromeos/login/session/user_session_manager_test_api.cc",
1136       "chromeos/login/session/user_session_manager_test_api.h",
1137       "chromeos/login/test/js_checker.cc",
1138       "chromeos/login/test/js_checker.h",
1139       "chromeos/login/test/oobe_screen_waiter.cc",
1140       "chromeos/login/test/oobe_screen_waiter.h",
1141       "chromeos/login/ui/mock_login_display.cc",
1142       "chromeos/login/ui/mock_login_display.h",
1143       "chromeos/login/ui/mock_login_display_host.cc",
1144       "chromeos/login/ui/mock_login_display_host.h",
1145       "chromeos/login/users/avatar/mock_user_image_manager.cc",
1146       "chromeos/login/users/avatar/mock_user_image_manager.h",
1147       "chromeos/login/users/fake_chrome_user_manager.cc",
1148       "chromeos/login/users/fake_chrome_user_manager.h",
1149       "chromeos/login/users/fake_supervised_user_manager.cc",
1150       "chromeos/login/users/fake_supervised_user_manager.h",
1151       "chromeos/login/users/mock_user_manager.cc",
1152       "chromeos/login/users/mock_user_manager.h",
1153       "chromeos/net/network_portal_detector_test_utils.cc",
1154       "chromeos/net/network_portal_detector_test_utils.h",
1155       "chromeos/policy/cloud_external_data_manager_base_test_util.cc",
1156       "chromeos/policy/cloud_external_data_manager_base_test_util.h",
1157       "chromeos/policy/device_policy_builder.cc",
1158       "chromeos/policy/device_policy_builder.h",
1159       "chromeos/policy/fake_consumer_management_service.cc",
1160       "chromeos/policy/fake_consumer_management_service.h",
1161       "chromeos/policy/fake_device_cloud_policy_initializer.cc",
1162       "chromeos/policy/fake_device_cloud_policy_initializer.h",
1163       "chromeos/policy/fake_device_cloud_policy_manager.cc",
1164       "chromeos/policy/fake_device_cloud_policy_manager.h",
1165       "chromeos/policy/stub_enterprise_install_attributes.cc",
1166       "chromeos/policy/stub_enterprise_install_attributes.h",
1167       "chromeos/settings/device_settings_test_helper.cc",
1168       "chromeos/settings/device_settings_test_helper.h",
1169       "chromeos/system/fake_input_device_settings.cc",
1170       "chromeos/system/fake_input_device_settings.h",
1171     ]
1172     configs += [ "//build/config/linux:dbus" ]
1173     deps += [ "//chromeos:test_support" ]
1174   }
1176   if (enable_configuration_policy) {
1177     sources += [
1178       "policy/test/local_policy_test_server.cc",
1179       "policy/test/local_policy_test_server.h",
1180     ]
1181     public_deps += [
1182       "//components/policy:policy_component_test_support",
1183       "//components/policy:test_support",
1184     ]
1185   }
1187   if (safe_browsing_mode == 1) {
1188     sources += [
1189       "extensions/fake_safe_browsing_database_manager.cc",
1190       "extensions/fake_safe_browsing_database_manager.h",
1191     ]
1192   }
1194   if (enable_extensions) {
1195     sources += [
1196       "extensions/api/messaging/native_messaging_test_util.cc",
1197       "extensions/api/messaging/native_messaging_test_util.h",
1198       "extensions/extension_notification_observer.cc",
1199       "extensions/extension_notification_observer.h",
1200       "extensions/mock_extension_special_storage_policy.cc",
1201       "extensions/mock_extension_special_storage_policy.h",
1202       "extensions/test_blacklist.cc",
1203       "extensions/test_blacklist.h",
1204       "extensions/test_blacklist_state_fetcher.cc",
1205       "extensions/test_blacklist_state_fetcher.h",
1206       "extensions/test_extension_dir.cc",
1207       "extensions/test_extension_dir.h",
1208       "extensions/test_extension_environment.cc",
1209       "extensions/test_extension_environment.h",
1210       "extensions/test_extension_prefs.cc",
1211       "extensions/test_extension_prefs.h",
1212       "extensions/test_extension_service.cc",
1213       "extensions/test_extension_service.h",
1214       "extensions/test_extension_system.cc",
1215       "extensions/test_extension_system.h",
1216       "media_galleries/media_galleries_test_util.cc",
1217       "media_galleries/media_galleries_test_util.h",
1218     ]
1219     deps += [
1220       "//components/drive:test_support",
1221       "//components/storage_monitor:test_support",
1222     ]
1223   }
1225   if (enable_mdns) {
1226     sources += [
1227       "local_discovery/test_service_discovery_client.cc",
1228       "local_discovery/test_service_discovery_client.h",
1229     ]
1230   }
1232   if (enable_app_list) {
1233     sources += [
1234       "ui/app_list/test/chrome_app_list_test_support.cc",
1235       "ui/app_list/test/chrome_app_list_test_support.h",
1236       "ui/app_list/test/test_app_list_controller_delegate.cc",
1237       "ui/app_list/test/test_app_list_controller_delegate.h",
1238     ]
1239   }
1241   if (enable_wifi_bootstrapping) {
1242     sources += [
1243       "local_discovery/wifi/mock_wifi_manager.cc",
1244       "local_discovery/wifi/mock_wifi_manager.h",
1245     ]
1246   }
1249 if (enable_rlz_support) {
1250   source_set("rlz") {
1251     sources =
1252         rebase_path(gypi_values.chrome_browser_rlz_sources, ".", "//chrome")
1253     deps = [
1254       "//components/google/core/browser",
1255       "//components/omnibox/browser",
1256       "//components/rlz",
1257       "//components/search_engines",
1258       "//rlz:rlz_lib",
1259     ]
1260   }