<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<!-- Copyright (C) 2019 Google Inc.

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

<!--
    This file contains permissions to be granted by default. Default
    permissions are granted to special platform components and to apps
    that are approved to get default grants. The special components
    are apps that are expected tto work out-of-the-box as they provide
    core use cases such as default dialer, default email, etc. These
    grants are managed by the platform. The apps that are additionally
    approved for default grants are ones that provide carrier specific
    functionality, ones legally required at some location, ones providing
    alternative disclosure and opt-out UI, ones providing highlight features
    of a dedicated device, etc. This file contains only the latter exceptions.
    Fixed permissions cannot be controlled by the user and need a special
    approval. Typically these are to ensure either legally mandated functions
    or the app is considered a part of the OS.
-->

<exceptions>

    <!-- This is an example of an exception:
    <exception
        package="foo.bar.permission"
      <permission name="android.permission.READ_CONTACTS" fixed="true"/>
      <permission name="android.permission.READ_CALENDAR" fixed="false"/>
    </exception>
    -->

    <exception
            package="com.google.intelligence.sense">
        <!-- Record Audio -->
        <permission name="android.permission.RECORD_AUDIO" fixed="false"/>
    </exception>

    <exception
            package="com.google.android.apps.restore"
            sha256-cert-digest="56:BE:13:2B:78:06:56:FE:24:44:CD:34:32:6E:B5:D7:AA:C9:1D:20:96:AB:F0:FE:67:3A:99:27:06:22:EC:87">
        <!-- External storage -->
        <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
        <!-- Contacts -->
        <permission name="android.permission.READ_CONTACTS" fixed="false"/>
        <permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
        <!-- Call logs -->
        <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
        <permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
        <!-- Used to set up a Wi-Fi P2P network -->
        <permission name="android.permission.NEARBY_WIFI_DEVICES" fixed="false"/>
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>

    <exception
            package="com.verizon.mips.services">
        <!-- Call -->
        <permission name="android.permission.PROCESS_OUTGOING_CALLS" fixed="false"/>
        <!-- Phone -->
        <permission name="android.permission.READ_PHONE_STATE" fixed="false"/>
        <!-- SMS -->
        <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
    </exception>

    <exception package="com.google.android.settings.intelligence">
        <!-- Calendar -->
        <permission name="android.permission.READ_CALENDAR" fixed="true"/>
        <!-- Location -->
        <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
        <permission name="android.permission.ACCESS_BACKGROUND_LOCATION" fixed="false"/>
        <!-- Battery Widget -->
        <permission name="android.permission.BLUETOOTH_CONNECT" fixed="false"/>
    </exception>

    <exception package="com.google.android.apps.camera.services">
        <!-- Camera -->
        <permission name="android.permission.CAMERA" fixed="false"/>
    </exception>

    <exception package="com.google.android.apps.cbrsnetworkmonitor">
        <!-- Location access to create CBRS geofences-->
        <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="true"/>
        <permission name="android.permission.ACCESS_COARSE_LOCATION" fixed="true"/>
        <permission name="android.permission.ACCESS_BACKGROUND_LOCATION" fixed="true"/>
    </exception>

    <exception package="com.google.android.apps.scone">
        <!-- Used to call ActivityTransition API for Smart OOS & Smart PNO -->
        <permission name="android.permission.ACTIVITY_RECOGNITION" fixed="false"/>
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>

    <exception package="com.google.android.wfcactivation">
        <!-- SMS -->
        <permission name="android.permission.RECEIVE_WAP_PUSH" fixed="false"/>
    </exception>
    <exception
        package="com.google.vr.apps.ornament"
        sha256-cert-digest="4A:9E:3F:3B:C8:D6:0C:E4:D3:CB:E5:A9:C6:6E:EC:11:EF:D0:1C:5F:E9:C7:8D:8C:92:3B:9D:42:48:23:00:13">
        <!-- Camera -->
        <permission name="android.permission.CAMERA" fixed="false"/>
        <!-- Microphone -->
        <permission name="android.permission.RECORD_AUDIO" fixed="false"/>
        <!-- Storage -->
        <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.deskclock">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.apps.tips">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.adservices">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.apps.mediashell">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.apps.pixelmigrate">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.apps.work.oobconfig">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="true"/>
    </exception>
    <exception
        package="com.google.android.apps.turbo">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
    <exception
        package="com.google.android.euicc">
        <!-- Notifications -->
        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
    </exception>
</exceptions>
