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

mojom("test_interfaces") {
  testonly = true
  # Some of those files are part of tests that check type info generation.
  generate_type_info = true
  sources = [
    "math_calculator.mojom",
    "no_module.mojom",
    "ping_service.mojom",
    "rect.mojom",
    "regression_tests.mojom",
    "sample_factory.mojom",
    "sample_import.mojom",
    "sample_import2.mojom",
    "sample_interfaces.mojom",
    "sample_service.mojom",
    "scoping.mojom",
    "serialization_test_structs.mojom",
    "test_arrays.mojom",
    "test_constants.mojom",
    "test_enums.mojom",
    "test_included_unions.mojom",
    "test_structs.mojom",
    "test_unions.mojom",
    "validation_test_interfaces.mojom",
  ]
}

mojom("versioning_test_service_interfaces") {
  # FIXME: Dart packaged applications cannot depend on testonly mojoms.
  # testonly = true
  sources = [
    "versioning_test_service.mojom",
  ]
}

mojom("versioning_test_client_interfaces") {
  # FIXME: Dart packaged applications cannot depend on testonly mojoms.
  # testonly = true
  sources = [
    "versioning_test_client.mojom",
  ]
}
