From ee738823c9f5385de28e7ce03aa3d90100a03457 Mon Sep 17 00:00:00 2001 From: Ruben Brunk Date: Mon, 11 Jul 2016 11:50:15 -0700 Subject: Remove VR package disable logic. - No longer disable the default VrListenerService package while no VR applications are installed on the device. Bug: 29896165 Change-Id: I8c5a0aeeb37a4c3883c7e88f9187404877eb8b6e --- .../com/android/server/vr/VrManagerService.java | 101 --------------------- 1 file changed, 101 deletions(-) diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java index 5fefd4c8b2ce..7d209318c086 100644 --- a/services/core/java/com/android/server/vr/VrManagerService.java +++ b/services/core/java/com/android/server/vr/VrManagerService.java @@ -403,107 +403,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC publishLocalService(VrManagerInternal.class, new LocalService()); publishBinderService(VR_MANAGER_BINDER_SERVICE, mVrManager.asBinder()); - - // If there are no VR packages installed on the device, then disable VR - // components, otherwise, enable them. - setEnabledStatusOfVrComponents(); - } - - private void setEnabledStatusOfVrComponents() { - ArraySet vrComponents = SystemConfig.getInstance().getDefaultVrComponents(); - if (vrComponents == null) { - return; - } - - // We only want to enable VR components if there is a VR package installed on the device. - // The VR components themselves do not quality as a VR package, so exclude them. - ArraySet vrComponentPackageNames = new ArraySet<>(); - for (ComponentName componentName : vrComponents) { - vrComponentPackageNames.add(componentName.getPackageName()); - } - - // Check to see if there are any packages on the device, other than the VR component - // packages. - PackageManager pm = mContext.getPackageManager(); - List packageInfos = pm.getInstalledPackages( - PackageManager.GET_CONFIGURATIONS); - boolean vrModeIsUsed = false; - for (PackageInfo packageInfo : packageInfos) { - if (packageInfo != null && packageInfo.packageName != null && - pm.getApplicationEnabledSetting(packageInfo.packageName) == - PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { - vrModeIsUsed = enableVrComponentsIfVrModeUsed(pm, packageInfo, - vrComponentPackageNames, vrComponents); - if (vrModeIsUsed) { - break; - } - } - } - - if (!vrModeIsUsed) { - Slog.i(TAG, "No VR packages found, disabling VR components"); - setVrComponentsEnabledOrDisabled(vrComponents, false); - - // Register to receive an intent when a new package is installed, in case that package - // requires VR components. - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); - intentFilter.addDataScheme("package"); - mContext.registerReceiver(new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - PackageManager pm = context.getPackageManager(); - final String packageName = intent.getData().getSchemeSpecificPart(); - if (packageName != null) { - try { - PackageInfo packageInfo = pm.getPackageInfo(packageName, - PackageManager.GET_CONFIGURATIONS); - enableVrComponentsIfVrModeUsed(pm, packageInfo, - vrComponentPackageNames, vrComponents); - } catch (NameNotFoundException e) { - } - } - }; - }, intentFilter); - } - } - - private void setVrComponentsEnabledOrDisabled(ArraySet vrComponents, - boolean enabled) { - int state = enabled ? - PackageManager.COMPONENT_ENABLED_STATE_ENABLED : - PackageManager.COMPONENT_ENABLED_STATE_DISABLED; - PackageManager pm = mContext.getPackageManager(); - for (ComponentName componentName : vrComponents) { - try { - // Note that we must first check for the existance of the package before trying - // to set its enabled state. This is to prevent PackageManager from throwing - // an excepton if the package is not found (not just a NameNotFoundException - // exception). - PackageInfo packageInfo = pm.getPackageInfo(componentName.getPackageName(), - PackageManager.GET_CONFIGURATIONS); - pm.setApplicationEnabledSetting(componentName.getPackageName(), state , 0); - } catch (NameNotFoundException e) { - } - } - } - - private boolean enableVrComponentsIfVrModeUsed(PackageManager pm, PackageInfo packageInfo, - ArraySet vrComponentPackageNames, ArraySet vrComponents) { - boolean isVrComponent = vrComponents != null && - vrComponentPackageNames.contains(packageInfo.packageName); - if (packageInfo != null && packageInfo.reqFeatures != null && !isVrComponent) { - for (FeatureInfo featureInfo : packageInfo.reqFeatures) { - if (featureInfo.name != null && - (featureInfo.name.equals(PackageManager.FEATURE_VR_MODE) || - featureInfo.name.equals(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE))) { - Slog.i(TAG, "VR package found, enabling VR components"); - setVrComponentsEnabledOrDisabled(vrComponents, true); - return true; - } - } - } - return false; } @Override -- cgit v1.2.3-59-g8ed1b