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