# Copyright 2013 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.
{
  # TODO(kbr): including all of chrome.isolate is overkill -- the only
  # real dependency is on ffmpegsumo. However, wait to refactor
  # chrome.isolate (perhaps adding a media.isolate) for the moment.
  'includes': [
    'chrome.isolate',
  ],
  'conditions': [
    ['OS=="android" or OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'command': [
          '<(PRODUCT_DIR)/content_gl_tests<(EXECUTABLE_SUFFIX)',
        ],
        'isolate_dependency_tracked': [
          '<(PRODUCT_DIR)/content_gl_tests<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    # TODO(kbr): these two dependencies seem to be necessary when
    # running the component build to avoid "Failed to mmap datapack"
    # errors. Should investigate further.
    ['OS=="linux" or OS=="win"', {
      'variables': {
        'isolate_dependency_tracked': [
          '<(PRODUCT_DIR)/content_resources.pak',
          '<(PRODUCT_DIR)/ui_test.pak',
        ],
      },
    }],
  ],
}
