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

Commit 9b069b75 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[PM] Only enable PIA V2 on mobile" into main

parents 8cb1edc9 d05e476c
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -16,10 +16,7 @@

package com.android.packageinstaller;

import static android.content.pm.Flags.usePiaV2;

import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid;
import static com.android.packageinstaller.PackageUtil.getReasonForDebug;

import android.Manifest;
import android.app.Activity;
@@ -39,7 +36,6 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.os.UserManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
@@ -69,13 +65,7 @@ public class InstallStart extends Activity {
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        boolean testOverrideForPiaV2 = Settings.System.getInt(getContentResolver(),
                "use_pia_v2", 0) == 1;
        boolean usePiaV2aConfig = usePiaV2();

        if (usePiaV2aConfig || testOverrideForPiaV2) {
            Log.d(TAG, getReasonForDebug(usePiaV2aConfig, testOverrideForPiaV2));

        if (PackageUtil.isVersionTwoEnabled(this)) {
            Intent piaV2 = new Intent(getIntent());
            piaV2.putExtra(InstallLaunch.EXTRA_CALLING_PKG_NAME, getLaunchedFromPackage());
            piaV2.putExtra(InstallLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid());
+45 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
import android.content.pm.Flags;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
@@ -39,6 +40,7 @@ import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
@@ -402,10 +404,52 @@ public class PackageUtil {
        return null;
    }

    /**
     * Returns if the version two is enabled.
     * 1. Currently, the version two is only enabled for the mobile devices
     * 2. The aconfig usePiaV2 is true
     * 3. The test settings use_pia_v2 is 1
     */
    public static boolean isVersionTwoEnabled(@NonNull Context context) {
        if (isAuto(context) || isTV(context) || isWatch(context)) {
            Log.d(LOG_TAG, "The device doesn't support PIA version 2");
            return false;
        }

        boolean testOverrideForPiaV2 = Settings.System.getInt(context.getContentResolver(),
                "use_pia_v2", 0) == 1;
        boolean usePiaV2aConfig = Flags.usePiaV2();
        if (usePiaV2aConfig || testOverrideForPiaV2) {
            Log.d(LOG_TAG, getDebugStringForPiaV2(usePiaV2aConfig, testOverrideForPiaV2));
            return true;
        }

        Log.d(LOG_TAG, "Use PIA V1");
        return false;
    }

    private static boolean hasSystemFeature(@NonNull Context context, @NonNull String featureName) {
        return context.getPackageManager().hasSystemFeature(featureName);
    }

    private static boolean isAuto(@NonNull Context context) {
        return hasSystemFeature(context, PackageManager.FEATURE_AUTOMOTIVE);
    }

    private static boolean isWatch(@NonNull Context context) {
        return hasSystemFeature(context, PackageManager.FEATURE_WATCH);
    }

    private static boolean isTV(@NonNull Context context) {
        return hasSystemFeature(context, PackageManager.FEATURE_TELEVISION)
                || hasSystemFeature(context, PackageManager.FEATURE_LEANBACK);
    }

    /**
     * Returns a string containing the reason for using Pia V2. Used for debugging purposes
     */
    public static String getReasonForDebug(boolean usePiaV2aConfig, boolean testOverrideForPiaV2) {
    private static String getDebugStringForPiaV2(boolean usePiaV2aConfig,
            boolean testOverrideForPiaV2) {
        StringBuilder sb = new StringBuilder("Using Pia V2 due to: ");
        boolean aconfigUsed = false;
        if (usePiaV2aConfig) {
+1 −11
Original line number Diff line number Diff line
@@ -17,13 +17,10 @@
package com.android.packageinstaller;

import static android.Manifest.permission;
import static android.content.pm.Flags.usePiaV2;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.MATCH_ARCHIVED_PACKAGES;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import static com.android.packageinstaller.PackageUtil.getReasonForDebug;

import android.app.Activity;
import android.app.DialogFragment;
import android.app.Fragment;
@@ -35,7 +32,6 @@ import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Process;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;

@@ -65,13 +61,7 @@ public class UnarchiveActivity extends Activity {

        super.onCreate(null);

        boolean testOverrideForPiaV2 = Settings.System.getInt(getContentResolver(),
                "use_pia_v2", 0) == 1;
        boolean usePiaV2aConfig = usePiaV2();

        if (usePiaV2aConfig || testOverrideForPiaV2) {
            Log.d(TAG, getReasonForDebug(usePiaV2aConfig, testOverrideForPiaV2));

        if (PackageUtil.isVersionTwoEnabled(this)) {
            Intent piaV2 = new Intent(getIntent());
            piaV2.putExtra(UnarchiveLaunch.EXTRA_CALLING_PKG_NAME, getLaunchedFromPackage());
            piaV2.putExtra(UnarchiveLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid());
+1 −13
Original line number Diff line number Diff line
@@ -16,10 +16,6 @@

package com.android.packageinstaller;

import static android.content.pm.Flags.usePiaV2;

import static com.android.packageinstaller.PackageUtil.getReasonForDebug;

import android.app.Activity;
import android.app.DialogFragment;
import android.app.Fragment;
@@ -28,8 +24,6 @@ import android.app.PendingIntent;
import android.content.Intent;
import android.content.pm.PackageInstaller;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;

import com.android.packageinstaller.v2.ui.UnarchiveLaunch;

@@ -49,13 +43,7 @@ public class UnarchiveErrorActivity extends Activity {
    public void onCreate(Bundle icicle) {
        super.onCreate(null);

        boolean testOverrideForPiaV2 = Settings.System.getInt(getContentResolver(),
                "use_pia_v2", 0) == 1;
        boolean usePiaV2aConfig = usePiaV2();

        if (usePiaV2aConfig || testOverrideForPiaV2) {
            Log.d(LOG_TAG, getReasonForDebug(usePiaV2aConfig, testOverrideForPiaV2));

        if (PackageUtil.isVersionTwoEnabled(this)) {
            Intent piaV2 = new Intent(getIntent());
            piaV2.putExtra(UnarchiveLaunch.EXTRA_CALLING_PKG_NAME, getLaunchedFromPackage());
            piaV2.putExtra(UnarchiveLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid());
+1 −10
Original line number Diff line number Diff line
@@ -17,11 +17,9 @@
package com.android.packageinstaller;

import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.content.pm.Flags.usePiaV2;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid;
import static com.android.packageinstaller.PackageUtil.getReasonForDebug;

import android.Manifest;
import android.app.Activity;
@@ -47,7 +45,6 @@ import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.util.Log;

import androidx.annotation.NonNull;
@@ -93,13 +90,7 @@ public class UninstallerActivity extends Activity {
        // be stale, if e.g. the app was uninstalled while the activity was destroyed.
        super.onCreate(null);

        boolean testOverrideForPiaV2 = Settings.System.getInt(getContentResolver(),
                "use_pia_v2", 0) == 1;
        boolean usePiaV2aConfig = usePiaV2();

        if ((usePiaV2aConfig || testOverrideForPiaV2) && !isTv()) {
            Log.d(TAG, getReasonForDebug(usePiaV2aConfig, testOverrideForPiaV2));

        if (PackageUtil.isVersionTwoEnabled(this)) {
            boolean returnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false);
            Intent piaV2 = new Intent(getIntent());
            piaV2.putExtra(UninstallLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid());