# 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.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",
    "//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",
  ]
}
