# 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/ExternalTextureTests.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/PlatformViewWithSurfaceViewUiTest.java",
  "app/src/androidTest/java/dev/flutter/scenariosui/PlatformViewWithTextureViewUiTest.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/PlatformViewsActivity.java",
  "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/SurfacePlatformViewFactory.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/TextPlatformViewFactory.java",
  "app/src/main/java/dev/flutter/scenarios/TexturePlatformViewFactory.java",
  "build.gradle",
]

gradle_task("android_lint") {
  app_name = "scenario_app"
  task = "lint"
  gradle_project_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"
  gradle_project_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",
  ]
}

gradle_task("build_test_apk") {
  app_name = "scenario_app"
  task = ":app:packageDebugAndroidTest"
  gradle_project_dir = rebase_path(".")
  sources = _android_sources
  outputs = [ "$root_out_dir/scenario_app/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk" ]

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

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

group("android") {
  deps = [
    ":build_apk",
    ":build_test_apk",
    ":firebase_apk",
  ]
}
