use crate::VarOrBool;
use super::attribute_list::{AttributeList, Semicolon};
use super::grant_uri_permission::GrantUriPermission;
use super::intent_filter::IntentFilter;
use super::meta_data::MetaData;
use super::path_permission::PathPermission;
use super::resources::{MipmapOrDrawableResource, StringResourceOrString};
use serde::{Deserialize, Serialize};
#[derive(
Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Default, Clone,
)]
#[serde(rename = "provider")]
pub struct Provider {
#[yaserde(
attribute = true,
prefix = "android",
skip_serializing_if = "check_authorities"
)]
#[serde(skip_serializing_if = "AttributeList::is_empty")]
pub authorities: AttributeList<Semicolon, String>,
#[yaserde(attribute = true, prefix = "android")]
pub enabled: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "directBootAware")]
pub direct_boot_aware: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub exported: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "grantUriPermissions")]
pub grant_uri_permissions: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub icon: Option<MipmapOrDrawableResource>,
#[yaserde(attribute = true, prefix = "android", rename = "initOrder")]
pub init_order: Option<u32>,
#[yaserde(attribute = true, prefix = "android")]
pub label: Option<StringResourceOrString>,
#[yaserde(attribute = true, prefix = "android")]
pub multiprocess: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android")]
pub name: String,
#[yaserde(attribute = true, prefix = "android")]
pub permission: Option<String>,
#[yaserde(attribute = true, prefix = "android")]
pub process: Option<String>,
#[yaserde(attribute = true, prefix = "android", rename = "readPermission")]
pub read_permission: Option<String>,
#[yaserde(attribute = true, prefix = "android")]
pub syncable: Option<VarOrBool>,
#[yaserde(attribute = true, prefix = "android", rename = "writePermission")]
pub write_permission: Option<String>,
#[yaserde(rename = "grant-uri-permission")]
pub grant_uri_permission: Option<GrantUriPermission>,
#[yaserde(rename = "path-permission")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub path_permission: Vec<PathPermission>,
#[yaserde(rename = "intent-filter")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub intent_filter: Vec<IntentFilter>,
#[yaserde(rename = "meta-data")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub meta_data: Vec<MetaData>,
#[yaserde(attribute = true, prefix = "tools")]
pub replace: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub remove: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub node: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub ignore: Option<String>,
#[yaserde(attribute = true, prefix = "tools", rename = "targetApi")]
pub target_api: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub selector: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub strict: Option<String>,
}
impl Provider {
pub fn check_authorities(&self, value: &AttributeList<Semicolon, String>) -> bool {
value.is_empty()
}
}