1ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka/* 2ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * Copyright (C) 2016 The Android Open Source Project 3ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * 4ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * Licensed under the Apache License, Version 2.0 (the "License"); 5ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * you may not use this file except in compliance with the License. 6ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * You may obtain a copy of the License at 7ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * 8ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * http://www.apache.org/licenses/LICENSE-2.0 9ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * 10ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * Unless required by applicable law or agreed to in writing, software 11ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * distributed under the License is distributed on an "AS IS" BASIS, 12ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * See the License for the specific language governing permissions and 14ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka * limitations under the License. 15ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka */ 16ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 17ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakapackage android.text.method; 18ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 19ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport android.app.Instrumentation; 20ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport android.test.ActivityInstrumentationTestCase2; 21ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport android.text.format.DateUtils; 22ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport android.view.KeyEvent; 23ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport android.widget.EditText; 24ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport android.widget.TextViewActivity; 25ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 26ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakaimport com.android.frameworks.coretests.R; 27ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 28ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonakapublic abstract class KeyListenerTestCase extends 29ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka ActivityInstrumentationTestCase2<TextViewActivity> { 30ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 31ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka protected TextViewActivity mActivity; 32ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka protected Instrumentation mInstrumentation; 33ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka protected EditText mTextView; 34ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 35ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka public KeyListenerTestCase() { 36ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka super(TextViewActivity.class); 37ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka } 38ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 39ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka @Override 40ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka protected void setUp() throws Exception { 41ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka super.setUp(); 42ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 43ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka mActivity = getActivity(); 44ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka mInstrumentation = getInstrumentation(); 45ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka mTextView = (EditText) mActivity.findViewById(R.id.textview); 46ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 47ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka mActivity.runOnUiThread(new Runnable() { 48ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka public void run() { 49ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka // Ensure that the screen is on for this test. 50ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka mTextView.setKeepScreenOn(true); 51ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka } 52ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka }); 53ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 54ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka assertTrue(mActivity.waitForWindowFocus(5 * DateUtils.SECOND_IN_MILLIS)); 55ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka } 56ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 57ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka protected static KeyEvent getKey(int keycode, int metaState) { 58ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka long currentTime = System.currentTimeMillis(); 59ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka return new KeyEvent(currentTime, currentTime, KeyEvent.ACTION_DOWN, keycode, 60ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka 0 /* repeat */, metaState); 61ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka } 62ff3bfd5a79a95dcfccd1b8ad6c08c715ce6fa0e3Seigo Nonaka} 63