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

Commit ba679e34 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5977604 from a7bdb8ba to qt-qpr2-release

Change-Id: If65b925de41d84594c5631d59c43d2c11a66bd1b
parents 94eda9ac a7bdb8ba
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -22,7 +22,10 @@ import android.net.WebAddress;

/**
 * Manages the cookies used by an application's {@link WebView} instances.
 * Cookies are manipulated according to RFC2109.
 * <p>
 * CookieManager represents cookies as strings in the same format as the
 * HTTP {@code Cookie} and {@code Set-Cookie} header fields (defined in
 * <a href="https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03">RFC6265bis</a>).
 */
public abstract class CookieManager {
    /**
+15 −0
Original line number Diff line number Diff line
@@ -40,4 +40,19 @@
         slots that may be reused for things like IME control. -->
    <integer name="config_maxNotificationIcons">0</integer>

    <!--
        Initial alpha percent value for the background when the notification
        shade is open. Should be a number between, and inclusive, 0 and 100.
        If the number is 0, then the background alpha starts off fully
        transparent. If the number if 100, then the background alpha starts off
        fully opaque. -->
    <integer name="config_initialNotificationBackgroundAlpha">0</integer>
    <!--
        Final alpha percent value for the background when the notification
        shade is fully open. Should be a number between, and inclusive, 0 and
        100. If this value is smaller than
        config_initialNotificationBackgroundAlpha, the background will default
        to a constant alpha percent value using the initial alpha. -->
    <integer name="config_finalNotificationBackgroundAlpha">100</integer>

</resources>
+58 −22
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.car.Car;
import android.car.drivingstate.CarDrivingStateEvent;
import android.car.drivingstate.CarUxRestrictionsManager;
import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
import android.car.trust.CarTrustAgentEnrollmentManager;
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.Rect;
@@ -101,6 +100,9 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
    private float mOpeningVelocity = DEFAULT_FLING_VELOCITY;
    private float mClosingVelocity = DEFAULT_FLING_VELOCITY;

    private float mBackgroundAlphaDiff;
    private float mInitialBackgroundAlpha;

    private TaskStackListenerImpl mTaskStackListener;

    private FullscreenUserSwitcher mFullscreenUserSwitcher;
@@ -179,6 +181,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
    private boolean mHideNavBarForKeyboard;
    private boolean mBottomNavBarVisible;

    private CarUxRestrictionManagerWrapper mCarUxRestrictionManagerWrapper;

    private final CarPowerStateListener mCarPowerStateListener =
            (int state) -> {
                // When the car powers on, clear all notifications and mute/unread states.
@@ -214,6 +218,25 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
        // created.
        mHvacController = new HvacController(mContext);

      	// Notification bar related setup.
        mInitialBackgroundAlpha = (float) mContext.getResources().getInteger(
            R.integer.config_initialNotificationBackgroundAlpha) / 100;
        if (mInitialBackgroundAlpha < 0 || mInitialBackgroundAlpha > 100) {
            throw new RuntimeException(
              "Unable to setup notification bar due to incorrect initial background alpha"
                      + " percentage");
        }
        float finalBackgroundAlpha = Math.max(
            mInitialBackgroundAlpha,
            (float) mContext.getResources().getInteger(
                R.integer.config_finalNotificationBackgroundAlpha) / 100);
        if (finalBackgroundAlpha < 0 || finalBackgroundAlpha > 100) {
            throw new RuntimeException(
              "Unable to setup notification bar due to incorrect final background alpha"
                      + " percentage");
        }
        mBackgroundAlphaDiff = finalBackgroundAlpha - mInitialBackgroundAlpha;

        super.start();
        mTaskStackListener = new TaskStackListenerImpl();
        mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
@@ -245,14 +268,16 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
                    }
                });

        // Used by onDrivingStateChanged and it can be called inside
        // DrivingStateHelper.connectToCarService()
        mSwitchToGuestTimer = new SwitchToGuestTimer(mContext);

        // Register a listener for driving state changes.
        mDrivingStateHelper = new DrivingStateHelper(mContext, this::onDrivingStateChanged);
        mDrivingStateHelper.connectToCarService();

        mPowerManagerHelper = new PowerManagerHelper(mContext, mCarPowerStateListener);
        mPowerManagerHelper.connectToCarService();

        mSwitchToGuestTimer = new SwitchToGuestTimer(mContext);
    }

    private void restartNavBarsIfNecessary() {
@@ -454,13 +479,23 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
                        animateCollapsePanels();
                    }
                });
        Car car = Car.createCar(mContext);
        CarUxRestrictionsManager carUxRestrictionsManager = (CarUxRestrictionsManager)
                car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE);

        CarNotificationListener carNotificationListener = new CarNotificationListener();
        CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper =
                new CarUxRestrictionManagerWrapper();
        carUxRestrictionManagerWrapper.setCarUxRestrictionsManager(carUxRestrictionsManager);
        mCarUxRestrictionManagerWrapper = new CarUxRestrictionManagerWrapper();
        // This can take time if car service is not ready up to this time.
        // TODO(b/142808072) Refactor CarUxRestrictionManagerWrapper to allow setting
        // CarUxRestrictionsManager later and switch to Car.CAR_WAIT_TIMEOUT_DO_NOT_WAIT.
        Car.createCar(mContext, /* handler= */ null, Car.CAR_WAIT_TIMEOUT_WAIT_FOREVER,
                (car, ready) -> {
                    if (!ready) {
                        return;
                    }
                    CarUxRestrictionsManager carUxRestrictionsManager =
                            (CarUxRestrictionsManager)
                                    car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE);
                    mCarUxRestrictionManagerWrapper.setCarUxRestrictionsManager(
                            carUxRestrictionsManager);
                });

        mNotificationDataManager = new NotificationDataManager();
        mNotificationDataManager.setOnUnseenCountUpdateListener(
@@ -489,7 +524,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
                        mNotificationClickHandlerFactory, mNotificationDataManager);
        mNotificationClickHandlerFactory.setNotificationDataManager(mNotificationDataManager);

        carNotificationListener.registerAsSystemService(mContext, carUxRestrictionManagerWrapper,
        carNotificationListener.registerAsSystemService(mContext, mCarUxRestrictionManagerWrapper,
                carHeadsUpNotificationManager, mNotificationDataManager);

        mNotificationView = mStatusBarWindow.findViewById(R.id.notification_view);
@@ -589,7 +624,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
                mNotificationView,
                PreprocessingManager.getInstance(mContext),
                carNotificationListener,
                carUxRestrictionManagerWrapper,
                mCarUxRestrictionManagerWrapper,
                mNotificationDataManager);
        mNotificationViewController.enable();
    }
@@ -1039,12 +1074,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
        UserSwitcherController userSwitcherController =
                Dependency.get(UserSwitcherController.class);
        if (userSwitcherController.useFullscreenUserSwitcher()) {
            Car car = Car.createCar(mContext);
            CarTrustAgentEnrollmentManager enrollmentManager = (CarTrustAgentEnrollmentManager) car
                    .getCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
            mFullscreenUserSwitcher = new FullscreenUserSwitcher(this,
                    mStatusBarWindow.findViewById(R.id.fullscreen_user_switcher_stub),
                    enrollmentManager, mContext);
                    mStatusBarWindow.findViewById(R.id.fullscreen_user_switcher_stub), mContext);
        } else {
            super.createUserSwitcher();
        }
@@ -1155,17 +1186,22 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
            mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin);
        }
        if (mNotificationView.getHeight() > 0) {
            // Calculates the alpha value for the background based on how much of the notification
            // shade is visible to the user. When the notification shade is completely open then
            // alpha value will be 1.
            float alpha = (float) height / mNotificationView.getHeight();
            Drawable background = mNotificationView.getBackground().mutate();

            background.setAlpha((int) (alpha * 255));
            background.setAlpha((int) (getBackgroundAlpha(height) * 255));
            mNotificationView.setBackground(background);
        }
    }

    /**
     * Calculates the alpha value for the background based on how much of the notification
     * shade is visible to the user. When the notification shade is completely open then
     * alpha value will be 1.
     */
    private float getBackgroundAlpha(int height) {
        return mInitialBackgroundAlpha +
            ((float) height / mNotificationView.getHeight() * mBackgroundAlphaDiff);
    }

    private void calculatePercentageFromBottom(float height) {
        if (mNotificationView.getHeight() > 0) {
            mPercentageFromBottom = (int) Math.abs(
+20 −58
Original line number Diff line number Diff line
@@ -17,14 +17,11 @@
package com.android.systemui.statusbar.car;

import android.car.Car;
import android.car.CarNotConnectedException;
import android.car.Car.CarServiceLifecycleListener;
import android.car.drivingstate.CarDrivingStateEvent;
import android.car.drivingstate.CarDrivingStateManager;
import android.car.drivingstate.CarDrivingStateManager.CarDrivingStateEventListener;
import android.content.ComponentName;
import android.content.Context;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.NonNull;
@@ -55,16 +52,11 @@ public class DrivingStateHelper {
        if (mDrivingStateManager == null) {
            return false;
        }
        try {
        CarDrivingStateEvent currentState = mDrivingStateManager.getCurrentCarDrivingState();
        if (currentState != null) {
            return currentState.eventValue == CarDrivingStateEvent.DRIVING_STATE_IDLING
                    || currentState.eventValue == CarDrivingStateEvent.DRIVING_STATE_MOVING;
        }
        } catch (CarNotConnectedException e) {
            Log.e(TAG, "Cannot determine current driving state. Car not connected", e);
        }

        return false; // Default to false.
    }

@@ -72,27 +64,16 @@ public class DrivingStateHelper {
     * Establishes connection with the Car service.
     */
    public void connectToCarService() {
        mCar = Car.createCar(mContext, mCarConnectionListener);
        if (mCar != null) {
            mCar.connect();
        }
        mCar = Car.createCar(mContext, /* handler= */ null, Car.CAR_WAIT_TIMEOUT_DO_NOT_WAIT,
                mCarServiceLifecycleListener);
    }

    /**
     * Disconnects from Car service and cleans up listeners.
     */
    public void disconnectFromCarService() {
        if (mCar != null) {
            mCar.disconnect();
        }
    private final CarServiceLifecycleListener mCarServiceLifecycleListener = (car, ready) -> {
        if (!ready) {
            return;
        }

    private final ServiceConnection mCarConnectionListener =
            new ServiceConnection() {
                public void onServiceConnected(ComponentName name, IBinder service) {
        logD("Car Service connected");
                    try {
                        mDrivingStateManager = (CarDrivingStateManager) mCar.getCarManager(
        mDrivingStateManager = (CarDrivingStateManager) car.getCarManager(
                Car.CAR_DRIVING_STATE_SERVICE);
        if (mDrivingStateManager != null) {
            mDrivingStateManager.registerListener(mDrivingStateHandler);
@@ -101,27 +82,8 @@ public class DrivingStateHelper {
        } else {
            Log.e(TAG, "CarDrivingStateService service not available");
        }
                    } catch (CarNotConnectedException e) {
                        Log.e(TAG, "Car not connected", e);
                    }
                }

                @Override
                public void onServiceDisconnected(ComponentName name) {
                    destroyDrivingStateManager();
                }
    };

    private void destroyDrivingStateManager() {
        try {
            if (mDrivingStateManager != null) {
                mDrivingStateManager.unregisterListener();
            }
        } catch (CarNotConnectedException e) {
            Log.e(TAG, "Error unregistering listeners", e);
        }
    }

    private void logD(String message) {
        if (Log.isLoggable(TAG, Log.DEBUG)) {
            Log.d(TAG, message);
+16 −5
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.car;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.car.Car;
import android.car.trust.CarTrustAgentEnrollmentManager;
import android.car.userlib.CarUserManagerHelper;
import android.content.BroadcastReceiver;
@@ -50,7 +51,7 @@ public class FullscreenUserSwitcher {
    private final CarStatusBar mStatusBar;
    private final Context mContext;
    private final UserManager mUserManager;
    private final CarTrustAgentEnrollmentManager mEnrollmentManager;
    private CarTrustAgentEnrollmentManager mEnrollmentManager;
    private CarTrustAgentUnlockDialogHelper mUnlockDialogHelper;
    private UserGridRecyclerView.UserRecord mSelectedUser;
    private CarUserManagerHelper mCarUserManagerHelper;
@@ -64,13 +65,11 @@ public class FullscreenUserSwitcher {
            mContext.unregisterReceiver(mUserUnlockReceiver);
        }
    };
    private final Car mCar;


    public FullscreenUserSwitcher(CarStatusBar statusBar, ViewStub containerStub,
            CarTrustAgentEnrollmentManager enrollmentManager, Context context) {
    public FullscreenUserSwitcher(CarStatusBar statusBar, ViewStub containerStub, Context context) {
        mStatusBar = statusBar;
        mParent = containerStub.inflate();
        mEnrollmentManager = enrollmentManager;
        mContext = context;

        View container = mParent.findViewById(R.id.container);
@@ -86,6 +85,15 @@ public class FullscreenUserSwitcher {
        mUnlockDialogHelper = new CarTrustAgentUnlockDialogHelper(mContext);
        mUserManager = mContext.getSystemService(UserManager.class);

        mCar = Car.createCar(mContext, /* handler= */ null, Car.CAR_WAIT_TIMEOUT_DO_NOT_WAIT,
                (car, ready) -> {
                    if (!ready) {
                        return;
                    }
                    mEnrollmentManager = (CarTrustAgentEnrollmentManager) car
                            .getCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
                });

        mShortAnimDuration = container.getResources()
                .getInteger(android.R.integer.config_shortAnimTime);
        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
@@ -201,6 +209,9 @@ public class FullscreenUserSwitcher {
    }

    private boolean hasTrustedDevice(int uid) {
        if (mEnrollmentManager == null) { // car service not ready, so it cannot be available.
            return false;
        }
        return !mEnrollmentManager.getEnrolledDeviceInfoForUser(uid).isEmpty();
    }

Loading