chromium/components/sync/android/BUILD.gn

# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
import("//third_party/jni_zero/jni_zero.gni")

generate_jni("jni_headers") {
  sources = [
    "java/src/org/chromium/components/sync/ExplicitPassphrasePlatformClient.java",
    "java/src/org/chromium/components/sync/LocalDataDescription.java",
    "java/src/org/chromium/components/sync/SyncFeatureMap.java",
    "java/src/org/chromium/components/sync/SyncService.java",
    "java/src/org/chromium/components/sync/SyncServiceImpl.java",
  ]
}

android_library("sync_java") {
  public_deps = [ ":explicit_passphrase_platform_client_interface_java" ]
  deps = [
    "//base:base_java",
    "//components/signin/public/android:java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/jni_zero:jni_zero_java",
  ]
  srcjar_deps = [
    ":java_enums",
    ":java_prefs",
    ":jni_headers",
  ]
  sources = [
    "java/src/org/chromium/components/sync/LocalDataDescription.java",
    "java/src/org/chromium/components/sync/Passphrase.java",
    "java/src/org/chromium/components/sync/SyncFeatureMap.java",
    "java/src/org/chromium/components/sync/SyncService.java",
    "java/src/org/chromium/components/sync/SyncServiceImpl.java",
  ]
}

android_library("explicit_passphrase_platform_client_interface_java") {
  sources = [
    "java/src/org/chromium/components/sync/ExplicitPassphrasePlatformClient.java",

    # The impl is listed here but then excluded via jar_excluded_patterns, so
    # downstream targets can provide their own implementation.
    "java/src/org/chromium/components/sync/ExplicitPassphrasePlatformClientImpl.java",
  ]
  jar_excluded_patterns = [ "*/ExplicitPassphrasePlatformClientImpl.class" ]

  # Public because CoreAccountInfo and NigoriKey are in the API.
  public_deps = [
    "//components/signin/public/android:java",
    "//components/sync/protocol:protocol_java",
  ]
  deps = [
    "//third_party/android_deps:protobuf_lite_runtime_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/jni_zero:jni_zero_java",
  ]
}

android_library("explicit_passphrase_platform_client_stub_java") {
  sources = [ "java/src/org/chromium/components/sync/ExplicitPassphrasePlatformClientImpl.java" ]
  deps = [ ":explicit_passphrase_platform_client_interface_java" ]
}

java_cpp_enum("java_enums") {
  sources = [
    "//components/sync/base/data_type.h",
    "//components/sync/base/passphrase_enums.h",
    "//components/sync/base/user_selectable_type.h",
    "//components/sync/service/sync_service_utils.h",
    "//components/sync/service/sync_user_settings.h",
  ]
}

java_cpp_strings("java_prefs") {
  sources = [ "//components/sync/base/pref_names.h" ]
  template = "java_templates/SyncPrefNames.java.tmpl"
}