• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.launcher3.ui;
2 
3 import android.content.pm.LauncherActivityInfo;
4 import android.graphics.Point;
5 import android.os.Process;
6 import android.support.test.uiautomator.By;
7 import android.support.test.uiautomator.UiObject2;
8 import android.support.test.uiautomator.Until;
9 import android.test.suitebuilder.annotation.LargeTest;
10 import android.view.MotionEvent;
11 
12 import com.android.launcher3.R;
13 import com.android.launcher3.compat.LauncherAppsCompat;
14 import com.android.launcher3.util.Condition;
15 import com.android.launcher3.util.Wait;
16 
17 /**
18  * Test for dragging a deep shortcut to the home screen.
19  */
20 @LargeTest
21 public class ShortcutsToHomeTest extends LauncherInstrumentationTestCase {
22 
23     private LauncherActivityInfo mSettingsApp;
24 
25     @Override
setUp()26     protected void setUp() throws Exception {
27         super.setUp();
28         setDefaultLauncher();
29 
30         mSettingsApp = LauncherAppsCompat.getInstance(mTargetContext)
31                 .getActivityList("com.android.settings", Process.myUserHandle()).get(0);
32     }
33 
testDragIcon_portrait()34     public void testDragIcon_portrait() throws Throwable {
35         lockRotation(true);
36         performTest();
37     }
38 
testDragIcon_landscape()39     public void testDragIcon_landscape() throws Throwable {
40         lockRotation(false);
41         performTest();
42     }
43 
performTest()44     private void performTest() throws Throwable {
45         clearHomescreen();
46         startLauncher();
47 
48         // Open all apps and wait for load complete.
49         final UiObject2 appsContainer = openAllApps();
50         assertTrue(Wait.atMost(Condition.minChildCount(appsContainer, 2), DEFAULT_UI_TIMEOUT));
51 
52         // Find the app and long press it to show shortcuts.
53         UiObject2 icon = scrollAndFind(appsContainer, By.text(mSettingsApp.getLabel().toString()));
54         // Press icon center until shortcuts appear
55         Point iconCenter = icon.getVisibleCenter();
56         sendPointer(MotionEvent.ACTION_DOWN, iconCenter);
57         UiObject2 deepShortcutsContainer = findViewById(R.id.deep_shortcuts_container);
58         assertNotNull(deepShortcutsContainer);
59         sendPointer(MotionEvent.ACTION_UP, iconCenter);
60 
61         // Drag the first shortcut to the home screen.
62         assertTrue(deepShortcutsContainer.getChildCount() > 0);
63         UiObject2 shortcut = deepShortcutsContainer.getChildren().get(0)
64                 .findObject(getSelectorForId(R.id.bubble_text));
65         String shortcutName = shortcut.getText();
66         dragToWorkspace(shortcut, false);
67 
68         // Verify that the shortcut works on home screen
69         // (the app opens and has the same text as the shortcut).
70         mDevice.findObject(By.text(shortcutName)).click();
71         assertTrue(mDevice.wait(Until.hasObject(By.pkg(
72                 mSettingsApp.getComponentName().getPackageName())
73                 .text(shortcutName)), DEFAULT_UI_TIMEOUT));
74     }
75 }
76