<?xml version="1.0" encoding="utf-8"?>
<!-- These are configurations that must exist on all GMS devices. -->
<config>
    <!-- These are the standard packages that are white-listed to always have internet
         access while in power save mode, even if they aren't in the foreground. -->

    <!-- GmsCore must always have network access for GCM and other things. -->
    <allow-in-power-save package="com.google.android.gms" />
    <allow-in-data-usage-save package="com.google.android.gms" />
    <allow-unthrottled-location package="com.google.android.gms" />
    <allow-ignore-location-settings package="com.google.android.gms" attributionTag="com.google.android.gms.thunderbird" />
    <allow-ignore-location-settings package="com.google.android.dialer" attributionTag="*" />

    <!-- Allow App Streaming to run in background while in power save mode. -->
    <allow-in-power-save package="com.google.ambient.streaming" />

    <!-- Turbo must not have App Standby restrictions in order to push new
         App Standby buckets to the platform periodically -->
    <allow-in-power-save-except-idle package="com.google.android.apps.turbo" />

    <!-- Certain broadcasts must still go to legacy implicit receivers -->
    <allow-implicit-broadcast action="com.google.android.checkin.CHECKIN_COMPLETE" />
    <allow-implicit-broadcast action="com.google.gservices.intent.action.GSERVICES_CHANGED" />
    <allow-implicit-broadcast action="com.google.gservices.intent.action.GSERVICES_OVERRIDE" />
    <allow-implicit-broadcast action="com.google.android.c2dm.intent.RECEIVE" />

    <!-- Play Store likewise must have network access to support other applications. -->
    <allow-in-power-save-except-idle package="com.android.vending" />

    <!-- Allow SetupWizard keeping at unrestricted mode of Battery usage. -->
    <bg-restriction-exemption package="com.google.android.setupwizard"/>
    <bg-restriction-exemption package="com.google.android.apps.setupwizard.searchselector"/>

    <!-- These Google applications all handle URLs to their websites by default -->

    <!-- Apps below are required on all GMS devices -->
    <app-link package="com.android.vending" />
    <app-link package="com.google.android.gms" />
    <app-link package="com.google.android.apps.maps" />
    <app-link package="com.google.android.youtube" />
    <app-link package="com.google.android.apps.docs" />
    <app-link package="com.google.android.apps.photos" />
    <app-link package="com.google.android.apps.youtube.music" />
    <app-link package="com.google.android.googlequicksearchbox" />

    <!-- Apps below are optional on GMS devices -->
    <app-link package="com.google.android.apps.docs.editors.sheets" />
    <app-link package="com.google.android.apps.docs.editors.slides" />
    <app-link package="com.google.android.apps.docs.editors.docs" />
    <app-link package="com.google.android.talk" />
    <app-link package="com.google.android.videos" />
    <app-link package="com.google.android.calendar" />
    <app-link package="com.google.android.apps.wallpaper" />

    <!-- Whitelist of what components are permitted as backup data transports.  The
         'service' attribute here is a flattened ComponentName string. -->
    <backup-transport-whitelisted-service
        service="com.google.android.gms/.backup.BackupTransportService" />
    <backup-transport-whitelisted-service
        service="com.google.android.gms/.backup.component.D2dTransportService" />
    <backup-transport-whitelisted-service
        service="com.google.android.apps.restore/.transport.BackupTransportService" />
    <backup-transport-whitelisted-service
        service="com.google.android.apps.restore/.transport.D2dTransportService" />

    <!-- Specify the explicit set of other applications that AI services are allowed to
         interact with, including the providers that back the implementation of the APIs
         provided by the package. -->
    <allow-association target="com.google.android.as" allowed="com.android.bluetooth" />
    <allow-association target="com.google.android.as" allowed="com.android.bluetooth.services" />
    <allow-association target="com.google.android.as" allowed="com.android.providers.contacts" />
    <allow-association target="com.google.android.as" allowed="com.android.providers.media" />
    <allow-association target="com.google.android.as" allowed="com.android.providers.telephony" />
    <allow-association target="com.google.android.as" allowed="com.android.systemui" />
    <allow-association target="com.google.android.as" allowed="com.google.android.bluetooth" />
    <allow-association target="com.google.android.as" allowed="com.google.android.bluetooth.services" />
    <allow-association target="com.google.android.as" allowed="com.google.android.providers.media.module" />
    <!-- AI services can bind to its open-source network component. -->
    <allow-association target="com.google.android.as" allowed="com.google.android.as.oss" />

    <!-- AI services open-source network component can only bind back to the core package. -->
    <allow-association target="com.google.android.as.oss" allowed="com.google.android.as" />

    <!-- Specify the explicit set of other applications whose app data directories are
        accessible by other applications. -->
    <app-data-isolation-whitelisted-app package="com.google.android.gms" />

    <!-- Whitelist of packages that eligible for rollback -->
    <rollback-whitelisted-app package="com.android.vending" />

    <!-- Specify the installer eligiable for updating the given GMS package. -->
    <update-ownership package="com.google.android.gms" installer="com.android.vending" />
    <update-ownership package="com.google.android.verifier" installer="com.android.vending" />

    <!-- Denylist of packages that are not eligible for automatic rollback -->
    <automatic-rollback-denylisted-app package="com.android.vending" />

    <!-- Preinstalled allowlist -->
    <install-in-user-type package="com.google.android.verifier">
        <install-in user-type="FULL" />
        <install-in user-type="android.os.usertype.profile.MANAGED" />
        <install-in user-type="android.os.usertype.profile.PRIVATE" />
    </install-in-user-type>
</config>
