Move Webstore URL concepts to //extensions and out
[chromium-blink-merge.git] / chrome / browser / BUILD.gn
blob2c17f10f855d23477de70ed7d3f0fffafa182181
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")
9 # //build/config/android/rules.gni imports //tools/grit/grit_rule.gni, which
10 # produces a conflict for the "grit" template so we have to only include one.
11 if (is_android) {
12   import("//build/config/android/rules.gni")
13 } else {
14   import("//tools/grit/grit_rule.gni")
17 about_credits_file = "$target_gen_dir/about_credits.html"
18 additional_modules_list_file =
19     "$root_gen_dir/chrome/browser/internal/additional_modules_list.txt"
21 gypi_values = exec_script(
22     "//build/gypi_to_gn.py",
23     [ rebase_path("../chrome_browser.gypi") ],
24     "scope",
25     [ "../chrome_browser.gypi" ])
27 static_library("browser") {
28   configs += [ "//build/config/compiler:wexit_time_destructors" ]
29   defines = []
30   sources = []
31   libs = []
32   ldflags = []
34   # iOS/non-iOS shared deps. New dependencies should generally be added in the
35   # non-iOS deps below.
36   deps = [
37     "//base/allocator",
38     "//chrome:extra_resources",
39     "//chrome:resources",
40     "//chrome:strings",
41     "//chrome/app:generated_resources_map",
42     "//chrome/app/resources:platform_locale_settings",
43     "//chrome/app/theme:theme_resources",
44     "//chrome/browser/history:in_memory_url_index_cache_proto",
45     "//chrome/browser/net:cert_logger_proto",
46     "//chrome/browser/net:probe_message_proto",
47     "//chrome/browser/ui",
48     "//chrome/common",
49     "//chrome/common/net",
50     "//components/autofill/core/browser",
51     "//components/bookmarks/browser",
52     "//components/captive_portal",
53     "//components/cloud_devices/common",
54     "//components/component_updater",
55     "//components/content_settings/core/browser",
56     "//components/content_settings/core/common",
57     "//components/crx_file",
58     "//components/data_reduction_proxy/browser",
59     "//components/domain_reliability",
60     "//components/favicon_base",
61     "//components/favicon/core",
62     "//components/feedback",
63     "//components/gcm_driver",
64     "//components/google/core/browser",
65     "//components/history/core/browser",
66     "//components/history/core/common",
67     "//components/infobars/core",
68     "//components/invalidation",
69     "//components/metrics:gpu",
70     "//components/metrics:net",
71     "//components/metrics/proto:proto",
72     "//components/native_app_window",
73     "//components/navigation_metrics",
74     "//components/network_time",
75     "//components/omaha_query_params",
76     "//components/omnibox",
77     "//components/os_crypt",
78     "//components/password_manager/core/browser",
79     "//components/password_manager/core/common",
80     "//components/policy:policy_component",
81     "//components/precache/core",
82     "//components/query_parser",
83     "//components/rappor",
84     "//components/renderer_context_menu",
85     "//components/search",
86     "//components/search_engines",
87     "//components/search_provider_logos",
88     "//components/signin/core/browser",
89     "//components/startup_metric_utils",
90     "//components/strings",
91     "//components/suggestions",
92     "//components/sync_driver",
93     "//components/translate/core/browser",
94     "//components/translate/core/common",
95     "//components/url_fixer",
96     "//components/user_prefs",
97     "//components/webdata/common",
98     "//content/public/browser",
99     "//content/public/common",
100     "//courgette:courgette_lib",
101     "//crypto",
102     "//google_apis",
103     "//gpu/config",
104     "//jingle:notifier",
105     "//skia",
106     "//sql",
107     "//sync",
108     "//third_party/cacheinvalidation",
109     "//third_party/icu",
110     "//third_party/libxml",
111     "//third_party/libjingle",
112     "//third_party/widevine/cdm:version_h",
113     "//third_party/zlib",
114     "//third_party/zlib:minizip",
115     "//third_party/zlib:zip",
116     "//ui/base",
117     "//ui/events",
118     "//ui/gfx",
119     "//ui/gfx/geometry",
120     "//ui/message_center",
121     "//ui/shell_dialogs",
122     "//ui/strings",
123     "//ui/resources",
124   ]
126   forward_dependent_configs_from = [
127     "//components/autofill/core/browser",
128     "//content/public/browser",
129     "//sql",
130     "//sync",
131   ]
133   if (!is_ios) {
134     sources += rebase_path(gypi_values.chrome_browser_non_ios_sources,
135                            ".", "//chrome")
136     #TODO(GYP) Add these sources:
137     #        # These files are generated by GRIT.
138     #        '<(grit_out_dir)/grit/component_extension_resources_map.cc',
139     #        '<(grit_out_dir)/grit/theme_resources_map.cc',
140     #        '<(SHARED_INTERMEDIATE_DIR)/ui/resources/grit/ui_resources_map.cc',
141     #
142     #        # This file is generated by
143     #        # chrome/browser/metrics/variations/generate_resources_map.py
144     #        '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/metrics/variations/generated_resources_map.cc',
146     defines = nacl_defines
148     deps += [
149       "//apps",
150       "//cc",
151       "//chrome/browser/devtools",
152       "//chrome/common/extensions/api",
153       "//chrome/common/extensions/api:api_registration",
154       "//chrome/installer/util",
155       "//components/autofill/content/browser",
156       "//components/dom_distiller/content",
157       "//components/keyed_service/content",
158       "//components/navigation_interception",
159       "//components/password_manager/content/browser",
160       "//components/precache/content",
161       "//components/sessions",
162       "//components/storage_monitor",
163       "//components/translate/content/browser",
164       "//components/url_matcher",
165       "//components/visitedlink/browser",
166       "//components/visitedlink/common",
167       "//components/web_cache/browser",
168       "//components/web_modal",
169       "//content/app/resources",
170       "//media",
171       "//media/cast:net",
172       "//mojo/environment:chromium",
173       "//mojo/public/cpp/bindings",
174       "//mojo/public/js/bindings",
175       "//mojo/system",
176       "//net:extras",
177       "//net:net_with_v8",
178       "//storage/browser",
179       "//storage/common",
180       "//third_party/WebKit/public:resources",
181       "//third_party/expat",
182       "//third_party/leveldatabase",
183       "//third_party/libaddressinput",
184       "//third_party/libyuv",
185       "//third_party/npapi",
186       "//third_party/re2",
187       "//third_party/smhasher:cityhash",
188       "//third_party/webrtc/modules/desktop_capture",
189       "//ui/gl",
190       "//ui/surface",
191       "//ui/web_dialogs",
192       "//v8",
193       ## TODO(tonyg): Remove this dependency (crbug.com/280157).
194       #"../testing/perf/perf_test.gyp:*",  TODO(GYP)
195     ]
196   } else {  # iOS
197     sources += rebase_path(gypi_values.chrome_browser_ios_sources,
198                           ".", "//chrome")
199     deps += [
200       "//net",
201     ]
202     libs += [
203       "CoreTelephony.framework",
204       "CoreText.framework",
205       "MobileCoreServices.framework",
206       "QuartzCore.framework",
207     ]
208     ldflags += [ "-weak_framework", "CoreImage" ]
209   }
211   if (is_win || is_mac) {
212     sources += rebase_path(gypi_values.chrome_browser_win_mac_sources,
213                            ".", "//chrome")
214   }
215   if (!is_android && !is_ios && !is_chromeos && enable_configuration_policy) {
216     sources += [
217       "net/disk_cache_dir_policy_handler.cc",
218       "net/disk_cache_dir_policy_handler.h",
219     ]
220   }
221   if (!is_android && !is_ios && enable_configuration_policy) {
222     sources += [
223       "download/download_dir_policy_handler.cc",
224       "download/download_dir_policy_handler.h",
225     ]
226   }
227   if (is_mac) {
228     sources += rebase_path(gypi_values.chrome_browser_mac_sources,
229                            ".", "//chrome")
230     deps += [
231       #"app_shim"  TODO(GYP)
232     ]
233   }
234   if (!toolkit_views) {
235     deps -= [ "//components/native_app_window" ]
236   }
237   if (cld2_data_source == "component") {
238     sources += [
239       "component_updater/cld_component_installer.cc",
240       "component_updater/cld_component_installer.h",
241     ]
242   }
243   if (enable_extensions) {
244     deps += [
245       "//chrome/browser/extensions",
246       "//chrome/browser/sync_file_system/drive_backend:sync_file_system_drive_proto",
247     ]
248     forward_dependent_configs_from += [ "//chrome/browser/extensions" ]
249     sources += rebase_path(gypi_values.chrome_browser_extensions_sources,
250                            ".", "//chrome")
251   }
252   if (enable_background) {
253     sources += rebase_path(gypi_values.chrome_browser_background_sources,
254                            ".", "//chrome")
255     if (!use_aura || is_win) {
256       sources -= [ "background/background_mode_manager_aura.cc" ]
257     }
258   }
259   if (enable_task_manager) {
260     sources += rebase_path(gypi_values.chrome_browser_task_manager_sources,
261                            ".", "//chrome")
262   }
263   if (enable_spellcheck) {
264     sources += rebase_path(gypi_values.chrome_browser_spellchecker_sources,
265                            ".", "//chrome")
266     deps += [ "//third_party/hunspell" ]
267   }
268   if (enable_nacl) {
269     sources += rebase_path(gypi_values.chrome_browser_nacl_sources,
270                            ".", "//chrome")
271     #deps += [ "//components/nacl:nacl_browser" ]  TODO(GYP)
272   }
273   # ["debug_devtools==1", {  TODO(GYP)
274   #   "defines": [
275   #     "DEBUG_DEVTOOLS=1",
276   # }],
277   if (enable_configuration_policy) {
278     sources += rebase_path(
279         gypi_values.chrome_browser_policy_shared_with_ios_sources,
280         ".", "//chrome")
281     deps += [
282       "//components/policy",
283       "//components/policy/proto",
284     ]
285     if (!is_ios) {
286       sources += rebase_path(
287           gypi_values.chrome_browser_policy_non_ios_sources,
288           ".", "//chrome")
289     }
290     if (!is_chromeos) {
291       sources += rebase_path(
292           gypi_values.chrome_browser_policy_shared_with_ios_not_chromeos_sources,
293           ".", "//chrome")
294     }
295     if (is_win || is_mac || is_desktop_linux) {
296       sources += rebase_path(gypi_values.chrome_browser_policy_desktop_sources,
297                              ".", "//chrome")
298     }
299     if (!is_android && !is_ios) {  # Non-mobile
300       deps += [
301         "//chrome/browser/policy:path_parser",
302       ]
303     }
304   } else {
305     # Configuration policy disabled.
306     sources += rebase_path(gypi_values.chrome_browser_policy_disabled_sources,
307                            ".", "//chrome")
308   }
310   if (enable_plugins) {
311     sources += rebase_path(gypi_values.chrome_browser_plugins_sources,
312                            ".", "//chrome")
313     deps += [
314       "//components/pdf/browser",
315       "//ppapi:ppapi_ipc",
316       "//third_party/adobe/flash:flapper_version_h",
317     ]
318   }
319   if (safe_browsing_mode != 0) {
320     sources += rebase_path(
321         gypi_values.chrome_browser_basic_safe_browsing_sources,
322         ".", "//chrome")
323     deps += [
324       "//chrome/browser/safe_browsing:chunk_proto",
325       "//chrome/browser/safe_browsing:report_proto",
326     ]
327     if (safe_browsing_mode == 1) {
328       sources += rebase_path(
329           gypi_values.chrome_browser_full_safe_browsing_sources,
330           ".", "//chrome")
331       defines += [ "FULL_SAFE_BROWSING" ]
332       deps += [
333         "//chrome/common/safe_browsing:proto",
334       ]
335     } else if (safe_browsing_mode == 2) {
336       defines += [ "MOBILE_SAFE_BROWSING" ]
337     }
338   }
340   if (is_linux) {
341     configs += [ "//build/config/linux:udev" ]
342     deps += [ "//device/media_transfer_protocol" ]
343   }
344   if (is_linux && !is_chromeos) {
345     deps += [ "//third_party/speech-dispatcher" ]
346   }
348   if (is_chromeos) {
349     sources += rebase_path(gypi_values.chrome_browser_chromeos_sources,
350                            ".", "//chrome")
351     deps += [
352       #"browser_chromeos",  TODO(GYP)
353     ]
354   } else {
355     # Non-ChromeOS.
356     sources += rebase_path(gypi_values.chrome_browser_non_chromeos_sources,
357                            ".", "//chrome")
358   }
360   if (use_cups) {
361     configs += [ "//printing:cups" ]
362   }
363   if (is_desktop_linux) {
364     sources += rebase_path(gypi_values.chrome_browser_gnome_keyring_sources,
365                            ".", "//chrome")
366     configs += [ "//build/config/linux:gnome_keyring" ]
367   }
368   if (use_aura) {
369     sources += rebase_path(gypi_values.chrome_browser_aura_sources,
370                            ".", "//chrome")
371     deps += [
372       "//ui/aura",
373       "//ui/compositor",
374       "//ui/keyboard",
375     ]
376   }
377   if (ui_compositor_image_transport) {
378     deps += [ "//ui/gl" ]
379   }
381   if (use_ash) {
382     sources += rebase_path(gypi_values.chrome_browser_ash_sources,
383                            ".", "//chrome")
384   }
386   if (use_x11) {
387     sources += rebase_path(gypi_values.chrome_browser_x11_sources,
388                            ".", "//chrome")
389     if (!is_chromeos) {
390       configs += [ "//build/config/linux:xscrnsaver" ]
391     }
392   }
393   if (is_posix && !is_mac && !is_ios) {
394     sources += [
395       "//chrome/app/chrome_breakpad_client.cc",
396       "//chrome/app/chrome_breakpad_client.h",
397     ]
398     deps += [
399       "//components/crash/app",
400       "//components/crash/browser",
401     ]
402   }
403   if (use_nss_certs) {
404     sources += rebase_path(gypi_values.chrome_browser_nss_sources,
405                            ".", "//chrome")
406   }
407   if (enable_notifications) {
408     sources += rebase_path(gypi_values.chrome_browser_notifications_sources,
409                            ".", "//chrome")
410     if (!is_android) {
411       sources += rebase_path(
412           gypi_values.chrome_browser_non_android_notifications_sources,
413           ".", "//chrome")
414     }
415   }
416   if (enable_themes) {
417     sources += rebase_path(gypi_values.chrome_browser_themes_sources,
418                            ".", "//chrome")
419   }
421   if (printing_mode != 0) {
422     # Some form of printing support.
423     sources += rebase_path(gypi_values.chrome_browser_basic_printing_sources,
424                            ".", "//chrome")
425     deps += [
426       "//printing",
427     ]
428     if (is_win) {
429       sources += rebase_path(gypi_values.chrome_browser_printing_emf_sources,
430                              ".", "//chrome")
431     }
432     if (printing_mode == 1) {
433       # Full printing on top of the above.
434       sources += rebase_path(gypi_values.chrome_browser_full_printing_sources,
435                              ".", "//chrome")
436     } else if (printing_mode == 2) {
437       # Partial-only printing support.
438       sources += rebase_path(
439           gypi_values.chrome_browser_basic_only_printing_sources,
440           ".", "//chrome")
441     }
442   }
443   if (enable_captive_portal_detection) {
444     sources += rebase_path(gypi_values.chrome_browser_captive_portal_sources,
445                            ".", "//chrome")
446   }
447   if (enable_session_service) {
448     sources += rebase_path(gypi_values.chrome_browser_session_service_sources,
449                            ".", "//chrome")
450   }
452   if (is_android || is_ios) {
453     # Mobile.
454     sources += rebase_path(gypi_values.chrome_browser_mobile_sources,
455                            ".", "//chrome")
456   } else {
457     # Non-mobile.
458     sources += rebase_path(gypi_values.chrome_browser_non_mobile_sources,
459                            ".", "//chrome")
460     deps += [
461       "//device/core",
462       "//device/usb",
463     ]
464   }
466   if (is_android) {
467     sources += rebase_path(gypi_values.chrome_browser_android_sources,
468                            ".", "//chrome")
469     deps += [
470       ":jni_headers",
471       "//components/cdm/browser",
472       #"../components/components.gyp:web_contents_delegate_android",  TODO(GYP)
473     ]
474     deps -= [
475       "//third_party/libaddressinput",
476       "//components/feedback",
477       "//components/storage_monitor",
478       "//components/web_modal",
479     ]
480   } else {
481     sources += rebase_path(gypi_values.chrome_browser_non_android_sources,
482                            ".", "//chrome")
483   }
485   if (is_mac) {
486     deps += [
487       "//third_party/google_toolbox_for_mac",
488       #"../third_party/mozilla/mozilla.gyp:mozilla",  TODO(GYP)
489     ]
490     libs += [
491       "Accelerate.framework",
492       "AddressBook.framework",
493       "AudioUnit.framework",
494       "DiskArbitration.framework",
495       "IOKit.framework",
496       "ImageCaptureCore.framework",
497       "OpenGL.framework",
498       "QuartzCore.framework",
499       "SecurityInterface.framework",
500     ]
501   }
503   if (enable_rlz) {
504     sources += rebase_path(gypi_values.chrome_browser_rlz_sources,
505                            ".", "//chrome")
506     deps += [ "//rlz:rlz_lib" ]
507   }
509   # TODO(GYP)
510   # Temporary fix to break the browser target into smaller chunks so it
511   # will link with goma builds.
512   #["OS=="win" and chromium_win_pch==0", {
513   #  "msvs_shard": 4,
514   #}],
516   if (is_win) {
517     sources += rebase_path(gypi_values.chrome_browser_win_sources,
518                            ".", "//chrome")
519     deps += [
520       "//chrome:version_header",
521       "//chrome/installer/util:strings",
522       "//third_party/iaccessible2",
523       "//third_party/isimpledom",
524       "//third_party/wtl",
525       "//ui/views",
526       "//ui/views/controls/webview",
527       #"chrome_process_finder",  TODO(GYP)
528       #"../chrome_elf/chrome_elf.gyp:chrome_elf",  TODO(GYP)
529       #"../chrome_elf/chrome_elf.gyp:chrome_elf_constants",  TODO(GYP)
530       #"../chrome_elf/chrome_elf.gyp:dll_hash",  TODO(GYP)
531       #"../google_update/google_update.gyp:google_update",  TODO(GYP)
532       #"../ui/metro_viewer/metro_viewer.gyp:metro_viewer_messages",  TODO(GYP)
533       #"../win8/win8.gyp:metro_viewer",  TODO(GYP)
534     ]
535     forward_dependent_configs_from += [
536       "//ui/views",
537       "//ui/views/controls/webview",
538     ]
539   } else {
540     # Non-Windows.
541     sources += rebase_path(gypi_values.chrome_browser_non_win_sources,
542                            ".", "//chrome")
543     if (toolkit_views) {
544       deps += [
545       "//ui/views",
546       "//ui/views/controls/webview",
547       ]
548       # TODO(GYP) why is this needed? Very susicious.
549       #  "include_dirs": [
550       #    "<(INTERMEDIATE_DIR)/chrome",
551       #  ],
552     }
553   }
555   if (is_linux) {
556     sources += rebase_path(gypi_values.chrome_browser_linux_sources,
557                            ".", "//chrome")
558     if (use_aura) {
559       configs += [
560         "//build/config/linux:dbus",
561         "//build/config/linux:fontconfig",
562       ]
563       deps += [
564         "//dbus",
565       ]
566     }
567     if (use_x11) {
568       configs += [ "//build/config/linux:x11" ]
569       deps += [ "//ui/gfx/x" ]
570     }
571   }
573   if (is_desktop_linux) {
574     sources += rebase_path(gypi_values.chrome_browser_desktop_linux_sources,
575                            ".", "//chrome")
576   }
577   if (enable_plugin_installation) {
578     sources += rebase_path(
579         gypi_values.chrome_browser_plugin_installation_sources,
580         ".", "//chrome")
581   }
582   if (enable_app_list) {
583     deps += [
584       "//ui/app_list",
585     ]
586   }
587   if (enable_managed_users) {
588     sources += rebase_path(
589         gypi_values.chrome_browser_supervised_user_sources,
590         ".", "//chrome")
591   }
592   if (enable_webrtc) {
593     sources += rebase_path(
594         gypi_values.chrome_browser_webrtc_sources,
595         ".", "//chrome")
596   }
597   if (enable_service_discovery) {
598     sources += rebase_path(
599         gypi_values.chrome_browser_service_discovery_sources,
600         ".", "//chrome")
601   }
602   if (enable_mdns) {
603     sources += rebase_path(
604         gypi_values.chrome_browser_mdns_sources,
605         ".", "//chrome")
606   }
607   if (!enable_autofill_dialog || is_android || is_ios) {
608     sources -= [
609       "autofill/validation_rules_storage_factory.cc",
610       "autofill/validation_rules_storage_factory.h",
611     ]
612   }
613   if (enable_wifi_bootstrapping) {
614     sources += rebase_path(
615         gypi_values.chrome_browser_wifi_bootstrapping_sources,
616         ".", "//chrome")
617     if (is_win || is_mac) {
618       # TODO(brettw) as of this writing wifi bootstrapping is set on Windows
619       # and Mac, so this test is meaningless. Can we merge these lists?
620       sources += rebase_path(
621           gypi_values.chrome_browser_win_mac_wifi_bootstrapping_sources,
622           ".", "//chrome")
623     }
624   }
627 if (is_android) {
628   # GYP version: chrome/chrome_browser.gypi:chrome_browser_jni_headers
629   generate_jni("jni_headers") {
630     sources = rebase_path(
631         gypi_values.chrome_browser_jni_sources, ".", "//chrome")
632     jni_package = "chrome"
633   }
636 # GYP version: chrome/chrome_resources.gyp:chrome_resources
637 # (generate_browser_resources action)
638 grit("resources") {
639   source = "browser_resources.grd"
640   output_dir = "$root_gen_dir/chrome"
641   outputs = [
642     "grit/browser_resources.h",
643     "browser_resources.pak",
644   ]
646   omnibox_mojom_file = "$root_gen_dir/chrome/browser/ui/webui/omnibox/omnibox.mojom.js"
648   grit_flags = [
649     "-E", "about_credits_file=" +
650           rebase_path(about_credits_file, root_build_dir),
651     "-E", "additional_modules_list_file=" +
652           rebase_path(additional_modules_list_file, root_build_dir),
653     "-E", "omnibox_mojom_file=" +
654           rebase_path(omnibox_mojom_file, root_build_dir),
655   ]
657   deps = [
658     ":about_credits",
659     ":chrome_internal_resources_gen",
660     "//chrome/browser/ui/webui/omnibox:mojo_bindings",
661     "//mojo/environment:chromium",
662   ]
665 # GYP version: chrome/chrome_resource.gyp:about_credits
666 action("about_credits") {
667   script = "//tools/licenses.py"
669   # TODO(phajdan.jr): input dependencies so this can be regenerated
670   # automatically when one of the credits changes. The way this should work is
671   # that licenses.py should write a .d file listing the input dependencies (see
672   # "depfile" in GN).
673   outputs = [ about_credits_file ]
675   args = [
676     "credits",
677     rebase_path(about_credits_file, root_build_dir),
678   ]
681 # GYP version: chrome/chrome_resource.gyp:chrome_internal_resources_gen
682 # TODO(GYP) write internal action
683 if (false) {  #if (is_chrome_branded) {
684   action("chrome_internal_resources_gen") {
685     # TODO(GYP)
686   }
687 } else {
688   group("chrome_internal_resources_gen") {
689     # Empty placeholder.
690   }
693 # In GYP this is part of test_support_common.
694 source_set("test_support") {
695   testonly = true
697   # Always include this via the main test support target.
698   visibility = [ "//chrome/test:test_support" ]
700   sources = [
701     "browsing_data/mock_browsing_data_appcache_helper.cc",
702     "browsing_data/mock_browsing_data_appcache_helper.h",
703     "browsing_data/mock_browsing_data_channel_id_helper.cc",
704     "browsing_data/mock_browsing_data_channel_id_helper.h",
705     "browsing_data/mock_browsing_data_cookie_helper.cc",
706     "browsing_data/mock_browsing_data_cookie_helper.h",
707     "browsing_data/mock_browsing_data_database_helper.cc",
708     "browsing_data/mock_browsing_data_database_helper.h",
709     "browsing_data/mock_browsing_data_file_system_helper.cc",
710     "browsing_data/mock_browsing_data_file_system_helper.h",
711     "browsing_data/mock_browsing_data_flash_lso_helper.cc",
712     "browsing_data/mock_browsing_data_flash_lso_helper.h",
713     "browsing_data/mock_browsing_data_indexed_db_helper.cc",
714     "browsing_data/mock_browsing_data_indexed_db_helper.h",
715     "browsing_data/mock_browsing_data_local_storage_helper.cc",
716     "browsing_data/mock_browsing_data_local_storage_helper.h",
717     "browsing_data/mock_browsing_data_quota_helper.cc",
718     "browsing_data/mock_browsing_data_quota_helper.h",
719     "browsing_data/mock_browsing_data_service_worker_helper.cc",
720     "browsing_data/mock_browsing_data_service_worker_helper.h",
721     "download/download_test_file_activity_observer.cc",
722     "download/download_test_file_activity_observer.h",
723     "download/test_download_shelf.cc",
724     "download/test_download_shelf.h",
725     "extensions/extension_action_test_util.cc",
726     "extensions/extension_action_test_util.h",
727     "invalidation/fake_invalidation_service.cc",
728     "invalidation/fake_invalidation_service.h",
729     "media/fake_desktop_media_list.cc",
730     "media/fake_desktop_media_list.h",
731     "net/dns_probe_test_util.cc",
732     "net/dns_probe_test_util.h",
733     "net/url_request_mock_util.cc",
734     "net/url_request_mock_util.h",
735     "notifications/notification_test_util.cc",
736     "notifications/notification_test_util.h",
737     "password_manager/mock_password_store_service.cc",
738     "password_manager/mock_password_store_service.h",
739     "password_manager/null_password_store_service.cc",
740     "password_manager/null_password_store_service.h",
741     "password_manager/test_password_store_service.cc",
742     "password_manager/test_password_store_service.h",
743     "prefs/pref_service_mock_factory.cc",
744     "prefs/pref_service_mock_factory.h",
745     "profile_resetter/profile_resetter_test_base.cc",
746     "profile_resetter/profile_resetter_test_base.h",
747     "search_engines/template_url_service_factory_test_util.cc",
748     "search_engines/template_url_service_factory_test_util.h",
749     "search_engines/template_url_service_test_util.cc",
750     "search_engines/template_url_service_test_util.h",
751     "sessions/session_service_test_helper.cc",
752     "sessions/session_service_test_helper.h",
753     "signin/fake_account_reconcilor.cc",
754     "signin/fake_account_reconcilor.h",
755     "signin/fake_account_tracker_service.cc",
756     "signin/fake_account_tracker_service.h",
757     "signin/fake_profile_oauth2_token_service.cc",
758     "signin/fake_profile_oauth2_token_service.h",
759     "signin/fake_profile_oauth2_token_service_builder.cc",
760     "signin/fake_profile_oauth2_token_service_builder.h",
761     "signin/fake_signin_manager.cc",
762     "signin/fake_signin_manager.h",
763     "ssl/ssl_client_auth_requestor_mock.cc",
764     "ssl/ssl_client_auth_requestor_mock.h",
765     "sync/glue/local_device_info_provider_mock.cc",
766     "sync/glue/local_device_info_provider_mock.h",
767     "sync/profile_sync_components_factory_mock.cc",
768     "sync/profile_sync_components_factory_mock.h",
769     "sync/profile_sync_service_mock.cc",
770     "sync/profile_sync_service_mock.h",
771   ]
773   deps = [
774     ":browser",
775     "//base:prefs_test_support",
776     "//chrome/browser",
777     "//chrome/browser/ui:test_support",
778     "//chrome/common",
779     "//chrome/common/safe_browsing:proto",
780     "//components/invalidation",
781     "//components/invalidation:test_support",
782     "//components/password_manager/core/browser:test_support",
783     "//components/search_engines:test_support",
784     "//content/test:test_support",
785     "//chrome/app/theme:theme_resources",
786     "//net:test_support",
787     "//skia",
788     "//testing/gmock",
789     "//testing/gtest",
790     "//ui/gfx",
791   ]
793   forward_dependent_configs_from = [
794     ":browser",
795     "//chrome/browser/ui:test_support",
796   ]
798   if (!is_ios) {
799     deps += [
800       "//components/sessions:test_support",
801       "//google_apis:test_support",
802     ]
803   }
805   if (enable_extensions) {
806     deps += [
807       "//extensions:test_support",
808     ]
809   }
811   if (is_chromeos) {
812     sources += [
813       "chromeos/app_mode/fake_cws.cc",
814       "chromeos/app_mode/fake_cws.h",
815       "chromeos/file_manager/fake_disk_mount_manager.cc",
816       "chromeos/file_manager/fake_disk_mount_manager.h",
817       "chromeos/input_method/mock_candidate_window_controller.cc",
818       "chromeos/input_method/mock_candidate_window_controller.h",
819       "chromeos/input_method/mock_input_method_engine.cc",
820       "chromeos/input_method/mock_input_method_engine.h",
821       "chromeos/input_method/mock_input_method_manager.cc",
822       "chromeos/input_method/mock_input_method_manager.h",
823       "chromeos/login/fake_login_utils.cc",
824       "chromeos/login/fake_login_utils.h",
825       "chromeos/login/mock_login_utils.cc",
826       "chromeos/login/mock_login_utils.h",
827       "chromeos/login/users/avatar/mock_user_image_manager.cc",
828       "chromeos/login/users/avatar/mock_user_image_manager.h",
829       "chromeos/login/users/fake_supervised_user_manager.cc",
830       "chromeos/login/users/fake_supervised_user_manager.h",
831       "chromeos/login/users/fake_user_manager.cc",
832       "chromeos/login/users/fake_user_manager.h",
833       "chromeos/login/users/mock_user_manager.cc",
834       "chromeos/login/users/mock_user_manager.h",
835       "chromeos/login/test/oobe_screen_waiter.cc",
836       "chromeos/login/test/oobe_screen_waiter.h",
837       "chromeos/login/test/js_checker.cc",
838       "chromeos/login/test/js_checker.h",
839       "chromeos/login/ui/mock_login_display.cc",
840       "chromeos/login/ui/mock_login_display.h",
841       "chromeos/login/ui/mock_login_display_host.cc",
842       "chromeos/login/ui/mock_login_display_host.h",
843       "chromeos/net/network_portal_detector_test_utils.cc",
844       "chromeos/net/network_portal_detector_test_utils.h",
845       "chromeos/policy/cloud_external_data_manager_base_test_util.cc",
846       "chromeos/policy/cloud_external_data_manager_base_test_util.h",
847       "chromeos/policy/device_policy_builder.cc",
848       "chromeos/policy/device_policy_builder.h",
849       "chromeos/policy/fake_device_cloud_policy_initializer.cc",
850       "chromeos/policy/fake_device_cloud_policy_initializer.h",
851       "chromeos/policy/stub_enterprise_install_attributes.cc",
852       "chromeos/policy/stub_enterprise_install_attributes.h",
853       "chromeos/settings/device_settings_test_helper.cc",
854       "chromeos/settings/device_settings_test_helper.h",
855       "chromeos/system/fake_input_device_settings.cc",
856       "chromeos/system/fake_input_device_settings.h",
857     ]
858     configs += [ "//build/config/linux:dbus" ]
859     #deps += [ "//chromeos:test_support" ]  TODO(GYP)
860   }
862   if (enable_configuration_policy) {
863     sources += [
864       "policy/test/local_policy_test_server.cc",
865       "policy/test/local_policy_test_server.h",
866     ]
867     policy_deps = [
868       "//components/policy:policy_component_test_support",
869       "//components/policy:test_support",
870     ]
871     deps += policy_deps
872     forward_dependent_configs_from += policy_deps
873   }
875   if (safe_browsing_mode == 1) {
876     sources += [
877       "extensions/fake_safe_browsing_database_manager.cc",
878       "extensions/fake_safe_browsing_database_manager.h",
879     ]
880   }
882   if (enable_extensions) {
883     sources += [
884       "drive/dummy_drive_service.cc",
885       "drive/dummy_drive_service.h",
886       "drive/fake_drive_service.cc",
887       "drive/fake_drive_service.h",
888       "drive/test_util.cc",
889       "drive/test_util.h",
890       "extensions/api/messaging/native_messaging_test_util.cc",
891       "extensions/api/messaging/native_messaging_test_util.h",
892       "extensions/extension_notification_observer.cc",
893       "extensions/extension_notification_observer.h",
894       "extensions/extension_test_message_listener.cc",
895       "extensions/extension_test_message_listener.h",
896       "extensions/mock_extension_special_storage_policy.cc",
897       "extensions/mock_extension_special_storage_policy.h",
898       "extensions/test_blacklist.cc",
899       "extensions/test_blacklist.h",
900       "extensions/test_blacklist_state_fetcher.cc",
901       "extensions/test_blacklist_state_fetcher.h",
902       "extensions/test_extension_environment.cc",
903       "extensions/test_extension_environment.h",
904       "extensions/test_extension_prefs.cc",
905       "extensions/test_extension_prefs.h",
906       "extensions/test_extension_service.cc",
907       "extensions/test_extension_service.h",
908       "extensions/test_extension_system.cc",
909       "extensions/test_extension_system.h",
910       "media_galleries/media_galleries_test_util.cc",
911       "media_galleries/media_galleries_test_util.h",
912     ]
913     deps += [
914       "//components/storage_monitor:test_support",
915     ]
916   }
918   if (enable_mdns) {
919     sources += [
920       "local_discovery/test_service_discovery_client.cc",
921       "local_discovery/test_service_discovery_client.h",
922     ]
923   }
925   if (enable_app_list) {
926     sources += [
927       "ui/app_list/test/chrome_app_list_test_support.cc",
928       "ui/app_list/test/chrome_app_list_test_support.h",
929     ]
930   }
932   if (enable_wifi_bootstrapping) {
933     sources += [
934       "local_discovery/wifi/mock_wifi_manager.cc",
935       "local_discovery/wifi/mock_wifi_manager.h",
936     ]
937   }