# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

{
  'variables': {
    'chromium_code': 1,
  },
  'targets': [
    {
      'target_name': 'ui_test_support',
      'dependencies': [
        '../base/base.gyp:base',
        '../skia/skia.gyp:skia',
        '../testing/gtest.gyp:gtest',
        'gfx/gfx.gyp:gfx',
      ],
      'sources': [
        'base/test/cocoa_test_event_utils.h',
        'base/test/cocoa_test_event_utils.mm',
        'base/test/ui_cocoa_test_helper.h',
        'base/test/ui_cocoa_test_helper.mm',
        'base/test/ui_controls.h',
        'base/test/ui_controls_aura.cc',
        'base/test/ui_controls_gtk.cc',
        'base/test/ui_controls_internal_win.cc',
        'base/test/ui_controls_internal_win.h',
        'base/test/ui_controls_mac.mm',
        'base/test/ui_controls_win.cc',
        'gfx/test/color_util.cc',
        'gfx/test/color_util.h',
      ],
      'include_dirs': [
        '../',
      ],
      'conditions': [
        ['OS!="ios"', {
          'type': 'static_library',
          'includes': [ 'base/ime/ime_test_support.gypi' ],
        }, {  # OS=="ios"
          # None of the sources in this target are built on iOS, resulting in
          # link errors when building targets that depend on this target
          # because the static library isn't found. If this target is changed
          # to have sources that are built on iOS, the target should be changed
          # to be of type static_library on all platforms.
          'type': 'none',
          # The cocoa files don't apply to iOS.
          'sources/': [['exclude', 'cocoa']],
        }],
        ['chromeos==1', {
          'dependencies': [
            '../chromeos/chromeos.gyp:chromeos_test_support_without_gmock',
            '../skia/skia.gyp:skia',
          ],
        }],
        ['use_aura==1', {
          'sources!': [
            'base/test/ui_controls_win.cc',
          ],
        }],
      ],
    },
    {
      'target_name': 'run_ui_unittests',
      'type': 'static_library',
      'dependencies': [
        '../base/base.gyp:base',
        '../base/base.gyp:test_support_base',
        'ui.gyp:ui',
      ],
      'sources': [
        'test/test_suite.cc',
        'test/test_suite.h',
        'test/run_all_unittests.cc',
      ],
    },
    {
      'target_name': 'ui_unittests',
      'type': '<(gtest_target_type)',
      'dependencies': [
        '../base/base.gyp:base',
        '../base/base.gyp:test_support_base',
        '../skia/skia.gyp:skia',
        '../testing/gmock.gyp:gmock',
        '../testing/gtest.gyp:gtest',
        '../third_party/icu/icu.gyp:icui18n',
        '../third_party/icu/icu.gyp:icuuc',
        '../third_party/libpng/libpng.gyp:libpng',
        '../url/url.gyp:url_lib',
        'base/strings/ui_strings.gyp:ui_strings',
        'events/events.gyp:events_base',
        'resources/ui_resources.gyp:ui_resources',
        'run_ui_unittests',
        'shell_dialogs/shell_dialogs.gyp:shell_dialogs',
        'ui.gyp:ui',
        'ui_test_support',
      ],
      # iOS uses a small subset of ui. common_sources are the only files that
      # are built on iOS.
      'common_sources' : [
        'base/layout_unittest.cc',
        'base/l10n/l10n_util_mac_unittest.mm',
        'base/l10n/l10n_util_unittest.cc',
        'base/l10n/l10n_util_win_unittest.cc',
        'base/l10n/time_format_unittest.cc',
        'base/models/tree_node_iterator_unittest.cc',
        'base/resource/data_pack_literal.cc',
        'base/resource/data_pack_unittest.cc',
        'base/resource/resource_bundle_unittest.cc',
        'gfx/animation/animation_container_unittest.cc',
        'gfx/animation/animation_unittest.cc',
        'gfx/animation/multi_animation_unittest.cc',
        'gfx/animation/slide_animation_unittest.cc',
        'gfx/box_unittest.cc',
        'gfx/codec/png_codec_unittest.cc',
        'gfx/color_utils_unittest.cc',
        'gfx/display_unittest.cc',
        'gfx/font_unittest.cc',
        'gfx/image/image_family_unittest.cc',
        'gfx/image/image_skia_unittest.cc',
        'gfx/image/image_unittest.cc',
        'gfx/image/image_unittest_util.cc',
        'gfx/image/image_unittest_util.h',
        'gfx/image/image_unittest_util_ios.mm',
        'gfx/image/image_unittest_util_mac.mm',
        'gfx/insets_unittest.cc',
        'gfx/matrix3_unittest.cc',
        'gfx/point_unittest.cc',
        'gfx/point3_unittest.cc',
        'gfx/quad_unittest.cc',
        'gfx/range/range_mac_unittest.mm',
        'gfx/range/range_unittest.cc',
        'gfx/range/range_win_unittest.cc',
        'gfx/rect_unittest.cc',
        'gfx/safe_integer_conversions_unittest.cc',
        'gfx/screen_unittest.cc',
        'gfx/shadow_value_unittest.cc',
        'gfx/size_unittest.cc',
        'gfx/skbitmap_operations_unittest.cc',
        'gfx/text_elider_unittest.cc',
        'gfx/text_utils_unittest.cc',
        'gfx/vector2d_unittest.cc',
        'gfx/vector3d_unittest.cc',
      ],
      'all_sources': [
        '<@(_common_sources)',
        'base/accelerators/accelerator_manager_unittest.cc',
        'base/accelerators/menu_label_accelerator_util_linux_unittest.cc',
        'base/clipboard/clipboard_unittest.cc',
        'base/clipboard/custom_data_helper_unittest.cc',
        'base/cocoa/base_view_unittest.mm',
        'base/cocoa/cocoa_event_utils_unittest.mm',
        'base/cocoa/controls/blue_label_button_unittest.mm',
        'base/cocoa/controls/hover_image_menu_button_unittest.mm',
        'base/cocoa/controls/hyperlink_button_cell_unittest.mm',
        'base/cocoa/focus_tracker_unittest.mm',
        'base/cocoa/fullscreen_window_manager_unittest.mm',
        'base/cocoa/hover_image_button_unittest.mm',
        'base/cocoa/menu_controller_unittest.mm',
        'base/cocoa/nsgraphics_context_additions_unittest.mm',
        'base/cocoa/tracking_area_unittest.mm',
        'base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc',
        'base/gtk/gtk_expanded_container_unittest.cc',
        'base/models/list_model_unittest.cc',
        'base/models/list_selection_model_unittest.cc',
        'base/models/tree_node_model_unittest.cc',
        'base/test/data/resource.h',
        'base/text/bytes_formatting_unittest.cc',
        'base/view_prop_unittest.cc',
        'base/webui/web_ui_util_unittest.cc',
        'base/x/x11_util_unittest.cc',
        'gfx/animation/tween_unittest.cc',
        'gfx/blit_unittest.cc',
        'gfx/break_list_unittest.cc',
        'gfx/canvas_unittest.cc',
        'gfx/canvas_unittest_mac.mm',
        'gfx/codec/jpeg_codec_unittest.cc',
        'gfx/color_analysis_unittest.cc',
        'gfx/font_list_unittest.cc',
        'gfx/image/image_mac_unittest.mm',
        'gfx/image/image_util_unittest.cc',
        'gfx/ozone/dri/hardware_display_controller_unittest.cc',
        'gfx/ozone/dri/dri_surface_factory_unittest.cc',
        'gfx/ozone/dri/dri_surface_unittest.cc',
        'gfx/platform_font_mac_unittest.mm',
        'gfx/render_text_unittest.cc',
        'gfx/sequential_id_generator_unittest.cc',
        'gfx/transform_util_unittest.cc',
        'gfx/utf16_indexing_unittest.cc',
        'shell_dialogs/select_file_dialog_win_unittest.cc',
      ],
      'include_dirs': [
        '../',
      ],
      'conditions': [
        ['OS!="ios"', {
          'sources' : ['<@(_all_sources)'],
          'includes': [
            'base/ime/ime_unittests.gypi',
          ],
        }, {  # OS=="ios"
          'sources' : [
            '<@(_common_sources)',
          ],
          # The ResourceBundle unittest expects a locale.pak file to exist in
          # the bundle for English-US. Copy it in from where it was generated
          # by ui_strings.gyp:ui_unittest_strings.
          'mac_bundle_resources': [
            '<(PRODUCT_DIR)/ui_unittests_strings/en.lproj/locale.pak',
          ],
        }],
        ['OS == "win"', {
          'sources': [
            'test/ui_unittests.rc',
            'base/dragdrop/os_exchange_data_win_unittest.cc',
            'base/win/hwnd_subclass_unittest.cc',
            'gfx/font_fallback_win_unittest.cc',
            'gfx/icon_util_unittest.cc',
            'gfx/platform_font_win_unittest.cc',
          ],
          'include_dirs': [
            '../..',
            '../third_party/wtl/include',
          ],
          'msvs_settings': {
            'VCLinkerTool': {
              'DelayLoadDLLs': [
                'd2d1.dll',
                'd3d10_1.dll',
              ],
              'AdditionalDependencies': [
                'd2d1.lib',
                'd3d10_1.lib',
              ],
            },
          },
          'link_settings': {
            'libraries': [
              '-limm32.lib',
              '-loleacc.lib',
            ],
          },
          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
          'msvs_disabled_warnings': [ 4267, ],
        }],
        ['OS != "mac" and OS != "ios"', {
          'sources': [
            'gfx/transform_unittest.cc',
            'gfx/interpolated_transform_unittest.cc',
          ],
        }],
        ['OS == "android" and gtest_target_type == "shared_library"', {
          'dependencies': [
            '../testing/android/native_test.gyp:native_test_native_code',
          ],
        }],
        ['desktop_linux == 1 or chromeos == 1 or OS == "ios"', {
          'dependencies': [
            'base/strings/ui_strings.gyp:ui_unittest_strings',
          ],
        }],
        ['use_pango == 1', {
          'dependencies': [
            '../build/linux/system.gyp:fontconfig',
            '../build/linux/system.gyp:pangocairo',
          ],
          'sources': [
            'gfx/platform_font_pango_unittest.cc',
          ],
          'conditions': [
            ['linux_use_tcmalloc==1', {
               'dependencies': [
                 '../base/allocator/allocator.gyp:allocator',
               ],
            }],
            ['toolkit_views==1', {
              'sources!': [
                'browser/ui/gtk/gtk_expanded_container_unittest.cc',
              ],
            }],
          ],
        }],
        ['use_x11==1', {
          'dependencies': [
            '../tools/xdisplaycheck/xdisplaycheck.gyp:xdisplaycheck',
          ],
        }],
        ['toolkit_uses_gtk == 1', {
          'sources': [
            'base/dragdrop/gtk_dnd_util_unittest.cc',
          ],
          'dependencies': [
            '../build/linux/system.gyp:gtk',
          ],
        }],
        ['OS=="android" or OS=="ios"', {
          'sources!': [
            'gfx/render_text_unittest.cc',
          ],
        }],
        ['OS!="win" or use_aura==0', {
          'sources!': [
            'base/view_prop_unittest.cc',
          ],
        }],
        ['use_x11==1 and use_aura==1',  {
          'sources': [
            'base/cursor/cursor_loader_x11_unittest.cc',
          ],
        }],
        ['use_aura==1 or toolkit_views==1',  {
          'sources': [
            'base/dragdrop/os_exchange_data_unittest.cc',
          ],
          'dependencies': [
            'events/events.gyp:events',
            'events/events.gyp:events_base',
          ],
        }],
        ['use_aura==1', {
          'sources!': [
            'base/dialogs/select_file_dialog_win_unittest.cc',
            'base/dragdrop/os_exchange_data_win_unittest.cc',
            'gfx/screen_unittest.cc',
          ],
        }],
        ['use_ozone==1', {
          'dependencies': [
          '<(DEPTH)/build/linux/system.gyp:dridrm',
          ],
        }],
        ['use_ozone==1 and use_pango==0', {
          'sources!': [
            'gfx/text_elider_unittest.cc',
            'gfx/font_unittest.cc',
            'gfx/font_list_unittest.cc',
            'gfx/render_text_unittest.cc',
            'gfx/canvas_unittest.cc',
          ],
        }],
        ['chromeos==1', {
          'sources!': [
            'base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc',
          ],
        }],
      ],
      'target_conditions': [
        ['OS == "ios"', {
          'sources/': [
            # Pull in specific Mac files for iOS (which have been filtered out
            # by file name rules).
            ['include', '^base/l10n/l10n_util_mac_unittest\\.mm$'],
          ],
        }],
      ],
    },
  ],
  'conditions': [
    # Special target to wrap a gtest_target_type==shared_library
    # ui_unittests into an android apk for execution.
    # See base.gyp for TODO(jrg)s about this strategy.
    ['OS == "android" and gtest_target_type == "shared_library"', {
      'targets': [
        {
          'target_name': 'ui_unittests_apk',
          'type': 'none',
          'dependencies': [
            'ui_unittests',
          ],
          'variables': {
            'test_suite_name': 'ui_unittests',
            'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)ui_unittests<(SHARED_LIB_SUFFIX)',
          },
          'includes': [ '../build/apk_test.gypi' ],
        },
      ],
    }],
  ],
}
