1a355d190d37999d18c0051d341aaeb09c3797907Ben Lin/*
2a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * Copyright (C) 2017 The Android Open Source Project
3a355d190d37999d18c0051d341aaeb09c3797907Ben Lin *
4a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * Licensed under the Apache License, Version 2.0 (the "License");
5a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * you may not use this file except in compliance with the License.
6a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * You may obtain a copy of the License at
7a355d190d37999d18c0051d341aaeb09c3797907Ben Lin *
8a355d190d37999d18c0051d341aaeb09c3797907Ben Lin *      http://www.apache.org/licenses/LICENSE-2.0
9a355d190d37999d18c0051d341aaeb09c3797907Ben Lin *
10a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * Unless required by applicable law or agreed to in writing, software
11a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * distributed under the License is distributed on an "AS IS" BASIS,
12a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * See the License for the specific language governing permissions and
14a355d190d37999d18c0051d341aaeb09c3797907Ben Lin * limitations under the License.
15a355d190d37999d18c0051d341aaeb09c3797907Ben Lin */
16a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
17a355d190d37999d18c0051d341aaeb09c3797907Ben Linpackage com.android.documentsui.dirlist;
18a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
19a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
20a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport android.test.AndroidTestCase;
21a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport android.test.suitebuilder.annotation.SmallTest;
22a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport android.view.View;
23a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport android.view.accessibility.AccessibilityNodeInfo;
24a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
25a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport com.android.documentsui.testing.TestRecyclerView;
26a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport com.android.documentsui.testing.Views;
27a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
28a355d190d37999d18c0051d341aaeb09c3797907Ben Linimport java.util.List;
29a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
30a355d190d37999d18c0051d341aaeb09c3797907Ben Lin@SmallTest
31a355d190d37999d18c0051d341aaeb09c3797907Ben Linpublic class AccessibilityTest extends AndroidTestCase {
32a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
33a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    private static final List<String> ITEMS = TestData.create(10);
34a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
35a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    private TestRecyclerView mView;
36a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    private AccessibilityEventRouter mAccessibilityDelegate;
37a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    private boolean mCallbackCalled = false;
38a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
39a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    @Override
40a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    public void setUp() throws Exception {
41a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        mView = TestRecyclerView.create(ITEMS);
42a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        mAccessibilityDelegate = new AccessibilityEventRouter(mView, (View v) -> {
43a355d190d37999d18c0051d341aaeb09c3797907Ben Lin            mCallbackCalled = true;
44a355d190d37999d18c0051d341aaeb09c3797907Ben Lin            return true;
45a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        });
46a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        mView.setAccessibilityDelegateCompat(mAccessibilityDelegate);
47a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    }
48a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
49a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    public void test_announceSelected() throws Exception {
50a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        View item = Views.createTestView(true);
51832bec94471429a3fb03be26cc6c9f3de8c9f283Ben Lin        AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
52a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        mAccessibilityDelegate.getItemDelegate().onInitializeAccessibilityNodeInfo(item, info);
53a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        assertTrue(info.isSelected());
54a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    }
55a355d190d37999d18c0051d341aaeb09c3797907Ben Lin
56a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    public void test_routesAccessibilityClicks() throws Exception {
57a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        View item = Views.createTestView(true);
58832bec94471429a3fb03be26cc6c9f3de8c9f283Ben Lin        AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
59a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        mAccessibilityDelegate.getItemDelegate().onInitializeAccessibilityNodeInfo(item, info);
60a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        mAccessibilityDelegate.getItemDelegate().performAccessibilityAction(item, AccessibilityNodeInfoCompat.ACTION_CLICK, null);
61a355d190d37999d18c0051d341aaeb09c3797907Ben Lin        assertTrue(mCallbackCalled);
62a355d190d37999d18c0051d341aaeb09c3797907Ben Lin    }
63a355d190d37999d18c0051d341aaeb09c3797907Ben Lin}
64