mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 02:38:20 +00:00
Move disabled test out
Bug: 182844465 Test: presubmit Change-Id: I543c43db3fb27e671eea00d112bab2a4f485dbc9
This commit is contained in:
236
tests/src_disabled/WorkTabTest.java
Normal file
236
tests/src_disabled/WorkTabTest.java
Normal file
@@ -0,0 +1,236 @@
|
||||
/*
|
||||
* Copyright 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.launcher3.ui;
|
||||
|
||||
import static com.android.launcher3.LauncherState.ALL_APPS;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.allapps.AllAppsStore.DEFER_UPDATES_TEST;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.os.Process;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.util.Log;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.allapps.AllAppsContainerView;
|
||||
import com.android.launcher3.allapps.AllAppsPagedView;
|
||||
import com.android.launcher3.allapps.WorkModeSwitch;
|
||||
import com.android.launcher3.dragndrop.DragLayer;
|
||||
import com.android.launcher3.tapl.LauncherInstrumentation;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.views.WorkEduView;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class WorkTabTest extends AbstractLauncherUiTest {
|
||||
|
||||
private int mProfileUserId;
|
||||
|
||||
private static final int WORK_PAGE = AllAppsContainerView.AdapterHolder.WORK;
|
||||
|
||||
@Before
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
String output =
|
||||
mDevice.executeShellCommand(
|
||||
"pm create-user --profileOf 0 --managed TestProfile");
|
||||
assertTrue("Failed to create work profile", output.startsWith("Success"));
|
||||
|
||||
String[] tokens = output.split("\\s+");
|
||||
mProfileUserId = Integer.parseInt(tokens[tokens.length - 1]);
|
||||
Log.d(TestProtocol.WORK_PROFILE_REMOVED, "Created new user uid" + mProfileUserId);
|
||||
mDevice.executeShellCommand("am start-user " + mProfileUserId);
|
||||
}
|
||||
|
||||
@After
|
||||
public void removeWorkProfile() throws Exception {
|
||||
Log.d(TestProtocol.WORK_PROFILE_REMOVED, "(teardown) removing uid" + mProfileUserId,
|
||||
new Exception());
|
||||
mDevice.executeShellCommand("pm remove-user " + mProfileUserId);
|
||||
}
|
||||
|
||||
@After
|
||||
public void resumeAppStoreUpdate() {
|
||||
executeOnLauncher(launcher -> {
|
||||
if (launcher == null || launcher.getAppsView() == null) {
|
||||
return;
|
||||
}
|
||||
launcher.getAppsView().getAppsStore().disableDeferUpdates(DEFER_UPDATES_TEST);
|
||||
Log.d(TestProtocol.WORK_PROFILE_REMOVED, "resuming AppStore updates");
|
||||
});
|
||||
}
|
||||
|
||||
@Ignore("b/182844465")
|
||||
@Test
|
||||
public void workTabExists() {
|
||||
mDevice.pressHome();
|
||||
waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
waitForState("Launcher internal state didn't switch to All Apps", () -> ALL_APPS);
|
||||
waitForLauncherCondition("Personal tab is missing",
|
||||
launcher -> launcher.getAppsView().isPersonalTabVisible(), 60000);
|
||||
waitForLauncherCondition("Work tab is missing",
|
||||
launcher -> launcher.getAppsView().isWorkTabVisible(), 60000);
|
||||
}
|
||||
|
||||
@Ignore("b/182844465")
|
||||
@Test
|
||||
public void toggleWorks() {
|
||||
mDevice.pressHome();
|
||||
waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
waitForState("Launcher internal state didn't switch to All Apps", () -> ALL_APPS);
|
||||
getOnceNotNull("Apps view did not bind",
|
||||
launcher -> launcher.getAppsView().getWorkModeSwitch(), 60000);
|
||||
|
||||
UserManager userManager = getFromLauncher(l -> l.getSystemService(UserManager.class));
|
||||
assertEquals(2, userManager.getUserProfiles().size());
|
||||
UserHandle workProfile = getFromLauncher(l -> {
|
||||
UserHandle myHandle = Process.myUserHandle();
|
||||
List<UserHandle> userProfiles = userManager.getUserProfiles();
|
||||
return userProfiles.get(0) == myHandle ? userProfiles.get(1) : userProfiles.get(0);
|
||||
});
|
||||
|
||||
waitForLauncherCondition("work profile can't be turned off",
|
||||
l -> userManager.requestQuietModeEnabled(true, workProfile));
|
||||
|
||||
assertTrue(userManager.isQuietModeEnabled(workProfile));
|
||||
executeOnLauncher(launcher -> {
|
||||
WorkModeSwitch wf = launcher.getAppsView().getWorkModeSwitch();
|
||||
((AllAppsPagedView) launcher.getAppsView().getContentView()).snapToPageImmediately(
|
||||
AllAppsContainerView.AdapterHolder.WORK);
|
||||
wf.toggle();
|
||||
});
|
||||
waitForLauncherCondition("Work toggle did not work",
|
||||
l -> l.getSystemService(UserManager.class).isQuietModeEnabled(workProfile));
|
||||
}
|
||||
|
||||
@Ignore("b/182844465")
|
||||
@Test
|
||||
public void testWorkEduFlow() {
|
||||
mDevice.pressHome();
|
||||
waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
|
||||
executeOnLauncher(launcher -> launcher.getSharedPrefs().edit().remove(
|
||||
WorkEduView.KEY_WORK_EDU_STEP).remove(
|
||||
WorkEduView.KEY_LEGACY_WORK_EDU_SEEN).commit());
|
||||
|
||||
waitForLauncherCondition("Work tab not setup", launcher -> {
|
||||
if (launcher.getAppsView().getContentView() instanceof AllAppsPagedView) {
|
||||
launcher.getAppsView().getAppsStore().enableDeferUpdates(DEFER_UPDATES_TEST);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}, LauncherInstrumentation.WAIT_TIME_MS);
|
||||
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
WorkEduView workEduView = getEduView();
|
||||
// verify personal app edu is seen first and click "next"
|
||||
executeOnLauncher(l -> {
|
||||
assertEquals(((TextView) workEduView.findViewById(R.id.content_text)).getText(),
|
||||
l.getResources().getString(R.string.work_profile_edu_personal_apps));
|
||||
workEduView.findViewById(R.id.proceed).callOnClick();
|
||||
});
|
||||
|
||||
AtomicInteger attempt = new AtomicInteger(0);
|
||||
// verify work edu is seen next
|
||||
waitForLauncherCondition("Launcher did not show the next edu screen", l -> {
|
||||
Log.d(TestProtocol.WORK_PROFILE_REMOVED,
|
||||
"running test attempt" + attempt.getAndIncrement());
|
||||
if (!(l.getAppsView().getContentView() instanceof AllAppsPagedView)) {
|
||||
Log.d(TestProtocol.WORK_PROFILE_REMOVED, "Work tab not setup. Skipping test");
|
||||
return false;
|
||||
}
|
||||
if (((AllAppsPagedView) l.getAppsView().getContentView()).getCurrentPage()
|
||||
!= WORK_PAGE) {
|
||||
Log.d(TestProtocol.WORK_PROFILE_REMOVED, "Work page not highlighted");
|
||||
}
|
||||
return ((TextView) workEduView.findViewById(R.id.content_text)).getText().equals(
|
||||
l.getResources().getString(R.string.work_profile_edu_work_apps));
|
||||
});
|
||||
}
|
||||
|
||||
@Ignore("b/182844465")
|
||||
@Test
|
||||
public void testWorkEduIntermittent() {
|
||||
mDevice.pressHome();
|
||||
waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
|
||||
executeOnLauncher(launcher -> launcher.getSharedPrefs().edit().remove(
|
||||
WorkEduView.KEY_WORK_EDU_STEP).remove(
|
||||
WorkEduView.KEY_LEGACY_WORK_EDU_SEEN).commit());
|
||||
|
||||
|
||||
waitForLauncherCondition("Work tab not setup",
|
||||
launcher -> launcher.getAppsView().getContentView() instanceof AllAppsPagedView,
|
||||
60000);
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
|
||||
// verify personal app edu is seen
|
||||
getEduView();
|
||||
|
||||
// dismiss personal edu
|
||||
mDevice.pressHome();
|
||||
waitForState("Launcher did not go home", () -> NORMAL);
|
||||
|
||||
// open work tab
|
||||
executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
|
||||
waitForState("Launcher did not switch to all apps", () -> ALL_APPS);
|
||||
waitForLauncherCondition("Work tab not setup",
|
||||
launcher -> launcher.getAppsView().getContentView() instanceof AllAppsPagedView,
|
||||
60000);
|
||||
|
||||
executeOnLauncher(launcher -> {
|
||||
AllAppsPagedView pagedView = (AllAppsPagedView) launcher.getAppsView().getContentView();
|
||||
pagedView.setCurrentPage(WORK_PAGE);
|
||||
});
|
||||
|
||||
WorkEduView workEduView = getEduView();
|
||||
|
||||
// verify work tab edu is shown
|
||||
waitForLauncherCondition("Launcher did not show the next edu screen",
|
||||
l -> ((TextView) workEduView.findViewById(R.id.content_text)).getText().equals(
|
||||
l.getResources().getString(R.string.work_profile_edu_work_apps)));
|
||||
}
|
||||
|
||||
|
||||
private WorkEduView getEduView() {
|
||||
waitForLauncherCondition("Edu did not show", l -> {
|
||||
DragLayer dragLayer = l.getDragLayer();
|
||||
return dragLayer.getChildCount() > 0 && dragLayer.getChildAt(
|
||||
dragLayer.getChildCount() - 1) instanceof WorkEduView;
|
||||
}, 6000);
|
||||
return getFromLauncher(launcher -> (WorkEduView) launcher.getDragLayer().getChildAt(
|
||||
launcher.getDragLayer().getChildCount() - 1));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user