// 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.bt-file_contexts",
    srcs: [
        "com.android.bt-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",
    ],
}
