# Copyright 2016 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/config/android/rules.gni")
import("config.gni")

java_group("leakcanary_java") {
  if (enable_leakcanary) {
    deps = [
      ":leakcanary_impl_java",
    ]
  } else {
    deps = [
      ":leakcanary_noop_java",
    ]
  }
}

android_library("leakcanary_noop_java") {
  java_files = [
    "src/leakcanary-android-no-op/src/main/java/com/squareup/leakcanary/LeakCanary.java",
    "src/leakcanary-android-no-op/src/main/java/com/squareup/leakcanary/RefWatcher.java",
  ]
}

_wanted_resource_files = [
  "src/leakcanary-android/src/main/res/drawable-xxxhdpi-v11/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-xxhdpi-v11/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-xhdpi/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-xhdpi/leak_canary_icon.png",
  "src/leakcanary-android/src/main/res/drawable-mdpi-v11/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-xxxhdpi/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-xxxhdpi/leak_canary_icon.png",
  "src/leakcanary-android/src/main/res/drawable-hdpi/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-hdpi/leak_canary_icon.png",
  "src/leakcanary-android/src/main/res/drawable-hdpi-v11/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/values/leak_canary_themes.xml",
  "src/leakcanary-android/src/main/res/values/leak_canary_int.xml",
  "src/leakcanary-android/src/main/res/values/leak_canary_strings.xml",
  "src/leakcanary-android/src/main/res/drawable/leak_canary_toast_background.xml",
  "src/leakcanary-android/src/main/res/drawable-xxhdpi/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-xxhdpi/leak_canary_icon.png",
  "src/leakcanary-android/src/main/res/drawable-xhdpi-v11/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-mdpi/leak_canary_notification.png",
  "src/leakcanary-android/src/main/res/drawable-mdpi/leak_canary_icon.png",
  "src/leakcanary-android/src/main/res/values-v21/leak_canary_themes.xml",
  "src/leakcanary-android/src/main/res/layout/leak_canary_leak_row.xml",
  "src/leakcanary-android/src/main/res/layout/leak_canary_heap_dump_toast.xml",
  "src/leakcanary-android/src/main/res/layout/leak_canary_display_leak.xml",
  "src/leakcanary-android/src/main/res/layout/leak_canary_ref_top_row.xml",
  "src/leakcanary-android/src/main/res/layout/leak_canary_ref_row.xml",
  "src/leakcanary-android/src/main/res/values-v14/leak_canary_themes.xml",
]

# This is required to remove:
#   "src/leakcanary-android/src/main/res/values/leak_canary_public.xml",
# which is meant for .aar, and breaks aapt normally.
copy("leakcanary_resources_copy") {
  sources = _wanted_resource_files
  outputs = [
    "$target_gen_dir/copied-resources/{{source}}",
  ]
}

android_resources("leakcanary_resources") {
  custom_package = "com.squareup.leakcanary"
  resource_dirs = []
  generated_resource_dirs = [ "$target_gen_dir/copied-resources/third_party/leakcanary/src/leakcanary-android/src/main/res" ]
  generated_resource_files =
      process_file_template(_wanted_resource_files,
                            [ "$target_gen_dir/copied-resources/{{source}}" ])
  deps = [
    ":leakcanary_resources_copy",
  ]
}

android_library("leakcanary_impl_java") {
  chromium_code = false
  java_files = [
    "leakcanary-android-build-config/com/squareup/leakcanary/BuildConfig.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/haha/perflib/HahaSpy.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/AnalysisResult.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HeapAnalyzer.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/LeakNode.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/LeakTraceElement.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/LeakTrace.java",
    "src/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/ShortestPathFinder.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/AbstractAnalysisResultService.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/ActivityRefWatcher.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidDebuggerControl.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidExcludedRefs.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidWatchExecutor.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/CanaryLog.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/DefaultLeakDirectoryProvider.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/DisplayLeakService.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakConnectorView.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/FutureResult.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/HeapAnalyzerService.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/LeakCanaryInternals.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/LeakCanarySingleThreadFactory.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/LeakCanaryUi.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/MoreDetailsView.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/RequestStoragePermissionActivity.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/LeakCanary.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/LeakDirectoryProvider.java",
    "src/leakcanary-android/src/main/java/com/squareup/leakcanary/ServiceHeapDumpListener.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/DebuggerControl.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/Exclusion.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/GcTrigger.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/HeapDumper.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/HeapDump.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/KeyedWeakReference.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/Preconditions.java",
    "src/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java",
  ]
  deps = [
    ":leakcanary_resources",
    "//third_party/haha",
  ]
}
