<?xml version="1.0" encoding="utf-8"?>
<!--
 * Copyright (C) 2010 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="android.accessibilityservice.cts"
     android:targetSandboxVersion="2">

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.CREATE_VIRTUAL_DEVICE" />
    <uses-permission android:name="android.permission.ADD_TRUSTED_DISPLAY" />

    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />

    <uses-feature android:name="android.software.companion_device_setup" />

    <application android:theme="@android:style/Theme.Holo.NoActionBar"
         android:requestLegacyExternalStorage="true">

        <uses-library android:name="android.test.runner"/>

        <activity android:label="@string/accessibility_end_to_end_test_activity"
             android:name=".activities.AccessibilityEndToEndActivity"
             android:screenOrientation="locked"/>

        <activity android:label="@string/accessibility_query_window_test_activity"
             android:name=".activities.AccessibilityWindowQueryActivity"
             android:theme="@style/AppTheme"
             android:supportsPictureInPicture="true"
             android:screenOrientation="locked"/>

        <activity android:label="@string/accessibility_view_tree_reporting_test_activity"
             android:name=".activities.AccessibilityViewTreeReportingActivity"
             android:screenOrientation="locked"/>

        <activity android:label="@string/accessibility_focus_and_input_focus_sync_test_activity"
             android:name=".activities.AccessibilityFocusAndInputFocusSyncActivity"
             android:screenOrientation="locked"/>

        <activity android:label="@string/accessibility_text_traversal_test_activity"
             android:name=".activities.AccessibilityTextTraversalActivity"
             android:screenOrientation="locked"/>

        <!-- Use windowSoftInputMode STATE_HIDDEN so that the IME does not launch
             when opening the activity, which confuses the test window checks. -->
        <activity android:label="Activity for testing window accessibility reporting"
             android:name=".activities.AccessibilityWindowReportingActivity"
             android:supportsPictureInPicture="true"
             android:windowSoftInputMode="stateHidden"
             android:screenOrientation="locked"/>

        <activity android:label="Activity for testing window accessibility reporting"
                  android:name=".activities.NotTouchableWindowTestActivity"
                  android:process=":NotTouchableWindowTestActivity"
                  android:exported="true"/>

        <activity android:label="@string/non_default_display_activity"
                  android:name=".activities.NonDefaultDisplayActivity"
                  android:screenOrientation="locked"/>

        <activity android:label="@string/proxy_display_activity"
                  android:name=".activities.ProxyDisplayActivity"
                  android:screenOrientation="locked"/>

        <activity android:label="@string/non_proxy_activity"
                  android:name=".activities.NonProxyActivity"
                  android:windowSoftInputMode="stateHidden"
                  android:screenOrientation="locked"/>

        <activity android:label="Full screen activity for gesture dispatch testing"
             android:name=".AccessibilityGestureDispatchTest$GestureDispatchActivity"
             android:theme="@style/Theme_NoSwipeDismiss"
             android:screenOrientation="locked"/>

        <activity android:label="@string/accessibility_soft_keyboard_modes_activity"
             android:name=".AccessibilitySoftKeyboardModesTest$SoftKeyboardModesActivity"/>

        <activity android:label="@string/accessibility_embedded_hierarchy_test_activity"
             android:name=".AccessibilityEmbeddedHierarchyTest$AccessibilityEmbeddedHierarchyActivity"
             android:windowSoftInputMode="stateHidden"
             android:screenOrientation="locked"/>

        <activity android:label="@string/accessibility_drag_and_drop_test_activity"
                  android:name=".activities.AccessibilityDragAndDropActivity"
                  android:screenOrientation="locked"/>
        <activity android:label="@string/accessibility_cache_activity"
                  android:name=".activities.AccessibilityCacheActivity"
                  android:screenOrientation="locked"/>

        <service android:name=".StubSystemActionsAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_system_actions_a11y_service"/>
        </service>

        <service android:name=".StubGestureAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_gesture_dispatch_a11y_service"/>
        </service>

        <service android:name=".GestureDetectionStubAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>
            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_gesture_detect_a11y_service"/>
        </service>

        <service android:name=".TouchExplorationStubAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>
            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_touch_exploration_a11y_service"/>
        </service>
        <service android:name="android.accessibility.cts.common.InstrumentedAccessibilityService"
             android:label="@string/title_soft_keyboard_modes_accessibility_service"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>
            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_soft_keyboard_modes_accessibility_service"/>
        </service>

        <service android:name=".StubMagnificationAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_magnification_a11y_service"/>
        </service>

        <service android:name=".StubFingerprintGestureService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_fingerprint_gesture_service"/>
        </service>

        <service android:name=".StubAccessibilityButtonService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_accessibility_button_service"/>
        </service>

        <service android:name=".StubTakeScreenshotService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_take_screenshot_service"/>
        </service>

        <service android:name=".StubFocusIndicatorService"
                 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
                 android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                       android:resource="@xml/stub_focus_indicator_service"/>
        </service>

        <service android:name=".StubInputMethod"
            android:label="@string/ime_name"
            android:permission="android.permission.BIND_INPUT_METHOD"
            android:exported="true">
            <intent-filter>
                <action android:name="android.view.InputMethod"/>
            </intent-filter>
            <meta-data android:name="android.view.im"
                android:resource="@xml/stub_ime"/>
        </service>

        <service android:name=".StubSimpleImeAccessibilityService"
                 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
                 android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                       android:resource="@xml/stub_simple_ime_accessibility_service"/>
        </service>

        <service android:name=".StubImeAccessibilityService"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                android:resource="@xml/stub_ime_accessibility_service"/>
        </service>

        <service android:name=".StubNonImeAccessibilityService"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                android:resource="@xml/stub_non_ime_accessibility_service"/>
        </service>

        <service android:name=".StubMotionInterceptingAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_motion_intercepting_accessibility_service"/>
        </service>
        <service android:name=".StubProxyConcurrentAccessibilityService"
                 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
                 android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
                <category android:name="android.accessibilityservice.category.FEEDBACK_GENERIC"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                       android:resource="@xml/stub_proxy_concurrent_service"/>
        </service>
        <service android:name=".StubA11yToolAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_a11ytool_service"/>
        </service>
        <service android:name=".StubNonA11yToolAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_nona11ytool_service"/>
        </service>
        <service android:name=".StubBrailleDisplayAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>

            <meta-data android:name="android.accessibilityservice"
                 android:resource="@xml/stub_nona11ytool_service"/>
        </service>
    </application>

    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
         android:targetPackage="android.accessibilityservice.cts"
         android:label="Tests for the accessibility APIs.">

    </instrumentation>

</manifest>
