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