// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

aconfig_declarations_group {
    name: "framework-minus-apex-aconfig-declarations",
    aconfig_declarations_groups: [
        "aconfig_trade_in_mode_flags",
        "audio-framework-aconfig",
    ],
    java_aconfig_libraries: [
        // go/keep-sorted start
        "aconfig_mediacodec_flags_java_lib",
        "aconfig_settingslib_flags_java_lib",
        "aconfig_trade_in_mode_flags_java_lib",
        "adpf_flags_java_lib",
        "android.aiseal.flags-aconfig-java",
        "android.app.appfunctions.flags-aconfig-java",
        "android.app.assist.flags-aconfig-java",
        "android.app.contentrestriction.flags-aconfig-java",
        "android.app.contentsafety-aconfig-java",
        "android.app.contextualsearch.flags-aconfig-java",
        "android.app.flags-aconfig-java",
        "android.app.jank.flags-aconfig-java",
        "android.app.lskfreset.flags-aconfig-java",
        "android.app.ondeviceintelligence-aconfig-java",
        "android.app.privatecompute.flags-aconfig-java",
        "android.app.search.flags-aconfig-java",
        "android.app.smartspace.flags-aconfig-java",
        "android.app.supervision.flags-aconfig-java",
        "android.app.usage.flags-aconfig-java",
        "android.app.wearable.flags-aconfig-java",
        "android.appwidget.flags-aconfig-java",
        "android.bluetooth.platform.flags-aconfig-java",
        "android.chre.flags-aconfig-java",
        "android.companion.flags-aconfig-java",
        "android.companion.virtual.flags-aconfig-java",
        "android.companion.virtualdevice.flags-aconfig-java",
        "android.content.flags-aconfig-java",
        "android.content.pm.flags-aconfig-java",
        "android.content.res.flags-aconfig-java",
        "android.crashrecovery.flags-aconfig-java",
        "android.credentials.flags-aconfig-java",
        "android.database.sqlite-aconfig-java",
        "android.graphics.egl.flags-aconfig-java",
        "android.hardware.biometrics.flags-aconfig-java",
        "android.hardware.devicestate.feature.flags-aconfig-java",
        "android.hardware.flags-aconfig-java",
        "android.hardware.radio.flags-aconfig-java",
        "android.hardware.serial.flags-aconfig-java",
        "android.hardware.usb.flags-aconfig-java",
        "android.location.flags-aconfig-java",
        "android.media.codec-aconfig-java",
        "android.media.mediarecorder-aconfig-java",
        "android.media.reliability-aconfig-java",
        "android.media.tv.flags-aconfig-java",
        "android.multiuser.flags-aconfig-java",
        "android.net.platform.flags-aconfig-java",
        "android.net.wifi.flags-aconfig-java",
        "android.nfc.flags-aconfig-java",
        "android.os.flags-aconfig-java",
        "android.os.multisensory.flags-aconfig-java",
        "android.os.vibrator.flags-aconfig-java",
        "android.permission.flags-aconfig-java",
        "android.print.flags-aconfig-java",
        "android.provider.flags-aconfig-java",
        "android.sdk.flags-aconfig-java",
        "android.security.flags-aconfig-java",
        "android.security.identity.flags-aconfig-java",
        "android.service.appprediction.flags-aconfig-java",
        "android.service.autofill.flags-aconfig-java",
        "android.service.chooser.flags-aconfig-java",
        "android.service.compat.flags-aconfig-java",
        "android.service.controls.flags-aconfig-java",
        "android.service.dreams.flags-aconfig-java",
        "android.service.notification.flags-aconfig-java",
        "android.service.personalcontext.flags-aconfig-java",
        "android.service.quickaccesswallet.flags-aconfig-java",
        "android.service.quicksettings.flags-aconfig-java",
        "android.service.voice.flags-aconfig-java",
        "android.speech.flags-aconfig-java",
        "android.systemserver.flags-aconfig-java",
        "android.tracing.flags-aconfig-java",
        "android.view.accessibility.flags-aconfig-java",
        "android.view.contentcapture.flags-aconfig-java",
        "android.view.contentprotection.flags-aconfig-java",
        "android.view.flags-aconfig-java",
        "android.view.inputmethod.flags-aconfig-java",
        "android.webkit.flags-aconfig-java",
        "android.widget.flags-aconfig-java",
        "android.xr.flags-aconfig-java-export",
        "anomaly-detector-exported-aconfig-flags-lib",
        "art_exported_aconfig_flags_lib",
        "backstage_power_flags_lib",
        "backup_flags_lib",
        "bluetooth_exported_flags_java_lib",
        "camera_platform_flags_core_java_lib",
        "com.android.bettertogether.d2d_connectivity_aconfig_exported",
        "com.android.eyedropper.flags-aconfig-java",
        "com.android.hardware.input-aconfig-java",
        "com.android.input.flags-aconfig-java",
        "com.android.internal.app.procstats-aconfig-java",
        "com.android.internal.compat.flags-aconfig-java",
        "com.android.internal.content.storage.flags-aconfig-java",
        "com.android.internal.os.flags-aconfig-java",
        "com.android.internal.pm.pkg.component.flags-aconfig-java",
        "com.android.internal.widget.flags-aconfig-java",
        "com.android.media.flags.bettertogether-aconfig-java",
        "com.android.media.flags.editing-aconfig-java",
        "com.android.media.flags.mediasession-aconfig-java",
        "com.android.media.flags.projection-aconfig-java",
        "com.android.media.mediadrm.flags-aconfig-java",
        "com.android.media.metrics.flags-aconfig-java",
        "com.android.microxr.flags-aconfig-java",
        "com.android.net.http.flags-aconfig-exported-java",
        "com.android.net.thread.platform.flags-aconfig-java",
        "com.android.nfc.module.flags-aconfig-exported-java",
        "com.android.permission.flags-aconfig-java-export",
        "com.android.ranging.flags.ranging-aconfig-java-export",
        "com.android.server.contextualsearch.flags-java",
        "com.android.server.flags.services-aconfig-java",
        "com.android.server.lights.feature.flags-java",
        "com.android.server.voiceinteraction.flags-java",
        "com.android.text.flags-aconfig-java",
        "com.android.webapp.flags-aconfig-exported-java",
        "com.android.window.flags.window-aconfig-java",
        "configinfra_framework_flags_java_exported_lib",
        "conscrypt_exported_aconfig_flags_lib",
        "device_policy_aconfig_flags_lib",
        "devicelock-exported-aconfig-flags-lib",
        "display_flags_lib",
        "dropbox_flags_lib",
        "framework-jobscheduler-job.flags-aconfig-java",
        "framework_graphics_flags_java_lib",
        "hwui_flags_java_lib",
        "icu_exported_aconfig_flags_lib",
        "interaction_jank_monitor_flags_lib",
        "keystore2_flags_java-framework",
        "libcore_exported_aconfig_flags_lib",
        "libcore_readonly_aconfig_flags_lib",
        "libgui_flags_java_lib",
        "mediaprovider_exported_aconfig_flag_lib",
        "networksecurity_exported_aconfig_flags_lib",
        "npumanager_aconfig_flags_lib",
        "power_flags_lib",
        "sdk_sandbox_exported_flags_lib",
        "surfaceflinger_flags_java_lib",
        "telecom_flags_core_java_lib",
        "telecom_module_flags-export-java",
        "telephony_flags_core_java_lib",
        "timezone_flags_core_java_lib",
        "uilatencystats_flags_core_java_lib",
        // go/keep-sorted end
    ],
}

filegroup {
    name: "framework-minus-apex-aconfig-srcjars",
    device_common_srcs: [
        ":framework-minus-apex-aconfig-declarations{.srcjars}",
    ],
}

// Aconfig declarations and libraries for the core framework
java_defaults {
    name: "framework-minus-apex-aconfig-libraries",
    // Add java_aconfig_libraries to here to add them to the core framework
    // Add aconfig-annotations-lib as a dependency for the optimization
    srcs: [
        ":framework-minus-apex-aconfig-declarations{.srcjars}",
    ],
    libs: ["aconfig-annotations-lib"],
}

// Default flags for java_aconfig_libraries that go into framework-minus-apex
// These libraries will not work standalone
java_defaults {
    name: "framework-minus-apex-aconfig-java-defaults",
    sdk_version: "core_platform",
    libs: ["fake_device_config"],
}

// ART
java_aconfig_library {
    name: "art_exported_aconfig_flags_lib",
    aconfig_declarations: "art-aconfig-flags",
    mode: "exported",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// ICU
java_aconfig_library {
    name: "icu_exported_aconfig_flags_lib",
    aconfig_declarations: "icu_aconfig_flags",
    mode: "exported",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Camera
java_aconfig_library {
    name: "camera_platform_flags_core_java_lib",
    aconfig_declarations: "camera_platform_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// UiLatencyStats
java_aconfig_library {
    name: "uilatencystats_flags_core_java_lib",
    aconfig_declarations: "uilatencystats_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Core Libraries / libcore
java_aconfig_library {
    name: "libcore_exported_aconfig_flags_lib",
    aconfig_declarations: "libcore-aconfig-flags",
    mode: "exported",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// See b/368409430 - This is for libcore flags to be generated with
// force-read-only mode, so access to the flags does not involve I/O,
// which could break Isolated Processes with I/O permission disabled.
// The issue will be addressed once new Aconfig storage API is landed
// and the readonly version will be removed.
aconfig_declarations {
    name: "libcore-readonly-aconfig-flags",
    package: "com.android.libcore.readonly",
    container: "system",
    srcs: ["libcore-readonly.aconfig"],
}

// Core Libraries / libcore
java_aconfig_library {
    name: "libcore_readonly_aconfig_flags_lib",
    aconfig_declarations: "libcore-readonly-aconfig-flags",
    mode: "force-read-only",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Conscrypt
java_aconfig_library {
    name: "conscrypt_exported_aconfig_flags_lib",
    aconfig_declarations: "conscrypt-aconfig-flags",
    mode: "exported",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Conscrypt - Networksecurity
java_aconfig_library {
    name: "networksecurity_exported_aconfig_flags_lib",
    aconfig_declarations: "networksecurity-aconfig-flags",
    mode: "exported",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Telecom
java_aconfig_library {
    name: "telecom_flags_core_java_lib",
    aconfig_declarations: "telecom_flags",
    min_sdk_version: "36",
    preserve_legacy_impl_interface: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "//apex_available:platform",
        "com.android.telephonycore",
    ],
}

java_aconfig_library {
    name: "telecom_flags_core_java_aconfig_java_exported_lib",
    aconfig_declarations: "telecom_flags",
    mode: "exported",
    min_sdk_version: "30",
    preserve_legacy_impl_interface: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "com.android.permission",
        "com.android.telephonycore",
    ],
}

// Telephony
java_aconfig_library {
    name: "telephony_flags_core_java_lib",
    aconfig_declarations: "telephony_flags",
    min_sdk_version: "36",
    preserve_legacy_impl_interface: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "//apex_available:platform",
        "com.android.telephonycore",
    ],
}

java_aconfig_library {
    name: "telephony_flags_core_java_exported_lib",
    aconfig_declarations: "telephony_flags",
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.wifi",
        "com.android.extservices",
        "com.android.telephonycore",
        "com.android.bt",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "telephony_flags_c_lib",
    aconfig_declarations: "telephony_flags",
}

// Timezone
aconfig_declarations {
    name: "timezone_flags",
    package: "android.timezone.flags",
    container: "system",
    srcs: ["core/java/android/timezone/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "timezone_flags_core_java_lib",
    aconfig_declarations: "timezone_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Window
aconfig_declarations {
    name: "com.android.window.flags.window-aconfig",
    exportable: true,
    package: "com.android.window.flags",
    container: "system",
    srcs: ["core/java/android/window/flags/*.aconfig"],
}

java_aconfig_library {
    name: "com.android.window.flags.window-aconfig-java",
    aconfig_declarations: "com.android.window.flags.window-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.window.flags.window-aconfig-java-export",
    aconfig_declarations: "com.android.window.flags.window-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "com.android.window.flags.window-aconfig-java-host",
    aconfig_declarations: "com.android.window.flags.window-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "com.android.window.flags.window-aconfig_flags_c_lib",
    aconfig_declarations: "com.android.window.flags.window-aconfig",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

// DeviceStateManager
aconfig_declarations {
    name: "android.hardware.devicestate.feature.flags-aconfig",
    exportable: true,
    package: "android.hardware.devicestate.feature.flags",
    container: "system",
    srcs: ["core/java/android/hardware/devicestate/feature/*.aconfig"],
}

java_aconfig_library {
    name: "android.hardware.devicestate.feature.flags-aconfig-java",
    aconfig_declarations: "android.hardware.devicestate.feature.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Input
aconfig_declarations {
    name: "com.android.hardware.input.input-aconfig",
    exportable: true,
    package: "com.android.hardware.input",
    container: "system",
    srcs: ["core/java/android/hardware/input/*.aconfig"],
}

java_aconfig_library {
    name: "com.android.hardware.input-aconfig-java",
    aconfig_declarations: "com.android.hardware.input.input-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.input.flags-aconfig-java",
    aconfig_declarations: "com.android.input.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.input.flags-aconfig-java-export",
    aconfig_declarations: "com.android.input.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

rust_aconfig_library {
    name: "libandroid_hardware_input_flags_rust",
    crate_name: "android_hardware_input_flags",
    aconfig_declarations: "com.android.hardware.input.input-aconfig",
}

aconfig_declarations {
    name: "com.android.internal.widget.flags-aconfig",
    package: "com.android.internal.widget.flags",
    container: "system",
    srcs: ["core/java/com/android/internal/widget/*.aconfig"],
}

java_aconfig_library {
    name: "com.android.internal.widget.flags-aconfig-java",
    aconfig_declarations: "com.android.internal.widget.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Text
aconfig_declarations {
    name: "com.android.text.flags-aconfig",
    package: "com.android.text.flags",
    container: "system",
    srcs: ["core/java/android/text/flags/*.aconfig"],
}

java_aconfig_library {
    name: "com.android.text.flags-aconfig-java",
    aconfig_declarations: "com.android.text.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "aconfig_text_flags_c_lib",
    host_supported: true,
    aconfig_declarations: "com.android.text.flags-aconfig",
    target: {
        windows: {
            enabled: true,
        },
    },
}

rust_aconfig_library {
    name: "libandroid_text_flags_rust",
    crate_name: "android_text_flags",
    aconfig_declarations: "com.android.text.flags-aconfig",
}

// Location
aconfig_declarations {
    name: "android.location.flags-aconfig",
    package: "android.location.flags",
    container: "system",
    exportable: true,
    srcs: [
        "location/java/android/location/flags/*.aconfig",
    ],
}

cc_aconfig_library {
    name: "android_location_flags_c_lib",
    vendor_available: true,
    aconfig_declarations: "android.location.flags-aconfig",
}

java_aconfig_library {
    name: "android.location.flags-aconfig-java",
    aconfig_declarations: "android.location.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.location.flags-aconfig-java-export",
    aconfig_declarations: "android.location.flags-aconfig",
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "com.android.permission",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// NFC
aconfig_declarations {
    name: "android.nfc.flags-aconfig",
    package: "android.nfc",
    container: "system",
    exportable: true,
    srcs: ["nfc-non-updatable/flags/*.aconfig"],
}

cc_aconfig_library {
    name: "android_nfc_flags_aconfig_c_lib",
    vendor_available: true,
    aconfig_declarations: "android.nfc.flags-aconfig",
    min_sdk_version: "34",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
        "nfc_nci.st21nfc.default",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.nfc.flags-aconfig-java",
    aconfig_declarations: "android.nfc.flags-aconfig",
    min_sdk_version: "34",
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Security
aconfig_declarations {
    name: "android.security.flags-aconfig",
    package: "android.security",
    exportable: true,
    container: "system",
    srcs: [
        "core/java/android/security/flags.aconfig",
        "core/java/android/security/keychain_flags.aconfig",
        "core/java/android/security/responsible_apis_flags.aconfig",
    ] + select(release_flag("RELEASE_CONSCRYPT_NSC"), {
        true: [
            "core/java/android/security/conscrypt_nsc_on.aconfig",
        ],
        default: [
            "core/java/android/security/conscrypt_nsc_off.aconfig",
        ],
    }),
}

aconfig_declarations {
    name: "android.security.identity.flags-aconfig",
    package: "android.security.identity",
    container: "system",
    exportable: true,
    srcs: ["identity/identity.aconfig"],
}

java_aconfig_library {
    name: "android.security.identity.flags-aconfig-java",
    aconfig_declarations: "android.security.identity.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
}

java_aconfig_library {
    name: "android.security.flags-aconfig-java",
    aconfig_declarations: "android.security.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.security.flags-aconfig-java-host",
    aconfig_declarations: "android.security.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.security.flags-aconfig-java-export",
    aconfig_declarations: "android.security.flags-aconfig",
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.conscrypt",
        "com.android.permission",
        "com.android.tethering",
        "com.android.wifi",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android_security_flags_aconfig_c_lib",
    aconfig_declarations: "android.security.flags-aconfig",
}

// UsageStats
aconfig_declarations {
    name: "android.app.usage.flags-aconfig",
    package: "android.app.usage",
    container: "system",
    srcs: ["core/java/android/app/usage/*.aconfig"],
}

java_aconfig_library {
    name: "android.app.usage.flags-aconfig-java",
    aconfig_declarations: "android.app.usage.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.app.usage.flags-aconfig-java-host",
    aconfig_declarations: "android.app.usage.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// OS
aconfig_declarations {
    name: "android.os.flags-aconfig",
    package: "android.os",
    exportable: true,
    container: "system",
    srcs: ["core/java/android/os/*.aconfig"],
}

java_aconfig_library {
    name: "android.os.flags-aconfig-java",
    aconfig_declarations: "android.os.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.os.flags-aconfig-java-host",
    aconfig_declarations: "android.os.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.os.flags-aconfig-java-export",
    aconfig_declarations: "android.os.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.art",
        "com.android.art.debug",
        "com.android.bt",
        "com.android.mediaprovider",
        "com.android.permission",
        "com.android.neuralnetworks",
    ],
}

cc_aconfig_library {
    name: "android.os.flags-aconfig-cc",
    aconfig_declarations: "android.os.flags-aconfig",
}

cc_aconfig_library {
    name: "android.os.flags-aconfig-cc-test",
    aconfig_declarations: "android.os.flags-aconfig",
    mode: "test",
}

cc_aconfig_library {
    name: "android.os.flags-aconfig-cc-host",
    aconfig_declarations: "android.os.flags-aconfig",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

// OS Internal
aconfig_declarations {
    name: "com.android.internal.os.flags-aconfig",
    package: "com.android.internal.os",
    container: "system",
    srcs: ["core/java/com/android/internal/os/flags.aconfig"],
}

java_aconfig_library {
    name: "com.android.internal.os.flags-aconfig-java",
    aconfig_declarations: "com.android.internal.os.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "com.android.internal.os_flags_c_lib",
    aconfig_declarations: "com.android.internal.os.flags-aconfig",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

// VirtualDeviceManager
cc_aconfig_library {
    name: "android.companion.virtualdevice.flags-aconfig-cc",
    aconfig_declarations: "android.companion.virtualdevice.flags-aconfig",
    host_supported: true,
    mode: "test",
    target: {
        windows: {
            enabled: true,
        },
    },
}

java_aconfig_library {
    name: "android.companion.virtualdevice.flags-aconfig-java",
    aconfig_declarations: "android.companion.virtualdevice.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

aconfig_declarations {
    name: "android.companion.virtualdevice.flags-aconfig",
    package: "android.companion.virtualdevice.flags",
    container: "system",
    exportable: true,
    srcs: [
        "core/java/android/companion/virtual/flags/flags.aconfig",
        "core/java/android/companion/virtual/flags/launched_flags.aconfig",
    ],
}

java_aconfig_library {
    name: "android.companion.virtualdevice.flags-aconfig-java-export",
    aconfig_declarations: "android.companion.virtualdevice.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "android.companion.virtual.flags-aconfig-java",
    aconfig_declarations: "android.companion.virtual.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

aconfig_declarations {
    name: "android.companion.virtual.flags-aconfig",
    package: "android.companion.virtual.flags",
    container: "system",
    srcs: ["core/java/android/companion/virtual/flags/deprecated_flags_do_not_edit.aconfig"],
}

// InputMethod
aconfig_declarations {
    name: "android.view.inputmethod.flags-aconfig",
    package: "android.view.inputmethod",
    container: "system",
    srcs: ["core/java/android/view/inputmethod/flags.aconfig"],
}

java_aconfig_library {
    name: "android.view.inputmethod.flags-aconfig-java",
    aconfig_declarations: "android.view.inputmethod.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.view.inputmethod.flags-aconfig-java-host",
    aconfig_declarations: "android.view.inputmethod.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Multisensory
aconfig_declarations {
    name: "android.os.multisensory.flags-aconfig",
    package: "android.os.multisensory",
    container: "system",
    srcs: ["core/java/android/os/multisensory/*.aconfig"],
}

java_aconfig_library {
    name: "android.os.multisensory.flags-aconfig-java",
    aconfig_declarations: "android.os.multisensory.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Vibrator
aconfig_declarations {
    name: "android.os.vibrator.flags-aconfig",
    package: "android.os.vibrator",
    container: "system",
    srcs: ["core/java/android/os/vibrator/*.aconfig"],
}

java_aconfig_library {
    name: "android.os.vibrator.flags-aconfig-java",
    aconfig_declarations: "android.os.vibrator.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.os.vibrator.flags-aconfig-cc",
    aconfig_declarations: "android.os.vibrator.flags-aconfig",
    host_supported: true,
    vendor_available: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

java_aconfig_library {
    name: "android.os.vibrator.flags-aconfig-java-host",
    aconfig_declarations: "android.os.vibrator.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// View
aconfig_declarations {
    name: "android.view.flags-aconfig",
    package: "android.view.flags",
    exportable: true,
    container: "system",
    srcs: ["core/java/android/view/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.view.flags-aconfig-java",
    aconfig_declarations: "android.view.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.view.flags-aconfig-java-export",
    aconfig_declarations: "android.view.flags-aconfig",
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.wifi",
        "com.android.extservices",
        "com.android.telephonycore",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "aconfig_view_flags_c_lib",
    aconfig_declarations: "android.view.flags-aconfig",
}

// View.accessibility
aconfig_declarations {
    name: "android.view.accessibility.flags-aconfig",
    package: "android.view.accessibility",
    container: "system",
    srcs: ["core/java/android/view/accessibility/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.view.accessibility.flags-aconfig-java",
    aconfig_declarations: "android.view.accessibility.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "aconfig_view_accessibility_flags_c_lib",
    host_supported: true,
    aconfig_declarations: "android.view.accessibility.flags-aconfig",
    target: {
        windows: {
            enabled: true,
        },
    },
}

// Hardware
aconfig_declarations {
    name: "android.hardware.flags-aconfig",
    exportable: true,
    package: "android.hardware.flags",
    container: "system",
    srcs: ["core/java/android/hardware/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.hardware.flags-aconfig-java",
    aconfig_declarations: "android.hardware.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "aconfig_hardware_flags_c_lib",
    host_supported: true,
    aconfig_declarations: "android.hardware.flags-aconfig",
    target: {
        windows: {
            enabled: true,
        },
    },
}

// Widget
aconfig_declarations {
    name: "android.widget.flags-aconfig",
    package: "android.widget.flags",
    container: "system",
    srcs: ["core/java/android/widget/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.widget.flags-aconfig-java",
    aconfig_declarations: "android.widget.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

rust_aconfig_library {
    name: "libandroid_security_flags_rust",
    crate_name: "android_security_flags",
    aconfig_declarations: "android.security.flags-aconfig",
    apex_available: [
        "//apex_available:platform",
        "com.android.compos",
        "com.android.virt",
    ],
}

// Package Manager
aconfig_declarations {
    name: "android.content.pm.flags-aconfig",
    package: "android.content.pm",
    container: "system",
    exportable: true,
    srcs: ["core/java/android/content/pm/flags.aconfig"],
}

java_aconfig_library {
    name: "android.content.pm.flags-aconfig-java",
    aconfig_declarations: "android.content.pm.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.content.pm.flags-aconfig-java-export",
    aconfig_declarations: "android.content.pm.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.art",
        "com.android.art.debug",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "android.content.pm.flags-aconfig-java-host",
    aconfig_declarations: "android.content.pm.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.content.pm.flags-aconfig-cc",
    aconfig_declarations: "android.content.pm.flags-aconfig",
    min_sdk_version: "30",
}

// Resources
aconfig_declarations {
    name: "android.content.res.flags-aconfig",
    package: "android.content.res",
    container: "system",
    srcs: ["core/java/android/content/res/*.aconfig"],
}

java_aconfig_library {
    name: "android.content.res.flags-aconfig-java",
    aconfig_declarations: "android.content.res.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.content.res.flags-aconfig-java-host",
    aconfig_declarations: "android.content.res.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.content.res.flags-aconfig-cc",
    aconfig_declarations: "android.content.res.flags-aconfig",
}

cc_aconfig_library {
    name: "android.content.res.flags-aconfig-cc-host",
    aconfig_declarations: "android.content.res.flags-aconfig",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

cc_aconfig_library {
    name: "android.content.res.flags-aconfig-cc-host-ro",
    aconfig_declarations: "android.content.res.flags-aconfig",
    mode: "force-read-only",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
    min_sdk_version: "apex_inherit",
    apex_available: [
        "//apex_available:platform",
        "com.android.webapp",
    ],
}

// Media BetterTogether
aconfig_declarations {
    name: "com.android.media.flags.bettertogether-aconfig",
    package: "com.android.media.flags",
    container: "system",
    srcs: ["media/java/android/media/flags/media_better_together.aconfig"],
}

java_aconfig_library {
    name: "com.android.media.flags.bettertogether-aconfig-java",
    aconfig_declarations: "com.android.media.flags.bettertogether-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.media.flags.bettertogether-aconfig-java-host",
    aconfig_declarations: "com.android.media.flags.bettertogether-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Media Editing
aconfig_declarations {
    name: "com.android.media.flags.editing-aconfig",
    exportable: true,
    package: "com.android.media.editing.flags",
    container: "system",
    srcs: [
        "media/java/android/media/flags/editing.aconfig",
    ],
}

java_aconfig_library {
    name: "com.android.media.flags.editing-aconfig-java",
    aconfig_declarations: "com.android.media.flags.editing-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.media.flags.editing-aconfig-java-host",
    aconfig_declarations: "com.android.media.flags.editing-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "com.android.media.flags.editing-aconfig-cc",
    aconfig_declarations: "com.android.media.flags.editing-aconfig",
}

// MediaSession
aconfig_declarations {
    name: "com.android.media.flags.mediasession-aconfig",
    exportable: true,
    package: "com.android.media.mediasession.flags",
    container: "system",
    srcs: [
        "media/java/android/media/flags/mediasession.aconfig",
    ],
}

java_aconfig_library {
    name: "com.android.media.flags.mediasession-aconfig-java",
    aconfig_declarations: "com.android.media.flags.mediasession-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// MediaProjection
aconfig_declarations {
    name: "com.android.media.flags.projection-aconfig",
    package: "com.android.media.projection.flags",
    container: "system",
    srcs: [
        "media/java/android/media/flags/projection.aconfig",
    ],
}

java_aconfig_library {
    name: "com.android.media.flags.projection-aconfig-java",
    aconfig_declarations: "com.android.media.flags.projection-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// MediaDrm
aconfig_declarations {
    name: "com.android.media.mediadrm.flags-aconfig",
    package: "com.android.media.mediadrm.flags",
    container: "system",
    srcs: ["media/java/android/media/flags/mediadrm.aconfig"],
}

java_aconfig_library {
    name: "com.android.media.mediadrm.flags-aconfig-java",
    aconfig_declarations: "com.android.media.mediadrm.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Media TV
aconfig_declarations {
    name: "android.media.tv.flags-aconfig",
    exportable: true,
    package: "android.media.tv.flags",
    container: "system",
    srcs: ["media/java/android/media/tv/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.media.tv.flags-aconfig-java",
    aconfig_declarations: "android.media.tv.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.media.tv.flags-aconfig-cc",
    aconfig_declarations: "android.media.tv.flags-aconfig",
}

// Permissions
aconfig_declarations {
    name: "android.permission.flags-aconfig",
    container: "system",
    package: "android.permission.flags",
    exportable: true,
    srcs: ["core/java/android/permission/flags.aconfig"],
}

java_aconfig_library {
    name: "android.permission.flags-aconfig-java-export",
    aconfig_declarations: "android.permission.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.appsearch",
        "com.android.extservices",
        "com.android.nfcservices",
        "com.android.permission",
        "com.android.tethering",
    ],
}

java_aconfig_library {
    name: "android.permission.flags-aconfig-java-host",
    aconfig_declarations: "android.permission.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
}

java_aconfig_library {
    name: "android.permission.flags-aconfig-java",
    aconfig_declarations: "android.permission.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
    ],
}

cc_aconfig_library {
    name: "android.permission.flags-aconfig-cc",
    aconfig_declarations: "android.permission.flags-aconfig",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

// SQLite
aconfig_declarations {
    name: "android.database.sqlite-aconfig",
    package: "android.database.sqlite",
    container: "system",
    srcs: ["core/java/android/database/sqlite/*.aconfig"],
}

java_aconfig_library {
    name: "android.database.sqlite-aconfig-java",
    aconfig_declarations: "android.database.sqlite-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.database.sqlite-aconfig-cc",
    aconfig_declarations: "android.database.sqlite-aconfig",
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

// Biometrics
aconfig_declarations {
    name: "android.hardware.biometrics.flags-aconfig",
    exportable: true,
    package: "android.hardware.biometrics",
    container: "system",
    srcs: ["core/java/android/hardware/biometrics/flags.aconfig"],
}

java_aconfig_library {
    name: "android.hardware.biometrics.flags-aconfig-java",
    aconfig_declarations: "android.hardware.biometrics.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.hardware.biometrics.flags-aconfig-java-export",
    aconfig_declarations: "android.hardware.biometrics.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    // Exported for use in other APEXes (e.g., `com.android.permission`) that need to check
    // biometric feature flags.
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

// Adaptive Performance
java_aconfig_library {
    name: "adpf_flags_java_lib",
    aconfig_declarations: "adpf_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Graphics
java_aconfig_library {
    name: "hwui_flags_java_lib",
    aconfig_declarations: "hwui_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "framework_graphics_flags_java_lib",
    aconfig_declarations: "framework_graphics_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Display
java_aconfig_library {
    name: "display_flags_lib",
    aconfig_declarations: "display_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "display_flags_lib-export",
    aconfig_declarations: "display_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
    ],
}

cc_aconfig_library {
    name: "android.server.display.flags-aconfig-cc",
    host_supported: true,
    aconfig_declarations: "display_flags",
    target: {
        windows: {
            enabled: true,
        },
    },
}

// Platform Compat
java_aconfig_library {
    name: "com.android.internal.compat.flags-aconfig-java",
    aconfig_declarations: "compat_logging_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

aconfig_declarations {
    name: "android.service.compat.flags-aconfig",
    package: "com.android.server.compat",
    container: "system",
    srcs: [
        "services/core/java/com/android/server/compat/*.aconfig",
    ],
}

java_aconfig_library {
    name: "android.service.compat.flags-aconfig-java",
    aconfig_declarations: "android.service.compat.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.internal.content.storage.flags-aconfig-java",
    aconfig_declarations: "com.android.internal.content.storage.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Multi user
aconfig_declarations {
    name: "android.multiuser.flags-aconfig",
    exportable: true,
    package: "android.multiuser",
    container: "system",
    srcs: ["core/java/android/content/pm/multiuser.aconfig"],
}

java_aconfig_library {
    name: "android.multiuser.flags-aconfig-java",
    aconfig_declarations: "android.multiuser.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
}

java_aconfig_library {
    name: "android.multiuser.flags-aconfig-java-export",
    aconfig_declarations: "android.multiuser.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.wifi",
        "com.android.telephonycore",
    ],
    min_sdk_version: "30",
}

// XR
aconfig_declarations {
    name: "android.xr.flags-aconfig",
    container: "system",
    exportable: true,
    package: "android.xr",
    srcs: ["core/java/android/content/pm/xr.aconfig"],
}

java_aconfig_library {
    name: "android.xr.flags-aconfig-java-export",
    aconfig_declarations: "android.xr.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

// XR - Glasses
aconfig_declarations {
    name: "com.android.microxr.flags-aconfig",
    container: "system",
    package: "com.android.microxr",
    srcs: ["core/java/android/content/pm/glasses.aconfig"],
}

java_aconfig_library {
    name: "com.android.microxr.flags-aconfig-java",
    aconfig_declarations: "com.android.microxr.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

// android.app
aconfig_declarations {
    name: "android.app.flags-aconfig",
    package: "android.app",
    container: "system",
    exportable: true,
    // Alarm flags are defined with AlarmManagerService in the jobscheduler APEX,
    // but belong to the 'android.app' package.
    srcs: [
        "core/java/android/app/*.aconfig",
        "apex/jobscheduler/framework/aconfig/alarm.aconfig",
    ],
}

java_aconfig_library {
    name: "android.app.flags-aconfig-java",
    aconfig_declarations: "android.app.flags-aconfig",
    min_sdk_version: "34",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.app.flags-aconfig-java-export",
    aconfig_declarations: "android.app.flags-aconfig",
    min_sdk_version: "30",
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.app.flags-aconfig-java-host",
    aconfig_declarations: "android.app.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Broadcast Radio
aconfig_declarations {
    name: "android.hardware.radio.flags-aconfig",
    exportable: true,
    package: "android.hardware.radio",
    container: "system",
    srcs: ["core/java/android/hardware/radio/*.aconfig"],
}

java_aconfig_library {
    name: "android.hardware.radio.flags-aconfig-java",
    aconfig_declarations: "android.hardware.radio.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Credential Manager
aconfig_declarations {
    name: "android.credentials.flags-aconfig",
    package: "android.credentials.flags",
    container: "system",
    srcs: ["core/java/android/credentials/flags.aconfig"],
    exportable: true,
}

java_aconfig_library {
    name: "android.credentials.flags-aconfig-java",
    aconfig_declarations: "android.credentials.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.credentials.flags-aconfig-java-export",
    aconfig_declarations: "android.credentials.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
}

// Content Protection
aconfig_declarations {
    name: "android.view.contentprotection.flags-aconfig",
    exportable: true,
    package: "android.view.contentprotection.flags",
    container: "system",
    srcs: ["core/java/android/view/contentprotection/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.view.contentprotection.flags-aconfig-java-export",
    aconfig_declarations: "android.view.contentprotection.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "android.view.contentprotection.flags-aconfig-java",
    aconfig_declarations: "android.view.contentprotection.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Content Restriction
aconfig_declarations {
    name: "android.app.contentrestriction.flags-aconfig",
    exportable: true,
    package: "android.app.contentrestriction.flags",
    container: "system",
    srcs: ["core/java/android/app/contentrestriction/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.contentrestriction.flags-aconfig-java",
    aconfig_declarations: "android.app.contentrestriction.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Contextual Search system service
aconfig_declarations {
    name: "com.android.server.contextualsearch.flags-aconfig",
    package: "com.android.server.contextualsearch.flags",
    container: "system",
    srcs: ["services/contextualsearch/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "com.android.server.contextualsearch.flags-java",
    aconfig_declarations: "com.android.server.contextualsearch.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Ligths service
java_aconfig_library {
    name: "com.android.server.lights.feature.flags-java",
    aconfig_declarations: "lights_flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Voice Interaction System Service
aconfig_declarations {
    name: "com.android.server.voiceinteraction.flags-aconfig",
    package: "com.android.server.voiceinteraction.flags",
    container: "system",
    srcs: ["services/voiceinteraction/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "com.android.server.voiceinteraction.flags-java",
    aconfig_declarations: "com.android.server.voiceinteraction.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Server Services Flags
aconfig_declarations {
    name: "com.android.server.flags.services-aconfig",
    package: "com.android.server.flags",
    container: "system",
    srcs: ["services/core/java/com/android/server/flags/*.aconfig"],
}

java_aconfig_library {
    name: "com.android.server.flags.services-aconfig-java",
    aconfig_declarations: "com.android.server.flags.services-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// App prediction
aconfig_declarations {
    name: "android.service.appprediction.flags-aconfig",
    exportable: true,
    package: "android.service.appprediction.flags",
    container: "system",
    srcs: ["core/java/android/service/appprediction/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.service.appprediction.flags-aconfig-java",
    aconfig_declarations: "android.service.appprediction.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Controls
aconfig_declarations {
    name: "android.service.controls.flags-aconfig",
    exportable: true,
    package: "android.service.controls.flags",
    container: "system",
    srcs: ["core/java/android/service/controls/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.service.controls.flags-aconfig-java",
    aconfig_declarations: "android.service.controls.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Voice
aconfig_declarations {
    name: "android.service.voice.flags-aconfig",
    exportable: true,
    package: "android.service.voice.flags",
    container: "system",
    srcs: ["core/java/android/service/voice/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.service.voice.flags-aconfig-java",
    aconfig_declarations: "android.service.voice.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Autofill
aconfig_declarations {
    name: "android.service.autofill.flags-aconfig",
    package: "android.service.autofill",
    container: "system",
    srcs: [
        "services/autofill/bugfixes.aconfig",
        "services/autofill/features.aconfig",
    ],
}

java_aconfig_library {
    name: "android.service.autofill.flags-aconfig-java",
    aconfig_declarations: "android.service.autofill.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Companion
aconfig_declarations {
    name: "android.companion.flags-aconfig",
    exportable: true,
    package: "android.companion",
    container: "system",
    srcs: ["core/java/android/companion/*.aconfig"],
}

java_aconfig_library {
    name: "android.companion.flags-aconfig-java",
    aconfig_declarations: "android.companion.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.companion.flags-aconfig-java-export",
    aconfig_declarations: "android.companion.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

// Networking
aconfig_declarations {
    name: "android.net.platform.flags-aconfig",
    exportable: true,
    package: "android.net.platform.flags",
    container: "system",
    srcs: ["core/java/android/net/flags.aconfig"],
    visibility: [":__subpackages__"],
}

// User Recovery
aconfig_declarations {
    name: "android.app.lskfreset.flags-aconfig",
    exportable: true,
    package: "android.app.lskfreset.flags",
    container: "system",
    srcs: ["core/java/android/app/lskfreset/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.lskfreset.flags-aconfig-java",
    aconfig_declarations: "android.app.lskfreset.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Thread network
aconfig_declarations {
    name: "com.android.net.thread.platform.flags-aconfig",
    exportable: true,
    package: "com.android.net.thread.platform.flags",
    container: "system",
    srcs: ["core/java/android/net/thread/flags.aconfig"],
}

java_aconfig_library {
    name: "android.net.platform.flags-aconfig-java",
    aconfig_declarations: "android.net.platform.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    visibility: [":__subpackages__"],
}

cc_aconfig_library {
    name: "android.net.platform.flags-aconfig-cc",
    aconfig_declarations: "android.net.platform.flags-aconfig",
}

java_aconfig_library {
    name: "android.net.platform.flags-aconfig-java-export",
    aconfig_declarations: "android.net.platform.flags-aconfig",
    mode: "exported",
    min_sdk_version: "30",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
}

java_aconfig_library {
    name: "com.android.net.thread.platform.flags-aconfig-java",
    aconfig_declarations: "com.android.net.thread.platform.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.net.thread.platform.flags-aconfig-java-export",
    aconfig_declarations: "com.android.net.thread.platform.flags-aconfig",
    mode: "exported",
    min_sdk_version: "30",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
}

// DevicePolicy
aconfig_declarations {
    name: "device_policy_aconfig_flags",
    exportable: true,
    package: "android.app.admin.flags",
    container: "system",
    srcs: [
        "core/java/android/app/admin/flags/flags.aconfig",
    ],
}

java_aconfig_library {
    name: "device_policy_aconfig_flags_lib",
    aconfig_declarations: "device_policy_aconfig_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "device_policy_aconfig_flags_java_export",
    aconfig_declarations: "device_policy_aconfig_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "device_policy_aconfig_flags_lib_host",
    aconfig_declarations: "device_policy_aconfig_flags",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "device_policy_aconfig_flags_c_lib",
    aconfig_declarations: "device_policy_aconfig_flags",
}

// Chooser / "Sharesheet"
aconfig_declarations {
    name: "android.service.chooser.flags-aconfig",
    exportable: true,
    package: "android.service.chooser",
    container: "system",
    srcs: ["core/java/android/service/chooser/flags.aconfig"],
}

java_aconfig_library {
    name: "android.service.chooser.flags-aconfig-java",
    aconfig_declarations: "android.service.chooser.flags-aconfig",
    min_sdk_version: "34",
    apex_available: [
        "//apex_available:platform",
        "com.android.nfcservices",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// JobScheduler
aconfig_declarations {
    name: "framework-jobscheduler-job.flags-aconfig",
    package: "android.app.job",
    container: "system",
    exportable: true,
    srcs: ["apex/jobscheduler/framework/aconfig/job.aconfig"],
}

java_aconfig_library {
    name: "framework-jobscheduler-job.flags-aconfig-java",
    aconfig_declarations: "framework-jobscheduler-job.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Dreams
aconfig_declarations {
    name: "android.service.dreams.flags-aconfig",
    package: "android.service.dreams",
    container: "system",
    srcs: ["core/java/android/service/dreams/flags.aconfig"],
}

java_aconfig_library {
    name: "android.service.dreams.flags-aconfig-java",
    aconfig_declarations: "android.service.dreams.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Notifications
aconfig_declarations {
    name: "android.service.notification.flags-aconfig",
    package: "android.service.notification",
    exportable: true,
    container: "system",
    srcs: ["core/java/android/service/notification/flags.aconfig"],
}

java_aconfig_library {
    name: "android.service.notification.flags-aconfig-java",
    aconfig_declarations: "android.service.notification.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.service.notification.flags-aconfig-export-java",
    aconfig_declarations: "android.service.notification.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.extservices",
    ],
}

// Personal Context
aconfig_declarations {
    name: "android.service.personalcontext.flags-aconfig",
    package: "android.service.personalcontext",
    container: "system",
    srcs: ["core/java/android/service/personalcontext/flags.aconfig"],
}

java_aconfig_library {
    name: "android.service.personalcontext.flags-aconfig-java",
    aconfig_declarations: "android.service.personalcontext.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Quick Settings
aconfig_declarations {
    name: "android.service.quicksettings.flags-aconfig",
    package: "android.service.quicksettings",
    exportable: true,
    container: "system",
    srcs: ["core/java/android/service/quicksettings/flags.aconfig"],
}

java_aconfig_library {
    name: "android.service.quicksettings.flags-aconfig-java",
    aconfig_declarations: "android.service.quicksettings.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
}

// Contextual Search
aconfig_declarations {
    name: "android.app.contextualsearch.flags-aconfig",
    package: "android.app.contextualsearch.flags",
    container: "system",
    srcs: ["core/java/android/app/contextualsearch/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.contextualsearch.flags-aconfig-java",
    aconfig_declarations: "android.app.contextualsearch.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Assist
aconfig_declarations {
    name: "android.app.assist.flags-aconfig",
    package: "android.app.assist.flags",
    container: "system",
    srcs: ["core/java/android/app/assist/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.assist.flags-aconfig-java",
    aconfig_declarations: "android.app.assist.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Search
aconfig_declarations {
    name: "android.app.search.flags-aconfig",
    exportable: true,
    package: "android.app.search.flags",
    container: "system",
    srcs: ["core/java/android/app/search/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.search.flags-aconfig-java",
    aconfig_declarations: "android.app.search.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Smartspace
aconfig_declarations {
    name: "android.app.smartspace.flags-aconfig",
    exportable: true,
    package: "android.app.smartspace.flags",
    container: "system",
    srcs: ["core/java/android/app/smartspace/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.smartspace.flags-aconfig-java",
    aconfig_declarations: "android.app.smartspace.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Supervision
aconfig_declarations {
    name: "android.app.supervision.flags-aconfig",
    exportable: true,
    package: "android.app.supervision.flags",
    container: "system",
    srcs: ["core/java/android/app/supervision/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.supervision.flags-aconfig-java",
    aconfig_declarations: "android.app.supervision.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.app.supervision.flags-aconfig-java-export",
    aconfig_declarations: "android.app.supervision.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "android.app.supervision.flags-aconfig-java-host",
    aconfig_declarations: "android.app.supervision.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// SurfaceFlinger
java_aconfig_library {
    name: "surfaceflinger_flags_java_lib",
    aconfig_declarations: "surfaceflinger_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "surfaceflinger_exported_flags_lib",
    aconfig_declarations: "surfaceflinger_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "libgui_flags_java_lib",
    aconfig_declarations: "libgui_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Content Capture
aconfig_declarations {
    name: "android.view.contentcapture.flags-aconfig",
    exportable: true,
    package: "android.view.contentcapture.flags",
    container: "system",
    srcs: ["core/java/android/view/contentcapture/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.view.contentcapture.flags-aconfig-java",
    aconfig_declarations: "android.view.contentcapture.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// USB
aconfig_declarations {
    name: "android.hardware.usb.flags-aconfig",
    exportable: true,
    package: "android.hardware.usb.flags",
    container: "system",
    srcs: ["core/java/android/hardware/usb/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.hardware.usb.flags-aconfig-java",
    aconfig_declarations: "android.hardware.usb.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.hardware.usb.flags-aconfig-java-host",
    aconfig_declarations: "android.hardware.usb.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.hardware.usb.flags-aconfig-cc-lib",
    aconfig_declarations: "android.hardware.usb.flags-aconfig",
    vendor_available: true,
}

// WindowingTools
aconfig_declarations {
    name: "android.tracing.flags-aconfig",
    package: "android.tracing",
    container: "system",
    srcs: ["core/java/android/tracing/flags.aconfig"],
}

java_aconfig_library {
    name: "android.tracing.flags-aconfig-java",
    aconfig_declarations: "android.tracing.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.tracing.flags_c_lib",
    aconfig_declarations: "android.tracing.flags-aconfig",
}

// App Widgets
aconfig_declarations {
    name: "android.appwidget.flags-aconfig",
    package: "android.appwidget.flags",
    container: "system",
    srcs: ["core/java/android/appwidget/flags.aconfig"],
}

java_aconfig_library {
    name: "android.appwidget.flags-aconfig-java",
    aconfig_declarations: "android.appwidget.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.appwidget.flags-aconfig-java-host",
    aconfig_declarations: "android.appwidget.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// WebView
aconfig_declarations {
    name: "android.webkit.flags-aconfig",
    package: "android.webkit",
    container: "system",
    srcs: [
        "core/java/android/webkit/*.aconfig",
        "services/core/java/com/android/server/webkit/*.aconfig",
    ],
}

java_aconfig_library {
    name: "android.webkit.flags-aconfig-java",
    aconfig_declarations: "android.webkit.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Provider
aconfig_declarations {
    name: "android.provider.flags-aconfig",
    exportable: true,
    package: "android.provider",
    container: "system",
    srcs: ["core/java/android/provider/*.aconfig"],
}

java_aconfig_library {
    name: "android.provider.flags-aconfig-java",
    aconfig_declarations: "android.provider.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "30",
}

java_aconfig_library {
    name: "android.provider.flags-aconfig-java-export",
    aconfig_declarations: "android.provider.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
}

java_aconfig_library {
    name: "android.provider.flags-exported-aconfig-java",
    aconfig_declarations: "android.provider.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.telephonycore",
    ],
    min_sdk_version: "36",
}

// ContextHub
java_aconfig_library {
    name: "android.chre.flags-aconfig-java",
    aconfig_declarations: "chre_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Speech
aconfig_declarations {
    name: "android.speech.flags-aconfig",
    exportable: true,
    package: "android.speech.flags",
    container: "system",
    srcs: ["core/java/android/speech/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.speech.flags-aconfig-java",
    aconfig_declarations: "android.speech.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Power
java_aconfig_library {
    name: "power_flags_lib",
    aconfig_declarations: "power_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "power_flags_lib_host",
    aconfig_declarations: "power_flags",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Content
aconfig_declarations {
    name: "android.content.flags-aconfig",
    exportable: true,
    package: "android.content.flags",
    container: "system",
    srcs: ["core/java/android/content/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "android.content.flags-aconfig-java",
    aconfig_declarations: "android.content.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.content.flags-aconfig-java-export",
    aconfig_declarations: "android.content.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
}

// AppFunctions
aconfig_declarations {
    name: "android.app.appfunctions.flags-aconfig",
    exportable: true,
    package: "android.app.appfunctions.flags",
    container: "system",
    srcs: ["core/java/android/app/appfunctions/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.appfunctions.flags-aconfig-java",
    aconfig_declarations: "android.app.appfunctions.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.app.appfunctions.flags-aconfig-java-host",
    aconfig_declarations: "android.app.appfunctions.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    host_supported: true,
}

java_aconfig_library {
    name: "android.app.appfunctions.exported-flags-aconfig-java",
    aconfig_declarations: "android.app.appfunctions.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
        "com.android.appsearch",
    ],
    min_sdk_version: "30",
}

// CrashRecovery Module
aconfig_declarations {
    name: "android.crashrecovery.flags-aconfig",
    exportable: true,
    package: "android.crashrecovery.flags",
    container: "system",
    srcs: ["packages/CrashRecovery/aconfig/flags.aconfig"],
}

java_aconfig_library {
    name: "android.crashrecovery.flags-aconfig-java",
    aconfig_declarations: "android.crashrecovery.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "35",
    apex_available: [
        "//apex_available:platform",
        "com.android.crashrecovery",
    ],
}

java_aconfig_library {
    name: "android.crashrecovery.flags-aconfig-java-host",
    aconfig_declarations: "android.crashrecovery.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    host_supported: true,
}

// Backup
java_aconfig_library {
    name: "backup_flags_lib",
    aconfig_declarations: "backup_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Bluetooth
aconfig_declarations {
    name: "android.bluetooth.platform.flags-aconfig",
    package: "android.bluetooth.platform.flags",
    container: "system",
    srcs: ["bluetooth/bluetooth.aconfig"],
    exportable: true,
}

java_aconfig_library {
    name: "android.bluetooth.platform.flags-aconfig-java",
    aconfig_declarations: "android.bluetooth.platform.flags-aconfig",
    min_sdk_version: "36",
    apex_available: ["//apex_available:platform"],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.bluetooth.platform.flags-aconfig-java-export",
    aconfig_declarations: "android.bluetooth.platform.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    min_sdk_version: "36",
    apex_available: ["com.android.bt"],
    mode: "exported",
}

// Wifi
aconfig_declarations {
    name: "android.net.wifi.flags-aconfig",
    package: "android.net.wifi.flags",
    container: "system",
    srcs: ["wifi/*.aconfig"],
}

java_aconfig_library {
    name: "android.net.wifi.flags-aconfig-java",
    aconfig_declarations: "android.net.wifi.flags-aconfig",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.wifi",
    ],
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Wearable Sensing
aconfig_declarations {
    name: "android.app.wearable.flags-aconfig",
    exportable: true,
    package: "android.app.wearable",
    container: "system",
    srcs: ["core/java/android/app/wearable/*.aconfig"],
}

java_aconfig_library {
    name: "android.app.wearable.flags-aconfig-java",
    aconfig_declarations: "android.app.wearable.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

aconfig_declarations {
    name: "com.android.internal.pm.pkg.component.flags-aconfig",
    package: "com.android.internal.pm.pkg.component.flags",
    container: "system",
    srcs: ["core/java/com/android/internal/pm/pkg/component/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "com.android.internal.pm.pkg.component.flags-aconfig-java",
    aconfig_declarations: "com.android.internal.pm.pkg.component.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.internal.pm.pkg.component.flags-aconfig-java-host",
    aconfig_declarations: "com.android.internal.pm.pkg.component.flags-aconfig",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// System Server
aconfig_declarations {
    name: "android.systemserver.flags-aconfig",
    package: "android.server",
    container: "system",
    exportable: true,
    srcs: ["services/java/com/android/server/flags.aconfig"],
}

java_aconfig_library {
    name: "android.systemserver.flags-aconfig-java-export",
    aconfig_declarations: "android.systemserver.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
}

java_aconfig_library {
    name: "android.systemserver.flags-aconfig-java",
    aconfig_declarations: "android.systemserver.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// backstage power
aconfig_declarations {
    name: "backstage_power_flags",
    package: "com.android.server.power.optimization",
    container: "system",
    exportable: true,
    srcs: [
        "services/core/java/com/android/server/power/stats/flags.aconfig",
    ],
}

java_aconfig_library {
    name: "backstage_power_flags_lib",
    aconfig_declarations: "backstage_power_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "backstage_power_flags_lib-host",
    aconfig_declarations: "backstage_power_flags",
    host_supported: true,
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

rust_aconfig_library {
    name: "libbackstage_power_flags_rust",
    crate_name: "backstage_power_flags",
    aconfig_declarations: "backstage_power_flags",
}

// Dropbox data
aconfig_declarations {
    name: "dropbox_flags",
    package: "com.android.server.feature.flags",
    container: "system",
    srcs: [
        "services/core/java/com/android/server/feature/dropbox_flags.aconfig",
    ],
}

java_aconfig_library {
    name: "dropbox_flags_lib",
    aconfig_declarations: "dropbox_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Zero Jank
aconfig_declarations {
    name: "interaction_jank_monitor_flags",
    package: "com.android.internal.jank",
    container: "system",
    srcs: ["core/java/com/android/internal/jank/flags.aconfig"],
}

java_aconfig_library {
    name: "interaction_jank_monitor_flags_lib",
    aconfig_declarations: "interaction_jank_monitor_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// App Jank
aconfig_declarations {
    name: "android.app.jank.flags-aconfig",
    package: "android.app.jank",
    container: "system",
    srcs: ["core/java/android/app/jank/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.jank.flags-aconfig-java",
    aconfig_declarations: "android.app.jank.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Trade in mode
aconfig_declarations {
    name: "aconfig_trade_in_mode_flags",
    package: "com.android.tradeinmode.flags",
    container: "system",
    srcs: [
        "core/java/android/os/image/flags/trade_in_mode_flags.aconfig",
    ],
}

java_aconfig_library {
    name: "aconfig_trade_in_mode_flags_java_lib",
    aconfig_declarations: "aconfig_trade_in_mode_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android_trade_in_mode_flags_cc_lib",
    aconfig_declarations: "aconfig_trade_in_mode_flags",
    apex_available: [
        "//apex_available:platform",
        "com.android.adbd",
    ],
    min_sdk_version: "apex_inherit",
}

// Settings Lib
aconfig_declarations {
    name: "aconfig_settingslib_flags",
    package: "com.android.settingslib.flags",
    container: "system",
    exportable: true,
    srcs: [
        "packages/SettingsLib/aconfig/settingslib.aconfig",
    ],
}

java_aconfig_library {
    name: "aconfig_settingslib_exported_flags_java_lib",
    aconfig_declarations: "aconfig_settingslib_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "aconfig_settingslib_flags_java_lib",
    aconfig_declarations: "aconfig_settingslib_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// SettingsTheme Lib
aconfig_declarations {
    name: "aconfig_settings_theme_flags",
    package: "com.android.settingslib.widget.theme.flags",
    container: "system",
    exportable: true,
    srcs: [
        "packages/SettingsLib/SettingsTheme/aconfig/settingstheme.aconfig",
    ],
}

java_aconfig_library {
    name: "aconfig_settingstheme_exported_flags_java_lib",
    aconfig_declarations: "aconfig_settings_theme_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "21",
    apex_available: [
        "//apex_available:platform",
        "com.android.adservices",
        "com.android.cellbroadcast",
        "com.android.devicelock",
        "com.android.extservices",
        "com.android.healthfitness",
        "com.android.mediaprovider",
        "com.android.permission",
    ],
}

java_aconfig_library {
    name: "aconfig_settingstheme_flags_java_lib",
    aconfig_declarations: "aconfig_settings_theme_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Quick Access Wallet
aconfig_declarations {
    name: "android.service.quickaccesswallet.flags-aconfig",
    package: "android.service.quickaccesswallet",
    exportable: true,
    container: "system",
    srcs: ["core/java/android/service/quickaccesswallet/flags.aconfig"],
}

java_aconfig_library {
    name: "android.service.quickaccesswallet.flags-aconfig-java",
    aconfig_declarations: "android.service.quickaccesswallet.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Serial
aconfig_declarations {
    name: "android.hardware.serial.flags-aconfig",
    exportable: true,
    package: "android.hardware.serial.flags",
    container: "system",
    srcs: ["core/java/android/hardware/serial/flags/*.aconfig"],
}

java_aconfig_library {
    name: "android.hardware.serial.flags-aconfig-java",
    aconfig_declarations: "android.hardware.serial.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

rust_aconfig_library {
    name: "libandroid_hardware_serial_flags_rust",
    crate_name: "android_hardware_serial_flags",
    aconfig_declarations: "android.hardware.serial.flags-aconfig",
}

// Private Compute Core (PCC)
aconfig_declarations {
    name: "android.app.privatecompute.flags-aconfig",
    exportable: true,
    package: "android.app.privatecompute.flags",
    container: "system",
    srcs: ["core/java/android/app/privatecompute/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "android.app.privatecompute.flags-aconfig-java",
    aconfig_declarations: "android.app.privatecompute.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    host_supported: true,
}

java_aconfig_library {
    name: "android.app.privatecompute.flags-aconfig-java-export",
    aconfig_declarations: "android.app.privatecompute.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    mode: "exported",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.adservices",
        "com.android.appsearch",
        // ART needs access to PCC flags to include PCC along with isolated processes
        // in the shared-app logic
        "com.android.art",
        "com.android.art.debug",
        "com.android.extservices",
        "com.android.healthfitness",
        "com.android.mediaprovider",
        "com.android.permission",
        "com.android.bt",
        "com.android.telephonycore",
    ],
}

// AiSeal
aconfig_declarations {
    name: "android.aiseal.flags-aconfig",
    exportable: true,
    package: "android.aiseal",
    container: "system",
    srcs: ["core/java/android/aiseal/aiseal.aconfig"],
}

java_aconfig_library {
    name: "android.aiseal.flags-aconfig-java",
    aconfig_declarations: "android.aiseal.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

aconfig_declarations {
    name: "com.android.internal.app.procstats-aconfig",
    exportable: true,
    package: "com.android.internal.app.procstats",
    container: "system",
    srcs: ["core/java/com/android/internal/app/procstats/flags.aconfig"],
}

java_aconfig_library {
    name: "com.android.internal.app.procstats-aconfig-java",
    aconfig_declarations: "com.android.internal.app.procstats-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Printing
aconfig_declarations {
    name: "android.print.flags-aconfig",
    exportable: true,
    package: "android.print.flags",
    container: "system",
    srcs: ["core/java/android/print/flags/flags.aconfig"],
}

java_aconfig_library {
    name: "android.print.flags-aconfig-java",
    aconfig_declarations: "android.print.flags-aconfig",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "android.graphics.egl.flags-aconfig-java",
    aconfig_declarations: "egl_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
