This commit *only* changes imports and optimize imports. We don't do anything else. This patch can't compile pass and run test case. We will update other patches to fix these problem. Change list. 1. import android.app.Fragment; -> import androidx.fragment.app.Fragment; 2. import android.app.DialogFragment; -> import androidx.fragment.app.DialogFragment; 3. import android.app.ListFragment; -> import androidx.fragment.app.ListFragment; 4. import android.app.LoaderManager; -> import androidx.loader.app.LoaderManager; 5. import android.content.AsyncTaskLoader; -> import androidx.loader.content.AsyncTaskLoader; 6. import android.content.Loader; -> import androidx.loader.content.Loader; 7. import android.app.FragmentTransaction; -> import androidx.fragment.app.FragmentTransaction; 8. import android.app.FragmentManager; -> import androidx.fragment.app.FragmentManager; 9. import android.app.LoaderManager.LoaderCallbacks; -> import androidx.loader.app.LoaderManager.LoaderCallbacks; Bug: 110259478 Test: Can't test it. Change-Id: I0a3f98fff34a3494a839c3c42aeabcec3df2c8b3
159 lines
6.5 KiB
Java
159 lines
6.5 KiB
Java
/*
|
|
* Copyright (C) 2018 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.settings.ui;
|
|
|
|
import android.content.Intent;
|
|
import android.os.RemoteException;
|
|
import android.provider.Settings;
|
|
import android.support.test.uiautomator.By;
|
|
import android.support.test.uiautomator.BySelector;
|
|
import android.support.test.uiautomator.Direction;
|
|
import android.support.test.uiautomator.UiDevice;
|
|
import android.support.test.uiautomator.UiObject2;
|
|
import android.support.test.uiautomator.Until;
|
|
import android.system.helpers.ActivityHelper;
|
|
import android.system.helpers.SettingsHelper;
|
|
import android.test.InstrumentationTestCase;
|
|
import android.test.suitebuilder.annotation.MediumTest;
|
|
import android.util.Log;
|
|
import android.widget.ListView;
|
|
|
|
/** Verifies that you can get to the notification app listing page from the apps & notifications
|
|
* page */
|
|
public class NotificationSettingsTests extends InstrumentationTestCase {
|
|
private static final boolean LOCAL_LOGV = false;
|
|
private static final String TAG = "NotifiSettingsTests";
|
|
private static final int TIMEOUT = 2000;
|
|
private ActivityHelper mActivityHelper = null;
|
|
private SettingsHelper mSettingsHelper = null;
|
|
|
|
private UiDevice mDevice;
|
|
@Override
|
|
public void setUp() throws Exception {
|
|
if (LOCAL_LOGV) {
|
|
Log.d(TAG, "-------");
|
|
}
|
|
super.setUp();
|
|
mDevice = UiDevice.getInstance(getInstrumentation());
|
|
mActivityHelper = ActivityHelper.getInstance();
|
|
mSettingsHelper = SettingsHelper.getInstance();
|
|
try {
|
|
mDevice.setOrientationNatural();
|
|
} catch (RemoteException e) {
|
|
throw new RuntimeException("Failed to freeze device orientaion", e);
|
|
}
|
|
|
|
// make sure we are in a clean state before starting the test
|
|
mDevice.pressHome();
|
|
Thread.sleep(TIMEOUT * 2);
|
|
launchAppsSettings();
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception {
|
|
mDevice.pressBack();
|
|
mDevice.pressHome(); // finish settings activity
|
|
mDevice.waitForIdle(TIMEOUT * 2); // give UI time to finish animating
|
|
super.tearDown();
|
|
}
|
|
|
|
@MediumTest
|
|
public void testNotificationsSettingsListForCalculator() {
|
|
UiObject2 configureNotifications = mDevice.wait(
|
|
Until.findObject(By.text("Notifications")), TIMEOUT);
|
|
configureNotifications.click();
|
|
mDevice.wait(Until.findObject(By.text("Blink light")), TIMEOUT);
|
|
UiObject2 appNotifications = mDevice.wait(
|
|
Until.findObject(By.text("On for all apps")), TIMEOUT);
|
|
appNotifications.click();
|
|
UiObject2 view =
|
|
mDevice.wait(
|
|
Until.findObject(By.text("All apps")), TIMEOUT);
|
|
assertNotNull("Could not find Settings > Apps screen", view);
|
|
UiObject2 app = mDevice.wait(Until.findObject(By.text("Calculator")), TIMEOUT);
|
|
assertNotNull("Could not find Calculator notification settings", app);
|
|
}
|
|
|
|
|
|
@MediumTest
|
|
public void testNotificationsSettingsListForPhone() {
|
|
UiObject2 configureNotifications = mDevice.wait(
|
|
Until.findObject(By.text("Notifications")), TIMEOUT);
|
|
configureNotifications.click();
|
|
mDevice.wait(Until.findObject(By.text("Blink light")), TIMEOUT);
|
|
UiObject2 appNotifications = mDevice.wait(
|
|
Until.findObject(By.text("On for all apps")), TIMEOUT);
|
|
appNotifications.click();
|
|
UiObject2 view =
|
|
mDevice.wait(
|
|
Until.findObject(By.text("All apps")), TIMEOUT);
|
|
assertNotNull("Could not find Settings > Apps screen", view);
|
|
|
|
final BySelector preferenceListSelector = By.clazz(ListView.class).res("android:id/list");
|
|
UiObject2 apps = mDevice.wait(Until.findObject(preferenceListSelector), TIMEOUT);
|
|
|
|
UiObject2 phone = scrollTo(mDevice, apps, By.text("Phone"), Direction.DOWN);
|
|
assertNotNull("Could not find Phone notification settings", phone);
|
|
phone.click();
|
|
UiObject2 incomingCalls = mDevice.wait(Until.findObject(By.text("Incoming calls")), TIMEOUT);
|
|
assertNotNull("Could not find incoming calls channel", incomingCalls);
|
|
incomingCalls.click();
|
|
|
|
// here's the meat of this test: make sure that you cannot change
|
|
// most settings for this channel
|
|
|
|
UiObject2 importance = mDevice.wait(Until.findObject(By.text("Importance")), TIMEOUT);
|
|
assertNotNull("Could not find importance toggle", importance);
|
|
assertFalse(importance.isEnabled());
|
|
assertFalse(mDevice.wait(Until.findObject(By.text("Sound")), TIMEOUT).isEnabled());;
|
|
assertFalse(mDevice.wait(Until.findObject(By.text("Vibrate")), TIMEOUT).isEnabled());
|
|
assertFalse(mDevice.wait(Until.findObject(By.text("Override Do Not Disturb")), TIMEOUT).isEnabled());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
private UiObject2 scrollTo(UiDevice device, UiObject2 scrollable,
|
|
BySelector target, Direction direction) {
|
|
while (!device.hasObject(target) && scrollable.scroll(direction, 1.0f)) {
|
|
// continue
|
|
}
|
|
if (!device.hasObject(target)) {
|
|
// Scroll once more if not found; in some cases UiObject2.scroll can return false when
|
|
// the last item is not fully visible yet for list views.
|
|
scrollable.scroll(direction, 1.0f);
|
|
}
|
|
return device.findObject(target);
|
|
}
|
|
|
|
|
|
private void launchAppsSettings() throws Exception {
|
|
Intent appsSettingsIntent = new Intent(Settings.ACTION_SETTINGS);
|
|
mActivityHelper.launchIntent(appsSettingsIntent);
|
|
mSettingsHelper.flingSettingsToStart();
|
|
UiObject2 view = mDevice.wait(
|
|
Until.findObject(By.text("Apps & notifications")), TIMEOUT);
|
|
view.click();
|
|
UiObject2 title = mDevice.wait(
|
|
Until.findObject(By.text("Apps & notifications")), TIMEOUT);
|
|
assertNotNull("Could not find Settings > Apps & notifications screen", title);
|
|
}
|
|
}
|