• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<!--
3 * Copyright (C) 2024 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16-->
17
18<manifest xmlns:android="http://schemas.android.com/apk/res/android"
19     package="android.autofillservice.cts"
20     android:targetSandboxVersion="2">
21
22    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
23    <uses-permission android:name="android.permission.INJECT_EVENTS"/>
24    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
25    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
26    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
27    <!--  Some tests use sticky broadcasts to ensure that inline suggestion extras
28    are delivered to the IME even when its process is not running persistently.
29    This can happen when the IME is unbound as a result of enabling
30    the config_preventImeStartupUnlessTextEditor option. -->
31    <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
32    <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS"/>
33    <uses-permission android:name="android.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS"/>
34    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
35    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
36    <uses-permission android:name="android.permission.LIST_ENABLED_CREDENTIAL_PROVIDERS"/>
37    <uses-permission android:name="android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS"/>
38
39    <queries>
40        <package android:name="com.android.cts.mockime" />
41    </queries>
42
43    <application>
44
45        <uses-library android:name="android.test.runner"/>
46
47        <activity android:name=".activities.LoginActivity"
48             android:exported="true"
49             android:theme="@style/OptOutEdgeToEdge">
50            <intent-filter>
51                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
52                                         this app during CTS development... -->
53                <action android:name="android.intent.action.MAIN"/>
54                <category android:name="android.intent.category.LAUNCHER"/>
55            </intent-filter>
56        </activity>
57        <activity android:name=".activities.PreFilledLoginActivity"/>
58        <activity android:name=".activities.LoginWithCustomHighlightActivity"
59             android:theme="@style/MyAutofilledHighlight"/>
60        <activity android:name=".activities.LoginWithStringsActivity"/>
61        <activity android:name=".activities.LoginNotImportantForAutofillActivity"/>
62        <activity android:name=".activities.LoginNotImportantUsernameImportantPasswordActivity"/>
63        <activity android:name=".activities.MultilineLoginActivity"/>
64        <activity android:name=".activities.ImeOptionActivity"/>
65        <activity android:name=".activities.LoginNotImportantForAutofillWrappedActivityContextActivity"/>
66        <activity android:name=".activities.LoginNotImportantForAutofillWrappedApplicationContextActivity"/>
67        <activity android:name=".activities.LoginImportantForCredentialManagerActivity"/>
68        <activity android:name=".activities.LoginMixedImportantForCredentialManagerActivity"/>
69        <activity android:name=".activities.LoginCredentialMixedActivity"
70             android:theme="@style/OptOutEdgeToEdge"/>
71        <activity android:name=".activities.WelcomeActivity"
72             android:taskAffinity=".WelcomeActivity"/>
73        <activity android:name=".activities.ViewActionActivity"
74             android:taskAffinity=".ViewActionActivity"
75             android:launchMode="singleTask"
76             android:exported="true">
77            <intent-filter>
78                <action android:name="android.intent.action.VIEW"/>
79                <data android:scheme="autofillcts"/>
80                <category android:name="android.intent.category.DEFAULT"/>
81            </intent-filter>
82        </activity>
83        <activity android:name=".activities.SecondActivity"
84             android:taskAffinity=".SecondActivity"/>
85        <activity android:name=".activities.ViewAttributesTestActivity"/>
86        <activity android:name=".activities.AuthenticationActivity"/>
87        <activity android:name=".activities.ManualAuthenticationActivity"
88          android:theme="@style/OptOutEdgeToEdge"/>
89        <activity android:name=".activities.CheckoutActivity"
90             android:taskAffinity=".CheckoutActivity"/>
91        <activity android:name=".activities.InitializedCheckoutActivity"/>
92        <activity android:name=".activities.DatePickerCalendarActivity"/>
93        <activity android:name=".activities.DatePickerSpinnerActivity"/>
94        <activity android:name=".activities.TimePickerClockActivity"/>
95        <activity android:name=".activities.TimePickerSpinnerActivity"/>
96        <activity android:name=".activities.FatActivity"/>
97        <activity android:name=".activities.VirtualContainerActivity"
98             android:exported="true">
99            <intent-filter>
100                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
101                                         this app during CTS development... -->
102                <action android:name="android.intent.action.MAIN"/>
103                <category android:name="android.intent.category.LAUNCHER"/>
104            </intent-filter>
105        </activity>
106        <activity android:name=".activities.OptionalSaveActivity"/>
107        <activity android:name=".activities.GridActivity"/>
108        <activity android:name=".activities.EmptyActivity"/>
109        <activity android:name=".activities.DummyActivity"/>
110        <activity android:name=".activities.OutOfProcessLoginActivity"
111             android:process="android.autofillservice.cts.outside"/>
112        <activity android:name=".activities.FragmentContainerActivity"/>
113        <activity android:name=".activities.DuplicateIdActivity"
114             android:theme="@android:style/Theme.NoTitleBar"/>
115        <activity android:name=".activities.SimpleSaveActivity"
116             android:theme="@style/OptOutEdgeToEdge"/>
117        <activity android:name=".activities.PreSimpleSaveActivity"
118             android:exported="true">
119            <intent-filter>
120                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
121                                         this app during CTS development... -->
122                <action android:name="android.intent.action.MAIN"/>
123                <category android:name="android.intent.category.LAUNCHER"/>
124            </intent-filter>
125        </activity>
126        <activity android:name=".activities.WebViewActivity"/>
127        <activity android:name=".activities.WebViewMultiScreenLoginActivity"/>
128        <activity android:name=".activities.TrampolineWelcomeActivity"/>
129        <activity android:name=".activities.AttachedContextActivity"/>
130        <activity android:name=".activities.DialogLauncherActivity"
131             android:exported="true">
132            <intent-filter>
133                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
134                                         this app during CTS development... -->
135                <action android:name="android.intent.action.MAIN"/>
136                <category android:name="android.intent.category.LAUNCHER"/>
137            </intent-filter>
138        </activity>
139        <activity android:name=".activities.MultiWindowLoginActivity"
140             android:resizeableActivity="true"
141             android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout"/>
142        <activity android:name=".activities.MultiWindowEmptyActivity"
143             android:resizeableActivity="true"
144             android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout"
145             android:taskAffinity="nobody.but.EmptyActivity"
146             android:exported="true"/>
147
148        <activity android:name=".activities.TrampolineForResultActivity"/>
149        <activity android:name=".activities.OnCreateServiceStatusVerifierActivity"/>
150        <activity android:name=".activities.UsernameOnlyActivity"
151             android:theme="@style/OptOutEdgeToEdge"
152             android:exported="true">
153            <intent-filter>
154                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
155                                         this app during CTS development... -->
156                <action android:name="android.intent.action.MAIN"/>
157                <category android:name="android.intent.category.LAUNCHER"/>
158            </intent-filter>
159        </activity>
160        <activity android:name=".activities.PasswordOnlyActivity"
161             android:exported="true">
162            <intent-filter>
163                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
164                                         this app during CTS development... -->
165                <action android:name="android.intent.action.MAIN"/>
166                <category android:name="android.intent.category.LAUNCHER"/>
167            </intent-filter>
168        </activity>
169        <activity android:name=".activities.AugmentedLoginActivity"
170             android:exported="true">
171            <intent-filter>
172                <!-- This intent filter is not really needed by CTS, but it makes easier to launch
173                                         this app during CTS development... -->
174                <action android:name="android.intent.action.MAIN"/>
175                <category android:name="android.intent.category.LAUNCHER"/>
176            </intent-filter>
177        </activity>
178        <activity android:name=".activities.FadeInActivity"/>
179        <activity android:name=".activities.MultipleStepsSignInActivity"/>
180        <activity android:name=".activities.FieldsNoPasswordActivity"/>
181        <activity android:name=".activities.AugmentedAuthActivity" />
182        <activity android:name=".activities.SimpleAfterLoginActivity"/>
183        <activity android:name=".activities.SimpleBeforeLoginActivity"/>
184        <activity android:name=".activities.NonAutofillableActivity"/>
185        <activity
186            android:name=".credman.CtsGetPasswordActivity"
187            android:exported="true"
188            android:enabled="true">
189            <intent-filter>
190                <action android:name="android.autofillservice.cts.credman.GET_PASSWORD" />
191                <category android:name="android.intent.category.DEFAULT" />
192            </intent-filter>
193        </activity>
194
195        <receiver android:name=".testcore.SelfDestructReceiver"
196             android:exported="true"
197             android:process="android.autofillservice.cts.outside"/>
198        <receiver android:name=".testcore.OutOfProcessLoginActivityFinisherReceiver"
199             android:exported="true"
200             android:process="android.autofillservice.cts.outside"/>
201
202        <service android:name=".testcore.InstrumentedAutoFillService"
203             android:label="InstrumentedAutoFillService"
204             android:permission="android.permission.BIND_AUTOFILL_SERVICE"
205             android:exported="true">
206            <intent-filter>
207                <action android:name="android.service.autofill.AutofillService"/>
208            </intent-filter>
209        </service>
210        <service android:name=".testcore.InstrumentedAutoFillServiceCompatMode"
211             android:label="testcore.InstrumentedAutoFillServiceCompatMode"
212             android:permission="android.permission.BIND_AUTOFILL_SERVICE"
213             android:exported="true">
214            <intent-filter>
215                <action android:name="android.service.autofill.AutofillService"/>
216            </intent-filter>
217            <meta-data android:name="android.autofill"
218                 android:resource="@xml/autofill_service_compat_mode_config">
219            </meta-data>
220        </service>
221        <service android:name=".testcore.InstrumentedAutoFillServiceInlineEnabled"
222             android:label="InstrumentedAutoFillServiceInlineEnabled"
223             android:permission="android.permission.BIND_AUTOFILL_SERVICE"
224             android:exported="true">
225            <intent-filter>
226                <action android:name="android.service.autofill.AutofillService"/>
227            </intent-filter>
228            <meta-data android:name="android.autofill"
229                 android:resource="@xml/autofill_service_inline_enabled">
230            </meta-data>
231        </service>
232        <service android:name=".testcore.NoOpAutofillService"
233             android:label="NoOpAutofillService"
234             android:permission="android.permission.BIND_AUTOFILL_SERVICE"
235             android:exported="true">
236            <intent-filter>
237                <action android:name="android.service.autofill.AutofillService"/>
238            </intent-filter>
239        </service>
240        <!--  BadAutofillService does not declare the proper permission -->
241        <service android:name=".testcore.BadAutofillService"
242             android:label="testcore.BadAutofillService"
243             android:exported="true">
244            <intent-filter>
245                <action android:name="android.service.autofill.AutofillService"/>
246            </intent-filter>
247        </service>
248
249        <service android:name=".testcore.CtsAugmentedAutofillService"
250             android:label="CtsAugmentedAutofillService"
251             android:permission="android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE"
252             android:exported="true">
253            <intent-filter>
254                <action android:name="android.service.autofill.AutofillService"/>
255            </intent-filter>
256        </service>
257        <service android:name=".testcore.InstrumentedFieldClassificationService"
258            android:label="InstrumentedFieldClassificationService"
259            android:permission="android.permission.BIND_FIELD_CLASSIFICATION_SERVICE"
260            android:exported="true">
261            <intent-filter>
262                <action android:name="android.service.assist.classification.FieldClassificationService"/>
263            </intent-filter>
264        </service>
265        <service
266            android:exported="true"
267            android:name="android.autofillservice.cts.credman.CtsCredentialProviderService"
268            android:label="Test Provider Service"
269            android:permission="android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE">
270            <intent-filter>
271                <action android:name="android.service.credentials.CredentialProviderService"/>
272            </intent-filter>
273            <meta-data
274                android:name="android.credentials.provider"
275                android:resource="@xml/provider"/>
276        </service>
277
278    </application>
279
280    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
281         android:label="CTS tests for the AutoFill Framework APIs."
282         android:targetPackage="android.autofillservice.cts">
283    </instrumentation>
284
285</manifest>
286