# 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("//build/dart/dart_library.gni")
import("//topaz/runtime/dart/flutter_test.gni")

dart_library("lib.widgets") {
  package_name = "lib.widgets"

  sdk_category = "partner"
  sources_required = false

  sources = [
    "application.dart",
    "model.dart",
    "src/model/model.dart",
    "src/model/spring_model.dart",
    "src/model/ticking_model.dart",
    "src/model/tracing_spring_model.dart",
    "src/widgets/alphatar.dart",
    "src/widgets/conditional_builder.dart",
    "src/widgets/fuchsia_spinner.dart",
    "src/widgets/future_widget.dart",
    "src/widgets/rk4_spring_simulation.dart",
    "src/widgets/ticking_state.dart",
    "src/widgets/window_media_query.dart",
    "widgets.dart",

    # Including these files causes analysis errors
    # "utils.dart",
    # "utils_deprecated.dart",
    # "src/utils/frame_rate_tracer.dart",
    # "src/utils/deprecate.dart",
    # "src/utils/pointer_events_listener.dart",
    # "src/utils/change_notifiers.dart",
    # "src/model/provider.dart",
    # "src/widgets/screen_container.dart",
    # "src/widgets/settings_item.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.ui.policy",
    "//sdk/fidl/fuchsia.ui.views",
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    "//third_party/dart-pkg/pub/flutter_image",
    "//topaz/bin/ui/skottie_viewer:skottie_loader",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia_logger",
    "//topaz/public/dart/fuchsia_scenic_flutter",
    "//topaz/public/lib/app/dart",
    "//zircon/public/fidl/fuchsia-cobalt",
  ]
}

flutter_test("dart_widget_tests") {
  sources = [
    "alphatar_test.dart",
    "providers_test.dart",
    "rk4_spring_simulation_test.dart",
  ]

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