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

// Sysconfig files

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_base_license"],
}

prebuilt_etc {
    name: "framework-sysconfig.xml",
    sub_dir: "sysconfig",
    src: "framework-sysconfig.xml",
}

prebuilt_etc {
    name: "preinstalled-packages-platform.xml",
    sub_dir: "sysconfig",
    src: "preinstalled-packages-platform.xml",
}

prebuilt_etc {
    name: "initial-package-stopped-states.xml",
    sub_dir: "sysconfig",
    src: "initial-package-stopped-states.xml",
}

prebuilt_etc {
    name: "preinstalled-packages-platform-overlays.xml",
    product_specific: true,
    sub_dir: "sysconfig",
    src: "preinstalled-packages-platform-overlays.xml",
}

prebuilt_etc {
    name: "hiddenapi-package-whitelist.xml",
    sub_dir: "sysconfig",
    src: "hiddenapi-package-whitelist.xml",
}

prebuilt_etc {
    name: "preinstalled-packages-asl-files.xml",
    sub_dir: "sysconfig",
    src: "preinstalled-packages-asl-files.xml",
}

prebuilt_etc {
    name: "preinstalled-packages-strict-signature.xml",
    sub_dir: "sysconfig",
    src: "preinstalled-packages-strict-signature.xml",
}

prebuilt_etc {
    name: "enhanced-confirmation.xml",
    sub_dir: "sysconfig",
    src: "enhanced-confirmation.xml",
}

prebuilt_etc {
    name: "package-shareduid-allowlist.xml",
    sub_dir: "sysconfig",
    src: "package-shareduid-allowlist.xml",
}

// Privapp permission whitelist files

prebuilt_etc {
    name: "platform.xml",
    sub_dir: "permissions",
    src: "platform.xml",
}

prebuilt_etc {
    name: "privapp-permissions-platform.xml",
    sub_dir: "permissions",
    src: "privapp-permissions-platform.xml",
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.carrierconfig",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.carrierconfig.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.contacts",
    product_specific: true,
    sub_dir: "permissions",
    src: "com.android.contacts.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.dialer",
    product_specific: true,
    sub_dir: "permissions",
    src: "com.android.dialer.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.emergency",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.emergency.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.documentsui",
    sub_dir: "permissions",
    src: "com.android.documentsui.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.imsserviceentitlement",
    product_specific: true,
    sub_dir: "permissions",
    src: "com.android.imsserviceentitlement.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.intentresolver",
    sub_dir: "permissions",
    src: "com.android.intentresolver.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.launcher3",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.launcher3.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.networkstack",
    sub_dir: "permissions",
    src: "com.android.networkstack.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.provision",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.provision.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.settings",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.settings.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.settings.intelligence",
    product_specific: true,
    sub_dir: "permissions",
    src: "com.android.settings.intelligence.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.storagemanager",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.storagemanager.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_com.android.systemui",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "com.android.systemui.xml",
    filename_from_src: true,
}

filegroup {
    name: "services.core.protolog.json",
    srcs: ["services.core.protolog.json"],
}

filegroup {
    name: "file-core.protolog.pb",
    srcs: ["core.protolog.pb"],
}
