<?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.ondevicepersonalization.federatedcomputetests" >

    <!-- Used for scheduling connectivity jobs -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Used for persisting scheduled jobs -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.BIND_EXAMPLE_STORE_SERVICE" />

    <application android:label="FederatedComputeServicesTests"
                 android:debuggable="true">
        <uses-library android:name="android.test.runner"/>

        <!-- The JobService schedules all jobs for FederatedCompute using SPE framework. -->
        <service
            android:name="com.android.federatedcompute.services.sharedlibrary.spe.FederatedComputeJobService"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE">
        </service>

        <service android:name="com.android.federatedcompute.services.training.FederatedJobService"
                 android:exported="false"
                 android:permission="android.permission.BIND_JOB_SERVICE">
        </service>
        <service
            android:name="com.android.federatedcompute.services.encryption.BackgroundKeyFetchJobService"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE">
        </service>
        <service
            android:name="com.android.federatedcompute.services.scheduling.DeleteExpiredJobService"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE">
        </service>
        <service android:name="com.android.federatedcompute.services.training.IsolatedTrainingService"
                 android:isolatedProcess="true" android:allowSharedIsolatedProcess="true" android:exported="false" >
        </service>
        <service
            android:name="com.android.federatedcompute.services.examplestore.SampleExampleStoreService"
            android:enabled="true"
            android:exported="true">
                 <intent-filter>
                    <action android:name="android.federatedcompute.EXAMPLE_STORE" />
                 </intent-filter>
        </service>
        <service android:name="com.android.federatedcompute.services.training.SampleResultHandlingService"
                 android:enabled="true"
                 android:exported="true">
                 <intent-filter>
                    <action android:name="android.federatedcompute.COMPUTATION_RESULT" />
                 </intent-filter>
        </service>
        <service android:name="com.android.federatedcompute.services.training.FederatedIsolatedTrainingService"
                android:exported="false"
                android:process=":remote"
                android:isolatedProcess="true">
       </service>
    </application>
    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
                     android:targetPackage="com.android.ondevicepersonalization.federatedcomputetests"
                     android:label="Tests of FederatedComputeManagingService"/>
</manifest>