1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.content.pm; 18 19 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 20 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; 21 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; 22 import static android.content.pm.PackageManager.GET_DISABLED_COMPONENTS; 23 24 import com.android.frameworks.coretests.enabled_app.DisabledActivity; 25 import com.android.frameworks.coretests.enabled_app.DisabledProvider; 26 import com.android.frameworks.coretests.enabled_app.DisabledReceiver; 27 import com.android.frameworks.coretests.enabled_app.DisabledService; 28 import com.android.frameworks.coretests.enabled_app.EnabledActivity; 29 import com.android.frameworks.coretests.enabled_app.EnabledProvider; 30 import com.android.frameworks.coretests.enabled_app.EnabledReceiver; 31 import com.android.frameworks.coretests.enabled_app.EnabledService; 32 33 import android.content.ComponentName; 34 import android.content.Intent; 35 import android.test.AndroidTestCase; 36 import android.test.suitebuilder.annotation.MediumTest; 37 import android.test.suitebuilder.annotation.SmallTest; 38 39 import java.util.List; 40 41 /** 42 * Tests for disabling and enabling application components. 43 * 44 * Note: These tests are on the slow side. This is probably because most of the tests trigger the 45 * package settings file to get written out by the PackageManagerService. Better, more unit-y test 46 * would fix this. 47 */ 48 49 public class ComponentTest extends AndroidTestCase { 50 51 private PackageManager mPackageManager; 52 private Intent mDisabledActivityIntent; 53 private Intent mEnabledActivityIntent; 54 private Intent mDisabledServiceIntent; 55 private Intent mEnabledServiceIntent; 56 private Intent mDisabledReceiverIntent; 57 private Intent mEnabledReceiverIntent; 58 private Intent mDisabledAppEnabledActivityIntent; 59 60 private static final String ENABLED_PACKAGENAME = 61 "com.android.frameworks.coretests.enabled_app"; 62 private static final String DISABLED_PACKAGENAME = 63 "com.android.frameworks.coretests.disabled_app"; 64 private static final String DISABLED_ACTIVITY_CLASSNAME = 65 DisabledActivity.class.getName(); 66 private static final ComponentName DISABLED_ACTIVITY_COMPONENTNAME = 67 new ComponentName(ENABLED_PACKAGENAME, DISABLED_ACTIVITY_CLASSNAME); 68 private static final String ENABLED_ACTIVITY_CLASSNAME = 69 EnabledActivity.class.getName(); 70 private static final ComponentName ENABLED_ACTIVITY_COMPONENTNAME = 71 new ComponentName(ENABLED_PACKAGENAME, ENABLED_ACTIVITY_CLASSNAME); 72 private static final String DISABLED_SERVICE_CLASSNAME = 73 DisabledService.class.getName(); 74 private static final ComponentName DISABLED_SERVICE_COMPONENTNAME = 75 new ComponentName(ENABLED_PACKAGENAME, DISABLED_SERVICE_CLASSNAME); 76 private static final String DISABLED_PROVIDER_CLASSNAME = 77 DisabledProvider.class.getName(); 78 private static final ComponentName DISABLED_PROVIDER_COMPONENTNAME = 79 new ComponentName(ENABLED_PACKAGENAME, DISABLED_PROVIDER_CLASSNAME); 80 private static final String DISABLED_PROVIDER_NAME = DisabledProvider.class.getName(); 81 private static final String ENABLED_SERVICE_CLASSNAME = 82 EnabledService.class.getName(); 83 private static final ComponentName ENABLED_SERVICE_COMPONENTNAME = 84 new ComponentName(ENABLED_PACKAGENAME, ENABLED_SERVICE_CLASSNAME); 85 private static final String DISABLED_RECEIVER_CLASSNAME = 86 DisabledReceiver.class.getName(); 87 private static final ComponentName DISABLED_RECEIVER_COMPONENTNAME = 88 new ComponentName(ENABLED_PACKAGENAME, DISABLED_RECEIVER_CLASSNAME); 89 private static final String ENABLED_RECEIVER_CLASSNAME = 90 EnabledReceiver.class.getName(); 91 private static final ComponentName ENABLED_RECEIVER_COMPONENTNAME = 92 new ComponentName(ENABLED_PACKAGENAME, ENABLED_RECEIVER_CLASSNAME); 93 private static final String ENABLED_PROVIDER_CLASSNAME = 94 EnabledProvider.class.getName(); 95 private static final ComponentName ENABLED_PROVIDER_COMPONENTNAME = 96 new ComponentName(ENABLED_PACKAGENAME, ENABLED_PROVIDER_CLASSNAME); 97 private static final String ENABLED_PROVIDER_NAME = EnabledProvider.class.getName(); 98 private static final String DISABLED_APP_ENABLED_ACTIVITY_CLASSNAME = 99 com.android.frameworks.coretests.disabled_app.EnabledActivity.class.getName(); 100 private static final ComponentName DISABLED_APP_ENABLED_ACTIVITY_COMPONENTNAME = 101 new ComponentName(DISABLED_PACKAGENAME, DISABLED_APP_ENABLED_ACTIVITY_CLASSNAME); 102 private static final String TEST_CATEGORY = 103 "com.android.frameworks.coretests.enabled_app.TEST_CATEGORY"; 104 105 @Override 106 protected void setUp() throws Exception { 107 super.setUp(); 108 mPackageManager = mContext.getPackageManager(); 109 mDisabledActivityIntent = new Intent(); 110 mDisabledActivityIntent.setComponent(DISABLED_ACTIVITY_COMPONENTNAME); 111 mEnabledActivityIntent = new Intent(); 112 mEnabledActivityIntent.setComponent(ENABLED_ACTIVITY_COMPONENTNAME); 113 mDisabledServiceIntent = new Intent(); 114 mDisabledServiceIntent.setComponent(DISABLED_SERVICE_COMPONENTNAME); 115 mEnabledServiceIntent = new Intent(); 116 mEnabledServiceIntent.setComponent(ENABLED_SERVICE_COMPONENTNAME); 117 mDisabledReceiverIntent = new Intent("android.intent.action.ENABLED_APP_DISABLED_RECEIVER"); 118 mDisabledReceiverIntent.setComponent(DISABLED_RECEIVER_COMPONENTNAME); 119 mEnabledReceiverIntent = new Intent("android.intent.action.ENABLED_APP_ENABLED_RECEIVER"); 120 mEnabledReceiverIntent.setComponent(ENABLED_RECEIVER_COMPONENTNAME); 121 mDisabledAppEnabledActivityIntent = new Intent(); 122 mDisabledAppEnabledActivityIntent.setComponent(DISABLED_APP_ENABLED_ACTIVITY_COMPONENTNAME); 123 } 124 125 @SmallTest 126 public void testContextNotNull() throws Exception { 127 assertNotNull(mContext); 128 } 129 130 @SmallTest 131 public void testResolveDisabledActivity() throws Exception { 132 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 133 COMPONENT_ENABLED_STATE_DEFAULT, 134 PackageManager.DONT_KILL_APP); 135 136 final ResolveInfo info = mPackageManager.resolveActivity(mDisabledActivityIntent, 0); 137 assertNull(info); 138 139 final ResolveInfo info2 = mPackageManager.resolveActivity( 140 mDisabledActivityIntent, GET_DISABLED_COMPONENTS); 141 assertNotNull(info2); 142 assertNotNull(info2.activityInfo); 143 assertFalse(info2.activityInfo.enabled); 144 } 145 146 @SmallTest 147 public void testResolveEnabledActivity() throws Exception { 148 mPackageManager.setComponentEnabledSetting(ENABLED_ACTIVITY_COMPONENTNAME, 149 COMPONENT_ENABLED_STATE_DEFAULT, 150 PackageManager.DONT_KILL_APP); 151 152 final ResolveInfo info = mPackageManager.resolveActivity(mEnabledActivityIntent, 0); 153 assertNotNull(info); 154 assertNotNull(info); 155 assertNotNull(info.activityInfo); 156 assertTrue(info.activityInfo.enabled); 157 } 158 159 @MediumTest 160 public void testQueryDisabledActivity() throws Exception { 161 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 162 COMPONENT_ENABLED_STATE_DEFAULT, 163 PackageManager.DONT_KILL_APP); 164 165 final List<ResolveInfo> infoList = 166 mPackageManager.queryIntentActivities(mDisabledActivityIntent, 0); 167 assertEquals(0, infoList.size()); 168 169 final List<ResolveInfo> infoList2 = 170 mPackageManager.queryIntentActivities(mDisabledActivityIntent, 171 GET_DISABLED_COMPONENTS); 172 assertEquals(1, infoList2.size()); 173 final ResolveInfo info = infoList2.get(0); 174 assertNotNull(info); 175 assertNotNull(info.activityInfo); 176 assertFalse(info.activityInfo.enabled); 177 } 178 179 @SmallTest 180 public void testQueryEnabledActivity() throws Exception { 181 mPackageManager.setComponentEnabledSetting(ENABLED_ACTIVITY_COMPONENTNAME, 182 COMPONENT_ENABLED_STATE_DEFAULT, 183 PackageManager.DONT_KILL_APP); 184 185 final List<ResolveInfo> infoList = 186 mPackageManager.queryIntentActivities(mEnabledActivityIntent, 0); 187 assertEquals(1, infoList.size()); 188 final ResolveInfo info = infoList.get(0); 189 assertNotNull(info); 190 assertNotNull(info.activityInfo); 191 assertTrue(info.activityInfo.enabled); 192 } 193 194 @MediumTest 195 public void testGetDisabledActivityInfo() throws Exception { 196 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 197 COMPONENT_ENABLED_STATE_DEFAULT, 198 PackageManager.DONT_KILL_APP); 199 200 try { 201 mPackageManager.getActivityInfo(DISABLED_ACTIVITY_COMPONENTNAME, 0); 202 fail("Attempt to get info on disabled component should fail."); 203 } catch (PackageManager.NameNotFoundException e) { 204 // expected 205 } 206 207 final ActivityInfo activityInfo = 208 mPackageManager.getActivityInfo(DISABLED_ACTIVITY_COMPONENTNAME, 209 GET_DISABLED_COMPONENTS); 210 assertNotNull(activityInfo); 211 assertFalse(activityInfo.enabled); 212 } 213 214 @SmallTest 215 public void testGetEnabledActivityInfo() throws Exception { 216 mPackageManager.setComponentEnabledSetting(ENABLED_ACTIVITY_COMPONENTNAME, 217 COMPONENT_ENABLED_STATE_DEFAULT, 218 PackageManager.DONT_KILL_APP); 219 220 ActivityInfo activityInfo = 221 mPackageManager.getActivityInfo(ENABLED_ACTIVITY_COMPONENTNAME, 0); 222 assertNotNull(activityInfo); 223 assertTrue(activityInfo.enabled); 224 } 225 226 @MediumTest 227 public void testEnableActivity() throws Exception { 228 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 229 COMPONENT_ENABLED_STATE_DEFAULT, 230 PackageManager.DONT_KILL_APP); 231 232 final ResolveInfo info = mPackageManager.resolveActivity(mDisabledActivityIntent, 0); 233 assertNull(info); 234 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 235 COMPONENT_ENABLED_STATE_ENABLED, 236 PackageManager.DONT_KILL_APP); 237 final ResolveInfo info2 = 238 mPackageManager.resolveActivity(mDisabledActivityIntent, 239 0); 240 assertNotNull(info2); 241 assertNotNull(info2.activityInfo); 242 assertFalse(info2.activityInfo.enabled); 243 244 final List<ResolveInfo> infoList = 245 mPackageManager.queryIntentActivities(mDisabledActivityIntent, 0); 246 assertEquals(1, infoList.size()); 247 } 248 249 @MediumTest 250 public void testDisableActivity() throws Exception { 251 mPackageManager.setComponentEnabledSetting(ENABLED_ACTIVITY_COMPONENTNAME, 252 COMPONENT_ENABLED_STATE_DEFAULT, 253 PackageManager.DONT_KILL_APP); 254 255 final ResolveInfo info = mPackageManager.resolveActivity(mEnabledActivityIntent, 0); 256 assertNotNull(info); 257 assertNotNull(info.activityInfo); 258 mPackageManager.setComponentEnabledSetting(ENABLED_ACTIVITY_COMPONENTNAME, 259 COMPONENT_ENABLED_STATE_DISABLED, 260 PackageManager.DONT_KILL_APP); 261 final ResolveInfo info2 = 262 mPackageManager.resolveActivity(mEnabledActivityIntent, 263 0); 264 assertNull(info2); 265 266 final ResolveInfo info3 = mPackageManager.resolveActivity(mEnabledActivityIntent, 267 GET_DISABLED_COMPONENTS); 268 assertNotNull(info3); 269 assertNotNull(info3.activityInfo); 270 assertTrue(info3.activityInfo.enabled); 271 272 final List<ResolveInfo> infoList = 273 mPackageManager.queryIntentActivities(mEnabledActivityIntent, 0); 274 assertEquals(0, infoList.size()); 275 } 276 277 @SmallTest 278 public void testResolveDisabledService() throws Exception { 279 mPackageManager.setComponentEnabledSetting(DISABLED_SERVICE_COMPONENTNAME, 280 COMPONENT_ENABLED_STATE_DEFAULT, 281 PackageManager.DONT_KILL_APP); 282 283 final ResolveInfo info = mPackageManager.resolveService(mDisabledServiceIntent, 0); 284 assertNull(info); 285 286 final ResolveInfo info2 = mPackageManager.resolveService( 287 mDisabledServiceIntent, GET_DISABLED_COMPONENTS); 288 assertNotNull(info2); 289 assertNotNull(info2.serviceInfo); 290 assertFalse(info2.serviceInfo.enabled); 291 } 292 293 @SmallTest 294 public void testResolveEnabledService() throws Exception { 295 mPackageManager.setComponentEnabledSetting(ENABLED_SERVICE_COMPONENTNAME, 296 COMPONENT_ENABLED_STATE_DEFAULT, 297 PackageManager.DONT_KILL_APP); 298 299 final ResolveInfo info = mPackageManager.resolveService(mEnabledServiceIntent, 0); 300 assertNotNull(info); 301 assertNotNull(info); 302 assertNotNull(info.serviceInfo); 303 assertTrue(info.serviceInfo.enabled); 304 } 305 306 @SmallTest 307 public void testQueryDisabledService() throws Exception { 308 mPackageManager.setComponentEnabledSetting(DISABLED_SERVICE_COMPONENTNAME, 309 COMPONENT_ENABLED_STATE_DEFAULT, 310 PackageManager.DONT_KILL_APP); 311 312 final List<ResolveInfo> infoList = 313 mPackageManager.queryIntentServices(mDisabledServiceIntent, 0); 314 assertEquals(0, infoList.size()); 315 316 final List<ResolveInfo> infoList2 = 317 mPackageManager.queryIntentServices(mDisabledServiceIntent, 318 GET_DISABLED_COMPONENTS); 319 assertEquals(1, infoList2.size()); 320 final ResolveInfo info = infoList2.get(0); 321 assertNotNull(info); 322 assertNotNull(info.serviceInfo); 323 assertFalse(info.serviceInfo.enabled); 324 } 325 326 @SmallTest 327 public void testQueryEnabledService() throws Exception { 328 mPackageManager.setComponentEnabledSetting(ENABLED_SERVICE_COMPONENTNAME, 329 COMPONENT_ENABLED_STATE_DEFAULT, 330 PackageManager.DONT_KILL_APP); 331 332 final List<ResolveInfo> infoList = 333 mPackageManager.queryIntentServices(mEnabledServiceIntent, 0); 334 assertEquals(1, infoList.size()); 335 final ResolveInfo info = infoList.get(0); 336 assertNotNull(info); 337 assertNotNull(info.serviceInfo); 338 assertTrue(info.serviceInfo.enabled); 339 } 340 341 @MediumTest 342 public void testGetDisabledServiceInfo() throws Exception { 343 mPackageManager.setComponentEnabledSetting(DISABLED_SERVICE_COMPONENTNAME, 344 COMPONENT_ENABLED_STATE_DEFAULT, 345 PackageManager.DONT_KILL_APP); 346 347 try { 348 mPackageManager.getServiceInfo(DISABLED_SERVICE_COMPONENTNAME, 0); 349 fail("Attempt to get info on disabled component should fail."); 350 } catch (PackageManager.NameNotFoundException e) { 351 // expected 352 } 353 354 final ServiceInfo serviceInfo = 355 mPackageManager.getServiceInfo(DISABLED_SERVICE_COMPONENTNAME, 356 GET_DISABLED_COMPONENTS); 357 assertNotNull(serviceInfo); 358 assertFalse(serviceInfo.enabled); 359 } 360 361 @SmallTest 362 public void testGetEnabledServiceInfo() throws Exception { 363 mPackageManager.setComponentEnabledSetting(ENABLED_SERVICE_COMPONENTNAME, 364 COMPONENT_ENABLED_STATE_DEFAULT, 365 PackageManager.DONT_KILL_APP); 366 367 ServiceInfo serviceInfo = 368 mPackageManager.getServiceInfo(ENABLED_SERVICE_COMPONENTNAME, 0); 369 assertNotNull(serviceInfo); 370 assertTrue(serviceInfo.enabled); 371 } 372 373 @MediumTest 374 public void testEnableService() throws Exception { 375 mPackageManager.setComponentEnabledSetting(DISABLED_SERVICE_COMPONENTNAME, 376 COMPONENT_ENABLED_STATE_DEFAULT, 377 PackageManager.DONT_KILL_APP); 378 379 final ResolveInfo info = mPackageManager.resolveService(mDisabledServiceIntent, 0); 380 assertNull(info); 381 mPackageManager.setComponentEnabledSetting(DISABLED_SERVICE_COMPONENTNAME, 382 COMPONENT_ENABLED_STATE_ENABLED, 383 PackageManager.DONT_KILL_APP); 384 final ResolveInfo info2 = 385 mPackageManager.resolveService(mDisabledServiceIntent, 386 0); 387 assertNotNull(info2); 388 assertNotNull(info2.serviceInfo); 389 assertFalse(info2.serviceInfo.enabled); 390 } 391 392 @MediumTest 393 public void testDisableService() throws Exception { 394 mPackageManager.setComponentEnabledSetting(ENABLED_SERVICE_COMPONENTNAME, 395 COMPONENT_ENABLED_STATE_DEFAULT, 396 PackageManager.DONT_KILL_APP); 397 398 final ResolveInfo info = mPackageManager.resolveService(mEnabledServiceIntent, 0); 399 assertNotNull(info); 400 assertNotNull(info.serviceInfo); 401 mPackageManager.setComponentEnabledSetting(ENABLED_SERVICE_COMPONENTNAME, 402 COMPONENT_ENABLED_STATE_DISABLED, 403 PackageManager.DONT_KILL_APP); 404 final ResolveInfo info2 = 405 mPackageManager.resolveService(mEnabledServiceIntent, 406 0); 407 assertNull(info2); 408 409 final ResolveInfo info3 = mPackageManager.resolveService(mEnabledServiceIntent, 410 GET_DISABLED_COMPONENTS); 411 assertNotNull(info3); 412 assertNotNull(info3.serviceInfo); 413 assertTrue(info3.serviceInfo.enabled); 414 } 415 416 @SmallTest 417 public void testQueryDisabledReceiver() throws Exception { 418 mPackageManager.setComponentEnabledSetting(DISABLED_RECEIVER_COMPONENTNAME, 419 COMPONENT_ENABLED_STATE_DEFAULT, 420 PackageManager.DONT_KILL_APP); 421 422 final List<ResolveInfo> infoList = 423 mPackageManager.queryBroadcastReceivers(mDisabledReceiverIntent, 0); 424 assertEquals(0, infoList.size()); 425 426 final List<ResolveInfo> infoList2 = 427 mPackageManager.queryBroadcastReceivers(mDisabledReceiverIntent, 428 GET_DISABLED_COMPONENTS); 429 assertEquals(1, infoList2.size()); 430 final ResolveInfo info = infoList2.get(0); 431 assertNotNull(info); 432 assertNotNull(info.activityInfo); 433 assertFalse(info.activityInfo.enabled); 434 } 435 436 @SmallTest 437 public void testQueryEnabledReceiver() throws Exception { 438 mPackageManager.setComponentEnabledSetting(ENABLED_RECEIVER_COMPONENTNAME, 439 COMPONENT_ENABLED_STATE_DEFAULT, 440 PackageManager.DONT_KILL_APP); 441 442 final List<ResolveInfo> infoList = 443 mPackageManager.queryBroadcastReceivers(mEnabledReceiverIntent, 0); 444 assertEquals(1, infoList.size()); 445 final ResolveInfo info = infoList.get(0); 446 assertNotNull(info); 447 assertNotNull(info.activityInfo); 448 assertTrue(info.activityInfo.enabled); 449 } 450 451 @MediumTest 452 public void testGetDisabledReceiverInfo() throws Exception { 453 mPackageManager.setComponentEnabledSetting(DISABLED_RECEIVER_COMPONENTNAME, 454 COMPONENT_ENABLED_STATE_DEFAULT, 455 PackageManager.DONT_KILL_APP); 456 457 try { 458 mPackageManager.getReceiverInfo(DISABLED_RECEIVER_COMPONENTNAME, 0); 459 fail("Attempt to get info on disabled component should fail."); 460 } catch (PackageManager.NameNotFoundException e) { 461 // expected 462 } 463 464 final ActivityInfo activityInfo = 465 mPackageManager.getReceiverInfo(DISABLED_RECEIVER_COMPONENTNAME, 466 GET_DISABLED_COMPONENTS); 467 assertNotNull(activityInfo); 468 assertFalse(activityInfo.enabled); 469 } 470 471 @SmallTest 472 public void testGetEnabledReceiverInfo() throws Exception { 473 mPackageManager.setComponentEnabledSetting(ENABLED_RECEIVER_COMPONENTNAME, 474 COMPONENT_ENABLED_STATE_DEFAULT, 475 PackageManager.DONT_KILL_APP); 476 477 ActivityInfo activityInfo = 478 mPackageManager.getReceiverInfo(ENABLED_RECEIVER_COMPONENTNAME, 0); 479 assertNotNull(activityInfo); 480 assertTrue(activityInfo.enabled); 481 } 482 483 @MediumTest 484 public void testEnableReceiver() throws Exception { 485 mPackageManager.setComponentEnabledSetting(DISABLED_RECEIVER_COMPONENTNAME, 486 COMPONENT_ENABLED_STATE_DEFAULT, 487 PackageManager.DONT_KILL_APP); 488 489 try { 490 mPackageManager.getReceiverInfo(DISABLED_RECEIVER_COMPONENTNAME, 0); 491 fail("Attempt to get info on disabled component should fail."); 492 } catch (PackageManager.NameNotFoundException e) { 493 // expected 494 } 495 496 mPackageManager.setComponentEnabledSetting(DISABLED_RECEIVER_COMPONENTNAME, 497 COMPONENT_ENABLED_STATE_ENABLED, 498 PackageManager.DONT_KILL_APP); 499 ActivityInfo activityInfo = 500 mPackageManager.getReceiverInfo(DISABLED_RECEIVER_COMPONENTNAME, 0); 501 assertNotNull(activityInfo); 502 assertFalse(activityInfo.enabled); 503 } 504 505 @MediumTest 506 public void testDisableReceiver() throws Exception { 507 mPackageManager.setComponentEnabledSetting(ENABLED_RECEIVER_COMPONENTNAME, 508 COMPONENT_ENABLED_STATE_DEFAULT, 509 PackageManager.DONT_KILL_APP); 510 511 ActivityInfo activityInfo = 512 mPackageManager.getReceiverInfo(ENABLED_RECEIVER_COMPONENTNAME, 0); 513 assertNotNull(activityInfo); 514 assertTrue(activityInfo.enabled); 515 mPackageManager.setComponentEnabledSetting(DISABLED_RECEIVER_COMPONENTNAME, 516 COMPONENT_ENABLED_STATE_DISABLED, 517 PackageManager.DONT_KILL_APP); 518 try { 519 mPackageManager.getReceiverInfo(DISABLED_RECEIVER_COMPONENTNAME, 0); 520 fail("Attempt to get info on disabled component should fail."); 521 } catch (PackageManager.NameNotFoundException e) { 522 // expected 523 } 524 } 525 526 @SmallTest 527 public void testResolveEnabledProvider() throws Exception { 528 mPackageManager.setComponentEnabledSetting(ENABLED_PROVIDER_COMPONENTNAME, 529 COMPONENT_ENABLED_STATE_DEFAULT, 530 PackageManager.DONT_KILL_APP); 531 532 ProviderInfo providerInfo = 533 mPackageManager.resolveContentProvider(ENABLED_PROVIDER_NAME, 0); 534 assertNotNull(providerInfo); 535 assertTrue(providerInfo.enabled); 536 } 537 538 @SmallTest 539 public void testResolveDisabledProvider() throws Exception { 540 mPackageManager.setComponentEnabledSetting(DISABLED_PROVIDER_COMPONENTNAME, 541 COMPONENT_ENABLED_STATE_DEFAULT, 542 PackageManager.DONT_KILL_APP); 543 544 ProviderInfo providerInfo = 545 mPackageManager.resolveContentProvider(DISABLED_PROVIDER_NAME, 0); 546 assertNull(providerInfo); 547 ProviderInfo providerInfo2 = 548 mPackageManager.resolveContentProvider(DISABLED_PROVIDER_NAME, 549 GET_DISABLED_COMPONENTS); 550 assertNotNull(providerInfo2); 551 assertFalse(providerInfo2.enabled); 552 } 553 554 @MediumTest 555 public void testEnableProvider() throws Exception { 556 mPackageManager.setComponentEnabledSetting(DISABLED_PROVIDER_COMPONENTNAME, 557 COMPONENT_ENABLED_STATE_DEFAULT, 558 PackageManager.DONT_KILL_APP); 559 ProviderInfo providerInfo = 560 mPackageManager.resolveContentProvider(DISABLED_PROVIDER_NAME, 0); 561 assertNull(providerInfo); 562 563 mPackageManager.setComponentEnabledSetting(DISABLED_PROVIDER_COMPONENTNAME, 564 COMPONENT_ENABLED_STATE_ENABLED, 565 PackageManager.DONT_KILL_APP); 566 ProviderInfo providerInfo2 = 567 mPackageManager.resolveContentProvider(DISABLED_PROVIDER_NAME, 0); 568 assertNotNull(providerInfo2); 569 assertFalse(providerInfo2.enabled); 570 } 571 572 @MediumTest 573 public void testDisableProvider() throws Exception { 574 mPackageManager.setComponentEnabledSetting(ENABLED_PROVIDER_COMPONENTNAME, 575 COMPONENT_ENABLED_STATE_DEFAULT, 576 PackageManager.DONT_KILL_APP); 577 ProviderInfo providerInfo = 578 mPackageManager.resolveContentProvider(ENABLED_PROVIDER_NAME, 0); 579 assertNotNull(providerInfo); 580 assertTrue(providerInfo.enabled); 581 582 mPackageManager.setComponentEnabledSetting(ENABLED_PROVIDER_COMPONENTNAME, 583 COMPONENT_ENABLED_STATE_DISABLED, 584 PackageManager.DONT_KILL_APP); 585 ProviderInfo providerInfo2 = 586 mPackageManager.resolveContentProvider(ENABLED_PROVIDER_NAME, 0); 587 assertNull(providerInfo2); 588 } 589 590 @SmallTest 591 public void testQueryEnabledProvider() throws Exception { 592 mPackageManager.setComponentEnabledSetting(ENABLED_PROVIDER_COMPONENTNAME, 593 COMPONENT_ENABLED_STATE_DEFAULT, 594 PackageManager.DONT_KILL_APP); 595 596 String enabledProviderProcessName = getComponentProcessName(ENABLED_PROVIDER_NAME); 597 PackageInfo pi = mPackageManager.getPackageInfo(ENABLED_PACKAGENAME, 0); 598 List<ProviderInfo> providerInfoList = 599 mPackageManager.queryContentProviders(enabledProviderProcessName, 600 pi.applicationInfo.uid, 0); 601 assertNotNull(providerInfoList); 602 assertEquals(1, providerInfoList.size()); 603 assertEquals(ENABLED_PROVIDER_CLASSNAME, 604 providerInfoList.get(0).name); 605 } 606 607 @MediumTest 608 public void testQueryDisabledProvider() throws Exception { 609 mPackageManager.setComponentEnabledSetting(DISABLED_PROVIDER_COMPONENTNAME, 610 COMPONENT_ENABLED_STATE_DEFAULT, 611 PackageManager.DONT_KILL_APP); 612 613 PackageInfo pi = mPackageManager.getPackageInfo(ENABLED_PACKAGENAME, 0); 614 615 String disabledProviderProcessName = getComponentProcessName(DISABLED_PROVIDER_NAME); 616 List<ProviderInfo> providerInfoList = 617 mPackageManager.queryContentProviders(disabledProviderProcessName, 618 pi.applicationInfo.uid, 0); 619 assertNull(providerInfoList); 620 621 622 List<ProviderInfo> providerInfoList2 = 623 mPackageManager.queryContentProviders(disabledProviderProcessName, 624 pi.applicationInfo.uid, GET_DISABLED_COMPONENTS); 625 assertNotNull(providerInfoList2); 626 assertEquals(1, providerInfoList2.size()); 627 assertEquals(DISABLED_PROVIDER_CLASSNAME, 628 providerInfoList2.get(0).name); 629 } 630 631 private String getComponentProcessName(String componentNameStr) { 632 ComponentInfo providerInfo = 633 mPackageManager.resolveContentProvider(componentNameStr, 634 GET_DISABLED_COMPONENTS); 635 return providerInfo.processName; 636 } 637 638 public void DISABLED_testResolveEnabledActivityInDisabledApp() throws Exception { 639 mPackageManager.setApplicationEnabledSetting(DISABLED_PACKAGENAME, 640 COMPONENT_ENABLED_STATE_DEFAULT, 641 0); 642 mPackageManager.setComponentEnabledSetting(DISABLED_APP_ENABLED_ACTIVITY_COMPONENTNAME, 643 COMPONENT_ENABLED_STATE_DEFAULT, 644 PackageManager.DONT_KILL_APP); 645 646 final ResolveInfo info = 647 mPackageManager.resolveActivity(mDisabledAppEnabledActivityIntent, 0); 648 assertNull(info); 649 650 final ResolveInfo info2 = mPackageManager.resolveActivity( 651 mDisabledAppEnabledActivityIntent, GET_DISABLED_COMPONENTS); 652 assertNotNull(info2); 653 assertNotNull(info2.activityInfo); 654 assertTrue(info2.activityInfo.enabled); 655 } 656 657 public void DISABLED_testEnableApplication() throws Exception { 658 mPackageManager.setApplicationEnabledSetting(DISABLED_PACKAGENAME, 659 COMPONENT_ENABLED_STATE_DEFAULT, 660 0); 661 mPackageManager.setComponentEnabledSetting(DISABLED_APP_ENABLED_ACTIVITY_COMPONENTNAME, 662 COMPONENT_ENABLED_STATE_DEFAULT, 663 PackageManager.DONT_KILL_APP); 664 665 final ResolveInfo info = 666 mPackageManager.resolveActivity(mDisabledAppEnabledActivityIntent, 0); 667 assertNull(info); 668 669 mPackageManager.setApplicationEnabledSetting(DISABLED_PACKAGENAME, 670 COMPONENT_ENABLED_STATE_ENABLED, 671 0); 672 final ResolveInfo info2 = mPackageManager.resolveActivity( 673 mDisabledAppEnabledActivityIntent, 0); 674 assertNotNull(info2); 675 assertNotNull(info2.activityInfo); 676 assertTrue(info2.activityInfo.enabled); 677 678 } 679 680 public void DISABLED_testDisableApplication() throws Exception { 681 mPackageManager.setApplicationEnabledSetting(ENABLED_PACKAGENAME, 682 COMPONENT_ENABLED_STATE_DEFAULT, 683 0); 684 mPackageManager.setComponentEnabledSetting(ENABLED_ACTIVITY_COMPONENTNAME, 685 COMPONENT_ENABLED_STATE_DEFAULT, 686 PackageManager.DONT_KILL_APP); 687 688 final ResolveInfo info = mPackageManager.resolveActivity(mEnabledActivityIntent, 0); 689 assertNotNull(info); 690 assertNotNull(info.activityInfo); 691 assertTrue(info.activityInfo.enabled); 692 693 mPackageManager.setApplicationEnabledSetting(ENABLED_PACKAGENAME, 694 COMPONENT_ENABLED_STATE_DISABLED, 695 0); 696 final ResolveInfo info2 = mPackageManager.resolveActivity(mEnabledActivityIntent, 0); 697 assertNull(info2); 698 699 // Clean up 700 mPackageManager.setApplicationEnabledSetting(ENABLED_PACKAGENAME, 701 COMPONENT_ENABLED_STATE_DEFAULT, 702 0); 703 704 } 705 706 @MediumTest 707 public void testNonExplicitResolveAfterEnabling() throws Exception { 708 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 709 COMPONENT_ENABLED_STATE_DEFAULT, 710 PackageManager.DONT_KILL_APP); 711 712 Intent intent = new Intent(Intent.ACTION_MAIN, null); 713 intent.addCategory(TEST_CATEGORY); 714 715 final List<ResolveInfo> launchables = 716 mPackageManager.queryIntentActivities(intent, 0); 717 718 int numItems = launchables.size(); 719 assertEquals(0, numItems); 720 721 mPackageManager.setComponentEnabledSetting(DISABLED_ACTIVITY_COMPONENTNAME, 722 COMPONENT_ENABLED_STATE_ENABLED, 723 PackageManager.DONT_KILL_APP); 724 725 final List<ResolveInfo> launchables2 = 726 mPackageManager.queryIntentActivities(intent, 0); 727 728 int numItems2 = launchables2.size(); 729 assertEquals(1, numItems2); 730 } 731 } 732