Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41149c30 authored by Cody Northrop's avatar Cody Northrop
Browse files

ANGLE: Reorder debug package check

As originally coded, debug ANGLE packages could only be used
if ANGLE was properly installed, such that a single answer
was received from ANGLE_FOR_ANDROID.  Since ANGLE is only
required on new Q devices, debug packages could not be loaded
on devices that upgraded from P.

This CL changes the ordering such that debug packages are
detected before checking for propertly installed ANGLE package.

Bug: 132076614
Test: Manually test app with and without debug package
Test: atest CtsAngleIntegrationHostTestCases

Change-Id: I88f0417c7e74c2c20d087f2137eeb78879143ce5
parent 56c006f5
Loading
Loading
Loading
Loading
+25 −17
Original line number Diff line number Diff line
@@ -601,30 +601,38 @@ public class GraphicsEnvironment {
            return false;
        }

        final String anglePkgName = getAnglePackageName(pm);
        if (anglePkgName.isEmpty()) {
            Log.e(TAG, "Failed to find ANGLE package.");
            return false;
        }
        ApplicationInfo angleInfo = null;

        final ApplicationInfo angleInfo;
        String angleDebugPackage = getAngleDebugPackage(context, bundle);
        if (!angleDebugPackage.isEmpty()) {
            Log.i(TAG, "ANGLE debug package enabled: " + angleDebugPackage);
        // If the developer has specified a debug package over ADB, attempt to find it
        String anglePkgName = getAngleDebugPackage(context, bundle);
        if (!anglePkgName.isEmpty()) {
            Log.i(TAG, "ANGLE debug package enabled: " + anglePkgName);
            try {
                // Note the debug package does not have to be pre-installed
                angleInfo = pm.getApplicationInfo(angleDebugPackage, 0);
                angleInfo = pm.getApplicationInfo(anglePkgName, 0);
            } catch (PackageManager.NameNotFoundException e) {
                Log.w(TAG, "ANGLE debug package '" + angleDebugPackage + "' not installed");
                Log.w(TAG, "ANGLE debug package '" + anglePkgName + "' not installed");
                return false;
            }
        } else {
        }

        // Otherwise, check to see if ANGLE is properly installed
        if (angleInfo == null) {
            anglePkgName = getAnglePackageName(pm);
            if (!anglePkgName.isEmpty()) {
                Log.i(TAG, "ANGLE package enabled: " + anglePkgName);
                try {
                angleInfo = pm.getApplicationInfo(anglePkgName, PackageManager.MATCH_SYSTEM_ONLY);
                    // Production ANGLE libraries must be pre-installed as a system app
                    angleInfo = pm.getApplicationInfo(anglePkgName,
                            PackageManager.MATCH_SYSTEM_ONLY);
                } catch (PackageManager.NameNotFoundException e) {
                    Log.w(TAG, "ANGLE package '" + anglePkgName + "' not installed");
                    return false;
                }
            } else {
                Log.e(TAG, "Failed to find ANGLE package.");
                return false;
            }
        }

        final String abi = chooseAbi(angleInfo);
@@ -683,7 +691,7 @@ public class GraphicsEnvironment {
    private boolean setupAndUseAngle(Context context, String packageName) {
        // Need to make sure we are evaluating ANGLE usage for the correct circumstances
        if (!setupAngle(context, null, context.getPackageManager(), packageName)) {
            Log.v(TAG, "Package '" + packageName + "' should use not ANGLE");
            Log.v(TAG, "Package '" + packageName + "' should not use ANGLE");
            return false;
        }