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

Commit 5c405a0a authored by Bernardo Rufino's avatar Bernardo Rufino
Browse files

Shorten trampoline toast text

Due to new toast UI constraints. So, instead of package name (which was
less informative) we display the app label now with reduced messages:

* targetSdk S+: https://screenshot.googleplex.com/3zYrPoNkNK2XabU
* targetSdk < S: https://screenshot.googleplex.com/rpMsrkr2PRWMG3z

Bug: 167676448
Test: Trigger trampoline w/ targetSdk S and < S, check toast fits.
Change-Id: Ie03cfb9668c580018835919091acadce2fea4d75
parent 11687fae
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -134,7 +134,6 @@ import android.app.AlarmManager;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.AutomaticZenRule;
import android.app.BroadcastOptions;
import android.app.IActivityManager;
import android.app.INotificationManager;
import android.app.ITransientNotification;
@@ -10624,17 +10623,17 @@ public class NotificationManagerService extends SystemService {
                    return true;
                }
            }
            String toastMessage = "Indirect activity start from " + packageName;
            String logcatMessage =
                    "Indirect notification activity start (trampoline) from " + packageName;

            // Call to toast() method is posted to mHandler below to offload PM lookup from the
            // activity start path
            if (CompatChanges.isChangeEnabled(NOTIFICATION_TRAMPOLINE_BLOCK, uid)) {
                toast(toastMessage + " blocked.");
                mHandler.post(() -> toast(packageName, uid, /* blocked */ true));
                Slog.e(TAG, logcatMessage + " blocked");
                return false;
            } else {
                if (mPackagesShown.add(packageName)) {
                    toast(toastMessage + ". This will be blocked in S.");
                    mHandler.post(() -> toast(packageName, uid, /* blocked */ false));
                }
                Slog.w(TAG, logcatMessage + ", this should be avoided for performance reasons");
                return true;
@@ -10650,10 +10649,19 @@ public class NotificationManagerService extends SystemService {
                    && !CompatChanges.isChangeEnabled(NOTIFICATION_TRAMPOLINE_BLOCK, uid);
        }

        private void toast(String message) {
            mUiHandler.post(() ->
                    Toast.makeText(getUiContext(), message + "\nSee g.co/dev/trampolines.",
                            Toast.LENGTH_LONG).show());
        private void toast(String packageName, int uid, boolean blocked) {
            final CharSequence label;
            try {
                label = mPackageManagerClient.getApplicationLabel(
                        mPackageManager.getApplicationInfo(packageName, 0,
                                UserHandle.getUserId(uid)));
            } catch (RemoteException e) {
                Slog.e(TAG, "Unexpected exception obtaining app label from PackageManager", e);
                return;
            }
            mUiHandler.post(() -> Toast.makeText(getUiContext(),
                    label + " launch " + (blocked ? "blocked" : "will be blocked")
                            + "\ng.co/dev/trampolines", Toast.LENGTH_LONG).show());
        }
    }
}