# 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)',
        ],
        'isolate_dependency_tracked': [
          '../testing/xvfb.py',
          '<(PRODUCT_DIR)/libclearkeycdm.so',
          '<(PRODUCT_DIR)/libclearkeycdmadapter.so',
          '<(PRODUCT_DIR)/libffmpegsumo.so',
          '<(PRODUCT_DIR)/libosmesa.so',
          '<(PRODUCT_DIR)/libppGoogleNaClPluginChrome.so',
          '<(PRODUCT_DIR)/libppapi_tests.so',
          '<(PRODUCT_DIR)/nacl_helper<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/nacl_helper_bootstrap<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/xdisplaycheck<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    ['OS=="linux" or OS=="mac"', {
      'variables': {
        'isolate_dependency_tracked': [
          'browser/nacl_host/test/debug_stub_browser_tests.py',
          'browser/nacl_host/test/gdb_rsp.py',
        ],
      },
    }],
    ['OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'isolate_dependency_tracked': [
          '../media/test/data/bear-320x240-multitrack.webm',
          '../media/test/data/no_streams.webm',
          '../media/test/data/sfx.ogg',
          '../ppapi/tests/test_case.html',
          '../ppapi/tests/test_page.css',
          '../testing/test_env.py',
          '../third_party/accessibility-audit/axs_testing.js',
          '<(PRODUCT_DIR)/browser_tests<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_glibc.nmf',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_newlib.nmf',
          '<(PRODUCT_DIR)/ppapi_nacl_tests_pnacl.nmf',
          '<(PRODUCT_DIR)/resources.pak',
          '<(PRODUCT_DIR)/test_case.html',
          '<(PRODUCT_DIR)/test_case.html.mock-http-headers',
          '<(PRODUCT_DIR)/test_page.css',
          'browser/policy/test/asn1der.py',
          'browser/policy/test/policy_testserver.py',
          'browser/safe_browsing/safe_browsing_testserver.py',
          'common/extensions/docs/examples/apps/calculator/app/controller.js',
          'common/extensions/docs/examples/apps/calculator/app/model.js',
          'common/extensions/docs/examples/apps/calculator/app/view.js',
        ],
        'isolate_dependency_untracked': [
          '../content/test/data/',
          '../net/data/',
          '../net/tools/testserver/',
          '../third_party/WebKit/Tools/Scripts/',
          '../third_party/pyftpdlib/',
          '../third_party/pywebsocket/',
          '../third_party/safe_browsing/',
          '../third_party/simplejson/',
          '../third_party/tlslite/',
          '../tools/swarming_client/',
          '<(PRODUCT_DIR)/nacl_test_data/',
          '<(PRODUCT_DIR)/pnacl/',
          '<(PRODUCT_DIR)/pseudo_locales/',
          '<(PRODUCT_DIR)/pyproto/',
          '<(PRODUCT_DIR)/test_data/chrome/',
          '<(PRODUCT_DIR)/test_data/ppapi/',
          '<(PRODUCT_DIR)/test_url_loader_data/',
          'common/extensions/docs/examples/apps/calculator/tests/',
          'test/data/',
          'third_party/mock4js/',
        ],
      },
    }],
    ['OS=="linux" or OS=="win"', {
      'variables': {
        'isolate_dependency_tracked': [
          '<(PRODUCT_DIR)/chrome<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/chrome_100_percent.pak',
          '<(PRODUCT_DIR)/locales/en-US.pak',
          '<(PRODUCT_DIR)/locales/fr.pak',
          '<(PRODUCT_DIR)/mock_nacl_gdb<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
          '<(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',
        ],
        'isolate_dependency_untracked': [
          '../third_party/bidichecker/',
          '<(PRODUCT_DIR)/lib64/',
          '<(PRODUCT_DIR)/plugins/',
          '<(PRODUCT_DIR)/resources/extension/',
        ],
      },
    }],
    ['OS=="mac"', {
      'variables': {
        'isolate_dependency_tracked': [
          '<(PRODUCT_DIR)/clearkeycdmadapter.plugin',
          '<(PRODUCT_DIR)/ffmpegsumo.so',
          '<(PRODUCT_DIR)/libclearkeycdm.dylib',
          '<(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',
          '<(PRODUCT_DIR)/ppapi_tests.plugin/Contents/MacOS/ppapi_tests',
        ],
        'isolate_dependency_untracked': [
          '<(PRODUCT_DIR)/Chromium Framework.framework/',
          '<(PRODUCT_DIR)/Chromium Helper.app/',
          '<(PRODUCT_DIR)/Chromium.app/',
          '<(PRODUCT_DIR)/lib32/',
          '<(PRODUCT_DIR)/plugins/TestNetscapePlugIn.plugin/',
          '<(PRODUCT_DIR)/plugins/npapi_test_plugin.plugin/',
        ],
      },
    }],
    ['OS=="mac" or OS=="win"', {
      'variables': {
        'command': [
          '../testing/test_env.py',
          '<(PRODUCT_DIR)/browser_tests<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    ['OS=="win"', {
      'variables': {
        'isolate_dependency_tracked': [
          '../native_client/build/build_nexe.py',
          '../third_party/cygwin/bin/bash.exe',
          '../third_party/cygwin/setup_mount.bat',
          '<(PRODUCT_DIR)/D3DCompiler_43.dll',
          '<(PRODUCT_DIR)/clearkeycdm.dll',
          '<(PRODUCT_DIR)/clearkeycdmadapter.dll',
          '<(PRODUCT_DIR)/chrome.dll',
          '<(PRODUCT_DIR)/d3dcompiler_46.dll',
          '<(PRODUCT_DIR)/ffmpegsumo.dll',
          '<(PRODUCT_DIR)/icudt.dll',
          '<(PRODUCT_DIR)/libEGL.dll',
          '<(PRODUCT_DIR)/libGLESv2.dll',
          '<(PRODUCT_DIR)/nacl64<(EXECUTABLE_SUFFIX)',
          '<(PRODUCT_DIR)/osmesa.dll',
          '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll',
          '<(PRODUCT_DIR)/ppapi_tests.dll',
          '<(PRODUCT_DIR)/security_tests.dll',
          'tools/build/repack_locales.py',
        ],
        'isolate_dependency_untracked': [
          '../third_party/npapi/npspy/extern/plugin/',
          '../third_party/psyco_win32/psyco/',
          '../third_party/python_26/',
        ],
      },
    }],
  ],
}
