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

Commit 27910b4f authored by /e/ robot's avatar /e/ robot
Browse files

Merge remote-tracking branch 'origin/lineage-20.0' into v1-t

parents d2972983 cfd9c1e4
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -104,6 +104,13 @@ public class NetworkPolicyManager {
     */
    public static final int POLICY_REJECT_ALL = 0x40000;

    /** @hide */
    public static final int POLICY_LOCKDOWN_VPN = POLICY_REJECT_WIFI | POLICY_REJECT_CELLULAR;

    /** @hide */
    public static final int POLICY_LOCKDOWN_VPN_MASK = POLICY_REJECT_WIFI | POLICY_REJECT_CELLULAR
            | POLICY_REJECT_VPN;

    /*
     * Rules defining whether an uid has access to a network given its type (metered / non-metered).
     *
+26 −4
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ object KeyguardBottomAreaViewBinder {
                Utils.getColorAttr(
                    view.context,
                    if (viewModel.isActivated) {
                        com.android.internal.R.attr.colorAccentPrimary
                        com.android.internal.R.attr.colorAccent
                    } else {
                        com.android.internal.R.attr.colorSurface
                    }
@@ -383,6 +383,12 @@ object KeyguardBottomAreaViewBinder {
        private val longPressDurationMs = ViewConfiguration.getLongPressTimeout().toLong()
        private var longPressAnimator: ViewPropertyAnimator? = null

        private val areAllPrimitivesSupported = vibratorHelper?.areAllPrimitivesSupported(
            VibrationEffect.Composition.PRIMITIVE_TICK,
            VibrationEffect.Composition.PRIMITIVE_QUICK_RISE,
            VibrationEffect.Composition.PRIMITIVE_QUICK_FALL
        ) ?: false

        @SuppressLint("ClickableViewAccessibility")
        override fun onTouch(v: View?, event: MotionEvent?): Boolean {
            return when (event?.actionMasked) {
@@ -470,7 +476,12 @@ object KeyguardBottomAreaViewBinder {
                                            CycleInterpolator(ShakeAnimationCycles)
                                        shakeAnimator.start()

                                        vibratorHelper?.vibrate(Vibrations.Shake)
                                        vibratorHelper?.vibrate(
                                            if (areAllPrimitivesSupported) {
                                                Vibrations.Shake
                                            } else {
                                                Vibrations.ShakeAlt
                                            })
                                    }
                                } else {
                                    null
@@ -493,9 +504,17 @@ object KeyguardBottomAreaViewBinder {
            view.setOnClickListener {
                vibratorHelper?.vibrate(
                    if (viewModel.isActivated) {
                        if (areAllPrimitivesSupported) {
                            Vibrations.Activated
                        } else {
                            Vibrations.ActivatedAlt
                        }
                    } else {
                        if (areAllPrimitivesSupported) {
                            Vibrations.Deactivated
                        } else {
                            Vibrations.DeactivatedAlt
                        }
                    }
                )
                viewModel.onClicked(
@@ -623,6 +642,7 @@ object KeyguardBottomAreaViewBinder {
                    }
                }
                .compose()
        val ShakeAlt = VibrationEffect.createPredefined(VibrationEffect.EFFECT_DOUBLE_CLICK)

        val Activated =
            VibrationEffect.startComposition()
@@ -637,6 +657,7 @@ object KeyguardBottomAreaViewBinder {
                    0,
                )
                .compose()
        val ActivatedAlt = VibrationEffect.createPredefined(VibrationEffect.EFFECT_HEAVY_CLICK)

        val Deactivated =
            VibrationEffect.startComposition()
@@ -651,5 +672,6 @@ object KeyguardBottomAreaViewBinder {
                    0,
                )
                .compose()
        val DeactivatedAlt = VibrationEffect.createPredefined(VibrationEffect.EFFECT_HEAVY_CLICK)
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -123,6 +123,15 @@ public class VibratorHelper {
        return mVibrator != null && mVibrator.hasVibrator();
    }

    /**
     * @see areAllPrimitivesSupported#hasVibrator()
     */
    public boolean areAllPrimitivesSupported(
        @NonNull @VibrationEffect.Composition.PrimitiveType int... primitiveIds) {
        return mVibrator != null &&
            mVibrator.areAllPrimitivesSupported(primitiveIds);
    }

    /**
     * @see Vibrator#cancel()
     */
+42 −34
Original line number Diff line number Diff line
@@ -22,18 +22,20 @@ import android.annotation.Nullable;
import android.app.ActivityTaskManager;
import android.app.AlarmManager;
import android.app.AlarmManager.AlarmClockInfo;
import android.app.AppGlobals;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkPolicyManager;
import android.os.Handler;
import android.os.Looper;
@@ -48,6 +50,7 @@ import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.lifecycle.Observer;

import com.android.systemui.R;
@@ -85,8 +88,6 @@ import com.android.systemui.util.time.DateFormatUtil;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.Executor;
@@ -136,6 +137,7 @@ public class PhoneStatusBarPolicy
    private final DateFormatUtil mDateFormatUtil;
    private final TelecomManager mTelecomManager;

    private final Context mContext;
    private final Handler mHandler;
    private final CastController mCast;
    private final HotspotController mHotspot;
@@ -162,6 +164,8 @@ public class PhoneStatusBarPolicy
    private final RecordingController mRecordingController;
    private final RingerModeTracker mRingerModeTracker;
    private final PrivacyLogger mPrivacyLogger;
    private final ConnectivityManager mConnectivityManager;
    private final NetworkPolicyManager mNetworkPolicyManager;

    private boolean mZenVisible;
    private boolean mVibrateVisible;
@@ -171,11 +175,13 @@ public class PhoneStatusBarPolicy
    private boolean mManagedProfileIconVisible = false;
    private boolean mFirewallVisible = false;

    private int mLastResumedActivityUid = -1;

    private BluetoothController mBluetooth;
    private AlarmManager.AlarmClockInfo mNextAlarm;

    @Inject
    public PhoneStatusBarPolicy(StatusBarIconController iconController,
    public PhoneStatusBarPolicy(Context context, StatusBarIconController iconController,
            CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher,
            @Main Executor mainExecutor, @UiBackground Executor uiBgExecutor, @Main Looper looper,
            @Main Resources resources, CastController castController,
@@ -194,6 +200,7 @@ public class PhoneStatusBarPolicy
            RingerModeTracker ringerModeTracker,
            PrivacyItemController privacyItemController,
            PrivacyLogger privacyLogger) {
        mContext = context;
        mIconController = iconController;
        mCommandQueue = commandQueue;
        mBroadcastDispatcher = broadcastDispatcher;
@@ -222,6 +229,8 @@ public class PhoneStatusBarPolicy
        mTelecomManager = telecomManager;
        mRingerModeTracker = ringerModeTracker;
        mPrivacyLogger = privacyLogger;
        mConnectivityManager = context.getSystemService(ConnectivityManager.class);
        mNetworkPolicyManager = context.getSystemService(NetworkPolicyManager.class);

        mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast);
        mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot);
@@ -269,6 +278,8 @@ public class PhoneStatusBarPolicy
        // listen for user / profile change.
        mUserTracker.addCallback(mUserSwitchListener, mMainExecutor);

        mNetworkPolicyManager.registerListener(mNetworkPolicyListener);

        // TTY status
        updateTTY();

@@ -359,8 +370,6 @@ public class PhoneStatusBarPolicy
        mLocationController.addCallback(this);
        mRecordingController.addCallback(this);

        registerNetworkPolicyListener();

        mCommandQueue.addCallback(this);

        // Get initial user setup state
@@ -597,12 +606,24 @@ public class PhoneStatusBarPolicy
        mUiBgExecutor.execute(() -> {
            try {
                final int uid = ActivityTaskManager.getService().getLastResumedActivityUid();
                final boolean isRestricted = INetworkPolicyManager.Stub.asInterface(
                        ServiceManager.getService(Context.NETWORK_POLICY_SERVICE))
                        .isUidNetworkingBlocked(uid, false);
                if (mLastResumedActivityUid != uid) {
                    mLastResumedActivityUid = uid;
                    try {
                        mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
                    } catch (IllegalArgumentException e) {
                        // Ignore
                    }
                    mConnectivityManager.registerDefaultNetworkCallbackForUid(uid, mNetworkCallback,
                            mHandler);
                }
                final boolean isRestricted =
                        mNetworkPolicyManager.isUidNetworkingBlocked(uid, false /*meteredNetwork*/);
                boolean isLauncher = false;
                List<ResolveInfo> homeActivities = new ArrayList<>();
                AppGlobals.getPackageManager().getHomeActivities(homeActivities);
                List<ResolveInfo> homeActivities =
                        mContext.getPackageManager().queryIntentActivitiesAsUser(
                                new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME)
                                        .addCategory(Intent.CATEGORY_DEFAULT),
                                PackageManager.ResolveInfoFlags.of(0), UserHandle.getUserId(uid));
                for (ResolveInfo homeActivity : homeActivities) {
                    if (uid == homeActivity.activityInfo.applicationInfo.uid) {
                        isLauncher = true;
@@ -630,33 +651,20 @@ public class PhoneStatusBarPolicy
        });
    }

    private void registerNetworkPolicyListener() {
        try {
            INetworkPolicyManager policyManager = INetworkPolicyManager.Stub.asInterface(
                    ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
            policyManager.registerListener(mNetworkPolicyListener);
        } catch (RemoteException e) {
            Log.e(TAG, "registerNetworkPolicyListener: ", e);
            return;
        }
    private final ConnectivityManager.NetworkCallback mNetworkCallback =
            new ConnectivityManager.NetworkCallback() {
                @Override
                public void onCapabilitiesChanged(@NonNull Network network,
                        @NonNull NetworkCapabilities networkCapabilities) {
                    mHandler.post(() -> updateFirewall());
                }
            };

    private final INetworkPolicyListener mNetworkPolicyListener =
            new NetworkPolicyManager.Listener() {
        @Override
        public void onUidRulesChanged(int uid, int uidRules) {
            if (DEBUG) Log.d(TAG, "INetworkPolicyListener." +
                    "onUidRulesChanged: uid: " + uid +
                    ", uidRules: " + uidRules);
            updateFirewall();
        }

        @Override
        public void onUidPoliciesChanged(int uid, int uidPolicies) {
            if (DEBUG) Log.d(TAG, "INetworkPolicyListener." +
                    "onUidPoliciesChanged: uid: " + uid +
                    ", uidPolicies: " + uidPolicies);
            updateFirewall();
            mHandler.post(() -> updateFirewall());
        }
    };

+217 −151

File changed.

Preview size limit exceeded, changes collapsed.