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. 4 5import("//build/config/features.gni") 6import("//build/config/ui.gni") 7import("//tools/grit/repack.gni") 8import("//tools/grit/grit_rule.gni") 9if (is_android) { 10 import("//build/config/android/config.gni") 11} 12 13declare_args() { 14 content_shell_product_name = "Content Shell" 15 16 # The "19" is so that sites that sniff for version think that this is 17 # something reasonably current; the "77.34.5" is a hint that this isn't a 18 # standard Chrome. 19 content_shell_version = "19.77.34.5" 20} 21 22static_library("content_shell_lib") { 23 testonly = true 24 sources = [ 25 "android/shell_jni_registrar.cc", 26 "android/shell_jni_registrar.h", 27 "android/shell_manager.cc", 28 "android/shell_manager.h", 29 "app/paths_mac.h", 30 "app/paths_mac.mm", 31 "app/shell_crash_reporter_client.cc", 32 "app/shell_crash_reporter_client.h", 33 "app/shell_main_delegate.cc", 34 "app/shell_main_delegate.h", 35 "app/shell_main_delegate_mac.h", 36 "app/shell_main_delegate_mac.mm", 37 "app/webkit_test_platform_support_android.cc", 38 "app/webkit_test_platform_support.h", 39 "app/webkit_test_platform_support_linux.cc", 40 "app/webkit_test_platform_support_mac.mm", 41 "app/webkit_test_platform_support_win.cc", 42 "browser/ipc_echo_message_filter.cc", 43 "browser/ipc_echo_message_filter.h", 44 "browser/notify_done_forwarder.cc", 45 "browser/notify_done_forwarder.h", 46 "browser/shell_android.cc", 47 "browser/shell_application_mac.h", 48 "browser/shell_application_mac.mm", 49 "browser/shell_browser_context.cc", 50 "browser/shell_browser_context.h", 51 "browser/shell_browser_main.cc", 52 "browser/shell_browser_main.h", 53 "browser/shell_browser_main_parts.cc", 54 "browser/shell_browser_main_parts.h", 55 "browser/shell_browser_main_parts_mac.mm", 56 "browser/shell.cc", 57 "browser/shell_content_browser_client.cc", 58 "browser/shell_content_browser_client.h", 59 "browser/shell_devtools_delegate.cc", 60 "browser/shell_devtools_delegate.h", 61 "browser/shell_devtools_frontend.cc", 62 "browser/shell_devtools_frontend.h", 63 "browser/shell_download_manager_delegate.cc", 64 "browser/shell_download_manager_delegate.h", 65 "browser/shell.h", 66 "browser/shell_javascript_dialog.h", 67 "browser/shell_javascript_dialog_mac.mm", 68 "browser/shell_javascript_dialog_manager.cc", 69 "browser/shell_javascript_dialog_manager.h", 70 "browser/shell_javascript_dialog_win.cc", 71 "browser/shell_layout_tests_android.cc", 72 "browser/shell_layout_tests_android.h", 73 "browser/shell_login_dialog.cc", 74 "browser/shell_login_dialog.h", 75 "browser/shell_login_dialog_mac.mm", 76 "browser/shell_mac.mm", 77 "browser/shell_message_filter.cc", 78 "browser/shell_message_filter.h", 79 "browser/shell_net_log.cc", 80 "browser/shell_net_log.h", 81 "browser/shell_network_delegate.cc", 82 "browser/shell_network_delegate.h", 83 "browser/shell_notification_manager.cc", 84 "browser/shell_notification_manager.h", 85 "browser/shell_platform_data_aura.cc", 86 "browser/shell_platform_data_aura.h", 87 "browser/shell_plugin_service_filter.cc", 88 "browser/shell_plugin_service_filter.h", 89 "browser/shell_quota_permission_context.cc", 90 "browser/shell_quota_permission_context.h", 91 "browser/shell_resource_dispatcher_host_delegate.cc", 92 "browser/shell_resource_dispatcher_host_delegate.h", 93 "browser/shell_speech_recognition_manager_delegate.cc", 94 "browser/shell_speech_recognition_manager_delegate.h", 95 "browser/shell_url_request_context_getter.cc", 96 "browser/shell_url_request_context_getter.h", 97 "browser/shell_web_contents_view_delegate_android.cc", 98 "browser/shell_web_contents_view_delegate_creator.h", 99 "browser/shell_web_contents_view_delegate.h", 100 "browser/shell_web_contents_view_delegate_mac.mm", 101 "browser/shell_web_contents_view_delegate_win.cc", 102 "browser/webkit_test_controller.cc", 103 "browser/webkit_test_controller.h", 104 "common/leak_detection_result.h", 105 "common/shell_content_client.cc", 106 "common/shell_content_client.h", 107 "common/shell_messages.cc", 108 "common/shell_messages.h", 109 "common/shell_switches.cc", 110 "common/shell_switches.h", 111 "common/shell_test_configuration.cc", 112 "common/shell_test_configuration.h", 113 "common/test_runner/test_preferences.cc", 114 "common/test_runner/test_preferences.h", 115 "common/webkit_test_helpers.cc", 116 "common/webkit_test_helpers.h", 117 "geolocation/shell_access_token_store.cc", 118 "geolocation/shell_access_token_store.h", 119 "renderer/gc_controller.cc", 120 "renderer/gc_controller.h", 121 "renderer/ipc_echo.cc", 122 "renderer/ipc_echo.h", 123 "renderer/leak_detector.cc", 124 "renderer/leak_detector.h", 125 "renderer/shell_content_renderer_client.cc", 126 "renderer/shell_content_renderer_client.h", 127 "renderer/shell_render_frame_observer.cc", 128 "renderer/shell_render_frame_observer.h", 129 "renderer/shell_render_process_observer.cc", 130 "renderer/shell_render_process_observer.h", 131 "renderer/shell_render_view_observer.cc", 132 "renderer/shell_render_view_observer.h", 133 "renderer/test_runner/accessibility_controller.cc", 134 "renderer/test_runner/accessibility_controller.h", 135 "renderer/test_runner/event_sender.cc", 136 "renderer/test_runner/event_sender.h", 137 "renderer/test_runner/gamepad_controller.cc", 138 "renderer/test_runner/gamepad_controller.h", 139 "renderer/test_runner/mock_color_chooser.cc", 140 "renderer/test_runner/mock_color_chooser.h", 141 "renderer/test_runner/mock_constraints.cc", 142 "renderer/test_runner/mock_constraints.h", 143 "renderer/test_runner/mock_credential_manager_client.cc", 144 "renderer/test_runner/mock_credential_manager_client.h", 145 "renderer/test_runner/mock_grammar_check.cc", 146 "renderer/test_runner/mock_grammar_check.h", 147 "renderer/test_runner/mock_screen_orientation_client.cc", 148 "renderer/test_runner/mock_screen_orientation_client.h", 149 "renderer/test_runner/mock_spell_check.cc", 150 "renderer/test_runner/mock_spell_check.h", 151 "renderer/test_runner/mock_web_audio_device.cc", 152 "renderer/test_runner/mock_web_audio_device.h", 153 "renderer/test_runner/mock_web_media_stream_center.cc", 154 "renderer/test_runner/mock_web_media_stream_center.h", 155 "renderer/test_runner/mock_web_midi_accessor.cc", 156 "renderer/test_runner/mock_web_midi_accessor.h", 157 "renderer/test_runner/mock_web_push_client.cc", 158 "renderer/test_runner/mock_web_push_client.h", 159 "renderer/test_runner/mock_web_speech_recognizer.cc", 160 "renderer/test_runner/mock_web_speech_recognizer.h", 161 "renderer/test_runner/mock_web_theme_engine.cc", 162 "renderer/test_runner/mock_web_theme_engine.h", 163 "renderer/test_runner/mock_web_theme_engine_mac.h", 164 "renderer/test_runner/mock_web_theme_engine_mac.mm", 165 "renderer/test_runner/mock_web_user_media_client.cc", 166 "renderer/test_runner/mock_web_user_media_client.h", 167 "renderer/test_runner/mock_webrtc_data_channel_handler.cc", 168 "renderer/test_runner/mock_webrtc_data_channel_handler.h", 169 "renderer/test_runner/mock_webrtc_dtmf_sender_handler.cc", 170 "renderer/test_runner/mock_webrtc_dtmf_sender_handler.h", 171 "renderer/test_runner/mock_webrtc_peer_connection_handler.cc", 172 "renderer/test_runner/mock_webrtc_peer_connection_handler.h", 173 "renderer/test_runner/notification_presenter.cc", 174 "renderer/test_runner/notification_presenter.h", 175 "renderer/test_runner/spell_check_client.cc", 176 "renderer/test_runner/spell_check_client.h", 177 "renderer/test_runner/test_common.cc", 178 "renderer/test_runner/test_common.h", 179 "renderer/test_runner/test_interfaces.cc", 180 "renderer/test_runner/test_interfaces.h", 181 "renderer/test_runner/test_plugin.cc", 182 "renderer/test_runner/test_plugin.h", 183 "renderer/test_runner/test_runner.cc", 184 "renderer/test_runner/test_runner.h", 185 "renderer/test_runner/text_input_controller.cc", 186 "renderer/test_runner/text_input_controller.h", 187 "renderer/test_runner/web_ax_object_proxy.cc", 188 "renderer/test_runner/web_ax_object_proxy.h", 189 "renderer/test_runner/web_frame_test_proxy.h", 190 "renderer/test_runner/web_permissions.cc", 191 "renderer/test_runner/web_permissions.h", 192 "renderer/test_runner/web_task.cc", 193 "renderer/test_runner/web_task.h", 194 "renderer/test_runner/web_test_delegate.h", 195 "renderer/test_runner/web_test_interfaces.cc", 196 "renderer/test_runner/web_test_interfaces.h", 197 "renderer/test_runner/web_test_proxy.cc", 198 "renderer/test_runner/web_test_proxy.h", 199 "renderer/test_runner/web_test_runner.h", 200 "renderer/webkit_test_runner.cc", 201 "renderer/webkit_test_runner.h", 202 ] 203 204 defines = [ "CONTENT_SHELL_VERSION=\"$content_shell_version\"" ] 205 206 public_deps = [ 207 # This exposes all public content APIs. 208 "//content/public/app:both", 209 "//content/public/browser", 210 "//content/public/common", 211 "//content/public/plugin", 212 "//content/public/renderer", 213 "//content/public/utility", 214 ] 215 deps = [ 216 ":resources", 217 "//base", 218 "//base:base_static", 219 "//base/allocator", 220 "//base/third_party/dynamic_annotations", 221 "//cc", 222 "//components/crash/app", 223 "//components/web_cache/renderer", 224 "//content:resources", 225 "//content/app/resources", 226 "//content/app/strings", 227 "//content/gpu", 228 "//content/test:layouttest_support", 229 "//gin", 230 "//gpu", 231 "//ipc", 232 "//media", 233 "//net", 234 "//net:net_resources", 235 "//skia", 236 "//storage/browser", 237 "//third_party/WebKit/public:blink", 238 "//third_party/WebKit/public:resources", 239 "//third_party/WebKit/public:test_support", 240 "//third_party/icu", 241 "//ui/base", 242 "//ui/events:events_base", 243 "//ui/gfx", 244 "//ui/gfx/geometry", 245 "//ui/gfx/ipc", 246 "//ui/gl", 247 "//url", 248 "//v8", 249 #'copy_test_netscape_plugin', TODO(GYP) 250 ] 251 if (enable_plugins) { 252 deps += [ "//content/ppapi_plugin" ] 253 } 254 255 if (is_win) { 256 #'LinkIncremental': '<(msvs_large_module_debug_link_mode)', TODO(GYP) 257 258 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 259 cflags = [ "/wd4267" ] 260 } 261 262 if (is_linux) { 263 configs += [ "//build/config/linux:fontconfig" ] 264 } 265 266 if (use_x11) { 267 # Some tests rely on this tool at runtime. Note: it might be better if 268 # the tests that needed it had this as a dep instead of adding it here. 269 datadeps = [ "//tools/xdisplaycheck" ] 270 } 271 272 if (is_android) { 273 deps += [ "//content/shell/android:content_shell_jni_headers" ] 274 #deps -= [ "copy_test_netscape_plugin" ] TODO(GYP) 275 } 276 277 if (is_posix && !is_mac && (!is_android || !is_android_webview_build)) { 278 deps += [ "//components/crash/browser" ] 279 } 280 281 if (use_aura) { 282 deps += [ 283 "//ui/aura", 284 "//ui/aura:test_support", 285 "//ui/events", 286 "//ui/strings", 287 "//ui/wm", 288 ] 289 290 if (toolkit_views) { 291 sources += [ "browser/shell_views.cc" ] 292 deps += [ 293 "//ui/resources", 294 "//ui/views/controls/webview", 295 "//ui/views", 296 "//ui/views:test_support", 297 ] 298 } else { 299 sources += [ "browser/shell_aura.cc" ] 300 } 301 } else { 302 sources -= [ 303 "browser/shell_platform_data_aura.cc", 304 "browser/shell_platform_data_aura.h", 305 ] 306 } 307 308 # The test plugin relies on X11. 309 if (is_linux && !use_x11) { 310 #deps -= [ 'copy_test_netscape_plugin' ] TODO(GYP) 311 } 312 313 if (is_chromeos) { 314 deps += [ 315 "//ui/wm:test_support", 316 #'../chromeos/chromeos.gyp:chromeos', TODO(GYP) 317 ] 318 } 319 320 if (is_linux) { 321 deps += [ "//third_party/freetype2" ] 322 } 323 324 if (!enable_plugins) { 325 sources -= [ 326 "browser/shell_plugin_service_filter.cc", 327 "browser/shell_plugin_service_filter.h", 328 ] 329 } 330} 331 332grit("content_shell_resources_grit") { 333 visibility = [ ":*" ] 334 source = "shell_resources.grd" 335 outputs = [ 336 "grit/shell_resources.h", 337 "shell_resources.pak", 338 "shell_resources.rc", 339 ] 340} 341 342copy("copy_shell_resources") { 343 sources = [ "$target_gen_dir/shell_resources.pak" ] 344 outputs = [ "$root_out_dir/shell_resources.pak" ] 345 346 public_deps = [ ":content_shell_resources_grit" ] 347} 348 349# Font copies. 350if (!is_mac) { 351 copy("copy_ahem") { 352 visibility = [ ":*" ] 353 sources = [ "renderer/test_runner/resources/fonts/AHEM____.TTF" ] 354 outputs = [ "$root_out_dir/AHEM____.TTF" ] 355 } 356} 357if (use_x11) { 358 copy("copy_x11_fonts") { 359 visibility = [ ":*" ] 360 sources = [ 361 "renderer/test_runner/resources/fonts/fonts.conf", 362 "//third_party/gardiner_mod/GardinerModBug.ttf", 363 "//third_party/gardiner_mod/GardinerModCat.ttf", 364 ] 365 outputs = [ "$root_out_dir/{{source_file_part}}" ] 366 } 367} 368if (is_android) { 369 copy("copy_android_fonts") { 370 visibility = [ ":*" ] 371 sources = [ 372 "renderer/test_runner/resources/fonts/android_main_fonts.xml", 373 "renderer/test_runner/resources/fonts/android_fallback_fonts.xml", 374 ] 375 outputs = [ "$root_out_dir/{{source_file_part}}" ] 376 } 377} 378 379group("resources") { 380 public_deps = [ 381 ":copy_shell_resources", 382 ] 383 deps = [] 384 385 if (is_mac) { 386 # TODO(GYP) Mac bundle resources. 387 #'all_dependent_settings': { 388 # 'mac_bundle_resources': [ 389 # 'shell/renderer/test_runner/resources/fonts/AHEM____.TTF', 390 # 'shell/renderer/test_runner/resources/fonts/ChromiumAATTest.ttf', 391 # '<(SHARED_INTERMEDIATE_DIR)/webkit/missingImage.png', 392 # '<(SHARED_INTERMEDIATE_DIR)/webkit/textAreaResizeCorner.png', 393 # ], 394 #}, 395 } else { 396 deps += [ ":copy_ahem" ] 397 } 398 399 if (use_x11) { 400 deps += [ ":copy_x11_fonts" ] 401 } 402 if (is_android) { 403 deps += [ ":copy_android_fonts" ] 404 } 405} 406 407repack("pak") { 408 sources = [ 409 "$root_gen_dir/blink/public/resources/blink_resources.pak", 410 "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", 411 "$root_gen_dir/content/app/strings/content_strings_en-US.pak", 412 "$root_gen_dir/content/browser/tracing/tracing_resources.pak", 413 "$root_gen_dir/content/content_resources.pak", 414 "$root_gen_dir/content/shell/shell_resources.pak", 415 "$root_gen_dir/net/net_resources.pak", 416 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak", 417 "$root_gen_dir/ui/resources/webui_resources.pak", 418 "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak", 419 "$root_gen_dir/ui/strings/ui_strings_en-US.pak", 420 ] 421 422 deps = [ 423 ":resources", 424 "//content:resources", 425 "//content/app/resources", 426 "//content/app/strings", 427 "//content/browser/tracing:resources", 428 "//net:net_resources", 429 "//third_party/WebKit/public:resources", 430 "//ui/resources", 431 "//ui/strings", 432 ] 433 434 sources += [ "$root_gen_dir/webkit/devtools_resources.pak" ] 435 deps += [ "//content/browser/devtools:resources" ] 436 output = "$root_out_dir/content_shell.pak" 437} 438 439# TODO(GYP): Figure out what this should be on android 440if (!is_android) { 441 442executable("content_shell") { 443 testonly = true 444 # TODO(GYP) mac resource bundle stuff for this target. 445 # TODO(GYP) Windows content shell settings: 446 # - Manifest. 447 # - RC file. 448 # - 'LinkIncremental': '<(msvs_large_module_debug_link_mode)', 449 sources = [ 450 "../app/startup_helper_win.cc", 451 "app/shell_main.cc", 452 ] 453 454 deps = [ 455 ":content_shell_lib", 456 ":pak", 457 "//base/allocator", 458 ] 459 460 if (is_win) { 461 deps += [ "//sandbox" ] 462 if (!is_asan) { 463 configs -= [ "//build/config/win:console" ] 464 configs += [ "//build/config/win:windowed" ] 465 } 466 } 467 468 if (is_mac) { 469 # TODO(GYP) lots of stuff from GYP file here. 470 } 471 472 if (is_android && !is_android_webview_build) { 473 # Some tests rely on this tool. It might be nicer if these tests relied on 474 # image diff rather than having content shell depend on it. 475 datadeps = [ 476 "//tools/imagediff($host_toolchain)", 477 ] 478 } 479} 480 481} 482