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

Commit 352ade0a authored by Sumedh Sen's avatar Sumedh Sen
Browse files

Use an Android Feature flag to guard Pia V2

Bug: 182205982
Bug: 312787400
Test: adb shell device_config put package_manager_service android.content.pm.use_pia_v2 true && adb reboot
Install an APK or uninstall an APK
Test: presubmit

Change-Id: I8c206bbaff5d8607d97fe426e0154d3642aba310
parent f79bba70
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -94,3 +94,10 @@ flag {
    description: "Feature flag to read install related information from an APK."
    bug: "275658500"
}

flag {
    name: "use_pia_v2"
    namespace: "package_manager_service"
    description: "Feature flag to enable the refactored Package Installer app with updated UI."
    bug: "182205982"
}
+3 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ android_app {
        "androidx.fragment_fragment",
        "androidx.lifecycle_lifecycle-livedata",
        "androidx.lifecycle_lifecycle-extensions",
        "android.content.pm.flags-aconfig-java",
    ],

    lint: {
@@ -75,6 +76,7 @@ android_app {
        "androidx.fragment_fragment",
        "androidx.lifecycle_lifecycle-livedata",
        "androidx.lifecycle_lifecycle-extensions",
        "android.content.pm.flags-aconfig-java",
    ],
    aaptflags: ["--product tablet"],

@@ -103,6 +105,7 @@ android_app {
        "androidx.fragment_fragment",
        "androidx.lifecycle_lifecycle-livedata",
        "androidx.lifecycle_lifecycle-extensions",
        "android.content.pm.flags-aconfig-java",
    ],
    aaptflags: ["--product tv"],

+13 −5
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package com.android.packageinstaller;

import static android.content.pm.Flags.usePiaV2;
import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid;

import android.Manifest;
import android.app.Activity;
import android.app.DialogFragment;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -57,14 +59,21 @@ public class InstallStart extends Activity {

    private final boolean mLocalLOGV = false;

    // TODO (sumedhsen): Replace with an Android Feature Flag once implemented
    private static final boolean USE_PIA_V2 = false;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (USE_PIA_V2) {
        mPackageManager = getPackageManager();
        if (usePiaV2()) {
            Log.i(TAG, "Using Pia V2");

            mPackageManager.setComponentEnabledSetting(new ComponentName(this,
                    com.android.packageinstaller.InstallEventReceiver.class),
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
            mPackageManager.setComponentEnabledSetting(new ComponentName(this,
                    com.android.packageinstaller.v2.model.InstallEventReceiver.class),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

            Intent piaV2 = new Intent(getIntent());
            piaV2.putExtra(InstallLaunch.EXTRA_CALLING_PKG_NAME, getCallingPackage());
            piaV2.putExtra(InstallLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid());
@@ -74,7 +83,6 @@ public class InstallStart extends Activity {
            finish();
            return;
        }
        mPackageManager = getPackageManager();
        mUserManager = getSystemService(UserManager.class);

        Intent intent = getIntent();
+13 −5
Original line number Diff line number Diff line
@@ -17,8 +17,8 @@
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 android.Manifest;
@@ -81,9 +81,6 @@ public class UninstallerActivity extends Activity {
    private String mPackageName;
    private DialogInfo mDialogInfo;

    // TODO (sumedhsen): Replace with an Android Feature Flag once implemented
    private static final boolean USE_PIA_V2 = false;

    @Override
    public void onCreate(Bundle icicle) {
        getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
@@ -92,7 +89,18 @@ public class UninstallerActivity extends Activity {
        // be stale, if e.g. the app was uninstalled while the activity was destroyed.
        super.onCreate(null);

        if (USE_PIA_V2 && !isTv()) {
        if (usePiaV2() && !isTv()) {
            Log.i(TAG, "Using Pia V2");

            PackageManager pm = getPackageManager();
            pm.setComponentEnabledSetting(
                new ComponentName(this, com.android.packageinstaller.UninstallEventReceiver.class),
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
            pm.setComponentEnabledSetting(
                new ComponentName(this,
                    com.android.packageinstaller.v2.model.UninstallEventReceiver.class),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

            boolean returnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false);
            Intent piaV2 = new Intent(getIntent());
            piaV2.putExtra(UninstallLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid());