// 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.



// Privapp permission whitelist files

prebuilt_etc {
    name: "privapp_whitelist_android.car.cluster.loggingrenderer",
    sub_dir: "permissions",
    src: "android.car.cluster.loggingrenderer.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_android.car.cluster.sample",
    sub_dir: "permissions",
    src: "android.car.cluster.sample.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_android.car.cluster",
    sub_dir: "permissions",
    src: "android.car.cluster.xml",
    filename_from_src: true,
}

prebuilt_etc {
    name: "privapp_whitelist_android.car.usb.handler",
    sub_dir: "permissions",
    src: "android.car.usb.handler.xml",
    filename_from_src: true,
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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