# Copyright (c) 2012 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.
{
  'conditions': [
    ['use_x11==0', {
      'variables': {
        'command': [
          '../testing/test_env.py',
          '<(PRODUCT_DIR)/unit_tests<(EXECUTABLE_SUFFIX)',
          '--brave-new-test-launcher',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
      },
    }],
    ['use_x11==1', {
      'variables': {
        'command': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)',
          '<(PRODUCT_DIR)/unit_tests<(EXECUTABLE_SUFFIX)',
          '--brave-new-test-launcher',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
        'files': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)/xdisplaycheck<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    ['OS=="android" or OS=="linux" or OS=="win" or OS=="mac"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/test_data/chrome/browser/resources/google_now/',
          '<(PRODUCT_DIR)/test_data/chrome/browser/resources/print_preview/',
          '<(PRODUCT_DIR)/test_data/chrome/renderer/resources/extensions/',
          '<(PRODUCT_DIR)/test_data/chrome/test/data/unit/',
          '<(PRODUCT_DIR)/test_data/ui/webui/',
        ],
      },
    }],
    ['OS=="android" or OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'files': [
          '../base/test/data/',
          '../components/test/data/',
          '../extensions/test/data/',
          '../google_apis/test/data/',
          '../net/data/',
          '../third_party/accessibility-audit/axs_testing.js',
          '../third_party/hunspell_dictionaries/',
          '../third_party/zlib/google/test/data/',
          '../tools/metrics/histograms/histograms.xml',
          '<(PRODUCT_DIR)/resources.pak',
          'test/data/',
          'third_party/mock4js/',
        ],
      },
    }],
    ['OS=="android" or OS=="linux" or OS=="win"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/chrome_100_percent.pak',
          '<(PRODUCT_DIR)/locales/en-US.pak',
        ],
      },
    }],
    ['OS=="linux"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/libosmesa.so',
          '<(PRODUCT_DIR)/locales/fr.pak',
        ],
      },
    }],
    ['OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'files': [
          '../net/tools/testserver/',
          '../testing/test_env.py',
          '../third_party/pyftpdlib/',
          '../third_party/pywebsocket/',
          '../third_party/tlslite/',
          '<(PRODUCT_DIR)/pyproto/google/',
        ],
      },
    }],
    ['OS=="linux" or OS=="mac"', {
      'variables': {
        'read_only': 1,
      },
    }],
    ['OS=="mac"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/<(mac_product_name) Framework.framework/',
          '<(PRODUCT_DIR)/exif.so',
          '<(PRODUCT_DIR)/osmesa.so',
          '<(PRODUCT_DIR)/test_data/chrome/safe_browsing_dmg/',
        ],
      },
    }],
    ['OS=="mac" and asan==1 and fastbuild==0', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/<(mac_product_name) Framework.framework.dSYM/',
          '<(PRODUCT_DIR)/exif.so.dSYM/',
          '<(PRODUCT_DIR)/osmesa.so.dSYM/',
          '<(PRODUCT_DIR)/unit_tests.dSYM/',
        ],
      },
    }],
    ['OS=="win"', {
      'variables': {
        'files': [
          '../ppapi/lib/gl/include/KHR/',
          '../skia/ext/data/',
          '../ui/base/glib/',
          '<(PRODUCT_DIR)/blacklist_test_dll_1.dll',
          '<(PRODUCT_DIR)/chrome_elf.dll',
          '<(PRODUCT_DIR)/libexif.dll',
          '<(PRODUCT_DIR)/osmesa.dll',
          '<(PRODUCT_DIR)/verifier_test_dll_1.dll',
          '<(PRODUCT_DIR)/verifier_test_dll_2.dll',
          'test/data/safe_browsing/signed_binary.dll',
        ],
        # Can't be enabled on Windows due to http://crbug.com/342913
        'read_only': 0,
      },
    }],
    ['OS=="win" and (fastbuild==0 or fastbuild==1)', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/unit_tests.exe.pdb',
        ],
      },
    }],
    ['OS=="win" and kasko==1', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/kasko.dll',
        ],
      },
    }],
    ['chromeos==1', {
      'variables': {
        'files': [
          '../chromeos/test/data/network/',
          '<(PRODUCT_DIR)/libexif.so',
          '<(PRODUCT_DIR)/test_data/chrome/browser/resources/chromeos/',
        ],
      },
    }],
  ],
  'includes': [
    '../base/base.isolate',
    '../gin/v8.isolate',
    '../ui/gl/gl.isolate',
  ],
}
