# Copyright 2016 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("//mojo/public/tools/bindings/mojom.gni")

mojom("video_capture") {
  sources = [
    "video_capture.mojom",
    "video_capture_types.mojom",
  ]

  public_deps = [
    "//gpu/ipc/common:interfaces",
    "//mojo/public/mojom/base",
    "//ui/gfx/geometry/mojo",
    "//ui/gfx/mojo",
  ]
}

mojom("image_capture") {
  sources = [
    "image_capture.mojom",
  ]

  # ImageCapture Mojom interfaces are exposed publicly to layout tests which use
  # prepackaged redistributable JS bindings. It is therefore not desirable to
  # scramble these messages.
  scramble_message_ids = false
}

source_set("image_capture_types") {
  sources = [
    "image_capture_types.cc",
    "image_capture_types.h",
  ]

  deps = [
    ":image_capture",
  ]
}
