10bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei/* 20bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * Copyright (C) 2016 The Android Open Source Project 30bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * 40bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * Licensed under the Apache License, Version 2.0 (the "License"); 50bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * you may not use this file except in compliance with the License. 60bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * You may obtain a copy of the License at 70bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * 80bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * http://www.apache.org/licenses/LICENSE-2.0 90bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * 100bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * Unless required by applicable law or agreed to in writing, software 110bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * distributed under the License is distributed on an "AS IS" BASIS, 120bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * See the License for the specific language governing permissions and 140bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei * limitations under the License. 150bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei */ 160bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleipackage com.android.settings.tests; 170bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 18acb1a61f3f1309fadbf762f4273fc6f641927586Sudheer Shankaimport android.app.ActivityManager; 190bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.content.Context; 200bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.content.Intent; 210bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.provider.Settings; 220bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.support.test.InstrumentationRegistry; 230bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.support.test.filters.SmallTest; 240bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.support.test.runner.AndroidJUnit4; 250bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.support.test.uiautomator.By; 260bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.support.test.uiautomator.UiDevice; 270bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport android.support.test.uiautomator.Until; 280bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport org.junit.After; 290bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport org.junit.Before; 300bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport org.junit.Test; 310bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleiimport org.junit.runner.RunWith; 320bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 330bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei@RunWith(AndroidJUnit4.class) 340bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei@SmallTest 350bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyuleipublic class SettingsRestoreAfterCloseTest { 360bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei private static final String PACKAGE_SETTINGS = "com.android.settings"; 370bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei private static final int TIME_OUT = 2000; 380bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 390bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei private boolean mAlwaysFinish; 400bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 410bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei @Before 420bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei public void setUp() throws Exception { 430bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei // To make sure when we press home button, the activity will be destroyed by OS 440bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei Context context = InstrumentationRegistry.getContext(); 450bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei mAlwaysFinish = Settings.Global.getInt( 460bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei context.getContentResolver(), Settings.Global 470bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei .ALWAYS_FINISH_ACTIVITIES, 0) 480bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei != 0; 490bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 50acb1a61f3f1309fadbf762f4273fc6f641927586Sudheer Shanka ActivityManager.getService().setAlwaysFinish(true); 510bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei } 520bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 530bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei @After 540bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei public void tearDown() throws Exception { 55acb1a61f3f1309fadbf762f4273fc6f641927586Sudheer Shanka ActivityManager.getService().setAlwaysFinish(mAlwaysFinish); 560bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei } 570bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 580bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei @Test 590bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei public void testRtlStability_AppCloseAndReOpen_shouldNotCrash() throws Exception { 600bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 610bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei final UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation 620bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei ()); 630bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei uiDevice.pressHome(); 640bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 650bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei // Open the settings app 660bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei startSettingsMainActivity(uiDevice); 670bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 680bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei // Press home button 690bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei uiDevice.pressHome(); 700bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei final String launcherPackage = uiDevice.getLauncherPackageName(); 710bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei uiDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), TIME_OUT); 720bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 730bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei // Open the settings again 740bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei startSettingsMainActivity(uiDevice); 750bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei } 760bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei 770bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei private void startSettingsMainActivity(UiDevice uiDevice) { 780bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei Context context = InstrumentationRegistry.getContext(); 790bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei context.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); 800bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei uiDevice.wait(Until.hasObject(By.pkg(PACKAGE_SETTINGS).depth(0)), TIME_OUT); 810bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei } 820bfee2799d8512b9ac1431ff9b481c42ee0f8fe8jackqdyulei} 83