# 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': [
    ['OS=="linux"', {
      'variables': {
        'command': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)',
          '<(PRODUCT_DIR)/browser_tests<(EXECUTABLE_SUFFIX)',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--lsan=<(lsan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
        'files': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)/libclearkeycdm.so',
          '<(PRODUCT_DIR)/libclearkeycdmadapter.so',
          '<(PRODUCT_DIR)/libppapi_tests.so',
        ],
      },
    }],
    ['OS=="linux" and use_ozone==0', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/xdisplaycheck<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    ['OS=="linux" and libpeer_target_type=="loadable_module"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/lib/libpeerconnection.so',
        ],
      },
    }],
    ['OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'files': [
          '../content/test/data/',
          '../google_apis/test/',
          '../media/test/data/',
          '../media/test/data/',
          '../net/data/',
          '../net/tools/testserver/',
          '../ppapi/tests/test_case.html',
          '../ppapi/tests/test_page.css',
          '../testing/test_env.py',
          '../third_party/accessibility-audit/axs_testing.js',
          '../third_party/pyftpdlib/',
          '../third_party/pywebsocket/',
          '../third_party/safe_browsing/',
          '../third_party/simplejson/',
          '../third_party/tlslite/',
          '<(PRODUCT_DIR)/browser_tests<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/browser_tests.pak',
          '<(PRODUCT_DIR)/peerconnection_server<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/pseudo_locales/',
          '<(PRODUCT_DIR)/pyproto/',
          '<(PRODUCT_DIR)/remoting/unittests/',
          '<(PRODUCT_DIR)/test_case.html',
          '<(PRODUCT_DIR)/test_case.html.mock-http-headers',
          '<(PRODUCT_DIR)/test_data/',
          '<(PRODUCT_DIR)/test_page.css',
          '<(PRODUCT_DIR)/test_url_loader_data/',
          'browser/policy/test/asn1der.py',
          'browser/policy/test/policy_testserver.py',
          'common/extensions/docs/examples/apps/calculator/',
          'test/data/',
          'third_party/mock4js/',
        ],
        'read_only': 1,
      },
    }],
    ['disable_nacl==0 and (OS=="linux" or OS=="mac" or OS=="win")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/nacl_test_data/',
          '<(PRODUCT_DIR)/pnacl/',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_newlib.nmf',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl.nmf',
        ],
        'read_only': 1,
      },
    }],
    ['OS=="linux" or OS=="win"', {
      'variables': {
        'files': [
          '../third_party/bidichecker/',
        ],
      },
    }],
    ['disable_nacl==0 and (OS=="linux" or OS=="win")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/mock_nacl_gdb<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    [('disable_nacl==0 and (OS=="linux" or OS=="mac" or OS=="win") and '
         '(target_arch=="x64" or target_arch=="ia32")'), {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/ppapi_nacl_tests_glibc.nmf',
        ],
      },
    }],
    [('disable_nacl==0 and OS=="linux" and '
      '(target_arch=="ia32" or target_arch=="x64" or target_arch=="arm")'), {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl_nonsfi.nmf',
        ],
      },
    }],
    ['disable_nacl==0 and OS=="linux" and target_arch=="arm"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/ppapi_nacl_tests_newlib_arm.nexe',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl_newlib_arm.nexe',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl_newlib_arm_nonsfi.nexe',
        ],
      },
    }],
    ['disable_nacl==0 and (OS=="win" or '
         '((OS=="linux" or OS=="mac") and target_arch=="x64"))', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/lib64/',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_glibc_x64.nexe',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_newlib_x64.nexe',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl_newlib_x64.nexe',
        ],
      },
    }],
    ['disable_nacl==0 and target_arch=="ia32" and'
         '(OS=="mac" or OS=="linux" or OS=="win")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/lib32/',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_glibc_x32.nexe',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_newlib_x32.nexe',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl_newlib_x32.nexe',
        ],
      },
    }],
    ['disable_nacl==0 and OS=="linux" and '
         '(target_arch=="x64" or target_arch=="ia32")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl_newlib_x32_nonsfi.nexe',
        ],
      },
    }],
    ['OS=="mac"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/clearkeycdmadapter.plugin',
          '<(PRODUCT_DIR)/content_shell.pak',
          '<(PRODUCT_DIR)/libclearkeycdm.dylib',
          '<(PRODUCT_DIR)/osmesa.so',
          '<(PRODUCT_DIR)/plugins/npapi_test_plugin.plugin/',
          '<(PRODUCT_DIR)/plugins/test_netscape_plugin.plugin/',
          '<(PRODUCT_DIR)/ppapi_tests.plugin/Contents/MacOS/ppapi_tests',
        ],
      },
    }],
    ['OS=="mac" or OS=="win"', {
      'variables': {
        'command': [
          '../testing/test_env.py',
          '<(PRODUCT_DIR)/browser_tests<(EXECUTABLE_SUFFIX)',
          '--test-launcher-bot-mode',
          '--asan=<(asan)',
          '--lsan=<(lsan)',
          '--msan=<(msan)',
          '--tsan=<(tsan)',
        ],
      },
    }],
    ['OS=="win"', {
      'variables': {
        'files': [
          '../native_client/build/build_nexe.py',
          '<(PRODUCT_DIR)/chrome_elf.dll',
          '<(PRODUCT_DIR)/clearkeycdm.dll',
          '<(PRODUCT_DIR)/clearkeycdmadapter.dll',
          '<(PRODUCT_DIR)/plugins/',
          '<(PRODUCT_DIR)/ppapi_tests.dll',
          'tools/build/repack_locales.py',
        ],
      },
    }],
    ['OS=="win" and target_arch=="ia32"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/wow_helper.exe',
        ],
      },
    }],
    ['OS=="win" and (fastbuild==0 or fastbuild==1)', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/browser_tests.exe.pdb',
        ],
      },
    }],
    ['OS=="mac" and asan==1 and fastbuild==0', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/browser_tests.dSYM/',
        ],
      },
    }],
    ['OS=="win" and libpeer_target_type=="loadable_module"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/libpeerconnection.dll',
        ],
      },
    }],
    ['chromeos==1', {
      'variables': {
        'files': [
          '../chromeos/test/data/',
          '../ui/file_manager/file_manager/',
          '../ui/file_manager/gallery/',
          '../ui/file_manager/image_loader/',
          '../ui/file_manager/integration_tests/',
          '../ui/webui/resources/js/',
          '../chrome/browser/resources/chromeos/wallpaper_manager/',
          '<(PRODUCT_DIR)/chromevox_test_data/',
          '<(PRODUCT_DIR)/content_shell.pak',
          '<(PRODUCT_DIR)/keyboard_resources.pak',
          '<(PRODUCT_DIR)/libexif.so',
          '<(PRODUCT_DIR)/locales/',
          '<(PRODUCT_DIR)/nacl_helper',
          '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
          '<(PRODUCT_DIR)/resources/chromeos/',
          'browser/chromeos/login/test/https_forwarder.py',
        ],
      },
    }],
  ],
  'includes': [
    '../base/base.isolate',
    'chrome.isolate',
  ],
}
