# 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",
    "application_deprecated.dart",
    "model.dart",
    "src/application/application_widget.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/application/application_widget_deprecated.dart",
    # "src/utils/frame_rate_tracer.dart",
    # "src/utils/deprecate.dart",
    # "src/utils/pointer_events_listener.dart",
    # "src/utils/change_notifiers.dart",
    # "src/utils/pointer_events_listener_deprecated.dart",
    # "src/model/provider.dart",
    # "src/widgets/lottie_player.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.gfx",
    "//sdk/fidl/fuchsia.ui.policy",
    "//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",
    "//topaz/public/lib/module/dart",
    "//topaz/public/lib/user/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",
  ]
}
