# Copyright 2018 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.

# This file is auto-generated from
#    //third_party/catapult/generated_telemetry_build.py
# DO NOT EDIT!

import("//build/config/compiler/compiler.gni")

group("telemetry_chrome_test_support") {
  testonly = true
  data = []
  data_deps = []

  data += [
    "AUTHORS",
    "CONTRIBUTING.md",
    "DIR_METADATA",
    "LICENSE",
    "OWNERS",
    "PRESUBMIT.py",
    "README.md",
    "WATCHLISTS",
    "codereview.settings",
    "navbar.md",
    "pylintrc",
    "bin/",
    "catapult_build/",
    "dashboard/",
    "dependency_manager/",
    "firefighter/",
    "hooks/",
    "infra/",
    "netlog_viewer/",
    "systrace/",
    "trace_processor/",
    "web_page_replay_go/",
  ]

  data_deps += [
    "devil",
    "telemetry",
  ]

  data += [
    "common/bin/",
    "common/lab/",
    "common/py_trace_event/",
    "common/py_utils/",
    "common/py_vulcanize/",
  ]

  data += [
    "third_party/WebOb/",
    "third_party/apiclient/",
    "third_party/beautifulsoup4/",
    "third_party/beautifulsoup4-4.9.3/",
    "third_party/cachetools/",
    "third_party/certifi/",
    "third_party/chai/",
    "third_party/chardet/",
    "third_party/cloudstorage/",
    "third_party/coverage/",
    "third_party/d3/",
    "third_party/depot_tools/",
    "third_party/flot/",
    "third_party/gae_ts_mon/",
    "third_party/google-auth/",
    "third_party/graphy/",
    "third_party/html5lib-1.1/",
    "third_party/html5lib-python/",
    "third_party/httplib2/",
    "third_party/idb/",
    "third_party/idna/",
    "third_party/ijson/",
    "third_party/jquery/",
    "third_party/jszip/",
    "third_party/mapreduce/",
    "third_party/mocha/",
    "third_party/mock/",
    "third_party/mox3/",
    "third_party/oauth2client/",
    "third_party/pipeline/",
    "third_party/polymer/",
    "third_party/polymer-svg-template/",
    "third_party/polymer3/",
    "third_party/pyasn1/",
    "third_party/pyasn1_modules/",
    "third_party/pyfakefs/",
    "third_party/pyparsing/",
    "third_party/pyserial/",
    "third_party/python_gflags/",
    "third_party/redux/",
    "third_party/requests/",
    "third_party/requests_toolbelt/",
    "third_party/rsa/",
    "third_party/six/",
    "third_party/snap-it/",
    "third_party/tsmon_client/",
    "third_party/tsproxy/",
    "third_party/uritemplate/",
    "third_party/urllib3/",
    "third_party/webapp2/",
    "third_party/webencodings-0.5.1/",
    "third_party/webtest/",
  ]

  data_deps += [
    "third_party/gsutil",
    "third_party/typ",
    "third_party/vinn",
  ]

  data += [
    "tracing/BUILD.gn",
    "tracing/DIR_METADATA",
    "tracing/LICENSE",
    "tracing/OWNERS",
    "tracing/PRESUBMIT.py",
    "tracing/README.md",
    "tracing/app.yaml",
    "tracing/bower.json",
    "tracing/package.json",
    "tracing/trace_viewer.gni",
    "tracing/tracing_project.py",
    "tracing/bin/",
    "tracing/docs/",
    "tracing/images/",
    "tracing/skp_data/",
    "tracing/third_party/",
    "tracing/tracing/",
    "tracing/tracing_build/",
    "tracing/tracing_examples/",
  ]

}