From d43eab4836dbdb1e6a6f941c9359b121b685727b Mon Sep 17 00:00:00 2001 From: dpranke Date: Tue, 15 Dec 2015 15:10:44 -0800 Subject: [PATCH] Get 'gn_all' building on iOS in GN builds. This gets 'gn_all' building on iOS so we can start adding tryservers to the CQ and turn on the waterfall bots. At the moment WebRTC doesn't quite work on iOS, so we don't build the components that need to depend on it; we add an 'ios_use_webrtc' arg so that we can hack around it locally to build the rest of iOS, but that arg should be deleted and WebRTC fixed. R=sdefresne@chromium.org, brettw@chromium.org BUG=459705, webrtc:5213 CQ_EXTRA_TRYBOTS=tryserver.chromium.mac:ios_dbg_simulator_gn,ios_rel_device_gn Review URL: https://codereview.chromium.org/1467803003 Cr-Commit-Position: refs/heads/master@{#365373} --- BUILD.gn | 18 ++++-- build_overrides/webrtc.gni | 8 +++ components/BUILD.gn | 61 +++++++++++-------- components/autofill/ios/browser/BUILD.gn | 1 + components/enhanced_bookmarks/BUILD.gn | 1 + components/favicon/core/BUILD.gn | 1 + components/policy/core/common/BUILD.gn | 5 +- components/search_engines/BUILD.gn | 20 +++--- components/sessions/BUILD.gn | 5 +- components/signin/ios/browser/BUILD.gn | 16 +++++ .../pref_service_syncable_factory.cc | 4 +- components/translate/ios/browser/BUILD.gn | 3 + components/webp_transcode/BUILD.gn | 1 + ios/chrome/browser/BUILD.gn | 2 + ios/web/BUILD.gn | 2 +- 15 files changed, 105 insertions(+), 43 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 4a28ed4172c8b7..380c28b2fae110 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -12,6 +12,7 @@ import("//build/config/features.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") import("//build_overrides/v8.gni") +import("//build_overrides/webrtc.gni") import("//media/media_options.gni") import("//third_party/openh264/openh264_args.gni") @@ -205,17 +206,22 @@ group("both_gn_and_gyp") { ] } else { deps += [ - "//ios/chrome:ios_chrome_unittests", - "//ios/chrome/app", - "//ios/chrome/browser", - "//ios/chrome/common", "//ios/net:ios_net_unittests", - "//ios/public/provider/chrome/browser", "//ios/public/provider/web", "//ios/testing:ocmock_support_unittest", "//ios/web:ios_web_unittests", "//ios/web/shell:ios_web_shell", ] + + if (ios_use_webrtc) { + deps += [ + "//ios/chrome:ios_chrome_unittests", + "//ios/chrome/app", + "//ios/chrome/browser", + "//ios/chrome/common", + "//ios/public/provider/chrome/browser", + ] + } } deps += root_extra_deps @@ -596,7 +602,7 @@ group("both_gn_and_gyp") { deps += [ "//chromecast:cast_shell" ] } - if (is_ios || is_mac) { + if (is_mac) { # TODO(GYP) || is_ios deps += [ "//media/cast:cast_h264_vt_encoder_unittests" ] } diff --git a/build_overrides/webrtc.gni b/build_overrides/webrtc.gni index c521db7faa31bf..9b6b1608ca8ec7 100644 --- a/build_overrides/webrtc.gni +++ b/build_overrides/webrtc.gni @@ -10,3 +10,11 @@ rtc_include_pulse_audio = false # Exclude internal ADM since Chromium uses its own IO handling. rtc_include_internal_audio_device = false + +declare_args() { + # TODO(dpranke): This is a hack needed to get iOS to build w/ a + # patched version of WebRTC so that we can access the xmllite + # library. Remove this once we've figured out how to get WebRTC building + # properly. + ios_use_webrtc = false +} diff --git a/components/BUILD.gn b/components/BUILD.gn index 935c2cfdf529c6..4a9a57987f2168 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn @@ -4,6 +4,7 @@ import("//build/config/features.gni") import("//build/config/ui.gni") +import("//build_overrides/webrtc.gni") import("//testing/test.gni") import("//tools/grit/repack.gni") @@ -46,45 +47,26 @@ test("components_unittests") { deps = [ "//base", "//base/test:test_support", - "//components/autofill/core/browser:unit_tests", - "//components/autofill/core/common:unit_tests", "//components/bookmarks/browser:unit_tests", "//components/bookmarks/managed:unit_tests", - "//components/browser_sync/browser:unit_tests", "//components/compression:unit_tests", "//components/content_settings/core/browser:unit_tests", "//components/content_settings/core/common", "//components/content_settings/core/common:unit_tests", "//components/data_usage/core:unit_tests", "//components/dom_distiller/core:unit_tests", - "//components/enhanced_bookmarks:unit_tests", - "//components/favicon/core:unit_tests", - "//components/favicon_base:unit_tests", "//components/flags_ui:unit_tests", - "//components/gcm_driver:unit_tests", "//components/google/core/browser:unit_tests", - "//components/history/core/browser:unit_tests", - "//components/history/core/common:unit_tests", - "//components/invalidation/impl:unit_tests", "//components/keyed_service/core:unit_tests", "//components/leveldb_proto:unit_tests", "//components/metrics:unit_tests", "//components/net_log:unit_tests", "//components/network_time:unit_tests", - "//components/omnibox/browser:unit_tests", "//components/open_from_clipboard:unit_tests", "//components/os_crypt:unit_tests", - "//components/password_manager/core/browser:unit_tests", - "//components/password_manager/core/common:unit_tests", - "//components/password_manager/sync/browser:unit_tests", "//components/proxy_config:unit_tests", - "//components/rappor:unit_tests", - "//components/search:unit_tests", - "//components/search_engines:unit_tests", "//components/sessions:unit_tests", - "//components/signin/core/browser:unit_tests", "//components/suggestions:unit_tests", - "//components/sync_driver:unit_tests", "//components/syncable_prefs:unit_tests", "//components/translate/core/browser:unit_tests", "//components/translate/core/common:unit_tests", @@ -99,16 +81,16 @@ test("components_unittests") { "//testing/gtest", "//third_party/mojo/src/mojo/edk/embedder:headers", "//ui/base", - "//ui/gl:test_support", "//ui/resources:ui_test_pak", ] if (is_ios) { - deps += [ - "//components/signin/ios/browser:unit_tests", - "//components/translate/ios/browser:unit_tests", - "//components/webp_transcode:unit_tests", - ] + deps += [ "//components/translate/ios/browser:unit_tests" ] + + if (target_cpu != "arm") { + # TODO(GYP): iOS arm builds of libwebp don't work yet. + deps += [ "//components/webp_transcode:unit_tests" ] + } } else { # !iOS deps += [ "//components/auto_login_parser:unit_tests", @@ -174,6 +156,7 @@ test("components_unittests") { # These are the deps required by the code in this target. "//components/policy:policy_component", "//content/test:test_support", + "//ui/gl:test_support", ] data_deps = [ @@ -242,6 +225,33 @@ test("components_unittests") { ] } + if (!is_ios || ios_use_webrtc) { + deps += [ + "//components/autofill/core/browser:unit_tests", + "//components/autofill/core/common:unit_tests", + "//components/browser_sync/browser:unit_tests", + "//components/enhanced_bookmarks:unit_tests", + "//components/favicon/core:unit_tests", + "//components/favicon_base:unit_tests", + "//components/gcm_driver:unit_tests", + "//components/history/core/browser:unit_tests", + "//components/history/core/common:unit_tests", + "//components/invalidation/impl:unit_tests", + "//components/omnibox/browser:unit_tests", + "//components/password_manager/core/browser:unit_tests", + "//components/password_manager/core/common:unit_tests", + "//components/password_manager/sync/browser:unit_tests", + "//components/rappor:unit_tests", + "//components/search:unit_tests", + "//components/signin/core/browser:unit_tests", + "//components/sync_driver:unit_tests", + ] + } + + if (ios_use_webrtc) { + deps += [ "//components/signin/ios/browser:unit_tests" ] + } + if (toolkit_views) { # TODO bug 522654 Enable this when the undefined symbol is fixed in # web_modal such that this links. @@ -436,6 +446,7 @@ test("components_perftests") { "//base/test:test_support", "//testing/gtest", "//testing/perf", + "//url", ] if (!is_ios) { deps += [ diff --git a/components/autofill/ios/browser/BUILD.gn b/components/autofill/ios/browser/BUILD.gn index b15bbb14d8f613..65ae876de9c02d 100644 --- a/components/autofill/ios/browser/BUILD.gn +++ b/components/autofill/ios/browser/BUILD.gn @@ -24,6 +24,7 @@ source_set("browser") { deps = [ ":injected_js", + "//base", "//components/autofill/core/browser", "//components/autofill/core/common", "//ios/public/provider/web", diff --git a/components/enhanced_bookmarks/BUILD.gn b/components/enhanced_bookmarks/BUILD.gn index 966622f4c9989b..00c850402b615b 100644 --- a/components/enhanced_bookmarks/BUILD.gn +++ b/components/enhanced_bookmarks/BUILD.gn @@ -107,5 +107,6 @@ source_set("unit_tests") { "//components/bookmarks/test", "//components/enhanced_bookmarks/proto", "//sql", + "//ui/gfx", ] } diff --git a/components/favicon/core/BUILD.gn b/components/favicon/core/BUILD.gn index 51bba39ad6705e..c461d543342645 100644 --- a/components/favicon/core/BUILD.gn +++ b/components/favicon/core/BUILD.gn @@ -62,6 +62,7 @@ source_set("unit_tests") { "//testing/gtest", "//ui/base", "//ui/gfx", + "//ui/gfx:test_support", "//url", ] } diff --git a/components/policy/core/common/BUILD.gn b/components/policy/core/common/BUILD.gn index 28dca47b2cd4e0..8bd89b1c67c21d 100644 --- a/components/policy/core/common/BUILD.gn +++ b/components/policy/core/common/BUILD.gn @@ -5,7 +5,10 @@ import("//build/config/features.gni") source_set("common") { - visibility = [ "//components/policy/*" ] + visibility = [ + "//components/policy/*", + "//components/syncable_prefs/*", + ] defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn index 682042d709d785..3229f4b4b4296a 100644 --- a/components/search_engines/BUILD.gn +++ b/components/search_engines/BUILD.gn @@ -66,7 +66,6 @@ static_library("search_engines") { # omnibox/browser target, but should ideally be fixed, then this # dependency added: #"//components/omnibox/browser", - "//components/policy:policy_component", "//components/pref_registry", "//components/rappor", "//components/strings", @@ -89,7 +88,10 @@ static_library("search_engines") { "default_search_policy_handler.cc", "default_search_policy_handler.h", ] - deps += [ "//components/policy" ] + deps += [ + "//components/policy", + "//components/policy:policy_component", + ] } } @@ -122,17 +124,12 @@ source_set("unit_tests") { "template_url_service_util_unittest.cc", "template_url_unittest.cc", ] - if (enable_configuration_policy) { - sources += [ "default_search_policy_handler_unittest.cc" ] - } deps = [ ":prepopulated_engines", ":test_support", "//base", "//components/google/core/browser", - "//components/policy", - "//components/policy:policy_component_test_support", "//components/pref_registry:test_support", "//components/sync_driver:test_support", "//components/webdata/common", @@ -142,6 +139,15 @@ source_set("unit_tests") { "//testing/gtest", "//url", ] + + if (enable_configuration_policy) { + sources += [ "default_search_policy_handler_unittest.cc" ] + + deps += [ + "//components/policy", + "//components/policy:policy_component_test_support", + ] + } } json_to_struct("prepopulated_engines") { diff --git a/components/sessions/BUILD.gn b/components/sessions/BUILD.gn index c123259bcd3f6c..902dd3d7be1cb3 100644 --- a/components/sessions/BUILD.gn +++ b/components/sessions/BUILD.gn @@ -180,10 +180,13 @@ source_set("unit_tests") { deps = [ ":test_support", "//base/test:test_support", - "//content/public/common", "//sync", "//testing/gtest", "//ui/base", # For page transition types. "//url", ] + + if (!is_ios) { + deps += [ "//content/public/common" ] + } } diff --git a/components/signin/ios/browser/BUILD.gn b/components/signin/ios/browser/BUILD.gn index 9ab40ff25270a0..6c4e5e15b0f8dc 100644 --- a/components/signin/ios/browser/BUILD.gn +++ b/components/signin/ios/browser/BUILD.gn @@ -17,8 +17,17 @@ source_set("browser") { ] deps = [ + "//base", + "//base:prefs", + "//components/content_settings/core/browser", + "//components/google/core/browser", + "//components/keyed_service/core", + "//components/pref_registry", "//components/signin/core/browser", + "//components/signin/core/common", + "//google_apis", "//ios/web", + "//net", ] } @@ -47,7 +56,14 @@ source_set("unit_tests") { deps = [ ":test_support", + "//base:prefs", + "//base:prefs_test_support", + "//components/pref_registry:test_support", + "//components/signin/core/browser", + "//components/signin/core/browser:test_support", + "//components/signin/core/common", "//ios/web", + "//ios/web:test_support", "//third_party/ocmock", ] } diff --git a/components/syncable_prefs/pref_service_syncable_factory.cc b/components/syncable_prefs/pref_service_syncable_factory.cc index 6ec28803d4735b..a21c2e740562ed 100644 --- a/components/syncable_prefs/pref_service_syncable_factory.cc +++ b/components/syncable_prefs/pref_service_syncable_factory.cc @@ -14,8 +14,8 @@ #if defined(ENABLE_CONFIGURATION_POLICY) #include "components/policy/core/browser/browser_policy_connector.h" #include "components/policy/core/browser/configuration_policy_pref_store.h" -#include "components/policy/core/common/policy_service.h" -#include "components/policy/core/common/policy_types.h" +#include "components/policy/core/common/policy_service.h" // nogncheck +#include "components/policy/core/common/policy_types.h" // nogncheck #endif namespace syncable_prefs { diff --git a/components/translate/ios/browser/BUILD.gn b/components/translate/ios/browser/BUILD.gn index 9554190bb418eb..d71d121d15319b 100644 --- a/components/translate/ios/browser/BUILD.gn +++ b/components/translate/ios/browser/BUILD.gn @@ -21,10 +21,12 @@ source_set("browser") { deps = [ ":injected_js", "//base", + "//base:prefs", "//components/translate/core/browser", "//components/translate/core/common", "//components/translate/core/language_detection", "//ios/web", + "//ui/base", "//url", ] } @@ -48,6 +50,7 @@ source_set("unit_tests") { deps = [ ":browser", "//base", + "//base:prefs_test_support", "//components/resources", "//components/translate/core/common", "//ios/web:test_support", diff --git a/components/webp_transcode/BUILD.gn b/components/webp_transcode/BUILD.gn index f62f6913e2c751..0e1b25a2616b1e 100644 --- a/components/webp_transcode/BUILD.gn +++ b/components/webp_transcode/BUILD.gn @@ -31,6 +31,7 @@ source_set("unit_tests") { ":webp_transcode", "//base", "//net", + "//net:test_support", "//testing/gmock", "//testing/gtest", "//third_party/ocmock", diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn index b65c68906353cb..150eb4685523b5 100644 --- a/ios/chrome/browser/BUILD.gn +++ b/ios/chrome/browser/BUILD.gn @@ -249,6 +249,7 @@ source_set("browser") { "net/proxy_service_factory.h", "net/retryable_url_fetcher.h", "net/retryable_url_fetcher.mm", + "ntp_snippets/ios_chrome_ntp_snippets_service_factory.cc", "open_from_clipboard/create_clipboard_recent_content.h", "open_from_clipboard/create_clipboard_recent_content.mm", "passwords/ios_chrome_password_manager_setting_migrator_service_factory.cc", @@ -507,6 +508,7 @@ source_set("browser") { "//components/metrics:ui", "//components/net_log", "//components/network_time", + "//components/ntp_snippets", "//components/omnibox/browser", "//components/open_from_clipboard", "//components/password_manager/core/browser", diff --git a/ios/web/BUILD.gn b/ios/web/BUILD.gn index 57af124912f9d4..39b3aa065092dd 100644 --- a/ios/web/BUILD.gn +++ b/ios/web/BUILD.gn @@ -221,7 +221,7 @@ source_set("web") { "web_state/js/crw_js_plugin_placeholder_manager.h", "web_state/js/crw_js_plugin_placeholder_manager.mm", "web_state/js/crw_js_post_request_loader.h", - "web_state/js/crw_js_post_request_loader.h", + "web_state/js/crw_js_post_request_loader.mm", "web_state/js/crw_js_window_id_manager.h", "web_state/js/crw_js_window_id_manager.mm", "web_state/js/page_script_util.h",