# Copyright 2015 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)/media_blink_unittests<(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)/media_blink_unittests<(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=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'files': [
          '../../testing/test_env.py',
        ],
      },
    }],
    ['OS=="mac" and asan==1 and fastbuild==0', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/media_blink_unittests.dSYM/',
        ],
      },
    }],
    ['OS=="win" and (fastbuild==0 or fastbuild==1)', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/media_blink_unittests.exe.pdb',
        ],
      },
    }],
  ],
  'includes': [
    '../../base/base.isolate',
    '../../gin/v8.isolate',
  ],
}
