<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2023 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.
  -->

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.adextservices.tests.ui">

    <!-- New permission introduced in T+ devices needed to show notifications. -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!--acts as an application that uses adservices in order for PPAPI to be enabled and notification to be displayed-->
    <uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"/>
    <!-- Permissions required for reading device configs -->
    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
    <!-- Allows JobScheduler to persist jobs across reboot. -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <application android:debuggable="true">
        <!-- Activity for the main view of Adservices Settings UI-->
        <activity
            android:name="com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity"
            android:exported="true"
            android:theme="@style/Theme.SubSettingsBase">
            <intent-filter android:priority="1">
                <action android:name="android.test.adservices.ui.MAIN"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <!-- Activity for the topics view of Adservices Settings UI-->
        <activity
            android:name="com.android.adservices.ui.settings.activities.TopicsActivity"
            android:exported="true"
            android:theme="@style/Theme.SubSettingsBase">
            <intent-filter android:priority="1">
                <action android:name="android.test.adservices.ui.TOPICS"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <!-- Activity for the blocked topics view of Adservices Settings UI-->
        <activity
            android:name="com.android.adservices.ui.settings.activities.BlockedTopicsActivity"
            android:exported="true"
            android:theme="@style/Theme.SubSettingsBase">
            <intent-filter android:priority="1">
                <action android:name="android.test.adservices.ui.BLOCKED_TOPICS"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <!-- Activity for the apps view of Adservices Settings UI-->
        <activity
            android:name="com.android.adservices.ui.settings.activities.AppsActivity"
            android:exported="true"
            android:theme="@style/Theme.SubSettingsBase">
            <intent-filter android:priority="1">
                <action android:name="android.test.adservices.ui.APPS"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <!-- Activity for the blocked apps view of Adservices Settings UI-->
        <activity
            android:name="com.android.adservices.ui.settings.activities.BlockedAppsActivity"
            android:exported="true"
            android:theme="@style/Theme.SubSettingsBase">
            <intent-filter android:priority="1">
                <action android:name="android.test.adservices.ui.BLOCKED_APPS"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <!-- Activity for the ads measurement view of AdServices Settings UI-->
        <activity
            android:name="com.android.adservices.ui.settings.activities.MeasurementActivity"
            android:exported="true"
            android:theme="@style/Theme.SubSettingsBase">
            <intent-filter android:priority="1">
                <action android:name="android.adservices.ui.MEASUREMENT"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <!-- Daily maintenance Job. -->
        <!-- Used by SettingsGaUiAutomatorTest on S- -->
        <service android:name="com.android.adservices.service.MaintenanceJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- START - Used by BlockedTopicsSettingsUiAutomatorTest ConsentManager.enable() on S- -->

        <!-- Epoch computation Job. -->
        <service android:name="com.android.adservices.service.topics.EpochJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Mdd background Job. -->
        <service android:name="com.android.adservices.download.MddJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Measurement aggregate main report upload job. -->
        <service android:name=
                     "com.android.adservices.service.measurement.reporting.AggregateReportingJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Measurement aggregate fallback report upload job. -->
        <service android:name=
                     "com.android.adservices.service.measurement.reporting.AggregateFallbackReportingJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Attribution Job.-->
        <service android:name=
                     "com.android.adservices.service.measurement.attribution.AttributionJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Measurement event main report upload job. -->
        <service
            android:name="com.android.adservices.service.measurement.reporting.EventReportingJobService"
            android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Measurement event fallback report upload job. -->
        <service android:name=
                     "com.android.adservices.service.measurement.reporting.EventFallbackReportingJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Deletion Job.-->
        <service android:name=
                     "com.android.adservices.service.measurement.DeleteExpiredJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Measurement Deletion Uninstalled Apps Job. -->
        <service android:name=
                     "com.android.adservices.service.measurement.DeleteUninstalledJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- Registration Queue job. -->
        <service android:name=
                     "com.android.adservices.service.measurement.registration.AsyncRegistrationQueueJobService"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <!-- END - Used by ConsentManager.enable() in BlockedTopicsSettingsUiAutomatorTest on S- -->

        <uses-library android:name="android.ext.adservices" android:required="false"/>
    </application>

    <instrumentation
        android:name="androidx.test.runner.AndroidJUnitRunner"
        android:label="AdServices UI Test Cases"
        android:targetPackage="com.android.adextservices.tests.ui"/>
</manifest>
