# Copyright 2014 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("//build/buildflag_header.gni")
import("//media/media_options.gni")
import("//testing/test.gni")

buildflag_header("features") {
  header = "features.h"

  enable_mojo_renderer = false
  enable_mojo_cdm = false
  enable_mojo_audio_decoder = false
  enable_mojo_video_decoder = false
  enable_mojo_media_in_browser_process = false
  enable_mojo_media_in_gpu_process = false
  enable_mojo_media_in_utility_process = false

  if (!enable_mojo_media) {
    assert(mojo_media_services == [], "Mojo media is not enabled")
    assert(mojo_media_host == "none", "Mojo media is not enabled")
    assert(!enable_test_mojo_media_client, "Mojo media is not enabled")
  } else {
    assert(mojo_media_services != [], "No mojo media service specified")
    foreach(service, mojo_media_services) {
      if (service == "renderer") {
        enable_mojo_renderer = true
      } else if (service == "cdm") {
        enable_mojo_cdm = true
      } else if (service == "audio_decoder") {
        enable_mojo_audio_decoder = true
      } else if (service == "video_decoder") {
        enable_mojo_video_decoder = true
      } else {
        assert(false, "Invalid mojo media service: $service")
      }
    }
    assert(
        enable_mojo_renderer || !enable_runtime_media_renderer_selection,
        "The mojo renderer must be enabled to use runtime media renderer selection.")

    if (mojo_media_host == "browser") {
      enable_mojo_media_in_browser_process = true
    } else if (mojo_media_host == "gpu") {
      enable_mojo_media_in_gpu_process = true
    } else if (mojo_media_host == "utility") {
      enable_mojo_media_in_utility_process = true
    } else if (!enable_standalone_cdm_service) {
      assert(false, "Invalid mojo media host: $mojo_media_host")
    }
  }

  if (enable_standalone_cdm_service) {
    assert(enable_mojo_cdm,
           "Mojo CDM must be enabled to run in standalone CDM service.")
  }

  flags = [
    "ENABLE_MOJO_MEDIA=$enable_mojo_media",
    "ENABLE_TEST_MOJO_MEDIA_CLIENT=$enable_test_mojo_media_client",
    "ENABLE_MOJO_RENDERER=$enable_mojo_renderer",
    "ENABLE_MOJO_CDM=$enable_mojo_cdm",
    "ENABLE_MOJO_AUDIO_DECODER=$enable_mojo_audio_decoder",
    "ENABLE_MOJO_VIDEO_DECODER=$enable_mojo_video_decoder",
    "ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS=$enable_mojo_media_in_browser_process",
    "ENABLE_MOJO_MEDIA_IN_GPU_PROCESS=$enable_mojo_media_in_gpu_process",
    "ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS=$enable_mojo_media_in_utility_process",
    "ENABLE_STANDALONE_CDM_SERVICE=$enable_standalone_cdm_service",
  ]
}

source_set("test_support") {
  testonly = true
  public_deps = [
    "//media/mojo/clients",
    "//media/mojo/common",
    "//media/mojo/common:mojo_shared_buffer_video_frame",
    "//media/mojo/interfaces",
    "//media/mojo/interfaces:test_interfaces",
    "//media/mojo/services",
  ]
}

source_set("unit_tests") {
  testonly = true

  deps = [
    "//media/mojo/clients:unit_tests",
    "//media/mojo/common:unit_tests",
    "//media/mojo/interfaces:unit_tests",
    "//media/mojo/services:unit_tests",
    "//media/mojo/test:unit_tests",
  ]
}

test("media_mojo_unittests") {
  deps = [
    ":unit_tests",
    "//mojo/edk/test:run_all_unittests",
  ]
}