Home | History | Annotate | Download | only in content
      1 # Copyright (c) 2012 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 
      5 {
      6   'variables': {
      7     'content_shell_product_name': 'Content Shell',
      8     # The "19" is so that sites that sniff for version think that this is
      9     # something reasonably current; the "77.34.5" is a hint that this isn't a
     10     # standard Chrome.
     11     'content_shell_version': '19.77.34.5',
     12     'conditions': [
     13       ['OS=="linux"', {
     14        'use_custom_freetype%': 1,
     15       }, {
     16        'use_custom_freetype%': 0,
     17       }],
     18     ],
     19   },
     20   'targets': [
     21     {
     22       'target_name': 'content_shell_lib',
     23       'type': 'static_library',
     24       'defines': ['CONTENT_SHELL_VERSION="<(content_shell_version)"'],
     25       'variables': {
     26         'chromium_code': 1,
     27       },
     28       'dependencies': [
     29         'content.gyp:content_app_both',
     30         'content.gyp:content_browser',
     31         'content.gyp:content_common',
     32         'content.gyp:content_gpu',
     33         'content.gyp:content_plugin',
     34         'content.gyp:content_ppapi_plugin',
     35         'content.gyp:content_renderer',
     36         'content.gyp:content_utility',
     37         'content.gyp:content_worker',
     38         'content_resources.gyp:content_resources',
     39         'content_shell_resources',
     40         'copy_test_netscape_plugin',
     41         'layouttest_support_content',
     42         '../base/base.gyp:base',
     43         '../base/base.gyp:base_static',
     44         '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
     45         '../cc/cc.gyp:cc',
     46         '../components/components.gyp:breakpad_component',
     47         '../gin/gin.gyp:gin',
     48         '../gpu/gpu.gyp:gpu',
     49         '../ipc/ipc.gyp:ipc',
     50         '../media/media.gyp:media',
     51         '../net/net.gyp:net',
     52         '../net/net.gyp:net_resources',
     53         '../skia/skia.gyp:skia',
     54         '../third_party/WebKit/public/blink.gyp:blink',
     55         '../third_party/WebKit/public/blink.gyp:blink_test_support',
     56         '../ui/base/ui_base.gyp:ui_base',
     57         '../ui/events/events.gyp:events_base',
     58         '../ui/gfx/gfx.gyp:gfx',
     59         '../ui/gfx/gfx.gyp:gfx_geometry',
     60         '../ui/gl/gl.gyp:gl',
     61         '../url/url.gyp:url_lib',
     62         '../v8/tools/gyp/v8.gyp:v8',
     63         '../webkit/common/webkit_common.gyp:webkit_common',
     64         '../webkit/storage_browser.gyp:webkit_storage_browser',
     65         '../webkit/webkit_resources.gyp:webkit_resources',
     66       ],
     67       'include_dirs': [
     68         '..',
     69       ],
     70       'sources': [
     71         'shell/android/shell_jni_registrar.cc',
     72         'shell/android/shell_jni_registrar.h',
     73         'shell/android/shell_manager.cc',
     74         'shell/android/shell_manager.h',
     75         'shell/app/paths_mac.h',
     76         'shell/app/paths_mac.mm',
     77         'shell/app/shell_breakpad_client.cc',
     78         'shell/app/shell_breakpad_client.h',
     79         'shell/app/shell_main_delegate.cc',
     80         'shell/app/shell_main_delegate.h',
     81         'shell/app/shell_main_delegate_mac.h',
     82         'shell/app/shell_main_delegate_mac.mm',
     83         'shell/app/webkit_test_platform_support_android.cc',
     84         'shell/app/webkit_test_platform_support.h',
     85         'shell/app/webkit_test_platform_support_linux.cc',
     86         'shell/app/webkit_test_platform_support_mac.mm',
     87         'shell/app/webkit_test_platform_support_win.cc',
     88         'shell/browser/notify_done_forwarder.cc',
     89         'shell/browser/notify_done_forwarder.h',
     90         'shell/browser/shell_android.cc',
     91         'shell/browser/shell_application_mac.h',
     92         'shell/browser/shell_application_mac.mm',
     93         'shell/browser/shell_aura.cc',
     94         'shell/browser/shell_browser_context.cc',
     95         'shell/browser/shell_browser_context.h',
     96         'shell/browser/shell_browser_main.cc',
     97         'shell/browser/shell_browser_main.h',
     98         'shell/browser/shell_browser_main_parts.cc',
     99         'shell/browser/shell_browser_main_parts.h',
    100         'shell/browser/shell_browser_main_parts_mac.mm',
    101         'shell/browser/shell.cc',
    102         'shell/browser/shell_content_browser_client.cc',
    103         'shell/browser/shell_content_browser_client.h',
    104         'shell/browser/shell_devtools_delegate.cc',
    105         'shell/browser/shell_devtools_delegate.h',
    106         'shell/browser/shell_devtools_frontend.cc',
    107         'shell/browser/shell_devtools_frontend.h',
    108         'shell/browser/shell_download_manager_delegate.cc',
    109         'shell/browser/shell_download_manager_delegate.h',
    110         'shell/browser/shell.h',
    111         'shell/browser/shell_javascript_dialog.h',
    112         'shell/browser/shell_javascript_dialog_mac.mm',
    113         'shell/browser/shell_javascript_dialog_manager.cc',
    114         'shell/browser/shell_javascript_dialog_manager.h',
    115         'shell/browser/shell_javascript_dialog_win.cc',
    116         'shell/browser/shell_layout_tests_android.cc',
    117         'shell/browser/shell_layout_tests_android.h',
    118         'shell/browser/shell_login_dialog.cc',
    119         'shell/browser/shell_login_dialog.h',
    120         'shell/browser/shell_login_dialog_mac.mm',
    121         'shell/browser/shell_mac.mm',
    122         'shell/browser/shell_message_filter.cc',
    123         'shell/browser/shell_message_filter.h',
    124         'shell/browser/shell_net_log.cc',
    125         'shell/browser/shell_net_log.h',
    126         'shell/browser/shell_network_delegate.cc',
    127         'shell/browser/shell_network_delegate.h',
    128         'shell/browser/shell_platform_data_aura.cc',
    129         'shell/browser/shell_platform_data_aura.h',
    130         'shell/browser/shell_plugin_service_filter.cc',
    131         'shell/browser/shell_plugin_service_filter.h',
    132         'shell/browser/shell_quota_permission_context.cc',
    133         'shell/browser/shell_quota_permission_context.h',
    134         'shell/browser/shell_resource_dispatcher_host_delegate.cc',
    135         'shell/browser/shell_resource_dispatcher_host_delegate.h',
    136         'shell/browser/shell_speech_recognition_manager_delegate.cc',
    137         'shell/browser/shell_speech_recognition_manager_delegate.h',
    138         'shell/browser/shell_url_request_context_getter.cc',
    139         'shell/browser/shell_url_request_context_getter.h',
    140         'shell/browser/shell_views.cc',
    141         'shell/browser/shell_web_contents_view_delegate_android.cc',
    142         'shell/browser/shell_web_contents_view_delegate_creator.h',
    143         'shell/browser/shell_web_contents_view_delegate.h',
    144         'shell/browser/shell_web_contents_view_delegate_mac.mm',
    145         'shell/browser/shell_web_contents_view_delegate_win.cc',
    146         'shell/browser/webkit_test_controller.cc',
    147         'shell/browser/webkit_test_controller.h',
    148         'shell/common/leak_detection_result.h',
    149         'shell/common/shell_content_client.cc',
    150         'shell/common/shell_content_client.h',
    151         'shell/common/shell_messages.cc',
    152         'shell/common/shell_messages.h',
    153         'shell/common/shell_switches.cc',
    154         'shell/common/shell_switches.h',
    155         'shell/common/shell_test_configuration.cc',
    156         'shell/common/shell_test_configuration.h',
    157         'shell/common/test_runner/test_preferences.cc',
    158         'shell/common/test_runner/test_preferences.h',
    159         'shell/common/webkit_test_helpers.cc',
    160         'shell/common/webkit_test_helpers.h',
    161         'shell/geolocation/shell_access_token_store.cc',
    162         'shell/geolocation/shell_access_token_store.h',
    163         'shell/renderer/gc_controller.cc',
    164         'shell/renderer/gc_controller.h',
    165         'shell/renderer/leak_detector.cc',
    166         'shell/renderer/leak_detector.h',
    167         'shell/renderer/shell_content_renderer_client.cc',
    168         'shell/renderer/shell_content_renderer_client.h',
    169         'shell/renderer/shell_render_frame_observer.cc',
    170         'shell/renderer/shell_render_frame_observer.h',
    171         'shell/renderer/shell_render_process_observer.cc',
    172         'shell/renderer/shell_render_process_observer.h',
    173         'shell/renderer/shell_render_view_observer.cc',
    174         'shell/renderer/shell_render_view_observer.h',
    175         'shell/renderer/test_runner/MockColorChooser.cpp',
    176         'shell/renderer/test_runner/MockColorChooser.h',
    177         'shell/renderer/test_runner/MockSpellCheck.cpp',
    178         'shell/renderer/test_runner/MockSpellCheck.h',
    179         'shell/renderer/test_runner/MockWebMIDIAccessor.cpp',
    180         'shell/renderer/test_runner/MockWebMIDIAccessor.h',
    181         'shell/renderer/test_runner/MockWebMediaStreamCenter.cpp',
    182         'shell/renderer/test_runner/MockWebMediaStreamCenter.h',
    183         'shell/renderer/test_runner/MockWebSpeechRecognizer.cpp',
    184         'shell/renderer/test_runner/MockWebSpeechRecognizer.h',
    185         'shell/renderer/test_runner/SpellCheckClient.cpp',
    186         'shell/renderer/test_runner/SpellCheckClient.h',
    187         'shell/renderer/test_runner/TestCommon.cpp',
    188         'shell/renderer/test_runner/TestCommon.h',
    189         'shell/renderer/test_runner/TestInterfaces.cpp',
    190         'shell/renderer/test_runner/TestInterfaces.h',
    191         'shell/renderer/test_runner/TestPlugin.cpp',
    192         'shell/renderer/test_runner/TestPlugin.h',
    193         'shell/renderer/test_runner/WebTask.cpp',
    194         'shell/renderer/test_runner/WebTask.h',
    195         'shell/renderer/test_runner/WebTestDelegate.h',
    196         'shell/renderer/test_runner/WebTestInterfaces.cpp',
    197         'shell/renderer/test_runner/WebTestInterfaces.h',
    198         'shell/renderer/test_runner/WebTestThemeEngineMac.h',
    199         'shell/renderer/test_runner/WebTestThemeEngineMac.mm',
    200         'shell/renderer/test_runner/WebTestThemeEngineMock.cpp',
    201         'shell/renderer/test_runner/WebTestThemeEngineMock.h',
    202         'shell/renderer/test_runner/accessibility_controller.cc',
    203         'shell/renderer/test_runner/accessibility_controller.h',
    204         'shell/renderer/test_runner/event_sender.cc',
    205         'shell/renderer/test_runner/event_sender.h',
    206         'shell/renderer/test_runner/gamepad_controller.cc',
    207         'shell/renderer/test_runner/gamepad_controller.h',
    208         'shell/renderer/test_runner/mock_constraints.cc',
    209         'shell/renderer/test_runner/mock_constraints.h',
    210         'shell/renderer/test_runner/mock_grammar_check.cc',
    211         'shell/renderer/test_runner/mock_grammar_check.h',
    212         'shell/renderer/test_runner/mock_web_audio_device.cc',
    213         'shell/renderer/test_runner/mock_web_audio_device.h',
    214         'shell/renderer/test_runner/mock_web_push_client.cc',
    215         'shell/renderer/test_runner/mock_web_push_client.h',
    216         'shell/renderer/test_runner/mock_web_user_media_client.cc',
    217         'shell/renderer/test_runner/mock_web_user_media_client.h',
    218         'shell/renderer/test_runner/mock_webrtc_data_channel_handler.cc',
    219         'shell/renderer/test_runner/mock_webrtc_data_channel_handler.h',
    220         'shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.cc',
    221         'shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.h',
    222         'shell/renderer/test_runner/mock_webrtc_peer_connection_handler.cc',
    223         'shell/renderer/test_runner/mock_webrtc_peer_connection_handler.h',
    224         'shell/renderer/test_runner/notification_presenter.cc',
    225         'shell/renderer/test_runner/notification_presenter.h',
    226         'shell/renderer/test_runner/test_runner.cc',
    227         'shell/renderer/test_runner/test_runner.h',
    228         'shell/renderer/test_runner/text_input_controller.cc',
    229         'shell/renderer/test_runner/text_input_controller.h',
    230         'shell/renderer/test_runner/web_ax_object_proxy.cc',
    231         'shell/renderer/test_runner/web_ax_object_proxy.h',
    232         'shell/renderer/test_runner/web_frame_test_proxy.h',
    233         'shell/renderer/test_runner/web_permissions.cc',
    234         'shell/renderer/test_runner/web_permissions.h',
    235         'shell/renderer/test_runner/web_test_proxy.cc',
    236         'shell/renderer/test_runner/web_test_proxy.h',
    237         'shell/renderer/test_runner/web_test_runner.h',
    238         'shell/renderer/webkit_test_runner.cc',
    239         'shell/renderer/webkit_test_runner.h',
    240       ],
    241       'msvs_settings': {
    242         'VCLinkerTool': {
    243           'SubSystem': '2',  # Set /SUBSYSTEM:WINDOWS
    244         },
    245       },
    246       'conditions': [
    247         ['OS=="mac"', {
    248           'sources/': [
    249             ['exclude', 'WebTestThemeEngineMock.cpp'],
    250           ],
    251         }],
    252         ['OS=="win" and win_use_allocator_shim==1', {
    253           'dependencies': [
    254             '../base/allocator/allocator.gyp:allocator',
    255           ],
    256         }],
    257         ['OS=="win"', {
    258           'resource_include_dirs': [
    259             '<(SHARED_INTERMEDIATE_DIR)/webkit',
    260           ],
    261           'dependencies': [
    262             '<(DEPTH)/webkit/webkit_resources.gyp:webkit_strings',
    263           ],
    264           'configurations': {
    265             'Debug_Base': {
    266               'msvs_settings': {
    267                 'VCLinkerTool': {
    268                   'LinkIncremental': '<(msvs_large_module_debug_link_mode)',
    269                 },
    270               },
    271             },
    272           },
    273           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    274           'msvs_disabled_warnings': [ 4267, ],
    275         }, {  # OS!="win"
    276           'sources/': [
    277             ['exclude', 'Win\\.cpp$'],
    278           ],
    279         }],  # OS=="win"
    280         ['OS=="linux"', {
    281           'dependencies': [
    282             '../build/linux/system.gyp:fontconfig',
    283           ],
    284         }],
    285         ['use_x11 == 1', {
    286           'dependencies': [
    287             '../tools/xdisplaycheck/xdisplaycheck.gyp:xdisplaycheck',
    288           ],
    289         }],
    290         ['OS=="android"', {
    291           'dependencies': [
    292             'content_shell_jni_headers',
    293           ],
    294           'dependencies!': [
    295             'copy_test_netscape_plugin',
    296           ],
    297         }],  # OS=="android"
    298         ['os_posix == 1 and OS != "mac" and android_webview_build != 1', {
    299           'dependencies': [
    300             '../components/components.gyp:breakpad_host',
    301           ],
    302         }],
    303         ['(OS=="linux" or OS=="android") and use_allocator!="none"', {
    304           'dependencies': [
    305             # This is needed by content/app/content_main_runner.cc
    306             '../base/allocator/allocator.gyp:allocator',
    307           ],
    308         }],
    309         ['use_aura==1', {
    310           'dependencies': [
    311             '../ui/aura/aura.gyp:aura',
    312             '../ui/aura/aura.gyp:aura_test_support',
    313             '../ui/events/events.gyp:events',
    314             '../ui/strings/ui_strings.gyp:ui_strings',
    315             '../ui/wm/wm.gyp:wm',
    316           ],
    317           'conditions': [
    318             ['toolkit_views==1', {
    319               'dependencies': [
    320                 '../ui/resources/ui_resources.gyp:ui_resources',
    321                 '../ui/views/controls/webview/webview.gyp:webview',
    322                 '../ui/views/views.gyp:views',
    323                 '../ui/views/views.gyp:views_test_support',
    324               ],
    325               'sources/': [
    326                 ['exclude', 'shell/browser/shell_aura.cc'],
    327               ],
    328             }, {
    329               'sources/': [
    330                 ['exclude', 'shell/browser/shell_views.cc'],
    331               ],
    332             }],
    333           ],
    334         }, {
    335           'sources/': [
    336             ['exclude', 'shell/browser/shell_aura.cc'],
    337             ['exclude', 'shell/browser/shell_views.cc'],
    338           ],
    339         }],  # use_aura==1
    340         # The test plugin relies on X11.
    341         ['OS=="linux" and use_x11==0', {
    342           'dependencies!': [
    343             'copy_test_netscape_plugin',
    344           ],
    345         }],
    346         ['chromeos==1', {
    347           'dependencies': [
    348             '../chromeos/chromeos.gyp:chromeos',
    349             '../ui/wm/wm.gyp:wm_test_support',
    350            ],
    351         }], # chromeos==1
    352         ['use_custom_freetype==1', {
    353           'dependencies': [
    354              '../third_party/freetype2/freetype2.gyp:freetype2',
    355           ],
    356         }],
    357         ['enable_plugins==0', {
    358           'sources/': [
    359             ['exclude', 'shell/browser/shell_plugin_service_filter.cc'],
    360             ['exclude', 'shell/browser/shell_plugin_service_filter.h'],
    361           ],
    362         }]
    363       ],
    364     },
    365     {
    366       'target_name': 'content_shell_resources',
    367       'type': 'none',
    368       'variables': {
    369         'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/content',
    370       },
    371       'actions': [
    372         {
    373           'action_name': 'generate_content_shell_resources',
    374           'variables': {
    375             'grit_grd_file': 'shell/shell_resources.grd',
    376           },
    377           'includes': [ '../build/grit_action.gypi' ],
    378         },
    379       ],
    380       'includes': [ '../build/grit_target.gypi' ],
    381       'copies': [
    382         {
    383           'destination': '<(PRODUCT_DIR)',
    384           'files': [
    385             '<(SHARED_INTERMEDIATE_DIR)/content/shell_resources.pak'
    386           ],
    387         },
    388       ],
    389       'conditions': [
    390         ['OS=="win"', {
    391           'copies': [{
    392             'destination': '<(PRODUCT_DIR)',
    393             'files': ['shell/renderer/test_runner/resources/fonts/AHEM____.TTF'],
    394           }],
    395         }],
    396         ['OS=="mac"', {
    397           'all_dependent_settings': {
    398             'mac_bundle_resources': [
    399               'shell/renderer/test_runner/resources/fonts/AHEM____.TTF',
    400               'shell/renderer/test_runner/resources/fonts/ChromiumAATTest.ttf',
    401               '<(SHARED_INTERMEDIATE_DIR)/webkit/missingImage.png',
    402               '<(SHARED_INTERMEDIATE_DIR)/webkit/textAreaResizeCorner.png',
    403             ],
    404           },
    405         }],
    406         ['use_x11 == 1', {
    407           'copies': [{
    408             'destination': '<(PRODUCT_DIR)',
    409             'files': [
    410               'shell/renderer/test_runner/resources/fonts/AHEM____.TTF',
    411               'shell/renderer/test_runner/resources/fonts/fonts.conf',
    412             ]
    413           }],
    414         }],
    415         ['OS=="android"', {
    416           'copies': [{
    417             'destination': '<(PRODUCT_DIR)',
    418             'files': [
    419               'shell/renderer/test_runner/resources/fonts/AHEM____.TTF',
    420               'shell/renderer/test_runner/resources/fonts/android_main_fonts.xml',
    421               'shell/renderer/test_runner/resources/fonts/android_fallback_fonts.xml',
    422             ]
    423           }],
    424         }],
    425       ],
    426     },
    427     {
    428       # We build a minimal set of resources so WebKit in content_shell has
    429       # access to necessary resources.
    430       'target_name': 'content_shell_pak',
    431       'type': 'none',
    432       'dependencies': [
    433         'content_resources.gyp:content_resources',
    434         'content_shell_resources',
    435         '<(DEPTH)/net/net.gyp:net_resources',
    436         '<(DEPTH)/ui/resources/ui_resources.gyp:ui_resources',
    437         '<(DEPTH)/ui/strings/ui_strings.gyp:ui_strings',
    438         '<(DEPTH)/webkit/webkit_resources.gyp:webkit_resources',
    439         '<(DEPTH)/webkit/webkit_resources.gyp:webkit_strings',
    440       ],
    441       'conditions': [
    442         ['OS!="android" and OS!="ios"', {
    443           'dependencies': [
    444             'browser/tracing/tracing_resources.gyp:tracing_resources',
    445           ],
    446         }],
    447         ['OS!="android"', {
    448           'dependencies': [
    449             'browser/devtools/devtools_resources.gyp:devtools_resources',
    450           ],
    451         }],
    452       ],
    453       'actions': [
    454         {
    455           'action_name': 'repack_content_shell_pack',
    456           'variables': {
    457             'pak_inputs': [
    458               '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.pak',
    459               '<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.pak',
    460               '<(SHARED_INTERMEDIATE_DIR)/content/shell_resources.pak',
    461               '<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak',
    462               '<(SHARED_INTERMEDIATE_DIR)/ui/app_locale_settings/app_locale_settings_en-US.pak',
    463               '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak',
    464               '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/webui_resources.pak',
    465               '<(SHARED_INTERMEDIATE_DIR)/ui/ui_strings/ui_strings_en-US.pak',
    466               '<(SHARED_INTERMEDIATE_DIR)/webkit/blink_resources.pak',
    467               '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources_100_percent.pak',
    468               '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_strings_en-US.pak',
    469             ],
    470             'conditions': [
    471               ['OS!="android"', {
    472                 'pak_inputs': ['<(SHARED_INTERMEDIATE_DIR)/webkit/devtools_resources.pak',],
    473                 'pak_output': '<(PRODUCT_DIR)/content_shell.pak',
    474               }, {
    475                 'pak_output': '<(PRODUCT_DIR)/content_shell/assets/content_shell.pak',
    476               }],
    477             ],
    478           },
    479           'includes': [ '../build/repack_action.gypi' ],
    480         },
    481       ],
    482     },
    483     {
    484       'target_name': 'content_shell',
    485       'type': 'executable',
    486       'mac_bundle': 1,
    487       'variables': {
    488         'chromium_code': 1,
    489       },
    490       'dependencies': [
    491         'content_shell_lib',
    492         'content_shell_pak',
    493         '../third_party/mesa/mesa.gyp:osmesa',
    494         '../tools/imagediff/image_diff.gyp:image_diff',
    495       ],
    496       'include_dirs': [
    497         '..',
    498       ],
    499       'sources': [
    500         'app/startup_helper_win.cc',
    501         'shell/app/shell_main.cc',
    502       ],
    503       'mac_bundle_resources': [
    504         'shell/app/app.icns',
    505         'shell/app/app-Info.plist',
    506       ],
    507       # TODO(mark): Come up with a fancier way to do this.  It should only
    508       # be necessary to list app-Info.plist once, not the three times it is
    509       # listed here.
    510       'mac_bundle_resources!': [
    511         'shell/app/app-Info.plist',
    512       ],
    513       'xcode_settings': {
    514         'INFOPLIST_FILE': 'shell/app/app-Info.plist',
    515       },
    516       'msvs_settings': {
    517         'VCLinkerTool': {
    518           'SubSystem': '2',  # Set /SUBSYSTEM:WINDOWS
    519         },
    520         'VCManifestTool': {
    521           'AdditionalManifestFiles': [
    522             'shell/app/shell.exe.manifest',
    523           ],
    524         },
    525       },
    526       'conditions': [
    527         ['OS=="win" and win_use_allocator_shim==1', {
    528           'dependencies': [
    529             '../base/allocator/allocator.gyp:allocator',
    530           ],
    531         }],
    532         ['OS=="win"', {
    533           'sources': [
    534             'shell/app/shell.rc',
    535           ],
    536           'configurations': {
    537             'Debug_Base': {
    538               'msvs_settings': {
    539                 'VCLinkerTool': {
    540                   'LinkIncremental': '<(msvs_large_module_debug_link_mode)',
    541                 },
    542               },
    543             },
    544           },
    545         }],  # OS=="win"
    546         ['OS == "win"', {
    547           'dependencies': [
    548             '../sandbox/sandbox.gyp:sandbox',
    549           ],
    550         }],  # OS=="win"
    551         ['OS=="mac"', {
    552           'product_name': '<(content_shell_product_name)',
    553           'dependencies!': [
    554             'content_shell_lib',
    555           ],
    556           'dependencies': [
    557             'content_shell_framework',
    558             'content_shell_helper_app',
    559           ],
    560           'copies': [
    561             {
    562               'destination': '<(PRODUCT_DIR)/<(content_shell_product_name).app/Contents/Frameworks',
    563               'files': [
    564                 '<(PRODUCT_DIR)/<(content_shell_product_name) Helper.app',
    565               ],
    566             },
    567           ],
    568           'postbuilds': [
    569             {
    570               'postbuild_name': 'Copy <(content_shell_product_name) Framework.framework',
    571               'action': [
    572                 '../build/mac/copy_framework_unversioned.sh',
    573                 '${BUILT_PRODUCTS_DIR}/<(content_shell_product_name) Framework.framework',
    574                 '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Frameworks',
    575               ],
    576             },
    577             {
    578               # Modify the Info.plist as needed.
    579               'postbuild_name': 'Tweak Info.plist',
    580               'action': ['../build/mac/tweak_info_plist.py',
    581                          '--scm=1',
    582                          '--version=<(content_shell_version)'],
    583             },
    584             {
    585               # This postbuid step is responsible for creating the following
    586               # helpers:
    587               #
    588               # Content Shell Helper EH.app and Content Shell Helper NP.app are
    589               # created from Content Shell Helper.app.
    590               #
    591               # The EH helper is marked for an executable heap. The NP helper
    592               # is marked for no PIE (ASLR).
    593               'postbuild_name': 'Make More Helpers',
    594               'action': [
    595                 '../build/mac/make_more_helpers.sh',
    596                 'Frameworks',
    597                 '<(content_shell_product_name)',
    598               ],
    599             },
    600             {
    601               # Make sure there isn't any Objective-C in the shell's
    602               # executable.
    603               'postbuild_name': 'Verify No Objective-C',
    604               'action': [
    605                 '../build/mac/verify_no_objc.sh',
    606               ],
    607             },
    608           ],
    609         }],  # OS=="mac"
    610         ['OS=="android"', {
    611           'dependencies!': [
    612             '../tools/imagediff/image_diff.gyp:image_diff',
    613           ],
    614         }],  # OS=="android"
    615         ['OS=="android" and android_webview_build==0', {
    616           'dependencies': [
    617             '../tools/imagediff/image_diff.gyp:image_diff#host',
    618           ],
    619         }],  # OS=="android" and android_webview_build==0
    620       ],
    621     },
    622     {
    623       'target_name': 'content_shell_builder',
    624       'type': 'none',
    625       'dependencies': [
    626         'content_shell',
    627       ],
    628     },
    629 
    630     {
    631       'target_name': 'test_netscape_plugin',
    632       'type': 'loadable_module',
    633       'sources': [
    634         'shell/tools/plugin/PluginObject.cpp',
    635         'shell/tools/plugin/PluginObject.h',
    636         'shell/tools/plugin/PluginObjectMac.mm',
    637         'shell/tools/plugin/PluginTest.cpp',
    638         'shell/tools/plugin/PluginTest.h',
    639         'shell/tools/plugin/TestObject.cpp',
    640         'shell/tools/plugin/Tests/DocumentOpenInDestroyStream.cpp',
    641         'shell/tools/plugin/Tests/EvaluateJSAfterRemovingPluginElement.cpp',
    642         'shell/tools/plugin/Tests/FormValue.cpp',
    643         'shell/tools/plugin/Tests/GetURLNotifyWithURLThatFailsToLoad.cpp',
    644         'shell/tools/plugin/Tests/GetURLWithJavaScriptURL.cpp',
    645         'shell/tools/plugin/Tests/GetURLWithJavaScriptURLDestroyingPlugin.cpp',
    646         'shell/tools/plugin/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp',
    647         'shell/tools/plugin/Tests/LeakWindowScriptableObject.cpp',
    648         'shell/tools/plugin/Tests/LogNPPSetWindow.cpp',
    649         'shell/tools/plugin/Tests/NPDeallocateCalledBeforeNPShutdown.cpp',
    650         'shell/tools/plugin/Tests/NPPNewFails.cpp',
    651         'shell/tools/plugin/Tests/NPRuntimeCallsWithNullNPP.cpp',
    652         'shell/tools/plugin/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp',
    653         'shell/tools/plugin/Tests/NPRuntimeRemoveProperty.cpp',
    654         'shell/tools/plugin/Tests/NullNPPGetValuePointer.cpp',
    655         'shell/tools/plugin/Tests/PassDifferentNPPStruct.cpp',
    656         'shell/tools/plugin/Tests/PluginScriptableNPObjectInvokeDefault.cpp',
    657         'shell/tools/plugin/Tests/PluginScriptableObjectOverridesAllProperties.cpp',
    658         'shell/tools/plugin/main.cpp',
    659         'shell/tools/plugin/test_object.h',
    660       ],
    661       'include_dirs': [
    662         '<(DEPTH)',
    663         '<(DEPTH)/content/shell/tools/plugin/',
    664       ],
    665       'dependencies': [
    666         '../base/base.gyp:base',
    667         '../third_party/npapi/npapi.gyp:npapi',
    668       ],
    669       'conditions': [
    670         ['OS=="mac"', {
    671           'mac_bundle': 1,
    672           'product_extension': 'plugin',
    673           'link_settings': {
    674             'libraries': [
    675               '$(SDKROOT)/System/Library/Frameworks/Carbon.framework',
    676               '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
    677               '$(SDKROOT)/System/Library/Frameworks/QuartzCore.framework',
    678             ]
    679           },
    680           'xcode_settings': {
    681             'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO',
    682             'INFOPLIST_FILE': 'shell/tools/plugin/mac/Info.plist',
    683           },
    684         }],
    685         ['os_posix == 1 and OS != "mac"', {
    686           'cflags': [
    687             '-fvisibility=default',
    688           ],
    689         }],
    690         ['OS=="win"', {
    691           'defines': [
    692             # This seems like a hack, but this is what Safari Win does.
    693             'snprintf=_snprintf',
    694           ],
    695           'sources': [
    696             'shell/tools/plugin/win/TestNetscapePlugin.def',
    697             'shell/tools/plugin/win/TestNetscapePlugin.rc',
    698           ],
    699           # The .rc file requires that the name of the dll is np_test_netscape_plugin.dll.
    700           'product_name': 'np_test_netscape_plugin',
    701           # Disable c4267 warnings until we fix size_t to int truncations.
    702           'msvs_disabled_warnings': [ 4267, ],
    703         }],
    704       ],
    705     },
    706     {
    707       'target_name': 'copy_test_netscape_plugin',
    708       'type': 'none',
    709       'dependencies': [
    710         'test_netscape_plugin',
    711       ],
    712       'conditions': [
    713         ['OS=="win"', {
    714           'copies': [{
    715             'destination': '<(PRODUCT_DIR)/plugins',
    716             'files': ['<(PRODUCT_DIR)/np_test_netscape_plugin.dll'],
    717           }],
    718         }],
    719         ['OS=="mac"', {
    720           'copies': [{
    721             'destination': '<(PRODUCT_DIR)/plugins/',
    722             'files': ['<(PRODUCT_DIR)/test_netscape_plugin.plugin/'],
    723           }],
    724         }],
    725         ['os_posix == 1 and OS != "mac"', {
    726           'copies': [{
    727             'destination': '<(PRODUCT_DIR)/plugins',
    728             'files': ['<(PRODUCT_DIR)/libtest_netscape_plugin.so'],
    729           }],
    730         }],
    731       ],
    732     }
    733   ],
    734   'conditions': [
    735     ['OS=="mac" or OS=="win"', {
    736       'targets': [
    737         {
    738           'target_name': 'layout_test_helper',
    739           'type': 'executable',
    740           'sources': [
    741             'shell/renderer/test_runner/helper/layout_test_helper_mac.mm',
    742             'shell/renderer/test_runner/helper/layout_test_helper_win.cc',
    743           ],
    744           'conditions': [
    745             ['OS=="mac"', {
    746               'link_settings': {
    747                 'libraries': [
    748                   '$(SDKROOT)/System/Library/Frameworks/AppKit.framework',
    749                 ],
    750               },
    751             }],
    752           ],
    753         },
    754       ],
    755     }],  # OS=="mac" or OS=="win"
    756     ['OS=="mac"', {
    757       'targets': [
    758         {
    759           'target_name': 'content_shell_framework',
    760           'type': 'shared_library',
    761           'product_name': '<(content_shell_product_name) Framework',
    762           'mac_bundle': 1,
    763           'mac_bundle_resources': [
    764             'shell/app/English.lproj/HttpAuth.xib',
    765             'shell/app/English.lproj/MainMenu.xib',
    766             '<(PRODUCT_DIR)/content_shell.pak',
    767             'shell/app/framework-Info.plist',
    768           ],
    769           'mac_bundle_resources!': [
    770             'shell/app/framework-Info.plist',
    771           ],
    772           'xcode_settings': {
    773             # The framework is placed within the .app's Framework
    774             # directory.  DYLIB_INSTALL_NAME_BASE and
    775             # LD_DYLIB_INSTALL_NAME affect -install_name.
    776             'DYLIB_INSTALL_NAME_BASE':
    777                 '@executable_path/../Frameworks',
    778             # See /build/mac/copy_framework_unversioned.sh for
    779             # information on LD_DYLIB_INSTALL_NAME.
    780             'LD_DYLIB_INSTALL_NAME':
    781                 '$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(WRAPPER_NAME)/$(PRODUCT_NAME)',
    782 
    783             'INFOPLIST_FILE': 'shell/app/framework-Info.plist',
    784           },
    785           'dependencies': [
    786             'content_shell_lib',
    787           ],
    788           'include_dirs': [
    789             '..',
    790           ],
    791           'sources': [
    792             'shell/app/shell_content_main.cc',
    793             'shell/app/shell_content_main.h',
    794           ],
    795           'postbuilds': [
    796             {
    797               # Modify the Info.plist as needed.  The script explains why
    798               # this is needed.  This is also done in the chrome target.
    799               # The framework needs the Breakpad keys if this feature is
    800               # enabled.  It does not need the Keystone keys; these always
    801               # come from the outer application bundle.  The framework
    802               # doesn't currently use the SCM keys for anything,
    803               # but this seems like a really good place to store them.
    804               'postbuild_name': 'Tweak Info.plist',
    805               'action': ['../build/mac/tweak_info_plist.py',
    806                          '--breakpad=1',
    807                          '--keystone=0',
    808                          '--scm=1',
    809                          '--version=<(content_shell_version)',
    810                          '--branding=<(content_shell_product_name)'],
    811             },
    812           ],
    813           'copies': [
    814             {
    815               # Copy FFmpeg binaries for audio/video support.
    816               'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries',
    817               'files': [
    818                 '<(PRODUCT_DIR)/ffmpegsumo.so',
    819               ],
    820             },
    821             {
    822               'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Resources',
    823               'files': [
    824                 '<(PRODUCT_DIR)/crash_inspector',
    825                 '<(PRODUCT_DIR)/crash_report_sender.app'
    826               ],
    827             },
    828           ],
    829           'conditions': [
    830             ['enable_webrtc==1', {
    831               'variables': {
    832                 'libpeer_target_type%': 'static_library',
    833               },
    834               'conditions': [
    835                 ['libpeer_target_type!="static_library"', {
    836                   'copies': [{
    837                    'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries',
    838                    'files': [
    839                       '<(PRODUCT_DIR)/libpeerconnection.so',
    840                     ],
    841                   }],
    842                 }],
    843               ],
    844             }],
    845             ['icu_use_data_file_flag==1', {
    846               'mac_bundle_resources': [
    847                 '<(PRODUCT_DIR)/icudtl.dat',
    848               ],
    849             }],
    850           ],
    851         },  # target content_shell_framework
    852         {
    853           'target_name': 'content_shell_helper_app',
    854           'type': 'executable',
    855           'variables': { 'enable_wexit_time_destructors': 1, },
    856           'product_name': '<(content_shell_product_name) Helper',
    857           'mac_bundle': 1,
    858           'dependencies': [
    859             'content_shell_framework',
    860           ],
    861           'sources': [
    862             'shell/app/shell_main.cc',
    863             'shell/app/helper-Info.plist',
    864           ],
    865           # TODO(mark): Come up with a fancier way to do this.  It should only
    866           # be necessary to list helper-Info.plist once, not the three times it
    867           # is listed here.
    868           'mac_bundle_resources!': [
    869             'shell/app/helper-Info.plist',
    870           ],
    871           # TODO(mark): For now, don't put any resources into this app.  Its
    872           # resources directory will be a symbolic link to the browser app's
    873           # resources directory.
    874           'mac_bundle_resources/': [
    875             ['exclude', '.*'],
    876           ],
    877           'xcode_settings': {
    878             'INFOPLIST_FILE': 'shell/app/helper-Info.plist',
    879           },
    880           'postbuilds': [
    881             {
    882               # The framework defines its load-time path
    883               # (DYLIB_INSTALL_NAME_BASE) relative to the main executable
    884               # (chrome).  A different relative path needs to be used in
    885               # content_shell_helper_app.
    886               'postbuild_name': 'Fix Framework Link',
    887               'action': [
    888                 'install_name_tool',
    889                 '-change',
    890                 '@executable_path/../Frameworks/<(content_shell_product_name) Framework.framework/<(content_shell_product_name) Framework',
    891                 '@executable_path/../../../<(content_shell_product_name) Framework.framework/<(content_shell_product_name) Framework',
    892                 '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}'
    893               ],
    894             },
    895             {
    896               # Modify the Info.plist as needed.  The script explains why this
    897               # is needed.  This is also done in the chrome and chrome_dll
    898               # targets.  In this case, --breakpad=0, --keystone=0, and --scm=0
    899               # are used because Breakpad, Keystone, and SCM keys are
    900               # never placed into the helper.
    901               'postbuild_name': 'Tweak Info.plist',
    902               'action': ['../build/mac/tweak_info_plist.py',
    903                          '--breakpad=0',
    904                          '--keystone=0',
    905                          '--scm=0',
    906                          '--version=<(content_shell_version)'],
    907             },
    908             {
    909               # Make sure there isn't any Objective-C in the helper app's
    910               # executable.
    911               'postbuild_name': 'Verify No Objective-C',
    912               'action': [
    913                 '../build/mac/verify_no_objc.sh',
    914               ],
    915             },
    916           ],
    917           'conditions': [
    918             ['component=="shared_library"', {
    919               'xcode_settings': {
    920                 'LD_RUNPATH_SEARCH_PATHS': [
    921                   # Get back from Content Shell.app/Contents/Frameworks/
    922                   #                                 Helper.app/Contents/MacOS
    923                   '@loader_path/../../../../../..',
    924                 ],
    925               },
    926             }],
    927           ],
    928         },  # target content_shell_helper_app
    929       ],
    930     }],  # OS=="mac"
    931     ['OS=="android"', {
    932       'targets': [
    933         {
    934           # TODO(jrg): Update this action and other jni generators to only
    935           # require specifying the java directory and generate the rest.
    936           'target_name': 'content_shell_jni_headers',
    937           'type': 'none',
    938           'sources': [
    939             'shell/android/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsActivity.java',
    940             'shell/android/java/src/org/chromium/content_shell/ShellLayoutTestUtils.java',
    941             'shell/android/java/src/org/chromium/content_shell/ShellManager.java',
    942             'shell/android/java/src/org/chromium/content_shell/Shell.java',
    943           ],
    944           'variables': {
    945             'jni_gen_package': 'content/shell',
    946           },
    947           'includes': [ '../build/jni_generator.gypi' ],
    948         },
    949         {
    950           'target_name': 'libcontent_shell_content_view',
    951           'type': 'shared_library',
    952           'dependencies': [
    953             'content_shell_jni_headers',
    954             'content_shell_lib',
    955             'content_shell_pak',
    956             # Skia is necessary to ensure the dependencies needed by
    957             # WebContents are included.
    958             '../skia/skia.gyp:skia',
    959             '<(DEPTH)/media/media.gyp:player_android',
    960           ],
    961           'sources': [
    962             'shell/android/shell_library_loader.cc',
    963             'shell/android/shell_library_loader.h',
    964           ],
    965           'conditions': [
    966             ['android_webview_build==1', {
    967               'ldflags': [
    968                 '-lgabi++',  # For rtti
    969               ],
    970             }],
    971           ],
    972         },
    973         {
    974           'target_name': 'content_shell_java',
    975           'type': 'none',
    976           'dependencies': [
    977             'content.gyp:content_java',
    978           ],
    979           'variables': {
    980             'java_in_dir': '../content/shell/android/java',
    981             'has_java_resources': 1,
    982             'R_package': 'org.chromium.content_shell',
    983             'R_package_relpath': 'org/chromium/content_shell',
    984           },
    985           'includes': [ '../build/java.gypi' ],
    986         },
    987         {
    988           # content_shell_apk creates a .jar as a side effect. Any java targets
    989           # that need that .jar in their classpath should depend on this target,
    990           # content_shell_apk_java. Dependents of content_shell_apk receive its
    991           # jar path in the variable 'apk_output_jar_path'. This target should
    992           # only be used by targets which instrument content_shell_apk.
    993           'target_name': 'content_shell_apk_java',
    994           'type': 'none',
    995           'dependencies': [
    996             'content_shell_apk',
    997           ],
    998           'includes': [ '../build/apk_fake_jar.gypi' ],
    999         },
   1000         {
   1001           'target_name': 'content_shell_apk',
   1002           'type': 'none',
   1003           'dependencies': [
   1004             'content.gyp:content_icudata',
   1005             'content.gyp:content_java',
   1006             'content_java_test_support',
   1007             'content_shell_java',
   1008             'libcontent_shell_content_view',
   1009             '../base/base.gyp:base_java',
   1010             '../media/media.gyp:media_java',
   1011             '../net/net.gyp:net_java',
   1012             '../third_party/mesa/mesa.gyp:osmesa_in_lib_dir',
   1013             '../tools/android/forwarder/forwarder.gyp:forwarder',
   1014             '../ui/android/ui_android.gyp:ui_java',
   1015           ],
   1016           'variables': {
   1017             'apk_name': 'ContentShell',
   1018             'manifest_package_name': 'org.chromium.content_shell_apk',
   1019             'java_in_dir': 'shell/android/shell_apk',
   1020             'resource_dir': 'shell/android/shell_apk/res',
   1021             'native_lib_target': 'libcontent_shell_content_view',
   1022             'additional_input_paths': ['<(PRODUCT_DIR)/content_shell/assets/content_shell.pak'],
   1023             'asset_location': '<(PRODUCT_DIR)/content_shell/assets',
   1024             'extra_native_libs': ['<(SHARED_LIB_DIR)/libosmesa.so'],
   1025             'conditions': [
   1026               ['icu_use_data_file_flag==1', {
   1027                 'additional_input_paths': [
   1028                   '<(PRODUCT_DIR)/icudtl.dat',
   1029                 ],
   1030               }],
   1031             ],
   1032           },
   1033           'conditions': [
   1034             ['android_webview_build==0', {
   1035               'dependencies': [
   1036                 '../tools/imagediff/image_diff.gyp:image_diff#host',
   1037               ],
   1038             }],
   1039           ],
   1040           'includes': [ '../build/java_apk.gypi' ],
   1041         },
   1042       ],
   1043     }],  # OS=="android"
   1044     ['OS=="win"', {
   1045       'targets': [
   1046         {
   1047           'target_name': 'content_shell_crash_service',
   1048           'type': 'executable',
   1049           'dependencies': [
   1050             '../base/base.gyp:base',
   1051             '../components/components.gyp:breakpad_crash_service',
   1052           ],
   1053           'include_dirs': [
   1054             '..',
   1055           ],
   1056           'sources': [
   1057             'shell/tools/content_shell_crash_service.cc',
   1058           ],
   1059           'msvs_settings': {
   1060             'VCLinkerTool': {
   1061               'SubSystem': '2',         # Set /SUBSYSTEM:WINDOWS
   1062             },
   1063           },
   1064         },
   1065       ],
   1066     }],  # OS=="win"
   1067     ['OS=="win" and fastbuild==0 and target_arch=="ia32" and syzyasan==1', {
   1068       'variables': {
   1069         'dest_dir': '<(PRODUCT_DIR)/syzygy',
   1070       },
   1071       'targets': [
   1072         {
   1073           'target_name': 'content_shell_syzyasan',
   1074           'type': 'none',
   1075           'sources' : [],
   1076           # Instrument content_shell with SyzyAsan.
   1077           'actions': [
   1078             {
   1079               'action_name': 'Instrument content_shell with SyzyAsan',
   1080               'inputs': [
   1081                 '<(PRODUCT_DIR)/content_shell.exe',
   1082               ],
   1083               'outputs': [
   1084                 '<(dest_dir)/content_shell.exe',
   1085                 '<(dest_dir)/content_shell.exe.pdb',
   1086               ],
   1087               'action': [
   1088                 'python',
   1089                 '<(DEPTH)/chrome/tools/build/win/syzygy_instrument.py',
   1090                 '--mode', 'asan',
   1091                 '--input_executable', '<(PRODUCT_DIR)/content_shell.exe',
   1092                 '--input_symbol', '<(PRODUCT_DIR)/content_shell.exe.pdb',
   1093                 '--destination_dir', '<(dest_dir)',
   1094               ],
   1095             },
   1096           ],
   1097         },
   1098       ],
   1099     }],  # OS=="win" and fastbuild==0 and target_arch=="ia32"
   1100   ]
   1101 }
   1102