# Copyright 2013 The Flutter 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("//flutter/testing/rules/android.gni")

_android_sources = [
  "app/build.gradle",
  "app/src/androidTest/java/dev/flutter/TestRunner.java",
  "app/src/androidTest/java/dev/flutter/scenarios/EngineLaunchE2ETest.java",
  "app/src/androidTest/java/dev/flutter/scenarios/ExampleInstrumentedTest.java",
  "app/src/androidTest/java/dev/flutter/scenariosui/MemoryLeakTests.java",
  "app/src/androidTest/java/dev/flutter/scenariosui/PlatformTextureUiTests.java",
  "app/src/androidTest/java/dev/flutter/scenariosui/PlatformViewUiTests.java",
  "app/src/androidTest/java/dev/flutter/scenariosui/ScreenshotUtil.java",
  "app/src/androidTest/java/dev/flutter/scenariosui/SpawnEngineTests.java",
  "app/src/main/AndroidManifest.xml",
  "app/src/main/java/dev/flutter/scenarios/SpawnedEngineActivity.java",
  "app/src/main/java/dev/flutter/scenarios/StrictModeFlutterActivity.java",
  "app/src/main/java/dev/flutter/scenarios/TestActivity.java",
  "app/src/main/java/dev/flutter/scenarios/TestableFlutterActivity.java",
  "app/src/main/java/dev/flutter/scenarios/TextPlatformView.java",
  "app/src/main/java/dev/flutter/scenarios/TextPlatformViewActivity.java",
  "app/src/main/java/dev/flutter/scenarios/TextPlatformViewFactory.java",
  "build.gradle",
]

gradle_task("android_lint") {
  app_name = "scenario_app"
  task = "lint"
  gradlew_dir = rebase_path(".")
  sources = _android_sources
  outputs = [ "$root_out_dir/scenario_app/reports/lint-results.xml" ]
  deps = [ "//flutter/testing/scenario_app:scenario_app_snapshot" ]
}

gradle_task("build_apk") {
  app_name = "scenario_app"
  task = "assembleDebug"
  gradlew_dir = rebase_path(".")
  sources = _android_sources
  outputs = [ "$root_out_dir/scenario_app/app/outputs/apk/debug/app-debug.apk" ]

  deps = [
    ":android_lint",
    "//flutter/testing/scenario_app:scenario_app_snapshot",
  ]
}

copy("android") {
  sources = get_target_outputs(":build_apk")
  outputs = [ "$root_out_dir/firebase_apks/scenario_app.apk" ]
  deps = [ ":build_apk" ]
}
