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