1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.view; 18 19import android.test.ActivityInstrumentationTestCase; 20import android.test.FlakyTest; 21import android.test.suitebuilder.annotation.LargeTest; 22import android.test.suitebuilder.annotation.MediumTest; 23import android.test.TouchUtils; 24import android.view.View; 25import android.view.KeyEvent; 26import com.android.frameworks.coretests.R; 27 28public class GlobalFocusChangeTest extends ActivityInstrumentationTestCase<GlobalFocusChange> { 29 private GlobalFocusChange mActivity; 30 private View mLeft; 31 private View mRight; 32 33 public GlobalFocusChangeTest() { 34 super("com.android.frameworks.coretests", GlobalFocusChange.class); 35 } 36 37 @Override 38 public void setUp() throws Exception { 39 super.setUp(); 40 mActivity = getActivity(); 41 mLeft = mActivity.findViewById(R.id.left); 42 mRight = mActivity.findViewById(R.id.right); 43 } 44 45 @Override 46 protected void tearDown() throws Exception { 47 mActivity.reset(); 48 super.tearDown(); 49 } 50 51 @FlakyTest(tolerance = 4) 52 @LargeTest 53 public void testFocusChange() throws Exception { 54 sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT); 55 56 assertFalse(mLeft.isFocused()); 57 assertTrue(mRight.isFocused()); 58 59 assertSame(mLeft, mActivity.mOldFocus); 60 assertSame(mRight, mActivity.mNewFocus); 61 } 62 63 @FlakyTest(tolerance = 4) 64 @MediumTest 65 public void testEnterTouchMode() throws Exception { 66 assertTrue(mLeft.isFocused()); 67 68 TouchUtils.tapView(this, mLeft); 69 70 assertSame(mLeft, mActivity.mOldFocus); 71 assertSame(null, mActivity.mNewFocus); 72 } 73 74 @FlakyTest(tolerance = 4) 75 @MediumTest 76 public void testLeaveTouchMode() throws Exception { 77 assertTrue(mLeft.isFocused()); 78 79 TouchUtils.tapView(this, mLeft); 80 sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT); 81 82 assertTrue(mLeft.isFocused()); 83 84 assertSame(null, mActivity.mOldFocus); 85 assertSame(mLeft, mActivity.mNewFocus); 86 } 87} 88