DrawerLayoutActions.java revision 30c25a404365719cbe21a0886ddbe8be544c8e90
130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov/* 230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * Copyright (C) 2015 The Android Open Source Project 330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * 430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * Licensed under the Apache License, Version 2.0 (the "License"); 530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * you may not use this file except in compliance with the License. 630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * You may obtain a copy of the License at 730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * 830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * http://www.apache.org/licenses/LICENSE-2.0 930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * 1030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * Unless required by applicable law or agreed to in writing, software 1130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * distributed under the License is distributed on an "AS IS" BASIS, 1230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * See the License for the specific language governing permissions and 1430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * limitations under the License. 1530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov */ 1630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 1730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovpackage android.support.v7.app; 1830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 1930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovimport static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom; 2030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 2130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovimport android.support.test.espresso.UiController; 2230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovimport android.support.test.espresso.ViewAction; 2330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovimport android.support.v4.widget.DrawerLayout; 2430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovimport android.view.View; 2530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 2630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovimport org.hamcrest.Matcher; 2730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 2830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikovpublic class DrawerLayoutActions { 2930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov /** 3030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * Opens the drawer. 3130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov */ 3230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public static ViewAction openDrawer(final int drawerEdgeGravity) { 3330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov return new ViewAction() { 3430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov @Override 3530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public Matcher<View> getConstraints() { 3630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov return isAssignableFrom(DrawerLayout.class); 3730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 3830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 3930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov @Override 4030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public String getDescription() { 4130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov return "Opens the drawer"; 4230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 4330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 4430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov @Override 4530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public void perform(UiController uiController, View view) { 4630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov uiController.loopMainThreadUntilIdle(); 4730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 4830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov DrawerLayout drawerLayout = (DrawerLayout) view; 4930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov drawerLayout.openDrawer(drawerEdgeGravity); 5030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 5130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov // Wait for a full second to let the inner ViewDragHelper complete the operation 5230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov uiController.loopMainThreadForAtLeast(1000); 5330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 5430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov }; 5530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 5630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 5730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov /** 5830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov * Closes the drawer. 5930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov */ 6030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public static ViewAction closeDrawer(final int drawerEdgeGravity) { 6130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov return new ViewAction() { 6230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov @Override 6330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public Matcher<View> getConstraints() { 6430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov return isAssignableFrom(DrawerLayout.class); 6530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 6630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 6730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov @Override 6830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public String getDescription() { 6930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov return "Closes the drawer"; 7030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 7130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 7230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov @Override 7330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov public void perform(UiController uiController, View view) { 7430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov uiController.loopMainThreadUntilIdle(); 7530c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 7630c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov DrawerLayout drawerLayout = (DrawerLayout) view; 7730c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov drawerLayout.closeDrawer(drawerEdgeGravity); 7830c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov 7930c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov // Wait for a full second to let the inner ViewDragHelper complete the operation 8030c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov uiController.loopMainThreadForAtLeast(1000); 8130c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 8230c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov }; 8330c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov } 8430c25a404365719cbe21a0886ddbe8be544c8e90Kirill Grouchnikov} 85