// Copyright (C) 2019 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.

package {
    // http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // the below license kinds from "system_sepolicy_license":
    //   legacy_unencumbered
    default_applicable_licenses: ["system_sepolicy_license"],
}

// TODO(b/236681553): Remove com.android.bluetooth-file_contexts

filegroup {
    name: "apex.test-file_contexts",
    srcs: [
        "apex.test-file_contexts",
    ],
}

filegroup {
    name: "com.android.adbd-file_contexts",
    srcs: [
        "com.android.adbd-file_contexts",
    ],
}

filegroup {
    name: "com.android.sdkext-file_contexts",
    srcs: [
        "com.android.sdkext-file_contexts",
    ],
}

filegroup {
    name: "com.android.art-file_contexts",
    srcs: [
        "com.android.art-file_contexts",
    ],
}

filegroup {
    name: "com.android.art.debug-file_contexts",
    srcs: [
        "com.android.art.debug-file_contexts",
    ],
}

filegroup {
    name: "com.android.bootanimation-file_contexts",
    srcs: [
        "com.android.bootanimation-file_contexts",
    ],
}

filegroup {
    name: "com.android.cellbroadcast-file_contexts",
    srcs: [
        "com.android.cellbroadcast-file_contexts",
    ],
}

filegroup {
    name: "com.android.compos-file_contexts",
    srcs: [
        "com.android.compos-file_contexts",
    ],
}

filegroup {
    name: "com.android.conscrypt-file_contexts",
    srcs: [
        "com.android.conscrypt-file_contexts",
    ],
}

filegroup {
    name: "com.android.crashrecovery-file_contexts",
    srcs: [
        "com.android.crashrecovery-file_contexts",
    ],
}

filegroup {
    name: "com.android.federatedcompute-file_contexts",
    srcs: [
        "com.android.federatedcompute-file_contexts",
    ],
}

filegroup {
    name: "com.android.geotz-file_contexts",
    srcs: [
        "com.android.geotz-file_contexts",
    ],
}

filegroup {
    name: "com.android.gki-file_contexts",
    srcs: [
        "com.android.gki-file_contexts",
    ],
}

filegroup {
    name: "com.android.ipsec-file_contexts",
    srcs: [
        "com.android.ipsec-file_contexts",
    ],
}

filegroup {
    name: "com.android.i18n-file_contexts",
    srcs: [
        "com.android.i18n-file_contexts",
    ],
}

filegroup {
    name: "com.android.media-file_contexts",
    srcs: [
        "com.android.media-file_contexts",
    ],
}

filegroup {
    name: "com.android.mediaprovider-file_contexts",
    srcs: [
        "com.android.mediaprovider-file_contexts",
    ],
}

filegroup {
    name: "com.android.media.swcodec-file_contexts",
    srcs: [
        "com.android.media.swcodec-file_contexts",
    ],
}

filegroup {
    name: "com.android.neuralnetworks-file_contexts",
    srcs: [
        "com.android.neuralnetworks-file_contexts",
    ],
}

filegroup {
    name: "com.android.nfcservices-file_contexts",
    srcs: [
        "com.android.nfcservices-file_contexts",
    ],
}

filegroup {
    name: "com.android.os.statsd-file_contexts",
    srcs: [
        "com.android.os.statsd-file_contexts",
    ],
}

filegroup {
    name: "com.android.permission-file_contexts",
    srcs: [
        "com.android.permission-file_contexts",
    ],
}

filegroup {
    name: "com.android.resolv-file_contexts",
    srcs: [
        "com.android.resolv-file_contexts",
    ],
}

filegroup {
    name: "com.android.runtime-file_contexts",
    srcs: [
        "com.android.runtime-file_contexts",
    ],
}

filegroup {
    name: "com.android.scheduling-file_contexts",
    srcs: [
        "com.android.scheduling-file_contexts",
    ],
}

filegroup {
    name: "com.android.tzdata-file_contexts",
    srcs: [
        "com.android.tzdata-file_contexts",
    ],
}

filegroup {
    name: "com.android.uwb-file_contexts",
    srcs: [
        "com.android.uwb-file_contexts",
    ],
}

file_contexts {
    name: "com.android.virt-file_contexts",
    defaults: ["contexts_flags_defaults"],
    srcs: ["com.android.virt-file_contexts"],
}

filegroup {
    name: "com.android.vndk-file_contexts",
    srcs: [
        "com.android.vndk-file_contexts",
    ],
}

filegroup {
    name: "com.android.wifi-file_contexts",
    srcs: [
        "com.android.wifi-file_contexts",
    ],
}

filegroup {
    name: "com.android.tethering-file_contexts",
    srcs: [
        "com.android.tethering-file_contexts",
    ],
}

filegroup {
    name: "com.android.extservices-file_contexts",
    srcs: [
        "com.android.extservices-file_contexts",
    ],
}

filegroup {
    name: "com.android.adservices-file_contexts",
    srcs: [
        "com.android.adservices-file_contexts",
    ],
}

filegroup {
    name: "com.android.car.framework-file_contexts",
    srcs: [
        "com.android.car.framework-file_contexts",
    ],
}

filegroup {
    name: "com.android.ondevicepersonalization-file_contexts",
    srcs: [
        "com.android.ondevicepersonalization-file_contexts",
    ],
}

filegroup {
    name: "com.android.healthfitness-file_contexts",
    srcs: [
        "com.android.healthfitness-file_contexts",
    ],
}

filegroup {
    name: "com.android.rkpd-file_contexts",
    srcs: [
        "com.android.rkpd-file_contexts",
    ],
}

filegroup {
    name: "com.android.devicelock-file_contexts",
    srcs: [
        "com.android.devicelock-file_contexts",
    ],
}

filegroup {
    name: "com.android.telephonymodules-file_contexts",
    srcs: [
        "com.android.telephonymodules-file_contexts",
    ],
}

filegroup {
    name: "com.android.configinfrastructure-file_contexts",
    srcs: [
        "com.android.configinfrastructure-file_contexts",
    ],
}

filegroup {
    name: "com.android.biometrics.virtual.fingerprint-file_contexts",
    srcs: [
        "com.android.biometrics.virtual.fingerprint-file_contexts",
    ],
}

filegroup {
    name: "com.android.uprobestats-file_contexts",
    srcs: [
        "com.android.uprobestats-file_contexts",
    ],
}

filegroup {
    name: "com.android.biometrics.virtual.face-file_contexts",
    srcs: [
        "com.android.biometrics.virtual.face-file_contexts",
    ],
}

filegroup {
    name: "com.android.documentsuibundle-file_contexts",
    srcs: [
        "com.android.documentsuibundle-file_contexts",
    ],
}

filegroup {
    name: "com.android.profiling-file_contexts",
    srcs: [
        "com.android.profiling-file_contexts",
    ],
}
