1ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki/* 2ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * Copyright (C) 2016 The Android Open Source Project 3ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * 4ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 5ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * you may not use this file except in compliance with the License. 6ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * You may obtain a copy of the License at 7ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * 8ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 9ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * 10ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * Unless required by applicable law or agreed to in writing, software 11ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 12ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * See the License for the specific language governing permissions and 14ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * limitations under the License. 15ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki */ 16ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukipackage com.android.server.pm; 17ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 18ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.set; 19ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 20ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.app.Activity; 21ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.content.ComponentName; 22ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.content.pm.ActivityInfo; 23ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.content.pm.ApplicationInfo; 24ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.content.pm.PackageInfo; 25ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.content.pm.ShortcutServiceInternal; 26ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.content.res.XmlResourceParser; 27ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.os.Looper; 28ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport android.test.suitebuilder.annotation.SmallTest; 29ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 30ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport com.android.server.LocalServices; 31ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 32ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport java.util.List; 33ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukiimport java.util.Set; 34ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 35ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki/** 36ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * Unit tests for all the IPackageManager related methods in {@link ShortcutService}. 37ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * 38ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * All the tests here actually talks to the real IPackageManager, so we can't test complicated 39ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki * cases. Instead we just make sure they all work reasonably without at least crashing. 40ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki */ 41ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki@SmallTest 42ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onukipublic class ShortcutManagerTest5 extends BaseShortcutManagerTest { 43ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki private ShortcutService mShortcutService; 44ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 45ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki private String mMyPackage; 46ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki private int mMyUserId; 47ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 48ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public static class ShortcutEnabled extends Activity { 49ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 50ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 51ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public static class ShortcutDisabled extends Activity { 52ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 53ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 54ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki @Override 55ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki protected void setUp() throws Exception { 56ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki super.setUp(); 57ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 58ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki LocalServices.removeServiceForTest(ShortcutServiceInternal.class); 59ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mShortcutService = new ShortcutService(getTestContext(), Looper.getMainLooper(), 60ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki /* onyForPackageManagerApis */ true); 61ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 62ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage = getTestContext().getPackageName(); 63ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyUserId = android.os.Process.myUserHandle().getIdentifier(); 64ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 65ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 66ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetPackageUid() { 67ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertTrue(mShortcutService.injectGetPackageUid( 68ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage, mMyUserId) != 0); 69ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 70ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(-1, mShortcutService.injectGetPackageUid( 71ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "no.such.package", mMyUserId)); 72ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 73ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 74ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetPackageInfo() { 75ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki PackageInfo pi = mShortcutService.getPackageInfo( 76ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage, mMyUserId, /*signature*/ false); 77ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(mMyPackage, pi.packageName); 78ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(pi.signatures); 79ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 80ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki pi = mShortcutService.getPackageInfo( 81ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage, mMyUserId, /*signature*/ true); 82ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(mMyPackage, pi.packageName); 83ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNotNull(pi.signatures); 84ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 85ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki pi = mShortcutService.getPackageInfo( 86ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "no.such.package", mMyUserId, /*signature*/ true); 87ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(pi); 88ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 89ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 90ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetApplicationInfo() { 91ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ApplicationInfo ai = mShortcutService.getApplicationInfo( 92ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage, mMyUserId); 93ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(mMyPackage, ai.packageName); 94ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 95ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ai = mShortcutService.getApplicationInfo( 96ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "no.such.package", mMyUserId); 97ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(ai); 98ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 99ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 100ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetActivityInfoWithMetadata() { 101ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // Disabled activity 102ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ActivityInfo ai = mShortcutService.getActivityInfoWithMetadata( 103ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "ShortcutDisabled"), mMyUserId); 104ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(ai); 105ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 106ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // Nonexistent 107ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ai = mShortcutService.getActivityInfoWithMetadata( 108ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName("no.such.package", "ShortcutDisabled"), mMyUserId); 109ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(ai); 110ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 111ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // Existent, with no metadata. 112ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ai = mShortcutService.getActivityInfoWithMetadata( 113ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.ShortcutEnabled"), mMyUserId); 114ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(mMyPackage, ai.packageName); 115ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals("a.ShortcutEnabled", ai.name); 116ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(ai.loadXmlMetaData(getTestContext().getPackageManager(), 117ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "android.app.shortcuts")); 118ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 119ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // Existent, with a shortcut metadata. 120ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ai = mShortcutService.getActivityInfoWithMetadata( 121ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.Shortcut1"), mMyUserId); 122ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(mMyPackage, ai.packageName); 123ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals("a.Shortcut1", ai.name); 124ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki XmlResourceParser meta = ai.loadXmlMetaData(getTestContext().getPackageManager(), 125ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "android.app.shortcuts"); 126ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNotNull(meta); 127ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki meta.close(); 128ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 129ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 130ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetInstalledPackages() { 131ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki List<PackageInfo> apks = mShortcutService.getInstalledPackages(mMyUserId); 132ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 133ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki Set<String> expectedPackages = set("com.android.settings", mMyPackage); 134ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki for (PackageInfo pi : apks) { 135ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki expectedPackages.remove(pi.packageName); 136ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 137ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(set(), expectedPackages); 138ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 139ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 140ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetDefaultMainActivity() { 141ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName cn = mShortcutService.injectGetDefaultMainActivity( 142ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "com.android.settings", mMyUserId); 143ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 144ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals( 145ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("com.android.settings/.Settings"), 146ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki cn); 147ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 148ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // This package has no main activity. 149ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(mShortcutService.injectGetDefaultMainActivity( 150ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage, mMyUserId)); 151ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 152ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // Nonexistent. 153ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertNull(mShortcutService.injectGetDefaultMainActivity( 154ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "no.such.package", mMyUserId)); 155ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 156ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 157ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testIsMainActivity() { 158ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertTrue(mShortcutService.injectIsMainActivity( 159ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("com.android.settings/.Settings"), mMyUserId)); 160ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsMainActivity( 161ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("com.android.settings/.xxx"), mMyUserId)); 162ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsMainActivity( 163ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("no.such.package/.xxx"), mMyUserId)); 164ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 165ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsMainActivity( 166ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.DisabledMain"), mMyUserId)); 167ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsMainActivity( 168ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.UnexportedMain"), mMyUserId)); 169ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 170ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 171ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 172ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testGetMainActivities() { 173ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(1, mShortcutService.injectGetMainActivities( 174ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki "com.android.settings", mMyUserId).size()); 175ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 176ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki // This APK has no main activities. 177ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertEquals(0, mShortcutService.injectGetMainActivities( 178ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyPackage, mMyUserId).size()); 179ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 180ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 181ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki public void testIsActivityEnabledAndExported() { 182ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertTrue(mShortcutService.injectIsActivityEnabledAndExported( 183ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("com.android.settings/.Settings"), mMyUserId)); 184ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsActivityEnabledAndExported( 185ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("com.android.settings/.xxx"), mMyUserId)); 186ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsActivityEnabledAndExported( 187ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki ComponentName.unflattenFromString("no.such.package/.xxx"), mMyUserId)); 188ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 189ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertTrue(mShortcutService.injectIsActivityEnabledAndExported( 190ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "com.android.server.pm.ShortcutTestActivity"), 191ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki mMyUserId)); 192ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 193ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertTrue(mShortcutService.injectIsActivityEnabledAndExported( 194ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.ShortcutEnabled"), mMyUserId)); 195ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 196ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsActivityEnabledAndExported( 197ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.ShortcutDisabled"), mMyUserId)); 198ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki assertFalse(mShortcutService.injectIsActivityEnabledAndExported( 199ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki new ComponentName(mMyPackage, "a.ShortcutUnexported"), mMyUserId)); 200ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki 201ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki } 202ee6b6e4a1861336f8db52d8c93dbf32ee9615cfaMakoto Onuki} 203