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

java_binary("bytecode_processor") {
  sources = [
    "java/org/chromium/bytecode/ByteCodeProcessor.java",
    "java/org/chromium/bytecode/ClassPathValidator.java",
    "java/org/chromium/bytecode/TypeUtils.java",
  ]
  main_class = "org.chromium.bytecode.ByteCodeProcessor"
  deps = [
    "//third_party/android_deps:org_ow2_asm_asm_java",
    "//third_party/android_deps:org_ow2_asm_asm_util_java",
  ]
  wrapper_script_name = "helper/bytecode_processor"
  enable_bytecode_checks = false
}

# A bytecode rewriter that replaces all calls to
# `FragmentActivity Fragment.getActivity()` with
# `Activity Fragment.getActivity()`.
java_binary("fragment_activity_replacer") {
  main_class = "org.chromium.bytecode.FragmentActivityReplacer"
  deps = [ ":fragment_activity_replacer_java" ]
  wrapper_script_name = "helper/fragment_activity_replacer"
}

# A bytecode rewriter that replaces all calls to
# `FragmentActivity Fragment.getActivity()` with
# `Activity Fragment.getActivity()`  followed by a cast to FragmentActivity.
# Prefer :fragment_activity_replacer. This rewriter should only be used for
# libraries that rely on getActivity() returning a FragmentActivity *and* are
# not going to be used in an app that contains multiple copies of the AndroidX
# Fragment library (i.e. WebLayer).
java_binary("fragment_activity_replacer_single_androidx") {
  main_class = "org.chromium.bytecode.FragmentActivityReplacer"
  deps = [ ":fragment_activity_replacer_java" ]
  wrapper_script_name = "helper/fragment_activity_replacer_single_androidx"
  wrapper_script_args = [ "--single-androidx" ]
}

java_library("fragment_activity_replacer_java") {
  visibility = [ ":*" ]
  sources = [
    "java/org/chromium/bytecode/ByteCodeRewriter.java",
    "java/org/chromium/bytecode/FragmentActivityReplacer.java",
  ]
  deps = [
    "//third_party/android_deps:org_ow2_asm_asm_commons_java",
    "//third_party/android_deps:org_ow2_asm_asm_java",
    "//third_party/android_deps:org_ow2_asm_asm_util_java",
  ]
}
