Loading core/java/com/android/internal/app/ChooserActivity.java +2 −33 Original line number Diff line number Diff line Loading @@ -771,11 +771,6 @@ public class ChooserActivity extends ResolverActivity implements delegationIntent.setComponent(delegateActivity); delegationIntent.putExtra(Intent.EXTRA_INTENT, getIntent()); delegationIntent.putExtra(ActivityTaskManager.EXTRA_PERMISSION_TOKEN, permissionToken); // Query prediction availability; mIsAppPredictorComponentAvailable isn't initialized. delegationIntent.putExtra( EXTRA_IS_APP_PREDICTION_SERVICE_AVAILABLE, isAppPredictionServiceAvailable()); delegationIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); // Don't close until the delegate finishes, or the token will be invalidated. Loading Loading @@ -972,34 +967,8 @@ public class ChooserActivity extends ResolverActivity implements /** * Returns true if app prediction service is defined and the component exists on device. */ @VisibleForTesting public boolean isAppPredictionServiceAvailable() { if (getPackageManager().getAppPredictionServicePackageName() == null) { // Default AppPredictionService is not defined. return false; } final String appPredictionServiceName = getString(R.string.config_defaultAppPredictionService); if (appPredictionServiceName == null) { return false; } final ComponentName appPredictionComponentName = ComponentName.unflattenFromString(appPredictionServiceName); if (appPredictionComponentName == null) { return false; } // Check if the app prediction component actually exists on the device. The component is // only visible when this is running in a system activity; otherwise this check will fail. Intent intent = new Intent(); intent.setComponent(appPredictionComponentName); if (getPackageManager().resolveService(intent, PackageManager.MATCH_ALL) == null) { Log.e(TAG, "App prediction service is defined, but does not exist: " + appPredictionServiceName); return false; } return true; private boolean isAppPredictionServiceAvailable() { return getPackageManager().getAppPredictionServicePackageName() != null; } /** Loading core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +0 −49 Original line number Diff line number Diff line Loading @@ -1307,55 +1307,6 @@ public class ChooserActivityTest { is(testBaseScore * SHORTCUT_TARGET_SCORE_BOOST)); } /** * The case when AppPrediction service is not defined in PackageManager is already covered * as a test parameter {@link ChooserActivityTest#packageManagers}. This test is checking the * case when the prediction service is defined but the component is not available on the device. */ @Test public void testIsAppPredictionServiceAvailable() { Intent sendIntent = createSendTextIntent(); List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); when( ChooserActivityOverrideData .getInstance() .resolverListController .getResolversForIntent( Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.isA(List.class))) .thenReturn(resolvedComponentInfos); final ChooserActivity activity = mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); if (activity.getPackageManager().getAppPredictionServicePackageName() == null) { assertThat(activity.isAppPredictionServiceAvailable(), is(false)); } else { if (!shouldTestTogglingAppPredictionServiceAvailabilityAtRuntime()) { return; } // This isn't a toggle per-se, but isAppPredictionServiceAvailable only works in // system (see comment in the method). assertThat(activity.isAppPredictionServiceAvailable(), is(true)); ChooserActivityOverrideData.getInstance().resources = Mockito.spy(activity.getResources()); when( ChooserActivityOverrideData .getInstance() .resources .getString( getRuntimeResourceId( "config_defaultAppPredictionService", "string"))) .thenReturn("ComponentNameThatDoesNotExist"); assertThat(activity.isAppPredictionServiceAvailable(), is(false)); } } @Test public void testConvertToChooserTarget_predictionService() { Intent sendIntent = createSendTextIntent(); Loading Loading
core/java/com/android/internal/app/ChooserActivity.java +2 −33 Original line number Diff line number Diff line Loading @@ -771,11 +771,6 @@ public class ChooserActivity extends ResolverActivity implements delegationIntent.setComponent(delegateActivity); delegationIntent.putExtra(Intent.EXTRA_INTENT, getIntent()); delegationIntent.putExtra(ActivityTaskManager.EXTRA_PERMISSION_TOKEN, permissionToken); // Query prediction availability; mIsAppPredictorComponentAvailable isn't initialized. delegationIntent.putExtra( EXTRA_IS_APP_PREDICTION_SERVICE_AVAILABLE, isAppPredictionServiceAvailable()); delegationIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); // Don't close until the delegate finishes, or the token will be invalidated. Loading Loading @@ -972,34 +967,8 @@ public class ChooserActivity extends ResolverActivity implements /** * Returns true if app prediction service is defined and the component exists on device. */ @VisibleForTesting public boolean isAppPredictionServiceAvailable() { if (getPackageManager().getAppPredictionServicePackageName() == null) { // Default AppPredictionService is not defined. return false; } final String appPredictionServiceName = getString(R.string.config_defaultAppPredictionService); if (appPredictionServiceName == null) { return false; } final ComponentName appPredictionComponentName = ComponentName.unflattenFromString(appPredictionServiceName); if (appPredictionComponentName == null) { return false; } // Check if the app prediction component actually exists on the device. The component is // only visible when this is running in a system activity; otherwise this check will fail. Intent intent = new Intent(); intent.setComponent(appPredictionComponentName); if (getPackageManager().resolveService(intent, PackageManager.MATCH_ALL) == null) { Log.e(TAG, "App prediction service is defined, but does not exist: " + appPredictionServiceName); return false; } return true; private boolean isAppPredictionServiceAvailable() { return getPackageManager().getAppPredictionServicePackageName() != null; } /** Loading
core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +0 −49 Original line number Diff line number Diff line Loading @@ -1307,55 +1307,6 @@ public class ChooserActivityTest { is(testBaseScore * SHORTCUT_TARGET_SCORE_BOOST)); } /** * The case when AppPrediction service is not defined in PackageManager is already covered * as a test parameter {@link ChooserActivityTest#packageManagers}. This test is checking the * case when the prediction service is defined but the component is not available on the device. */ @Test public void testIsAppPredictionServiceAvailable() { Intent sendIntent = createSendTextIntent(); List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); when( ChooserActivityOverrideData .getInstance() .resolverListController .getResolversForIntent( Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.isA(List.class))) .thenReturn(resolvedComponentInfos); final ChooserActivity activity = mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); if (activity.getPackageManager().getAppPredictionServicePackageName() == null) { assertThat(activity.isAppPredictionServiceAvailable(), is(false)); } else { if (!shouldTestTogglingAppPredictionServiceAvailabilityAtRuntime()) { return; } // This isn't a toggle per-se, but isAppPredictionServiceAvailable only works in // system (see comment in the method). assertThat(activity.isAppPredictionServiceAvailable(), is(true)); ChooserActivityOverrideData.getInstance().resources = Mockito.spy(activity.getResources()); when( ChooserActivityOverrideData .getInstance() .resources .getString( getRuntimeResourceId( "config_defaultAppPredictionService", "string"))) .thenReturn("ComponentNameThatDoesNotExist"); assertThat(activity.isAppPredictionServiceAvailable(), is(false)); } } @Test public void testConvertToChooserTarget_predictionService() { Intent sendIntent = createSendTextIntent(); Loading