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

import("//media/media_options.gni")

source_set("lib") {
  sources = [
    "ipc_data_source.cc",
    "ipc_data_source.h",
    "media_gallery_util_service.cc",
    "media_gallery_util_service.h",
    "media_metadata_parser.cc",
    "media_metadata_parser.h",
    "media_parser.cc",
    "media_parser.h",
    "media_parser_factory.cc",
    "media_parser_factory.h",
  ]

  deps = [
    "//base",
    "//media",
    "//mojo/public/cpp/bindings",
  ]

  if (is_android) {
    sources += [
      "media_parser_android.cc",
      "media_parser_android.h",
      "video_thumbnail_parser.cc",
      "video_thumbnail_parser.h",
    ]
  }

  public_deps = [
    "//chrome/services/media_gallery_util/public/mojom",
    "//services/service_manager/public/cpp",
  ]

  if (media_use_ffmpeg) {
    deps += [
      "//third_party/ffmpeg",
      "//third_party/ffmpeg:ffmpeg_features",
    ]
  }
}

if (is_android) {
  source_set("unit_tests") {
    testonly = true
    sources = [
      "media_parser_android_unittest.cc",
    ]

    data = [
      "//media/test/data/bear.mp4",
      "//media/test/data/bear-vp8-webvtt.webm",
      "//media/test/data/bear-vp8a.webm",
      "//media/test/data/sfx.mp3",
    ]

    deps = [
      ":lib",
      "//testing/gtest",
    ]
  }
}
