Merge "Restore focus history properly" into rvc-qpr-dev
diff --git a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItem.java b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItem.java
index 27f8140..5645b0d 100644
--- a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItem.java
+++ b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItem.java
@@ -73,6 +73,17 @@
private boolean mIsVisible;
private boolean mIsActivated;
+ @SuppressWarnings("FieldCanBeLocal") // Used with weak references
+ private final CarUxRestrictionsUtil.OnUxRestrictionsChangedListener mUxRestrictionsListener =
+ uxRestrictions -> {
+ boolean wasRestricted = isRestricted();
+ mCurrentRestrictions = uxRestrictions;
+
+ if (isRestricted() != wasRestricted) {
+ update();
+ }
+ };
+
private MenuItem(Builder builder) {
mContext = builder.mContext;
mId = builder.mId;
@@ -92,7 +103,7 @@
mIsPrimary = builder.mIsPrimary;
mUxRestrictions = builder.mUxRestrictions;
- mCurrentRestrictions = CarUxRestrictionsUtil.getInstance(mContext).getCurrentRestrictions();
+ CarUxRestrictionsUtil.getInstance(mContext).register(mUxRestrictionsListener);
}
private void update() {
@@ -239,15 +250,6 @@
update();
}
- /* package */ void setCarUxRestrictions(CarUxRestrictions restrictions) {
- boolean wasRestricted = isRestricted();
- mCurrentRestrictions = restrictions;
-
- if (isRestricted() != wasRestricted) {
- update();
- }
- }
-
/* package */ boolean isRestricted() {
return CarUxRestrictionsUtil.isRestricted(mUxRestrictions, mCurrentRestrictions);
}
diff --git a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItemRenderer.java b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItemRenderer.java
index 68d233b..6d5f572 100644
--- a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItemRenderer.java
+++ b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/MenuItemRenderer.java
@@ -18,7 +18,6 @@
import static com.android.car.ui.utils.CarUiUtils.requireViewByRefId;
import android.app.Activity;
-import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -85,10 +84,6 @@
}
}
- void setCarUxRestrictions(CarUxRestrictions restrictions) {
- mMenuItem.setCarUxRestrictions(restrictions);
- }
-
@Override
public void onMenuItemChanged(MenuItem changedItem) {
updateView();
diff --git a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/ToolbarControllerImpl.java b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/ToolbarControllerImpl.java
index 02b3a1a..e30f5f5 100644
--- a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/ToolbarControllerImpl.java
+++ b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/toolbar/ToolbarControllerImpl.java
@@ -49,7 +49,6 @@
import com.android.car.ui.recyclerview.CarUiListItem;
import com.android.car.ui.recyclerview.CarUiListItemAdapter;
import com.android.car.ui.utils.CarUiUtils;
-import com.android.car.ui.utils.CarUxRestrictionsUtil;
import java.util.ArrayList;
import java.util.Arrays;
@@ -123,15 +122,6 @@
setState(getState());
};
- // Despite the warning, this has to be a field so it's not garbage-collected.
- // The only other reference to it is a weak reference
- private final CarUxRestrictionsUtil.OnUxRestrictionsChangedListener
- mOnUxRestrictionsChangedListener = restrictions -> {
- for (MenuItemRenderer renderer : mMenuItemRenderers) {
- renderer.setCarUxRestrictions(restrictions);
- }
- };
-
public ToolbarControllerImpl(View view) {
mContext = view.getContext();
@@ -197,10 +187,6 @@
setBackgroundShown(true);
mOverflowAdapter = new CarUiListItemAdapter(mUiOverflowItems);
-
- // This holds weak references so we don't need to unregister later
- CarUxRestrictionsUtil.getInstance(getContext())
- .register(mOnUxRestrictionsChangedListener);
}
private Context getContext() {
diff --git a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/utils/DirectManipulationHelper.java b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/utils/DirectManipulationHelper.java
index 184e522..cdc0257 100644
--- a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/utils/DirectManipulationHelper.java
+++ b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/utils/DirectManipulationHelper.java
@@ -26,6 +26,7 @@
import android.view.accessibility.AccessibilityNodeInfo;
import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
/** Helper class to toggle direct manipulation mode. */
public final class DirectManipulationHelper {
@@ -35,7 +36,8 @@
* class name of {@link AccessibilityEvent} to indicate that the AccessibilityEvent represents
* a request to toggle direct manipulation mode.
*/
- private static final String DIRECT_MANIPULATION =
+ @VisibleForTesting
+ public static final String DIRECT_MANIPULATION =
"com.android.car.ui.utils.DIRECT_MANIPULATION";
/** This is a utility class. */