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

import("//build/dart/dart_library.gni")
import("//build/dart/test.gni")

dart_library("dart") {
  package_name = "lib.schemas.dart"

  sdk_category = "partner"
  sources_required = false

  sources = [
    "com.fuchsia.color.dart",
    "com.fuchsia.contact.dart",
    "com.fuchsia.documents.dart",
    "com.fuchsia.intent.dart",
    "com.fuchsia.status.dart",
    "com/fuchsia/codelab/codelab.dart",
    "com/fuchsia/codelab/finance/finance_entity_codec.dart",
    "com/fuchsia/codelab/lyrics/lyrics_entity_codec.dart",
    "com/fuchsia/codelab/recipe/recipe_entity_codec.dart",
    "com/fuchsia/media/asset_specifier/asset_specifier_entity_codec.dart",
    "com/fuchsia/media/asset_specifier/asset_specifier_entity_data.dart",
    "com/fuchsia/media/captions/captions_entity_codec.dart",
    "com/fuchsia/media/media.dart",
    "com/fuchsia/media/progress/media_progress_entity_codec.dart",
    "com/fuchsia/media/progress/media_progress_entity_data.dart",
    "com/google/youtube/video_id_entity_codec.dart",
    "entity_codec.dart",
    "src/com.fuchsia.color/color_entity_codec.dart",
    "src/com.fuchsia.color/color_entity_data.dart",
    "src/com.fuchsia.contact/contact_entity_codec.dart",
    "src/com.fuchsia.contact/contact_entity_data.dart",
    "src/com.fuchsia.contact/email_entity_codec.dart",
    "src/com.fuchsia.contact/email_entity_data.dart",
    "src/com.fuchsia.contact/filter_entity_codec.dart",
    "src/com.fuchsia.contact/filter_entity_data.dart",
    "src/com.fuchsia.contact/phone_number_entity_codec.dart",
    "src/com.fuchsia.contact/phone_number_entity_data.dart",
    "src/com.fuchsia.documents/documents_id_codec.dart",
    "src/com.fuchsia.documents/documents_id_entity_data.dart",
    "src/com.fuchsia.intent/intent_entity_codec.dart",
    "src/com.fuchsia.intent/intent_entity_data.dart",
    "src/com.fuchsia.status/status_entity_codec.dart",
    "src/com.fuchsia.status/status_entity_data.dart",
    "src/entity_codec.dart",
    "src/parse_int.dart",
    "src/string_list_entity_codec.dart",
    # Including these sources triggers analysis errors
    # "com.fuchsia.location.dart",
    # "com/google/youtube/json_entity_codec.dart",
    # "src/com.fuchsia.location/geolocation_entity_data.dart",
    # "src/com.fuchsia.location/street_location_entity_data.dart",
    # "src/com.fuchsia.location/street_location_entity_codec.dart",
    # "src/com.fuchsia.location/geolocation_entity_codec.dart",
  ]

  deps = [
    "//third_party/dart-pkg/pub/json_schema",
    "//topaz/public/lib/app/dart",
  ]
}

dart_test("dart_schema_tests") {
  sources = [
    "entity_codec_test.dart",
  ]

  deps = [
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/test",
    "//topaz/public/lib/schemas/dart",
  ]
}
