1# Copyright 2019 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. 4import("//components/captive_portal/core/features.gni") 5 6import("//build/config/features.gni") 7import("//build/config/locales.gni") 8import("//build/config/sanitizers/sanitizers.gni") 9import("//build/config/ui.gni") 10import("//build/config/win/console_app.gni") 11import("//build/config/win/manifest.gni") 12import("//components/spellcheck/spellcheck_build_features.gni") 13import("//gpu/vulkan/features.gni") 14import("//media/media_options.gni") 15import("//mojo/public/tools/bindings/mojom.gni") 16import("//tools/grit/grit_rule.gni") 17import("//tools/grit/repack.gni") 18import("//tools/v8_context_snapshot/v8_context_snapshot.gni") 19if (is_android) { 20 import("//build/config/android/config.gni") 21 import("//build/config/android/rules.gni") 22} else if (is_mac) { 23 import("//build/config/mac/rules.gni") 24 import("//build/mac/tweak_info_plist.gni") 25 import("//content/public/app/mac_helpers.gni") 26 import("//third_party/icu/config.gni") 27 import("//ui/gl/features.gni") 28 import("//v8/gni/v8.gni") 29} 30 31source_set("android_descriptors") { 32 sources = [ "browser/android_descriptors.h" ] 33 public_deps = [ "//content/public/common:content_descriptors" ] 34} 35 36if (is_android) { 37 weblayer_components_strings_java_resources = 38 [ "java/res/values/components_strings.xml" ] + 39 process_file_template( 40 android_bundle_locales_as_resources, 41 [ "java/res/values-{{source_name_part}}/components_strings.xml" ]) 42 43 grit("generate_components_strings") { 44 source = "../components/components_strings.grd" 45 46 # components_strings contains strings from all components. WebLayer 47 # will never display most of them, so we try to limit the included 48 # strings. 49 whitelist = rebase_path("grit_strings_whitelist.txt", root_build_dir) 50 inputs = [ "//weblayer/grit_strings_whitelist.txt" ] 51 grit_flags = [ 52 "-w", 53 whitelist, 54 ] 55 outputs = 56 weblayer_components_strings_java_resources + 57 [ "grit/components_strings.h" ] + 58 process_file_template(locales_with_fake_bidi, 59 [ "components_strings_{{source_name_part}}.pak" ]) 60 } 61 62 repack_locales("weblayer_locales") { 63 input_locales = locales 64 output_locales = locales 65 source_patterns = [ "${root_gen_dir}/weblayer/components_strings_" ] 66 deps = [ ":generate_components_strings" ] 67 output_dir = "$root_out_dir/weblayer/locales" 68 } 69 70 android_assets("locale_pak_assets") { 71 disable_compression = true 72 renaming_sources = [ "$root_out_dir/weblayer/locales/en-US.pak" ] 73 renaming_destinations = [ "stored-locales/weblayer/en-US.pak" ] 74 treat_as_locale_paks = true 75 deps = [ ":weblayer_locales" ] 76 } 77 78 android_assets("bundle_locale_pak_assets") { 79 disable_compression = true 80 renaming_sources = [] 81 renaming_destinations = [] 82 foreach(_locale, locales) { 83 renaming_sources += [ "$root_out_dir/weblayer/locales/$_locale.pak" ] 84 renaming_destinations += [ "locales/$_locale.pak" ] 85 } 86 treat_as_locale_paks = true 87 deps = [ ":weblayer_locales" ] 88 } 89 90 java_strings_grd_prebuilt("components_java_strings") { 91 grit_output_dir = "$root_gen_dir/weblayer/java/res" 92 generated_files = 93 rebase_path(weblayer_components_strings_java_resources, "java/res", ".") 94 deps = [ ":generate_components_strings" ] 95 } 96} 97 98source_set("weblayer_lib_base") { 99 sources = [ 100 "app/content_main_delegate_impl.cc", 101 "app/content_main_delegate_impl.h", 102 "app/main.cc", 103 "browser/autofill_client_impl.cc", 104 "browser/autofill_client_impl.h", 105 "browser/browser_context_impl.cc", 106 "browser/browser_context_impl.h", 107 "browser/browser_impl.cc", 108 "browser/browser_impl.h", 109 "browser/browser_main_parts_impl.cc", 110 "browser/browser_main_parts_impl.h", 111 "browser/browser_process.cc", 112 "browser/browser_process.h", 113 "browser/content_browser_client_impl.cc", 114 "browser/content_browser_client_impl.h", 115 "browser/controls_visibility_reason.h", 116 "browser/cookie_manager_impl.cc", 117 "browser/cookie_manager_impl.h", 118 "browser/cookie_settings_factory.cc", 119 "browser/cookie_settings_factory.h", 120 "browser/download_impl.cc", 121 "browser/download_impl.h", 122 "browser/download_manager_delegate_impl.cc", 123 "browser/download_manager_delegate_impl.h", 124 "browser/feature_list_creator.cc", 125 "browser/feature_list_creator.h", 126 "browser/file_select_helper.cc", 127 "browser/file_select_helper.h", 128 "browser/host_content_settings_map_factory.cc", 129 "browser/host_content_settings_map_factory.h", 130 "browser/i18n_util.cc", 131 "browser/i18n_util.h", 132 "browser/isolated_world_ids.h", 133 "browser/javascript_tab_modal_dialog_manager_delegate_android.cc", 134 "browser/javascript_tab_modal_dialog_manager_delegate_android.h", 135 "browser/navigation_controller_impl.cc", 136 "browser/navigation_controller_impl.h", 137 "browser/navigation_impl.cc", 138 "browser/navigation_impl.h", 139 "browser/permissions/geolocation_permission_context_delegate.cc", 140 "browser/permissions/geolocation_permission_context_delegate.h", 141 "browser/permissions/permission_decision_auto_blocker_factory.cc", 142 "browser/permissions/permission_decision_auto_blocker_factory.h", 143 "browser/permissions/permission_manager_factory.cc", 144 "browser/permissions/permission_manager_factory.h", 145 "browser/permissions/weblayer_permissions_client.cc", 146 "browser/permissions/weblayer_permissions_client.h", 147 "browser/persistence/browser_persistence_common.cc", 148 "browser/persistence/browser_persistence_common.h", 149 "browser/persistence/browser_persister.cc", 150 "browser/persistence/browser_persister.h", 151 "browser/persistence/minimal_browser_persister.cc", 152 "browser/persistence/minimal_browser_persister.h", 153 "browser/profile_impl.cc", 154 "browser/profile_impl.h", 155 "browser/ssl_error_controller_client.cc", 156 "browser/ssl_error_controller_client.h", 157 "browser/stateful_ssl_host_state_delegate_factory.cc", 158 "browser/stateful_ssl_host_state_delegate_factory.h", 159 "browser/system_network_context_manager.cc", 160 "browser/system_network_context_manager.h", 161 "browser/tab_impl.cc", 162 "browser/tab_impl.h", 163 "browser/url_bar/autocomplete_scheme_classifier_impl.cc", 164 "browser/url_bar/autocomplete_scheme_classifier_impl.h", 165 "browser/url_bar/url_bar_controller_impl.cc", 166 "browser/url_bar/url_bar_controller_impl.h", 167 "browser/web_contents_view_delegate_impl.cc", 168 "browser/web_contents_view_delegate_impl.h", 169 "browser/weblayer_browser_interface_binders.cc", 170 "browser/weblayer_browser_interface_binders.h", 171 "browser/weblayer_content_browser_overlay_manifest.cc", 172 "browser/weblayer_content_browser_overlay_manifest.h", 173 "browser/weblayer_field_trials.h", 174 "browser/weblayer_security_blocking_page_factory.cc", 175 "browser/weblayer_security_blocking_page_factory.h", 176 "browser/weblayer_variations_service_client.cc", 177 "browser/weblayer_variations_service_client.h", 178 "browser/webui/web_ui_controller_factory.cc", 179 "browser/webui/web_ui_controller_factory.h", 180 "browser/webui/weblayer_internals_ui.cc", 181 "browser/webui/weblayer_internals_ui.h", 182 "common/content_client_impl.cc", 183 "common/content_client_impl.h", 184 "common/features.cc", 185 "common/features.h", 186 "common/weblayer_paths.cc", 187 "common/weblayer_paths.h", 188 "public/browser.cc", 189 "public/browser.h", 190 "public/browser_observer.h", 191 "public/common/switches.cc", 192 "public/common/switches.h", 193 "public/cookie_manager.h", 194 "public/download.h", 195 "public/download_delegate.h", 196 "public/error_page_delegate.h", 197 "public/fullscreen_delegate.h", 198 "public/main.h", 199 "public/navigation.h", 200 "public/navigation_controller.h", 201 "public/navigation_observer.h", 202 "public/new_tab_delegate.h", 203 "public/profile.h", 204 "public/tab.h", 205 "public/tab_observer.h", 206 "public/url_bar_controller.h", 207 "renderer/content_renderer_client_impl.cc", 208 "renderer/content_renderer_client_impl.h", 209 "renderer/error_page_helper.cc", 210 "renderer/error_page_helper.h", 211 "renderer/weblayer_render_frame_observer.cc", 212 "renderer/weblayer_render_frame_observer.h", 213 "utility/content_utility_client_impl.cc", 214 "utility/content_utility_client_impl.h", 215 ] 216 217 configs += [ 218 "//build/config:precompiled_headers", 219 220 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 221 "//build/config/compiler:no_size_t_to_int_warning", 222 ] 223 224 public_deps = [ ":android_descriptors" ] 225 deps = [ 226 "//base", 227 "//base:base_static", 228 "//base/third_party/dynamic_annotations", 229 "//cc", 230 "//components/autofill/content/browser", 231 "//components/autofill/content/renderer", 232 "//components/autofill/core/browser", 233 "//components/base32", 234 "//components/captive_portal/core:buildflags", 235 "//components/cdm/renderer", 236 "//components/content_settings/core/browser", 237 "//components/crash/content/browser", 238 "//components/crash/core/app", 239 "//components/crash/core/common", 240 "//components/embedder_support", 241 "//components/error_page/common", 242 "//components/find_in_page", 243 "//components/keyed_service/content", 244 "//components/metrics", 245 "//components/network_time", 246 "//components/omnibox/browser", 247 "//components/permissions", 248 "//components/policy/core/browser", 249 "//components/pref_registry:pref_registry", 250 "//components/prefs", 251 "//components/safe_browsing/core:features", 252 "//components/security_interstitials/content:security_interstitial_page", 253 "//components/security_interstitials/content/renderer:security_interstitial_page_controller", 254 "//components/security_interstitials/core", 255 "//components/security_state/content", 256 "//components/sessions", 257 "//components/spellcheck:buildflags", 258 "//components/ssl_errors", 259 "//components/startup_metric_utils/browser", 260 "//components/user_prefs", 261 "//components/variations", 262 "//components/variations/net", 263 "//components/variations/service", 264 "//components/version_info", 265 "//components/web_cache/browser", 266 "//content:content_resources", 267 "//content:dev_ui_content_resources", 268 "//content/app/resources", 269 "//content/public/app:both", 270 "//content/public/browser", 271 "//content/public/child", 272 "//content/public/common", 273 "//content/public/common:service_names", 274 "//content/public/renderer", 275 "//content/public/utility", 276 "//gpu/config", 277 "//net", 278 "//net:net_resources", 279 "//sandbox", 280 "//services/network/public/mojom", 281 "//services/preferences/tracked", 282 "//services/service_manager/embedder:embedder_result_codes", 283 "//skia", 284 "//third_party/blink/public/common", 285 "//third_party/blink/public/strings", 286 "//third_party/icu", 287 "//ui/base", 288 "//ui/base/clipboard", 289 "//ui/base/ime/init", 290 "//ui/display", 291 "//ui/events:events_base", 292 "//ui/gfx", 293 "//ui/gfx/geometry", 294 "//ui/gfx/ipc", 295 "//ui/gfx/ipc/geometry", 296 "//ui/gfx/ipc/skia", 297 "//ui/gl", 298 "//ui/platform_window", 299 "//ui/shell_dialogs", 300 "//ui/webui", 301 "//url", 302 "//v8", 303 "//weblayer:resources", 304 "//weblayer/browser/webui:mojo_bindings", 305 ] 306 307 if (enable_captive_portal_detection) { 308 sources += [ 309 "browser/captive_portal_service_factory.cc", 310 "browser/captive_portal_service_factory.h", 311 ] 312 deps += [ "//components/captive_portal/content" ] 313 } 314 315 if (use_browser_spellchecker) { 316 deps += [ 317 "//components/spellcheck/browser", 318 "//components/spellcheck/renderer", 319 ] 320 } 321 322 if (is_android) { 323 sources += [ 324 "app/jni_onload.cc", 325 "app/jni_onload.h", 326 "browser/android/exception_filter.cc", 327 "browser/android/exception_filter.h", 328 "browser/android/metrics/uma_utils.cc", 329 "browser/android/metrics/uma_utils.h", 330 "browser/android/metrics/weblayer_metrics_service_client.cc", 331 "browser/android/metrics/weblayer_metrics_service_client.h", 332 "browser/android/permission_request_utils.cc", 333 "browser/android/permission_request_utils.h", 334 "browser/android/resource_mapper.cc", 335 "browser/android/resource_mapper.h", 336 "browser/content_view_render_view.cc", 337 "browser/content_view_render_view.h", 338 "browser/devtools_manager_delegate_android.cc", 339 "browser/devtools_manager_delegate_android.h", 340 "browser/devtools_server_android.cc", 341 "browser/devtools_server_android.h", 342 "browser/download_callback_proxy.cc", 343 "browser/download_callback_proxy.h", 344 "browser/error_page_callback_proxy.cc", 345 "browser/error_page_callback_proxy.h", 346 "browser/fullscreen_callback_proxy.cc", 347 "browser/fullscreen_callback_proxy.h", 348 "browser/intercept_navigation_delegate_impl.cc", 349 "browser/new_tab_callback_proxy.cc", 350 "browser/new_tab_callback_proxy.h", 351 "browser/tab_callback_proxy.cc", 352 "browser/tab_callback_proxy.h", 353 "browser/top_controls_container_view.cc", 354 "browser/top_controls_container_view.h", 355 "browser/weblayer_impl_android.cc", 356 "common/crash_reporter/crash_keys.cc", 357 "common/crash_reporter/crash_keys.h", 358 "common/crash_reporter/crash_reporter_client.cc", 359 "common/crash_reporter/crash_reporter_client.h", 360 "renderer/url_loader_throttle_provider.cc", 361 "renderer/url_loader_throttle_provider.h", 362 ] 363 deps += [ 364 "//android_webview:generate_aw_resources", 365 "//android_webview:generate_aw_strings", 366 "//components/android_system_error_page", 367 "//components/autofill/android:provider", 368 "//components/cdm/browser", 369 "//components/crash/android:crash_android", 370 "//components/crash/android:crashpad_main", 371 "//components/embedder_support/android:context_menu", 372 "//components/embedder_support/android:util", 373 "//components/embedder_support/android:web_contents_delegate", 374 "//components/embedder_support/android/metrics", 375 "//components/external_intents/android", 376 "//components/javascript_dialogs", 377 "//components/location/android:settings", 378 "//components/metrics", 379 "//components/minidump_uploader", 380 "//components/navigation_interception", 381 "//components/permissions/android:native", 382 "//components/resources:android_resources", 383 "//components/safe_browsing/content/common:interfaces", 384 "//components/safe_browsing/content/renderer:throttles", 385 "//components/safe_browsing/core/common", 386 "//components/version_info/android:channel_getter", 387 "//services/resource_coordinator/public/cpp/memory_instrumentation:browser", 388 "//ui/android", 389 "//weblayer/browser/java:jni", 390 "//weblayer/browser/safe_browsing:safe_browsing", 391 ] 392 } else { 393 deps += [ "//ui/views/controls/webview" ] 394 } 395 396 if (enable_vulkan) { 397 deps += [ "//gpu/vulkan/init" ] 398 } 399 if (mojo_media_host == "browser") { 400 deps += [ "//media/mojo/services" ] 401 } 402 403 if (is_win) { 404 deps += [ "//content:sandbox_helper_win" ] 405 if (win_console_app) { 406 defines = [ "WIN_CONSOLE_APP" ] 407 } 408 } 409 410 if (is_linux) { 411 deps += [ 412 "//build/config/freetype", 413 "//third_party/fontconfig", 414 ] 415 } 416 417 if (toolkit_views) { 418 deps += [ "//ui/views" ] 419 } 420 421 if (use_aura) { 422 deps += [ 423 "//ui/aura", 424 "//ui/events", 425 "//ui/strings", 426 "//ui/wm", 427 ] 428 } 429} 430 431if (is_android) { 432 # Lib used in standalone WebView which allows manual JNI registration. 433 static_library("weblayer_lib_webview") { 434 public_deps = [ ":weblayer_lib_base" ] 435 deps = [ 436 "//base", 437 "//weblayer/browser/java:jni", 438 "//weblayer/browser/java:weblayer_jni_registration", 439 ] 440 sources = [ 441 "$target_gen_dir/browser/java/weblayer_jni_registration.h", 442 "browser/web_view_compatibility_helper_impl.cc", 443 "browser/web_view_compatibility_helper_impl.h", 444 ] 445 defines = [ "WEBLAYER_MANUAL_JNI_REGISTRATION" ] 446 447 # Explicit dependency required for JNI registration to be able to 448 # find the native side functions. 449 if (is_component_build) { 450 deps += [ 451 "//device/gamepad", 452 "//media/midi", 453 "//ui/events/devices", 454 ] 455 } 456 } 457 458 # Lib used in Monochrome which does not support manual JNI registration. 459 # Separate from the standalone WebView version to reduce APK size. 460 static_library("weblayer_lib") { 461 public_deps = [ ":weblayer_lib_base" ] 462 deps = [ "//weblayer/browser/java:jni" ] 463 sources = [ 464 "browser/web_view_compatibility_helper_impl.cc", 465 "browser/web_view_compatibility_helper_impl.h", 466 ] 467 } 468} else { 469 source_set("weblayer_lib") { 470 public_deps = [ ":weblayer_lib_base" ] 471 } 472} 473 474grit("resources") { 475 source = "weblayer_resources.grd" 476 477 outputs = [ 478 "grit/weblayer_resources.h", 479 "weblayer_resources.pak", 480 ] 481 grit_flags = [ 482 "-E", 483 "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), 484 ] 485 deps = [ "//weblayer/browser/webui:mojo_bindings_js" ] 486} 487 488# TODO(jam): move weblayer_shell_resources_grit and copy_shell_resources here in 489# a way that's shareable? 490 491if (is_android) { 492 shared_library("libweblayer") { 493 sources = [ "app/entry_point.cc" ] 494 deps = [ 495 ":weblayer_lib_webview", 496 "//base", 497 "//content/public/app:both", 498 ] 499 configs -= [ "//build/config/android:hide_all_but_jni_onload" ] 500 configs += [ "//build/config/android:hide_all_but_jni" ] 501 } 502} 503