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

filegroup {
  name: "com.android.virt-file_contexts",
  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",
  ],
}
