# 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)',
        ],
        '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=="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',
        ],
      },
    }],
    ['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)',
        ],
      },
    }],
    ['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=="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',
  ],
}
