Set up Proguard rules for the Car App Library to better apply per annotation interface rather than manual declarations that can create issues.
Test: Manual
Change-Id: I237b1f3d736caaa041678877cc11ccf755666357
diff --git a/car/app/app-automotive/build.gradle b/car/app/app-automotive/build.gradle
index bac38c9..b66fba7 100644
--- a/car/app/app-automotive/build.gradle
+++ b/car/app/app-automotive/build.gradle
@@ -55,10 +55,6 @@
defaultConfig {
minSdkVersion 29
}
- lintOptions {
- // We rely on keeping a bunch of private variables in the library for serialization.
- disable("BanKeepAnnotation")
- }
buildFeatures {
aidl = true
}
diff --git a/car/app/app-automotive/proguard-rules.pro b/car/app/app-automotive/proguard-rules.pro
index 462529f..4ed66b3 100644
--- a/car/app/app-automotive/proguard-rules.pro
+++ b/car/app/app-automotive/proguard-rules.pro
@@ -7,7 +7,10 @@
# Keep all IInterfaces which are needed for host communications.
-keep class androidx.car.app.** extends android.os.IInterface { *; }
-
# Don't obfuscate classes instantiated from outside the library via reflection
-keep public class androidx.car.app.activity.** extends androidx.car.app.managers.Manager { *; }
-keep public class androidx.car.app.hardware.AutomotiveCarHardwareManager { *; }
+# Keep all private final fields from a class.
+-keepclasseswithmembers @androidx.car.app.annotations.KeepFields class * {
+ *;
+}
\ No newline at end of file
diff --git a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java
index e92c665..a377cb9 100644
--- a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java
+++ b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java
@@ -22,9 +22,9 @@
import android.view.KeyEvent;
import android.view.MotionEvent;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.serialization.Bundleable;
import androidx.car.app.serialization.BundlerException;
@@ -35,8 +35,8 @@
* This class exists for compatibility with Q devices. In Android R and later,
* {@link android.view.SurfaceControlViewHost.SurfacePackage} will be used instead.
*/
+@KeepFields
public final class LegacySurfacePackage {
- @Keep
@Nullable
private ISurfaceControl mISurfaceControl;
diff --git a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java
index 8d2ddee..ce2ffdf 100644
--- a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java
+++ b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java
@@ -23,28 +23,23 @@
import android.view.SurfaceView;
import androidx.annotation.Dimension;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.car.app.annotations.KeepFields;
/**
* A class holding the information needed to render the content on a surface.
*/
+@KeepFields
public final class SurfaceWrapper {
- @Keep
@Nullable
private IBinder mHostToken;
- @Keep
@Dimension
private int mWidth;
- @Keep
@Dimension
private int mHeight;
- @Keep
private int mDisplayId;
- @Keep
private int mDensityDpi;
- @Keep
@Nullable
private Surface mSurface;
diff --git a/car/app/app-automotive/src/main/java/androidx/car/app/media/AutomotiveCarAudioRecord.java b/car/app/app-automotive/src/main/java/androidx/car/app/media/AutomotiveCarAudioRecord.java
index f22d30f..13e76e6 100644
--- a/car/app/app-automotive/src/main/java/androidx/car/app/media/AutomotiveCarAudioRecord.java
+++ b/car/app/app-automotive/src/main/java/androidx/car/app/media/AutomotiveCarAudioRecord.java
@@ -24,12 +24,12 @@
import android.media.AudioRecord;
import android.media.MediaRecorder;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresPermission;
import androidx.annotation.RestrictTo;
import androidx.car.app.CarContext;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
/**
* A {@link CarAudioRecord} for automotive OS.
@@ -37,7 +37,7 @@
* @hide
*/
@RestrictTo(LIBRARY_GROUP)
-@Keep
+@KeepFields
@CarProtocol
public class AutomotiveCarAudioRecord extends CarAudioRecord {
/**
diff --git a/car/app/app-projected/build.gradle b/car/app/app-projected/build.gradle
index 6ebd606a..219e963 100644
--- a/car/app/app-projected/build.gradle
+++ b/car/app/app-projected/build.gradle
@@ -43,10 +43,6 @@
multiDexEnabled = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
- lintOptions {
- // We rely on keeping a bunch of private variables in the library for serialization.
- disable("BanKeepAnnotation")
- }
buildFeatures {
aidl = true
}
diff --git a/car/app/app-projected/proguard-rules.pro b/car/app/app-projected/proguard-rules.pro
index ac3430f..61a5d822 100644
--- a/car/app/app-projected/proguard-rules.pro
+++ b/car/app/app-projected/proguard-rules.pro
@@ -10,3 +10,6 @@
# Don't obfuscate classes instantiated from outside the library via reflection
-keep public class androidx.car.app.hardware.ProjectedCarHardwareManager { *; }
+-keepclasseswithmembers @androidx.car.app.annotations.KeepFields class * {
+ *;
+}
\ No newline at end of file
diff --git a/car/app/app-projected/src/main/java/androidx/car/app/media/ProjectedCarAudioRecord.java b/car/app/app-projected/src/main/java/androidx/car/app/media/ProjectedCarAudioRecord.java
index b55a5c2..9394708 100644
--- a/car/app/app-projected/src/main/java/androidx/car/app/media/ProjectedCarAudioRecord.java
+++ b/car/app/app-projected/src/main/java/androidx/car/app/media/ProjectedCarAudioRecord.java
@@ -30,6 +30,7 @@
import androidx.annotation.RestrictTo;
import androidx.car.app.CarContext;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.io.IOException;
import java.io.InputStream;
@@ -40,7 +41,7 @@
* @hide
*/
@RestrictTo(LIBRARY_GROUP)
-@Keep
+@KeepFields
@CarProtocol
public class ProjectedCarAudioRecord extends CarAudioRecord {
@Nullable
diff --git a/car/app/app/api/current.txt b/car/app/app/api/current.txt
index 0497df5..065ecce 100644
--- a/car/app/app/api/current.txt
+++ b/car/app/app/api/current.txt
@@ -634,7 +634,7 @@
method public double getLongitude();
}
- @Keep @androidx.car.app.annotations.CarProtocol public class CarSpan extends android.text.style.CharacterStyle {
+ @androidx.car.app.annotations.CarProtocol public class CarSpan extends android.text.style.CharacterStyle {
ctor public CarSpan();
method public void updateDrawState(android.text.TextPaint);
}
diff --git a/car/app/app/api/public_plus_experimental_1.3.0-beta02.txt b/car/app/app/api/public_plus_experimental_1.3.0-beta02.txt
index 8157779..39d9918 100644
--- a/car/app/app/api/public_plus_experimental_1.3.0-beta02.txt
+++ b/car/app/app/api/public_plus_experimental_1.3.0-beta02.txt
@@ -1,7 +1,7 @@
// Signature format: 4.0
package androidx.car.app {
- @androidx.car.app.annotations.CarProtocol public final class AppInfo {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class AppInfo {
ctor @VisibleForTesting public AppInfo(int, int, String);
method public int getLatestCarAppApiLevel();
method public String getLibraryDisplayVersion();
@@ -84,7 +84,7 @@
field public static final int LENGTH_SHORT = 0; // 0x0
}
- @androidx.car.app.annotations.CarProtocol public final class FailureResponse {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class FailureResponse {
ctor public FailureResponse(Throwable);
method public int getErrorType();
method public String getStackTrace();
@@ -97,7 +97,7 @@
field public static final int UNKNOWN_ERROR = 0; // 0x0
}
- @androidx.car.app.annotations.CarProtocol public final class HandshakeInfo {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class HandshakeInfo {
ctor public HandshakeInfo(String, int);
method public int getHostCarAppApiLevel();
method public String getHostPackageName();
@@ -161,7 +161,7 @@
method public void onNewIntent(android.content.Intent);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(6) public class SessionInfo {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(6) public class SessionInfo {
ctor public SessionInfo(int, String);
method public int getDisplayType();
method public String getSessionId();
@@ -188,7 +188,7 @@
method public default void onVisibleAreaChanged(android.graphics.Rect);
}
- @androidx.car.app.annotations.CarProtocol public final class SurfaceContainer {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class SurfaceContainer {
ctor public SurfaceContainer(android.view.Surface?, int, int, int);
method public int getDpi();
method public int getHeight();
@@ -206,6 +206,9 @@
@RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public @interface ExperimentalCarApi {
}
+ @androidx.car.app.annotations.ExperimentalCarApi @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface KeepFields {
+ }
+
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public @interface RequiresCarApi {
method public abstract int value();
}
@@ -282,7 +285,7 @@
method public void unregisterClimateStateCallback(androidx.car.app.hardware.climate.CarClimateStateCallback);
}
- @MainThread @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(5) public final class CarClimateFeature {
+ @MainThread @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class CarClimateFeature {
method public java.util.List<androidx.car.app.hardware.common.CarZone!> getCarZones();
method public int getFeature();
}
@@ -575,7 +578,7 @@
field @androidx.car.app.annotations.ExperimentalCarApi public static final int US_GALLON = 203; // 0xcb
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class CarValue<T> {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class CarValue<T> {
ctor public CarValue(T?, long, int);
ctor @androidx.car.app.annotations.ExperimentalCarApi public CarValue(T?, long, int, java.util.List<androidx.car.app.hardware.common.CarZone!>);
method @androidx.car.app.annotations.ExperimentalCarApi public java.util.List<androidx.car.app.hardware.common.CarZone!> getCarZones();
@@ -588,7 +591,7 @@
field public static final int STATUS_UNKNOWN = 0; // 0x0
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(5) public final class CarZone {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class CarZone {
method public int getColumn();
method public int getRow();
field public static final int CAR_ZONE_COLUMN_ALL = 16; // 0x10
@@ -620,12 +623,12 @@
package androidx.car.app.hardware.info {
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class Accelerometer {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class Accelerometer {
ctor public Accelerometer(androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Float!>!>);
method public androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Float!>!> getForces();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class CarHardwareLocation {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class CarHardwareLocation {
ctor public CarHardwareLocation(androidx.car.app.hardware.common.CarValue<android.location.Location!>);
method public androidx.car.app.hardware.common.CarValue<android.location.Location!> getLocation();
}
@@ -659,12 +662,12 @@
field public static final int UPDATE_RATE_UI = 2; // 0x2
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class Compass {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class Compass {
ctor public Compass(androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Float!>!>);
method public androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Float!>!> getOrientations();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class EnergyLevel {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class EnergyLevel {
method public androidx.car.app.hardware.common.CarValue<java.lang.Float!> getBatteryPercent();
method public androidx.car.app.hardware.common.CarValue<java.lang.Integer!> getDistanceDisplayUnit();
method public androidx.car.app.hardware.common.CarValue<java.lang.Boolean!> getEnergyIsLow();
@@ -684,7 +687,7 @@
method public androidx.car.app.hardware.info.EnergyLevel.Builder setRangeRemainingMeters(androidx.car.app.hardware.common.CarValue<java.lang.Float!>);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class EnergyProfile {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class EnergyProfile {
method public androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Integer!>!> getEvConnectorTypes();
method public androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Integer!>!> getFuelTypes();
field public static final int EVCONNECTOR_TYPE_CHADEMO = 3; // 0x3
@@ -722,7 +725,7 @@
method public androidx.car.app.hardware.info.EnergyProfile.Builder setFuelTypes(androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Integer!>!>);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi public class EvStatus {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields public class EvStatus {
method public androidx.car.app.hardware.common.CarValue<java.lang.Boolean!> getEvChargePortConnected();
method public androidx.car.app.hardware.common.CarValue<java.lang.Boolean!> getEvChargePortOpen();
}
@@ -734,12 +737,12 @@
method public androidx.car.app.hardware.info.EvStatus.Builder setEvChargePortOpen(androidx.car.app.hardware.common.CarValue<java.lang.Boolean!>);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class Gyroscope {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class Gyroscope {
ctor public Gyroscope(androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Float!>!>);
method public androidx.car.app.hardware.common.CarValue<java.util.List<java.lang.Float!>!> getRotations();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class Mileage {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class Mileage {
method public androidx.car.app.hardware.common.CarValue<java.lang.Integer!> getDistanceDisplayUnit();
method public androidx.car.app.hardware.common.CarValue<java.lang.Float!> getOdometerMeters();
}
@@ -751,7 +754,7 @@
method public androidx.car.app.hardware.info.Mileage.Builder setOdometerMeters(androidx.car.app.hardware.common.CarValue<java.lang.Float!>);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class Model {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class Model {
method public androidx.car.app.hardware.common.CarValue<java.lang.String!> getManufacturer();
method public androidx.car.app.hardware.common.CarValue<java.lang.String!> getName();
method public androidx.car.app.hardware.common.CarValue<java.lang.Integer!> getYear();
@@ -765,7 +768,7 @@
method public androidx.car.app.hardware.info.Model.Builder setYear(androidx.car.app.hardware.common.CarValue<java.lang.Integer!>);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class Speed {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class Speed {
method public androidx.car.app.hardware.common.CarValue<java.lang.Float!> getDisplaySpeedMetersPerSecond();
method public androidx.car.app.hardware.common.CarValue<java.lang.Float!> getRawSpeedMetersPerSecond();
method public androidx.car.app.hardware.common.CarValue<java.lang.Integer!> getSpeedDisplayUnit();
@@ -779,7 +782,7 @@
method public androidx.car.app.hardware.info.Speed.Builder setSpeedDisplayUnit(androidx.car.app.hardware.common.CarValue<java.lang.Integer!>);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(3) public final class TollCard {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(3) public final class TollCard {
method public androidx.car.app.hardware.common.CarValue<java.lang.Integer!> getCardState();
field public static final int TOLLCARD_STATE_INVALID = 2; // 0x2
field public static final int TOLLCARD_STATE_NOT_INSERTED = 3; // 0x3
@@ -808,7 +811,7 @@
method public void onStopRecording();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public class CarAudioCallbackDelegate {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public class CarAudioCallbackDelegate {
method public void onStopRecording();
}
@@ -822,7 +825,7 @@
field public static final int AUDIO_CONTENT_SAMPLING_RATE = 16000; // 0x3e80
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public final class OpenMicrophoneRequest {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class OpenMicrophoneRequest {
method public androidx.car.app.media.CarAudioCallbackDelegate getCarAudioCallbackDelegate();
}
@@ -831,7 +834,7 @@
method public androidx.car.app.media.OpenMicrophoneRequest build();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public final class OpenMicrophoneResponse {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class OpenMicrophoneResponse {
method public androidx.car.app.media.CarAudioCallbackDelegate getCarAudioCallback();
method public java.io.InputStream getCarMicrophoneInputStream();
}
@@ -854,7 +857,7 @@
package androidx.car.app.messaging.model {
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(6) public class CarMessage {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(6) public class CarMessage {
method public androidx.car.app.model.CarText getBody();
method public long getReceivedTimeEpochMillis();
method public androidx.core.app.Person getSender();
@@ -892,7 +895,7 @@
package androidx.car.app.model {
- @androidx.car.app.annotations.CarProtocol public final class Action {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Action {
method public androidx.car.app.model.CarColor? getBackgroundColor();
method @androidx.car.app.annotations.RequiresCarApi(4) public int getFlags();
method public androidx.car.app.model.CarIcon? getIcon();
@@ -927,7 +930,7 @@
method public androidx.car.app.model.Action.Builder setTitle(androidx.car.app.model.CarText);
}
- @androidx.car.app.annotations.CarProtocol public final class ActionStrip {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class ActionStrip {
method public java.util.List<androidx.car.app.model.Action!> getActions();
method public androidx.car.app.model.Action? getFirstActionOfType(int);
}
@@ -938,7 +941,7 @@
method public androidx.car.app.model.ActionStrip build();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public final class Alert {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class Alert {
method public java.util.List<androidx.car.app.model.Action!> getActions();
method public androidx.car.app.model.AlertCallbackDelegate? getCallbackDelegate();
method public long getDurationMillis();
@@ -970,7 +973,7 @@
method public void sendDismiss(androidx.car.app.OnDoneCallback);
}
- @androidx.car.app.annotations.CarProtocol public final class CarColor {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class CarColor {
method public static androidx.car.app.model.CarColor createCustom(@ColorInt int, @ColorInt int);
method @ColorInt public int getColor();
method @ColorInt public int getColorDark();
@@ -992,7 +995,7 @@
field public static final androidx.car.app.model.CarColor YELLOW;
}
- @androidx.car.app.annotations.CarProtocol public final class CarIcon {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class CarIcon {
method public androidx.core.graphics.drawable.IconCompat? getIcon();
method public androidx.car.app.model.CarColor? getTint();
method public int getType();
@@ -1016,7 +1019,7 @@
method public androidx.car.app.model.CarIcon.Builder setTint(androidx.car.app.model.CarColor);
}
- @androidx.car.app.annotations.CarProtocol public final class CarIconSpan extends androidx.car.app.model.CarSpan {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class CarIconSpan extends androidx.car.app.model.CarSpan {
method public static androidx.car.app.model.CarIconSpan create(androidx.car.app.model.CarIcon);
method public static androidx.car.app.model.CarIconSpan create(androidx.car.app.model.CarIcon, int);
method public int getAlignment();
@@ -1026,7 +1029,7 @@
field public static final int ALIGN_CENTER = 2; // 0x2
}
- @androidx.car.app.annotations.CarProtocol public final class CarLocation {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class CarLocation {
method public static androidx.car.app.model.CarLocation create(double, double);
method public static androidx.car.app.model.CarLocation create(android.location.Location);
method public double getLatitude();
@@ -1038,7 +1041,7 @@
method public void updateDrawState(android.text.TextPaint);
}
- @androidx.car.app.annotations.CarProtocol public final class CarText {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class CarText {
method public static androidx.car.app.model.CarText create(CharSequence);
method public java.util.List<java.lang.CharSequence!> getVariants();
method public boolean isEmpty();
@@ -1052,7 +1055,7 @@
method public androidx.car.app.model.CarText build();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(2) public final class ClickableSpan extends androidx.car.app.model.CarSpan {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(2) public final class ClickableSpan extends androidx.car.app.model.CarSpan {
method public static androidx.car.app.model.ClickableSpan create(androidx.car.app.model.OnClickListener);
method public androidx.car.app.model.OnClickDelegate getOnClickDelegate();
}
@@ -1061,7 +1064,7 @@
method public String getContentId();
}
- @androidx.car.app.annotations.CarProtocol public final class DateTimeWithZone {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class DateTimeWithZone {
method public static androidx.car.app.model.DateTimeWithZone create(long, @IntRange(from=0xffff02e0, to=64800) int, String);
method public static androidx.car.app.model.DateTimeWithZone create(long, java.util.TimeZone);
method @RequiresApi(26) public static androidx.car.app.model.DateTimeWithZone create(java.time.ZonedDateTime);
@@ -1070,7 +1073,7 @@
method public String? getZoneShortName();
}
- @androidx.car.app.annotations.CarProtocol public final class Distance {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Distance {
method public static androidx.car.app.model.Distance create(double, int);
method public double getDisplayDistance();
method public int getDisplayUnit();
@@ -1083,23 +1086,23 @@
field public static final int UNIT_YARDS = 7; // 0x7
}
- @androidx.car.app.annotations.CarProtocol public final class DistanceSpan extends androidx.car.app.model.CarSpan {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class DistanceSpan extends androidx.car.app.model.CarSpan {
method public static androidx.car.app.model.DistanceSpan create(androidx.car.app.model.Distance);
method public androidx.car.app.model.Distance getDistance();
}
- @androidx.car.app.annotations.CarProtocol public final class DurationSpan extends androidx.car.app.model.CarSpan {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class DurationSpan extends androidx.car.app.model.CarSpan {
method public static androidx.car.app.model.DurationSpan create(long);
method @RequiresApi(26) public static androidx.car.app.model.DurationSpan create(java.time.Duration);
method public long getDurationSeconds();
}
- @androidx.car.app.annotations.CarProtocol public final class ForegroundCarColorSpan extends androidx.car.app.model.CarSpan {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class ForegroundCarColorSpan extends androidx.car.app.model.CarSpan {
method public static androidx.car.app.model.ForegroundCarColorSpan create(androidx.car.app.model.CarColor);
method public androidx.car.app.model.CarColor getColor();
}
- @androidx.car.app.annotations.CarProtocol public final class GridItem implements androidx.car.app.model.Item {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class GridItem implements androidx.car.app.model.Item {
method public androidx.car.app.model.CarIcon? getImage();
method public int getImageType();
method public androidx.car.app.model.OnClickDelegate? getOnClickDelegate();
@@ -1123,7 +1126,7 @@
method public androidx.car.app.model.GridItem.Builder setTitle(androidx.car.app.model.CarText);
}
- @androidx.car.app.annotations.CarProtocol public final class GridTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class GridTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.Action? getHeaderAction();
method public androidx.car.app.model.ItemList? getSingleList();
@@ -1141,7 +1144,7 @@
method public androidx.car.app.model.GridTemplate.Builder setTitle(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public final class Header {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class Header {
method public java.util.List<androidx.car.app.model.Action!> getEndHeaderActions();
method public androidx.car.app.model.Action? getStartHeaderAction();
method public androidx.car.app.model.CarText? getTitle();
@@ -1169,7 +1172,7 @@
@androidx.car.app.annotations.CarProtocol public interface Item {
}
- @androidx.car.app.annotations.CarProtocol public final class ItemList {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class ItemList {
method public java.util.List<androidx.car.app.model.Item!> getItems();
method public androidx.car.app.model.CarText? getNoItemsMessage();
method public androidx.car.app.model.OnItemVisibilityChangedDelegate? getOnItemVisibilityChangedDelegate();
@@ -1197,7 +1200,7 @@
method public void onSelected(int);
}
- @androidx.car.app.annotations.CarProtocol public final class ListTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class ListTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.Action? getHeaderAction();
method public java.util.List<androidx.car.app.model.SectionedItemList!> getSectionedLists();
@@ -1219,7 +1222,7 @@
method public androidx.car.app.model.ListTemplate.Builder setTitle(CharSequence);
}
- @androidx.car.app.annotations.RequiresCarApi(2) public final class LongMessageTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(2) public final class LongMessageTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public java.util.List<androidx.car.app.model.Action!> getActions();
method public androidx.car.app.model.Action? getHeaderAction();
@@ -1236,7 +1239,7 @@
method public androidx.car.app.model.LongMessageTemplate.Builder setTitle(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class MessageTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class MessageTemplate implements androidx.car.app.model.Template {
method @androidx.car.app.annotations.RequiresCarApi(2) public androidx.car.app.model.ActionStrip? getActionStrip();
method public java.util.List<androidx.car.app.model.Action!> getActions();
method public androidx.car.app.model.CarText? getDebugMessage();
@@ -1261,7 +1264,7 @@
method public androidx.car.app.model.MessageTemplate.Builder setTitle(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class Metadata {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Metadata {
method public androidx.car.app.model.Place? getPlace();
field public static final androidx.car.app.model.Metadata EMPTY_METADATA;
}
@@ -1302,7 +1305,7 @@
method public void sendSelected(int, androidx.car.app.OnDoneCallback);
}
- @androidx.car.app.annotations.CarProtocol public final class Pane {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Pane {
method public java.util.List<androidx.car.app.model.Action!> getActions();
method @androidx.car.app.annotations.RequiresCarApi(4) public androidx.car.app.model.CarIcon? getImage();
method public java.util.List<androidx.car.app.model.Row!> getRows();
@@ -1318,7 +1321,7 @@
method public androidx.car.app.model.Pane.Builder setLoading(boolean);
}
- @androidx.car.app.annotations.CarProtocol public final class PaneTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class PaneTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.Action? getHeaderAction();
method public androidx.car.app.model.Pane getPane();
@@ -1333,12 +1336,12 @@
method public androidx.car.app.model.PaneTemplate.Builder setTitle(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class ParkedOnlyOnClickListener implements androidx.car.app.model.OnClickListener {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class ParkedOnlyOnClickListener implements androidx.car.app.model.OnClickListener {
method public static androidx.car.app.model.ParkedOnlyOnClickListener create(androidx.car.app.model.OnClickListener);
method public void onClick();
}
- @androidx.car.app.annotations.CarProtocol public final class Place {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Place {
method public androidx.car.app.model.CarLocation getLocation();
method public androidx.car.app.model.PlaceMarker? getMarker();
}
@@ -1350,7 +1353,7 @@
method public androidx.car.app.model.Place.Builder setMarker(androidx.car.app.model.PlaceMarker);
}
- @androidx.car.app.annotations.CarProtocol public final class PlaceListMapTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class PlaceListMapTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.Place? getAnchor();
method public androidx.car.app.model.Action? getHeaderAction();
@@ -1375,7 +1378,7 @@
method public androidx.car.app.model.PlaceListMapTemplate.Builder setTitle(androidx.car.app.model.CarText);
}
- @androidx.car.app.annotations.CarProtocol public final class PlaceMarker {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class PlaceMarker {
method public androidx.car.app.model.CarColor? getColor();
method public androidx.car.app.model.CarIcon? getIcon();
method public int getIconType();
@@ -1392,7 +1395,7 @@
method public androidx.car.app.model.PlaceMarker.Builder setLabel(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class Row implements androidx.car.app.model.Item {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Row implements androidx.car.app.model.Item {
method @androidx.car.app.annotations.ExperimentalCarApi public java.util.List<androidx.car.app.model.Action!> getActions();
method public androidx.car.app.model.CarIcon? getImage();
method public androidx.car.app.model.Metadata? getMetadata();
@@ -1435,7 +1438,7 @@
method public void sendSearchTextChanged(String, androidx.car.app.OnDoneCallback);
}
- @androidx.car.app.annotations.CarProtocol public final class SearchTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class SearchTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.Action? getHeaderAction();
method public String? getInitialSearchText();
@@ -1463,13 +1466,13 @@
method public default void onSearchTextChanged(String);
}
- @androidx.car.app.annotations.CarProtocol public final class SectionedItemList {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class SectionedItemList {
method public static androidx.car.app.model.SectionedItemList create(androidx.car.app.model.ItemList, CharSequence);
method public androidx.car.app.model.CarText getHeader();
method public androidx.car.app.model.ItemList getItemList();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(6) public final class Tab implements androidx.car.app.model.Content {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(6) public final class Tab implements androidx.car.app.model.Content {
method public String getContentId();
method public androidx.car.app.model.CarIcon getIcon();
method public androidx.car.app.model.CarText getTitle();
@@ -1490,7 +1493,7 @@
method public void sendTabSelected(String, androidx.car.app.OnDoneCallback);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(6) public class TabContents implements androidx.car.app.model.Content {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(6) public class TabContents implements androidx.car.app.model.Content {
method public String getContentId();
method public androidx.car.app.model.Template getTemplate();
field public static final String CONTENT_ID = "TAB_CONTENTS_CONTENT_ID";
@@ -1501,7 +1504,7 @@
method public androidx.car.app.model.TabContents build();
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.RequiresCarApi(6) public class TabTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(6) public class TabTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.Action getHeaderAction();
method public androidx.car.app.model.TabCallbackDelegate getTabCallbackDelegate();
method public androidx.car.app.model.TabContents getTabContents();
@@ -1525,7 +1528,7 @@
@androidx.car.app.annotations.CarProtocol public interface Template {
}
- @androidx.car.app.annotations.CarProtocol public final class TemplateInfo {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class TemplateInfo {
ctor public TemplateInfo(Class<? extends androidx.car.app.model.Template>, String);
method public Class<? extends androidx.car.app.model.Template> getTemplateClass();
method public String getTemplateId();
@@ -1546,7 +1549,7 @@
method public static androidx.car.app.model.TemplateWrapper wrap(androidx.car.app.model.Template, String);
}
- @androidx.car.app.annotations.CarProtocol public final class Toggle {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Toggle {
method public androidx.car.app.model.OnCheckedChangeDelegate getOnCheckedChangeDelegate();
method public boolean isChecked();
method @androidx.car.app.annotations.RequiresCarApi(5) public boolean isEnabled();
@@ -1567,7 +1570,7 @@
package androidx.car.app.model.signin {
- @androidx.car.app.annotations.RequiresCarApi(2) public final class InputSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
+ @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(2) public final class InputSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
method public androidx.car.app.model.CarText? getDefaultValue();
method public androidx.car.app.model.CarText? getErrorMessage();
method public androidx.car.app.model.CarText? getHint();
@@ -1594,22 +1597,22 @@
method public androidx.car.app.model.signin.InputSignInMethod.Builder setShowKeyboardByDefault(boolean);
}
- @androidx.car.app.annotations.RequiresCarApi(2) public final class PinSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
+ @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(2) public final class PinSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
ctor public PinSignInMethod(CharSequence);
method public androidx.car.app.model.CarText getPinCode();
}
- @androidx.car.app.annotations.RequiresCarApi(2) public final class ProviderSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
+ @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(2) public final class ProviderSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
ctor public ProviderSignInMethod(androidx.car.app.model.Action);
method public androidx.car.app.model.Action getAction();
}
- @androidx.car.app.annotations.RequiresCarApi(4) public final class QRCodeSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
+ @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(4) public final class QRCodeSignInMethod implements androidx.car.app.model.signin.SignInTemplate.SignInMethod {
ctor public QRCodeSignInMethod(android.net.Uri);
method public android.net.Uri getUri();
}
- @androidx.car.app.annotations.RequiresCarApi(2) public final class SignInTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(2) public final class SignInTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public java.util.List<androidx.car.app.model.Action!> getActions();
method public androidx.car.app.model.CarText? getAdditionalText();
@@ -1657,7 +1660,7 @@
package androidx.car.app.navigation.model {
- @androidx.car.app.annotations.CarProtocol public final class Destination {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Destination {
method public androidx.car.app.model.CarText? getAddress();
method public androidx.car.app.model.CarIcon? getImage();
method public androidx.car.app.model.CarText? getName();
@@ -1671,7 +1674,7 @@
method public androidx.car.app.navigation.model.Destination.Builder setName(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class Lane {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Lane {
method public java.util.List<androidx.car.app.navigation.model.LaneDirection!> getDirections();
}
@@ -1681,7 +1684,7 @@
method public androidx.car.app.navigation.model.Lane build();
}
- @androidx.car.app.annotations.CarProtocol public final class LaneDirection {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class LaneDirection {
method public static androidx.car.app.navigation.model.LaneDirection create(int, boolean);
method public int getShape();
method public boolean isRecommended();
@@ -1697,7 +1700,7 @@
field public static final int SHAPE_U_TURN_RIGHT = 10; // 0xa
}
- @androidx.car.app.annotations.CarProtocol public final class Maneuver {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Maneuver {
method public androidx.car.app.model.CarIcon? getIcon();
method public int getRoundaboutExitAngle();
method public int getRoundaboutExitNumber();
@@ -1761,7 +1764,7 @@
method public androidx.car.app.navigation.model.Maneuver.Builder setRoundaboutExitNumber(@IntRange(from=1) int);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public final class MapController {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class MapController {
method public androidx.car.app.model.ActionStrip? getMapActionStrip();
method public androidx.car.app.navigation.model.PanModeDelegate? getPanModeDelegate();
}
@@ -1773,7 +1776,7 @@
method public androidx.car.app.navigation.model.MapController.Builder setPanModeListener(androidx.car.app.navigation.model.PanModeListener);
}
- @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.RequiresCarApi(5) public final class MapTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields @androidx.car.app.annotations.RequiresCarApi(5) public final class MapTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.Header? getHeader();
method public androidx.car.app.model.ItemList? getItemList();
@@ -1791,7 +1794,7 @@
method public androidx.car.app.navigation.model.MapTemplate.Builder setPane(androidx.car.app.model.Pane);
}
- @androidx.car.app.annotations.CarProtocol public final class MessageInfo implements androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class MessageInfo implements androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo {
method public androidx.car.app.model.CarIcon? getImage();
method public androidx.car.app.model.CarText? getText();
method public androidx.car.app.model.CarText? getTitle();
@@ -1807,7 +1810,7 @@
method public androidx.car.app.navigation.model.MessageInfo.Builder setTitle(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class NavigationTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class NavigationTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method public androidx.car.app.model.CarColor? getBackgroundColor();
method public androidx.car.app.navigation.model.TravelEstimate? getDestinationTravelEstimate();
@@ -1839,7 +1842,7 @@
method public void onPanModeChanged(boolean);
}
- @androidx.car.app.annotations.CarProtocol public final class PlaceListNavigationTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class PlaceListNavigationTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method @androidx.car.app.annotations.RequiresCarApi(5) public androidx.car.app.model.Header? getHeader();
method @Deprecated public androidx.car.app.model.Action? getHeaderAction();
@@ -1866,7 +1869,7 @@
method @Deprecated public androidx.car.app.navigation.model.PlaceListNavigationTemplate.Builder setTitle(androidx.car.app.model.CarText);
}
- @androidx.car.app.annotations.CarProtocol public final class RoutePreviewNavigationTemplate implements androidx.car.app.model.Template {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class RoutePreviewNavigationTemplate implements androidx.car.app.model.Template {
method public androidx.car.app.model.ActionStrip? getActionStrip();
method @androidx.car.app.annotations.RequiresCarApi(5) public androidx.car.app.model.Header? getHeader();
method @Deprecated public androidx.car.app.model.Action? getHeaderAction();
@@ -1893,7 +1896,7 @@
method @Deprecated public androidx.car.app.navigation.model.RoutePreviewNavigationTemplate.Builder setTitle(androidx.car.app.model.CarText);
}
- @androidx.car.app.annotations.CarProtocol public final class RoutingInfo implements androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class RoutingInfo implements androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo {
method public androidx.car.app.model.Distance? getCurrentDistance();
method public androidx.car.app.navigation.model.Step? getCurrentStep();
method public androidx.car.app.model.CarIcon? getJunctionImage();
@@ -1910,7 +1913,7 @@
method public androidx.car.app.navigation.model.RoutingInfo.Builder setNextStep(androidx.car.app.navigation.model.Step);
}
- @androidx.car.app.annotations.CarProtocol public final class Step {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Step {
method public androidx.car.app.model.CarText? getCue();
method public java.util.List<androidx.car.app.navigation.model.Lane!> getLanes();
method public androidx.car.app.model.CarIcon? getLanesImage();
@@ -1930,7 +1933,7 @@
method public androidx.car.app.navigation.model.Step.Builder setRoad(CharSequence);
}
- @androidx.car.app.annotations.CarProtocol public final class TravelEstimate {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class TravelEstimate {
method public androidx.car.app.model.DateTimeWithZone? getArrivalTimeAtDestination();
method public androidx.car.app.model.Distance? getRemainingDistance();
method public androidx.car.app.model.CarColor? getRemainingDistanceColor();
@@ -1953,7 +1956,7 @@
method @androidx.car.app.annotations.RequiresCarApi(5) public androidx.car.app.navigation.model.TravelEstimate.Builder setTripText(androidx.car.app.model.CarText);
}
- @androidx.car.app.annotations.CarProtocol public final class Trip {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Trip {
method public androidx.car.app.model.CarText? getCurrentRoad();
method public java.util.List<androidx.car.app.navigation.model.TravelEstimate!> getDestinationTravelEstimates();
method public java.util.List<androidx.car.app.navigation.model.Destination!> getDestinations();
@@ -2063,7 +2066,7 @@
package androidx.car.app.suggestion.model {
- @androidx.car.app.annotations.CarProtocol public final class Suggestion {
+ @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.KeepFields public final class Suggestion {
method public android.app.PendingIntent? getAction();
method public androidx.car.app.model.CarIcon? getIcon();
method public String getIdentifier();
diff --git a/car/app/app/api/public_plus_experimental_current.txt b/car/app/app/api/public_plus_experimental_current.txt
index 9fb0b45..b710163 100644
--- a/car/app/app/api/public_plus_experimental_current.txt
+++ b/car/app/app/api/public_plus_experimental_current.txt
@@ -1054,7 +1054,7 @@
method public double getLongitude();
}
- @Keep @androidx.car.app.annotations.CarProtocol public class CarSpan extends android.text.style.CharacterStyle {
+ @androidx.car.app.annotations.CarProtocol public class CarSpan extends android.text.style.CharacterStyle {
ctor public CarSpan();
method public void updateDrawState(android.text.TextPaint);
}
diff --git a/car/app/app/api/restricted_current.txt b/car/app/app/api/restricted_current.txt
index 0497df5..065ecce 100644
--- a/car/app/app/api/restricted_current.txt
+++ b/car/app/app/api/restricted_current.txt
@@ -634,7 +634,7 @@
method public double getLongitude();
}
- @Keep @androidx.car.app.annotations.CarProtocol public class CarSpan extends android.text.style.CharacterStyle {
+ @androidx.car.app.annotations.CarProtocol public class CarSpan extends android.text.style.CharacterStyle {
ctor public CarSpan();
method public void updateDrawState(android.text.TextPaint);
}
diff --git a/car/app/app/build.gradle b/car/app/app/build.gradle
index da527c4..d7ff189 100644
--- a/car/app/app/build.gradle
+++ b/car/app/app/build.gradle
@@ -91,10 +91,6 @@
resValue "string", "car_app_library_version", androidx.LibraryVersions.CAR_APP.toString()
consumerProguardFiles "proguard-rules.pro"
}
- lintOptions {
- // We rely on keeping a bunch of private variables in the library for serialization.
- disable("BanKeepAnnotation")
- }
testOptions.unitTests.includeAndroidResources = true
namespace "androidx.car.app"
diff --git a/car/app/app/proguard-rules.pro b/car/app/app/proguard-rules.pro
index fd43f97d..2ab8b09 100644
--- a/car/app/app/proguard-rules.pro
+++ b/car/app/app/proguard-rules.pro
@@ -7,3 +7,8 @@
# Keep all IInterfaces which are needed for host communications.
-keep class androidx.car.app.** extends android.os.IInterface { *; }
+
+# Keep all private final fields from a class.
+-keepclasseswithmembers @androidx.car.app.annotations.KeepFields class * {
+ *;
+}
\ No newline at end of file
diff --git a/car/app/app/src/main/java/androidx/car/app/AppInfo.java b/car/app/app/src/main/java/androidx/car/app/AppInfo.java
index d74fc85..25269f9 100644
--- a/car/app/app/src/main/java/androidx/car/app/AppInfo.java
+++ b/car/app/app/src/main/java/androidx/car/app/AppInfo.java
@@ -24,13 +24,13 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
import androidx.annotation.VisibleForTesting;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.versioning.CarAppApiLevel;
import androidx.car.app.versioning.CarAppApiLevels;
@@ -57,6 +57,7 @@
* @see CarContext#getCarAppApiLevel()
*/
@CarProtocol
+@KeepFields
public final class AppInfo {
/**
* Application meta-data tag used to define the minimum Car App API level this application is
@@ -69,13 +70,10 @@
*/
public static final String MIN_API_LEVEL_METADATA_KEY = "androidx.car.app.minCarApiLevel";
- @Keep
@Nullable
private final String mLibraryVersion;
- @Keep
@CarAppApiLevel
private final int mMinCarAppApiLevel;
- @Keep
@CarAppApiLevel
private final int mLatestCarAppApiLevel;
@@ -136,12 +134,12 @@
context.getPackageName(),
PackageManager.GET_META_DATA);
int apiLevel = applicationInfo.metaData != null
- ? applicationInfo.metaData.getInt(
+ ? applicationInfo.metaData.getInt(
MIN_API_LEVEL_METADATA_KEY, CarAppApiLevels.UNKNOWN)
- : CarAppApiLevels.UNKNOWN;
+ : CarAppApiLevels.UNKNOWN;
if (apiLevel == CarAppApiLevels.UNKNOWN) {
throw new IllegalArgumentException("Min API level not declared in manifest ("
- + MIN_API_LEVEL_METADATA_KEY + ")");
+ + MIN_API_LEVEL_METADATA_KEY + ")");
}
return apiLevel;
} catch (PackageManager.NameNotFoundException e) {
diff --git a/car/app/app/src/main/java/androidx/car/app/FailureResponse.java b/car/app/app/src/main/java/androidx/car/app/FailureResponse.java
index b5bb270..a12d6f3 100644
--- a/car/app/app/src/main/java/androidx/car/app/FailureResponse.java
+++ b/car/app/app/src/main/java/androidx/car/app/FailureResponse.java
@@ -24,11 +24,11 @@
import android.util.Log;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.serialization.BundlerException;
import java.lang.annotation.Retention;
@@ -42,6 +42,7 @@
* <p>This is used for the failure response for an {@link androidx.car.app.IOnDoneCallback}
*/
@CarProtocol
+@KeepFields
public final class FailureResponse {
/**
* The exception type of the failure.
@@ -71,10 +72,8 @@
public static final int RUNTIME_EXCEPTION = 5;
public static final int REMOTE_EXCEPTION = 6;
- @Keep
@Nullable
private final String mStackTrace;
- @Keep
@ErrorType
private final int mErrorType;
diff --git a/car/app/app/src/main/java/androidx/car/app/HandshakeInfo.java b/car/app/app/src/main/java/androidx/car/app/HandshakeInfo.java
index e118317..8fefaff 100644
--- a/car/app/app/src/main/java/androidx/car/app/HandshakeInfo.java
+++ b/car/app/app/src/main/java/androidx/car/app/HandshakeInfo.java
@@ -18,21 +18,20 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
/**
* A container for the information conveyed by the host after the handshake with the app is
* completed.
*/
@CarProtocol
+@KeepFields
public final class HandshakeInfo {
- @Keep
@Nullable
private final String mHostPackageName;
- @Keep
private final int mHostCarAppApiLevel;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/SessionInfo.java b/car/app/app/src/main/java/androidx/car/app/SessionInfo.java
index a971ce2..81ea916 100644
--- a/car/app/app/src/main/java/androidx/car/app/SessionInfo.java
+++ b/car/app/app/src/main/java/androidx/car/app/SessionInfo.java
@@ -18,13 +18,13 @@
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.Template;
import androidx.car.app.navigation.model.NavigationTemplate;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.versioning.CarAppApiLevel;
import androidx.car.app.versioning.CarAppApiLevels;
@@ -37,6 +37,7 @@
/** Information about a {@link Session}, such as the physical display and the session ID. */
@RequiresCarApi(6)
@CarProtocol
+@KeepFields
public class SessionInfo {
private static final char DIVIDER = '/';
@@ -85,12 +86,10 @@
}
/** A string identifier unique per physical display. */
- @Keep
@NonNull
private final String mSessionId;
/** The type of display the {@link Session} is rendering on. */
- @Keep
@DisplayType
private final int mDisplayType;
diff --git a/car/app/app/src/main/java/androidx/car/app/SurfaceContainer.java b/car/app/app/src/main/java/androidx/car/app/SurfaceContainer.java
index 3a5755f..c1dd6f4 100644
--- a/car/app/app/src/main/java/androidx/car/app/SurfaceContainer.java
+++ b/car/app/app/src/main/java/androidx/car/app/SurfaceContainer.java
@@ -18,21 +18,18 @@
import android.view.Surface;
-import androidx.annotation.Keep;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
/** A container for the {@link Surface} created by the host and its associated properties. */
@CarProtocol
+@KeepFields
public final class SurfaceContainer {
- @Keep
@Nullable
private final Surface mSurface;
- @Keep
private final int mWidth;
- @Keep
private final int mHeight;
- @Keep
private final int mDpi;
public SurfaceContainer(@Nullable Surface surface, int width, int height, int dpi) {
diff --git a/car/app/app/src/main/java/androidx/car/app/annotations/KeepFields.java b/car/app/app/src/main/java/androidx/car/app/annotations/KeepFields.java
new file mode 100644
index 0000000..4fff545
--- /dev/null
+++ b/car/app/app/src/main/java/androidx/car/app/annotations/KeepFields.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.car.app.annotations;
+
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
+
+import androidx.annotation.RestrictTo;
+import androidx.car.app.annotations.ExperimentalCarApi;
+
+/**
+ * Common interface to be used by Proguard rules to keep the class names and
+ * private final fields
+ *
+ */
+@ExperimentalCarApi
+@RestrictTo(LIBRARY)
+public @interface KeepFields {
+}
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/climate/CarClimateFeature.java b/car/app/app/src/main/java/androidx/car/app/hardware/climate/CarClimateFeature.java
index a58d15d..29ff10f 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/climate/CarClimateFeature.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/climate/CarClimateFeature.java
@@ -16,12 +16,12 @@
package androidx.car.app.hardware.climate;
-import androidx.annotation.Keep;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarZone;
+import androidx.car.app.annotations.KeepFields;
import java.util.ArrayList;
import java.util.Arrays;
@@ -36,12 +36,11 @@
@RequiresCarApi(5)
@MainThread
@ExperimentalCarApi
+@KeepFields
public final class CarClimateFeature {
- @Keep
@ClimateProfileRequest.ClimateProfileFeature
private final int mFeature;
- @Keep
@NonNull
private final List<CarZone> mCarZones;
@@ -106,8 +105,8 @@
/**
* Creates an instance of builder.
*
- * @param feature one of integer flags in ClimateStateFeature or
- * ClimateProfileFeatures
+ * @param feature one of integer flags in ClimateStateFeature or
+ * ClimateProfileFeatures
*/
public Builder(@ClimateProfileRequest.ClimateProfileFeature int feature) {
mFeature = feature;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/common/CarValue.java b/car/app/app/src/main/java/androidx/car/app/hardware/common/CarValue.java
index 078a0c2..1cf1dde 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/common/CarValue.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/common/CarValue.java
@@ -18,7 +18,6 @@
import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.OptIn;
@@ -26,6 +25,7 @@
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -41,6 +41,7 @@
*/
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class CarValue<T> {
/**
* Defines the possible status codes when trying to access car hardware properties, sensors,
@@ -89,15 +90,11 @@
@StatusCode
public static final int STATUS_UNAVAILABLE = 3;
- @Keep
@Nullable
private final T mValue;
- @Keep
private final long mTimestampMillis;
- @Keep
@StatusCode
private final int mStatus;
- @Keep
@NonNull
private final List<CarZone> mCarZones;
@@ -226,7 +223,7 @@
*
* @param value data to be returned with the result
* @param timestampMillis the time in milliseconds when the value was generated (see
- * {@link #getTimestampMillis})
+ * {@link #getTimestampMillis})
* @param status the status code associated with this value
*/
@OptIn(markerClass = ExperimentalCarApi.class)
@@ -242,7 +239,7 @@
*
* @param value data to be returned with the result
* @param timestampMillis the time in milliseconds when the value was generated (see
- * {@link #getTimestampMillis})
+ * {@link #getTimestampMillis})
* @param status the status code associated with this value
* @param zones the car zones associated with this value
*/
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/common/CarZone.java b/car/app/app/src/main/java/androidx/car/app/hardware/common/CarZone.java
index 7c2c718..ca2ea99 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/common/CarZone.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/common/CarZone.java
@@ -18,13 +18,13 @@
import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -45,6 +45,7 @@
@CarProtocol
@RequiresCarApi(5)
@ExperimentalCarApi
+@KeepFields
public final class CarZone {
/**
* Possible row values.
@@ -139,9 +140,7 @@
*/
public static final CarZone CAR_ZONE_GLOBAL = new CarZone.Builder().build();
- @Keep
private final int mRow;
- @Keep
private final int mColumn;
/** Returns one of the values in CarZoneRow. */
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/Accelerometer.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/Accelerometer.java
index 010983a..3ffa96b 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/Accelerometer.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/Accelerometer.java
@@ -17,12 +17,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.List;
import java.util.Objects;
@@ -30,9 +30,8 @@
/** Information about car specific accelerometers available from the car hardware. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class Accelerometer {
-
- @Keep
@NonNull
private final CarValue<List<Float>> mForces;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/CarHardwareLocation.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/CarHardwareLocation.java
index ae200f2..b286c93 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/CarHardwareLocation.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/CarHardwareLocation.java
@@ -21,19 +21,20 @@
import android.location.Location;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Information about car specific car location available from the car hardware. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class CarHardwareLocation {
/** @hide */
@@ -46,7 +47,6 @@
public static final CarValue<Location> UNKNOWN_LOCATION = new CarValue<>(null, 0,
CarValue.STATUS_UNKNOWN);
- @Keep
@NonNull
private final CarValue<Location> mLocation;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/Compass.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/Compass.java
index 9287ca1..72b32b1 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/Compass.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/Compass.java
@@ -17,12 +17,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.List;
import java.util.Objects;
@@ -30,9 +30,8 @@
/** Information about car specific compass available from the car hardware. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class Compass {
-
- @Keep
@NonNull
private final CarValue<List<Float>> mOrientations;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyLevel.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyLevel.java
index cb74f2b..96e39a8 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyLevel.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyLevel.java
@@ -20,7 +20,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
@@ -28,35 +27,30 @@
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarUnit;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Information of the energy (fuel and battery) levels from the car hardware. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class EnergyLevel {
-
- @Keep
@NonNull
private final CarValue<Float> mBatteryPercent;
- @Keep
@NonNull
private final CarValue<Float> mFuelPercent;
- @Keep
@NonNull
private final CarValue<Boolean> mEnergyIsLow;
- @Keep
@Nullable
private final CarValue<Float> mRangeRemainingMeters;
- @Keep
@NonNull
private final CarValue<@CarDistanceUnit Integer> mDistanceDisplayUnit;
- @Keep
@NonNull
private final CarValue<@CarVolumeUnit Integer> mFuelVolumeDisplayUnit;
@@ -94,7 +88,8 @@
return requireNonNull(mDistanceDisplayUnit);
}
- /** Returns the fuel volume display unit from the car hardware.
+ /**
+ * Returns the fuel volume display unit from the car hardware.
*
* <p>See {@link CarUnit} for possible volume values.
*/
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyProfile.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyProfile.java
index 2422ce9..370bacc 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyProfile.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/EnergyProfile.java
@@ -20,13 +20,13 @@
import static java.util.Objects.requireNonNull;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -38,6 +38,7 @@
/** Information about car hardware fuel profile such as fuel types and connector ports. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class EnergyProfile {
/**
@@ -186,11 +187,9 @@
@FuelType
public static final int FUEL_TYPE_OTHER = 12;
- @Keep
@NonNull
private final CarValue<List<@EvConnectorType Integer>> mEvConnectorTypes;
- @Keep
@NonNull
private final CarValue<List<@FuelType Integer>> mFuelTypes;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/EvStatus.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/EvStatus.java
index 5ae8591..8d9c55c 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/EvStatus.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/EvStatus.java
@@ -18,25 +18,23 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Information about EV car port status */
@CarProtocol
@ExperimentalCarApi
+@KeepFields
public class EvStatus {
-
- @Keep
@NonNull
private final CarValue<Boolean> mEvChargePortOpen;
- @Keep
@NonNull
private final CarValue<Boolean> mEvChargePortConnected;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/Gyroscope.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/Gyroscope.java
index 7ecc689..7565530 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/Gyroscope.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/Gyroscope.java
@@ -17,12 +17,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.List;
import java.util.Objects;
@@ -30,8 +30,8 @@
/** Information about car specific gyroscopes available from the car hardware. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class Gyroscope {
- @Keep
@NonNull
private final CarValue<List<Float>> mRotations;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/Mileage.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/Mileage.java
index 783fd0f..2646d9f 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/Mileage.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/Mileage.java
@@ -19,25 +19,24 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarUnit;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Information about car mileage. */
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class Mileage {
- @Keep
@Nullable
private final CarValue<Float> mOdometerMeters;
- @Keep
@NonNull
private final CarValue<@CarDistanceUnit Integer> mDistanceDisplayUnit;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/Model.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/Model.java
index 7a0328d..d160e61 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/Model.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/Model.java
@@ -17,12 +17,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -31,16 +31,14 @@
*/
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class Model {
- @Keep
@NonNull
private final CarValue<String> mName;
- @Keep
@NonNull
private final CarValue<Integer> mYear;
- @Keep
@NonNull
private final CarValue<String> mManufacturer;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/Speed.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/Speed.java
index bd0c4eb..aa85ace 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/Speed.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/Speed.java
@@ -19,13 +19,13 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarUnit;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -34,16 +34,14 @@
*/
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class Speed {
- @Keep
@Nullable
private final CarValue<Float> mRawSpeedMetersPerSecond;
- @Keep
@Nullable
private final CarValue<Float> mDisplaySpeedMetersPerSecond;
- @Keep
@NonNull
private final CarValue<@CarSpeedUnit Integer> mSpeedDisplayUnit;
diff --git a/car/app/app/src/main/java/androidx/car/app/hardware/info/TollCard.java b/car/app/app/src/main/java/androidx/car/app/hardware/info/TollCard.java
index 9383664..6bd976a 100644
--- a/car/app/app/src/main/java/androidx/car/app/hardware/info/TollCard.java
+++ b/car/app/app/src/main/java/androidx/car/app/hardware/info/TollCard.java
@@ -20,13 +20,13 @@
import static java.util.Objects.requireNonNull;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.hardware.common.CarValue;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -39,6 +39,7 @@
*/
@CarProtocol
@RequiresCarApi(3)
+@KeepFields
public final class TollCard {
/**
@@ -87,7 +88,6 @@
@TollCardState
public static final int TOLLCARD_STATE_NOT_INSERTED = 3;
- @Keep
@NonNull
private final CarValue<@TollCardState Integer> mCardState;
diff --git a/car/app/app/src/main/java/androidx/car/app/media/CarAudioCallbackDelegate.java b/car/app/app/src/main/java/androidx/car/app/media/CarAudioCallbackDelegate.java
index 29055b4..db91b33 100644
--- a/car/app/app/src/main/java/androidx/car/app/media/CarAudioCallbackDelegate.java
+++ b/car/app/app/src/main/java/androidx/car/app/media/CarAudioCallbackDelegate.java
@@ -21,10 +21,10 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.annotations.RequiresCarApi;
/**
@@ -35,8 +35,8 @@
*/
@CarProtocol
@RequiresCarApi(5)
+@KeepFields
public class CarAudioCallbackDelegate {
- @Keep
@Nullable
private final ICarAudioCallback mCallback;
@@ -67,9 +67,9 @@
mCallback = null;
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ // We need to keep these stub for Bundler serialization logic.
+ @KeepFields
private static class CarAudioCallbackStub extends ICarAudioCallback.Stub {
- @Keep
@Nullable
private final CarAudioCallback mCarAudioCallback;
diff --git a/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneRequest.java b/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneRequest.java
index ec6290c..c588d3c 100644
--- a/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneRequest.java
+++ b/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneRequest.java
@@ -20,11 +20,11 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
/**
* The request for a call to open microphone.
@@ -34,8 +34,8 @@
*/
@CarProtocol
@RequiresCarApi(5)
+@KeepFields
public final class OpenMicrophoneRequest {
- @Keep
@Nullable
private final CarAudioCallbackDelegate mCarAudioCallbackDelegate;
diff --git a/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneResponse.java b/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneResponse.java
index 62f62bb..68a9776 100644
--- a/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneResponse.java
+++ b/car/app/app/src/main/java/androidx/car/app/media/OpenMicrophoneResponse.java
@@ -21,11 +21,11 @@
import android.annotation.SuppressLint;
import android.os.ParcelFileDescriptor;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import java.io.IOException;
import java.io.InputStream;
@@ -38,12 +38,10 @@
*/
@CarProtocol
@RequiresCarApi(5)
+@KeepFields
public final class OpenMicrophoneResponse {
- @Keep
@Nullable
private final CarAudioCallbackDelegate mCarAudioCallbackDelegate;
-
- @Keep
@Nullable
private final ParcelFileDescriptor mCarMicrophoneDescriptor;
diff --git a/car/app/app/src/main/java/androidx/car/app/messaging/model/CarMessage.java b/car/app/app/src/main/java/androidx/car/app/messaging/model/CarMessage.java
index 9cc42c6..51e24b5 100644
--- a/car/app/app/src/main/java/androidx/car/app/messaging/model/CarMessage.java
+++ b/car/app/app/src/main/java/androidx/car/app/messaging/model/CarMessage.java
@@ -20,31 +20,26 @@
import android.os.Bundle;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.CarText;
+import androidx.car.app.annotations.KeepFields;
import androidx.core.app.Person;
/** Represents a single message in a {@link ConversationItem} */
@ExperimentalCarApi
@CarProtocol
@RequiresCarApi(6)
+@KeepFields
public class CarMessage {
- @Keep
@NonNull
private final Bundle mSender;
-
- @Keep
@NonNull
private final CarText mBody;
- @Keep
private final long mReceivedTimeEpochMillis;
-
- @Keep
private final boolean mIsRead;
CarMessage(@NonNull Builder builder) {
@@ -64,7 +59,8 @@
/** Returns a {@link Person} representing the message sender */
- @NonNull public Person getSender() {
+ @NonNull
+ public Person getSender() {
return Person.fromBundle(mSender);
}
diff --git a/car/app/app/src/main/java/androidx/car/app/messaging/model/ConversationCallbackDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/messaging/model/ConversationCallbackDelegateImpl.java
index a31fd66..5ab50b0 100644
--- a/car/app/app/src/main/java/androidx/car/app/messaging/model/ConversationCallbackDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/messaging/model/ConversationCallbackDelegateImpl.java
@@ -22,7 +22,6 @@
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
@@ -30,6 +29,7 @@
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.utils.RemoteUtils;
@@ -45,8 +45,9 @@
@RestrictTo(LIBRARY)
@CarProtocol
@RequiresCarApi(6)
+@KeepFields
class ConversationCallbackDelegateImpl implements ConversationCallbackDelegate {
- @Keep
+
@Nullable
private final IConversationCallback mConversationCallbackBinder;
@@ -81,8 +82,9 @@
}
}
+ @KeepFields
private static class ConversationCallbackStub extends IConversationCallback.Stub {
- @Keep
+
@NonNull
private final ConversationCallback mConversationCallback;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Action.java b/car/app/app/src/main/java/androidx/car/app/model/Action.java
index 2b47ca2..2d3b8fe 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Action.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Action.java
@@ -29,7 +29,6 @@
import androidx.activity.OnBackPressedCallback;
import androidx.activity.OnBackPressedDispatcher;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
@@ -37,6 +36,7 @@
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.lifecycle.LifecycleOwner;
import java.lang.annotation.Retention;
@@ -62,6 +62,7 @@
* the action will note them accordingly.
*/
@CarProtocol
+@KeepFields
public final class Action {
/**
* The type of action represented by the {@link Action} instance.
@@ -187,23 +188,16 @@
@NonNull
public static final Action PAN = new Action(TYPE_PAN);
- @Keep
private final boolean mIsEnabled;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final CarIcon mIcon;
- @Keep
private final CarColor mBackgroundColor;
- @Keep
@Nullable
private final OnClickDelegate mOnClickDelegate;
- @Keep
@ActionType
private final int mType;
- @Keep
@ActionFlag
private final int mFlags;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/ActionStrip.java b/car/app/app/src/main/java/androidx/car/app/model/ActionStrip.java
index fad72b3..44f88a2 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/ActionStrip.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/ActionStrip.java
@@ -20,12 +20,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.Action.ActionType;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -46,8 +46,8 @@
* supported.
*/
@CarProtocol
+@KeepFields
public final class ActionStrip {
- @Keep
private final List<Action> mActions;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Alert.java b/car/app/app/src/main/java/androidx/car/app/model/Alert.java
index 4638a8d..43b0247 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Alert.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Alert.java
@@ -20,12 +20,12 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -37,28 +37,22 @@
*/
@CarProtocol
@RequiresCarApi(5)
+@KeepFields
public final class Alert {
/* Maximum number of actions allowed on the alert. */
private static final int MAX_ACTION_COUNT = 2;
- @Keep
private final int mId;
- @Keep
@Nullable
private final CarIcon mIcon;
- @Keep
@NonNull
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mSubtitle;
- @Keep
@NonNull
private final List<Action> mActions;
- @Keep
private final long mDuration;
- @Keep
@Nullable
private final AlertCallbackDelegate mCallbackDelegate;
@@ -186,11 +180,11 @@
*
* <p>Text spans are supported.
*
- * @param alertId The unique identifier used for the alert. Alerts with the same id are
- * considered equal.
- * @param title The title of the alert.
+ * @param alertId The unique identifier used for the alert. Alerts with the same
+ * id are considered equal.
+ * @param title The title of the alert.
* @param durationMillis The maximum duration the alert can be shown in milli seconds.
- * @throws NullPointerException if {@code title} is {@code null}
+ * @throws NullPointerException if {@code title} is {@code null}
* @throws IllegalArgumentException if {@code duration} is not positive
* @see CarText
*/
diff --git a/car/app/app/src/main/java/androidx/car/app/model/AlertCallbackDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/AlertCallbackDelegateImpl.java
index a96b641..ca5e408 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/AlertCallbackDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/AlertCallbackDelegateImpl.java
@@ -23,12 +23,12 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
/**
@@ -37,9 +37,8 @@
* @hide
*/
@RestrictTo(LIBRARY)
+@KeepFields
public class AlertCallbackDelegateImpl implements AlertCallbackDelegate {
-
- @Keep
@Nullable
private final IAlertCallback mCallback;
@@ -78,7 +77,7 @@
}
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class AlertCallbackStub extends IAlertCallback.Stub {
private final AlertCallback mCallback;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/CarColor.java b/car/app/app/src/main/java/androidx/car/app/model/CarColor.java
index e09d29e..b383013 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/CarColor.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/CarColor.java
@@ -20,11 +20,11 @@
import androidx.annotation.ColorInt;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -87,6 +87,7 @@
* instead if the custom color does not pass the contrast requirements.
*/
@CarProtocol
+@KeepFields
public final class CarColor {
/**
* The type of color represented by the {@link CarColor} instance.
@@ -212,17 +213,14 @@
@NonNull
public static final CarColor YELLOW = create(TYPE_YELLOW);
- @Keep
@CarColorType
private final int mType;
/** A light-variant custom color-int, used when the type is {@link #TYPE_CUSTOM}. */
- @Keep
@ColorInt
private final int mColor;
/** A dark-variant custom color-int, used when the type is {@link #TYPE_CUSTOM}. */
- @Keep
@ColorInt
private final int mColorDark;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/CarIcon.java b/car/app/app/src/main/java/androidx/car/app/model/CarIcon.java
index 3e42b54f..f1deda5 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/CarIcon.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/CarIcon.java
@@ -26,7 +26,6 @@
import android.graphics.PorterDuff.Mode;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
@@ -34,6 +33,7 @@
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarColorConstraints;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.core.graphics.drawable.IconCompat;
import java.lang.annotation.Retention;
@@ -91,6 +91,7 @@
* }</pre>
*/
@CarProtocol
+@KeepFields
public final class CarIcon {
/** Matches with {@link android.graphics.drawable.Icon#TYPE_RESOURCE} */
private static final int TYPE_RESOURCE = 2;
@@ -190,13 +191,10 @@
@NonNull
public static final CarIcon PAN = CarIcon.forStandardType(TYPE_PAN);
- @Keep
@CarIconType
private final int mType;
- @Keep
@Nullable
private final IconCompat mIcon;
- @Keep
@Nullable
private final CarColor mTint;
@@ -341,11 +339,11 @@
/** A builder of {@link CarIcon}. */
public static final class Builder {
@Nullable
- private IconCompat mIcon;
+ private final IconCompat mIcon;
@Nullable
private CarColor mTint;
@CarIconType
- private int mType;
+ private final int mType;
/**
* Sets the tint of the icon to the given {@link CarColor}.
@@ -358,7 +356,7 @@
* <p>The tint mode used to blend this color is {@link Mode#SRC_IN}.
*
* <p>Depending on contrast requirements, capabilities of the vehicle screens, or other
- * factors, the color may be ignored by the host or overridden by the vehicle system.
+ * factors, the color may be ignored by the host or overridden by the vehicle system.
*
* @throws NullPointerException if {@code tin} is {@code null}
* @see CarColor
diff --git a/car/app/app/src/main/java/androidx/car/app/model/CarIconSpan.java b/car/app/app/src/main/java/androidx/car/app/model/CarIconSpan.java
index 363a526..e301d93 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/CarIconSpan.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/CarIconSpan.java
@@ -21,12 +21,12 @@
import static java.util.Objects.requireNonNull;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -60,6 +60,7 @@
* @see CarIcon
*/
@CarProtocol
+@KeepFields
public final class CarIconSpan extends CarSpan {
/**
* Indicates how to align a car icon span with its surrounding text.
@@ -99,10 +100,8 @@
public static final int ALIGN_CENTER = 2;
@Nullable
- @Keep
private final CarIcon mIcon;
@Alignment
- @Keep
private final int mAlignment;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/model/CarLocation.java b/car/app/app/src/main/java/androidx/car/app/model/CarLocation.java
index a0d94bd..8055b63 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/CarLocation.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/CarLocation.java
@@ -21,17 +21,16 @@
import android.location.Location;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
/** Represents a geographical location with a latitude and a longitude. */
@CarProtocol
+@KeepFields
public final class CarLocation {
- @Keep
private final double mLat;
- @Keep
private final double mLng;
/** Returns a new instance of a {@link CarLocation}. */
diff --git a/car/app/app/src/main/java/androidx/car/app/model/CarSpan.java b/car/app/app/src/main/java/androidx/car/app/model/CarSpan.java
index e9c09f1..e556b87 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/CarSpan.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/CarSpan.java
@@ -19,9 +19,9 @@
import android.text.TextPaint;
import android.text.style.CharacterStyle;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
/**
* Base class for all span types allowed for a car app.
@@ -29,7 +29,7 @@
* @see CarText
*/
@CarProtocol
-@Keep
+@KeepFields
public class CarSpan extends CharacterStyle {
@Override
public void updateDrawState(@NonNull TextPaint tp) {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/CarText.java b/car/app/app/src/main/java/androidx/car/app/model/CarText.java
index 6b4347f..c635052 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/CarText.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/CarText.java
@@ -23,11 +23,11 @@
import android.text.SpannableString;
import android.text.Spanned;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.utils.CollectionUtils;
import androidx.car.app.utils.StringUtils;
@@ -83,14 +83,11 @@
* the text before sending it to the host.
*/
@CarProtocol
+@KeepFields
public final class CarText {
- @Keep
private final String mText;
- @Keep
private final List<String> mTextVariants;
- @Keep
private final List<SpanWrapper> mSpans;
- @Keep
private final List<List<SpanWrapper>> mSpansForVariants;
/**
@@ -282,14 +279,11 @@
* @hide
*/
@RestrictTo(LIBRARY)
+ @KeepFields
public static class SpanWrapper {
- @Keep
private final int mStart;
- @Keep
private final int mEnd;
- @Keep
private final int mFlags;
- @Keep
@NonNull
private final CarSpan mCarSpan;
@@ -352,10 +346,9 @@
}
/** A builder of {@link CarText}. */
+ @KeepFields
public static final class Builder {
- @Keep
CharSequence mText;
- @Keep
List<CharSequence> mTextVariants = new ArrayList<>();
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/model/ClickableSpan.java b/car/app/app/src/main/java/androidx/car/app/model/ClickableSpan.java
index 4fa6bd8..7bf2653 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/ClickableSpan.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/ClickableSpan.java
@@ -21,11 +21,11 @@
import android.annotation.SuppressLint;
import android.os.Looper;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -51,8 +51,8 @@
*/
@RequiresCarApi(2)
@CarProtocol
+@KeepFields
public final class ClickableSpan extends CarSpan {
- @Keep
@Nullable
private final OnClickDelegate mOnClickDelegate;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/DateTimeWithZone.java b/car/app/app/src/main/java/androidx/car/app/model/DateTimeWithZone.java
index 00b89cb..4807010 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/DateTimeWithZone.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/DateTimeWithZone.java
@@ -25,11 +25,11 @@
import androidx.annotation.DoNotInline;
import androidx.annotation.IntRange;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -55,16 +55,14 @@
*/
@SuppressWarnings("MissingSummary")
@CarProtocol
+@KeepFields
public final class DateTimeWithZone {
/** The maximum allowed offset for a time zone, in seconds. */
private static final long MAX_ZONE_OFFSET_SECONDS = 18 * HOURS.toSeconds(1);
- @Keep
private final long mTimeSinceEpochMillis;
- @Keep
private final int mZoneOffsetSeconds;
@Nullable
- @Keep
private final String mZoneShortName;
/** Returns the number of milliseconds from the epoch of 1970-01-01T00:00:00Z. */
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Distance.java b/car/app/app/src/main/java/androidx/car/app/model/Distance.java
index ca961fe..58dc39a 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Distance.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Distance.java
@@ -19,11 +19,11 @@
import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -32,6 +32,7 @@
/** Represents a distance value and how it should be displayed in the UI. */
@CarProtocol
+@KeepFields
public final class Distance {
/**
* Possible units used to display {@link Distance}
@@ -86,9 +87,7 @@
@Unit
public static final int UNIT_YARDS = 7;
- @Keep
private final double mDisplayDistance;
- @Keep
@Unit
private final int mDisplayUnit;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/DistanceSpan.java b/car/app/app/src/main/java/androidx/car/app/model/DistanceSpan.java
index 56ccacd..27d2861 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/DistanceSpan.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/DistanceSpan.java
@@ -18,10 +18,10 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -59,9 +59,9 @@
* }</pre>
*/
@CarProtocol
+@KeepFields
public final class DistanceSpan extends CarSpan {
@Nullable
- @Keep
private final Distance mDistance;
/** Creates a {@link DistanceSpan} from a {@link CarIcon}. */
diff --git a/car/app/app/src/main/java/androidx/car/app/model/DurationSpan.java b/car/app/app/src/main/java/androidx/car/app/model/DurationSpan.java
index 6361c8c..baf74f7 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/DurationSpan.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/DurationSpan.java
@@ -21,11 +21,11 @@
import android.annotation.SuppressLint;
import androidx.annotation.DoNotInline;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.time.Duration;
@@ -55,8 +55,8 @@
* }</pre>
*/
@CarProtocol
+@KeepFields
public final class DurationSpan extends CarSpan {
- @Keep
private final long mDurationSeconds;
/** Creates a {@link DurationSpan} with the given duration. */
diff --git a/car/app/app/src/main/java/androidx/car/app/model/ForegroundCarColorSpan.java b/car/app/app/src/main/java/androidx/car/app/model/ForegroundCarColorSpan.java
index b33a565..1fbfd03 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/ForegroundCarColorSpan.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/ForegroundCarColorSpan.java
@@ -20,11 +20,11 @@
import android.text.style.ForegroundColorSpan;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarColorConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -49,8 +49,8 @@
* @see ForegroundColorSpan
*/
@CarProtocol
+@KeepFields
public final class ForegroundCarColorSpan extends CarSpan {
- @Keep
private final CarColor mCarColor;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/model/GridItem.java b/car/app/app/src/main/java/androidx/car/app/model/GridItem.java
index 4b410d0..3eaa380 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/GridItem.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/GridItem.java
@@ -24,7 +24,6 @@
import android.os.Looper;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
@@ -32,6 +31,7 @@
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -41,6 +41,7 @@
* Represents a grid item with an image and an optional title.
*/
@CarProtocol
+@KeepFields
public final class GridItem implements Item {
/**
* The type of images supported within grid items.
@@ -74,21 +75,15 @@
*/
public static final int IMAGE_TYPE_LARGE = (1 << 1);
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mText;
- @Keep
@Nullable
private final CarIcon mImage;
- @Keep
@GridItemImageType
private final int mImageType;
- @Keep
@Nullable
private final OnClickDelegate mOnClickDelegate;
@@ -307,7 +302,7 @@
*
* This text is truncated at the end to fit in a single line below the title
*
- * @throws NullPointerException if {@code text} is {@code null}
+ * @throws NullPointerException if {@code text} is {@code null}
* @throws IllegalArgumentException if {@code text} contains unsupported spans
*/
@NonNull
diff --git a/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java
index 5116155..8cf1272 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/GridTemplate.java
@@ -21,11 +21,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Collections;
import java.util.Objects;
@@ -46,19 +46,15 @@
* </ul>
*/
@CarProtocol
+@KeepFields
public final class GridTemplate implements Template {
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
@Nullable
private final ItemList mSingleList;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Header.java b/car/app/app/src/main/java/androidx/car/app/model/Header.java
index c84814f..490659e 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Header.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Header.java
@@ -21,12 +21,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -39,14 +39,12 @@
*/
@RequiresCarApi(5)
@CarProtocol
+@KeepFields
public final class Header {
- @Keep
@NonNull
private final List<Action> mEndHeaderActions;
- @Keep
@Nullable
private final Action mStartHeaderAction;
- @Keep
@Nullable
private final CarText mTitle;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/InputCallbackDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/InputCallbackDelegateImpl.java
index e44cfa5..60b43e1 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/InputCallbackDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/InputCallbackDelegateImpl.java
@@ -23,12 +23,12 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
/**
@@ -38,8 +38,8 @@
* @hide
*/
@RestrictTo(LIBRARY)
+@KeepFields
public class InputCallbackDelegateImpl implements InputCallbackDelegate {
- @Keep
@Nullable
private final IInputCallback mCallback;
@@ -80,7 +80,7 @@
mCallback = null;
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class OnInputCallbackStub extends IInputCallback.Stub {
private final InputCallback mCallback;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/ItemList.java b/car/app/app/src/main/java/androidx/car/app/model/ItemList.java
index c6cce4e..8092881 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/ItemList.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/ItemList.java
@@ -22,11 +22,11 @@
import android.os.Looper;
import androidx.annotation.IntRange;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -40,6 +40,7 @@
* ListTemplate}.
*/
@CarProtocol
+@KeepFields
public final class ItemList {
/**
* A listener for handling selection events for lists with selectable items.
@@ -74,17 +75,12 @@
void onItemVisibilityChanged(int startIndex, int endIndex);
}
- @Keep
private final int mSelectedIndex;
- @Keep
private final List<Item> mItems;
- @Keep
@Nullable
private final OnSelectedDelegate mOnSelectedDelegate;
- @Keep
@Nullable
private final OnItemVisibilityChangedDelegate mOnItemVisibilityChangedDelegate;
- @Keep
@Nullable
private final CarText mNoItemsMessage;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/ListTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/ListTemplate.java
index 60fce30..ac36e87 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/ListTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/ListTemplate.java
@@ -22,13 +22,13 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -56,21 +56,16 @@
* </ul>
*/
@CarProtocol
+@KeepFields
public final class ListTemplate implements Template {
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
@Nullable
private final ItemList mSingleList;
- @Keep
private final List<SectionedItemList> mSectionedLists;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/LongMessageTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/LongMessageTemplate.java
index f8710c8..84c1565 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/LongMessageTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/LongMessageTemplate.java
@@ -22,12 +22,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -47,19 +47,15 @@
* @see Screen#onGetTemplate()
*/
@RequiresCarApi(2)
+@KeepFields
public final class LongMessageTemplate implements Template {
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mMessage;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
private final List<Action> mActionList;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/MessageTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/MessageTemplate.java
index 0ea9900..d398a38 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/MessageTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/MessageTemplate.java
@@ -25,13 +25,13 @@
import android.util.Log;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -49,27 +49,20 @@
* considered a refresh of a previous one if the title and messages have not changed.
*/
@CarProtocol
+@KeepFields
public final class MessageTemplate implements Template {
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mMessage;
- @Keep
@Nullable
private final CarText mDebugMessage;
- @Keep
@Nullable
private final CarIcon mIcon;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
private final List<Action> mActionList;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Metadata.java b/car/app/app/src/main/java/androidx/car/app/model/Metadata.java
index ef0176c..5412381 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Metadata.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Metadata.java
@@ -18,20 +18,19 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** A metadata class used for attaching additional properties to models. */
@CarProtocol
+@KeepFields
public final class Metadata {
/** An empty {@link Metadata} instance. */
public static final Metadata EMPTY_METADATA = new Builder().build();
-
- @Keep
@Nullable
private final Place mPlace;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/OnCheckedChangeDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/OnCheckedChangeDelegateImpl.java
index 597b5d3..2daee02 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/OnCheckedChangeDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/OnCheckedChangeDelegateImpl.java
@@ -23,13 +23,13 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.model.Toggle.OnCheckedChangeListener;
import androidx.car.app.utils.RemoteUtils;
@@ -40,9 +40,8 @@
*/
@RestrictTo(LIBRARY)
@CarProtocol
+@KeepFields
public class OnCheckedChangeDelegateImpl implements OnCheckedChangeDelegate {
-
- @Keep
@Nullable
private final IOnCheckedChangeListener mStub;
@@ -72,8 +71,9 @@
return new OnCheckedChangeDelegateImpl(listener);
}
- @Keep // We need to keep these stub for Bundler serialization logic.
- private static class OnCheckedChangeListenerStub extends IOnCheckedChangeListener.Stub {
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
+ private static class OnCheckedChangeListenerStub extends
+ IOnCheckedChangeListener.Stub {
private final OnCheckedChangeListener mListener;
OnCheckedChangeListenerStub(OnCheckedChangeListener listener) {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/OnClickDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/OnClickDelegateImpl.java
index 47521a1..7ec79ae 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/OnClickDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/OnClickDelegateImpl.java
@@ -23,13 +23,13 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
/**
@@ -39,11 +39,9 @@
*/
@RestrictTo(LIBRARY)
@CarProtocol
+@KeepFields
public class OnClickDelegateImpl implements OnClickDelegate {
-
- @Keep
private final boolean mIsParkedOnly;
- @Keep
@Nullable
private final IOnClickListener mListener;
@@ -85,7 +83,7 @@
mIsParkedOnly = false;
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class OnClickListenerStub extends IOnClickListener.Stub {
private final OnClickListener mOnClickListener;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/OnContentRefreshDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/OnContentRefreshDelegateImpl.java
index 6f9c90d..a7474d8 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/OnContentRefreshDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/OnContentRefreshDelegateImpl.java
@@ -23,13 +23,13 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
/**
@@ -39,8 +39,8 @@
*/
@RestrictTo(LIBRARY)
@CarProtocol
+@KeepFields
public class OnContentRefreshDelegateImpl implements OnContentRefreshDelegate {
- @Keep
@Nullable
private final IOnContentRefreshListener mListener;
@@ -73,8 +73,9 @@
mListener = null;
}
- @Keep // We need to keep these stub for Bundler serialization logic.
- private static class OnContentRefreshListenerStub extends IOnContentRefreshListener.Stub {
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
+ private static class OnContentRefreshListenerStub extends
+ IOnContentRefreshListener.Stub {
private final OnContentRefreshListener mOnContentRefreshListener;
OnContentRefreshListenerStub(OnContentRefreshListener onContentRefreshListener) {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/OnItemVisibilityChangedDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/OnItemVisibilityChangedDelegateImpl.java
index d49cfd5..d8fad0c 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/OnItemVisibilityChangedDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/OnItemVisibilityChangedDelegateImpl.java
@@ -23,13 +23,13 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.model.ItemList.OnItemVisibilityChangedListener;
import androidx.car.app.utils.RemoteUtils;
@@ -40,10 +40,9 @@
*/
@RestrictTo(LIBRARY)
@CarProtocol
+@KeepFields
public class OnItemVisibilityChangedDelegateImpl implements
OnItemVisibilityChangedDelegate {
-
- @Keep
@Nullable
private final IOnItemVisibilityChangedListener mStub;
@@ -77,7 +76,7 @@
}
/** Stub class for the {@link IOnItemVisibilityChangedListener} interface. */
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class OnItemVisibilityChangedListenerStub
extends IOnItemVisibilityChangedListener.Stub {
private final OnItemVisibilityChangedListener mListener;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/OnSelectedDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/OnSelectedDelegateImpl.java
index f1e7414..d255a60 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/OnSelectedDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/OnSelectedDelegateImpl.java
@@ -23,12 +23,12 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.model.ItemList.OnSelectedListener;
import androidx.car.app.utils.RemoteUtils;
@@ -38,9 +38,8 @@
* @hide
*/
@RestrictTo(LIBRARY)
+@KeepFields
public class OnSelectedDelegateImpl implements OnSelectedDelegate {
-
- @Keep
@Nullable
private final IOnSelectedListener mStub;
@@ -70,7 +69,7 @@
return new OnSelectedDelegateImpl(listener);
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class OnSelectedListenerStub extends IOnSelectedListener.Stub {
private final OnSelectedListener mListener;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Pane.java b/car/app/app/src/main/java/androidx/car/app/model/Pane.java
index c46d156..8dd8198 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Pane.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Pane.java
@@ -18,11 +18,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -35,14 +35,11 @@
* that users can perform based on such content.
*/
@CarProtocol
+@KeepFields
public final class Pane {
- @Keep
private final List<Action> mActionList;
- @Keep
private final List<Row> mRows;
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final CarIcon mImage;
@@ -167,7 +164,7 @@
*
* <p>By default, no actions are displayed.
*
- * @throws NullPointerException if {@code action} is {@code null}
+ * @throws NullPointerException if {@code action} is {@code null}
*/
@NonNull
public Builder addAction(@NonNull Action action) {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/PaneTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/PaneTemplate.java
index 6b5d0ad..3a1a8e6 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/PaneTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/PaneTemplate.java
@@ -23,11 +23,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Collections;
import java.util.Objects;
@@ -48,17 +48,14 @@
* </ul>
*/
@CarProtocol
+@KeepFields
public final class PaneTemplate implements Template {
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final Pane mPane;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/ParkedOnlyOnClickListener.java b/car/app/app/src/main/java/androidx/car/app/model/ParkedOnlyOnClickListener.java
index f857e04..d238560 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/ParkedOnlyOnClickListener.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/ParkedOnlyOnClickListener.java
@@ -21,9 +21,9 @@
import android.annotation.SuppressLint;
import android.os.Looper;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
/**
* An {@link OnClickListener} that wraps another one and executes its {@link #onClick} method only
@@ -45,8 +45,8 @@
// Lint check wants this to be renamed *Callback.
@SuppressLint("ListenerInterface")
@CarProtocol
+@KeepFields
public final class ParkedOnlyOnClickListener implements OnClickListener {
- @Keep
private final OnClickListener mListener;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Place.java b/car/app/app/src/main/java/androidx/car/app/model/Place.java
index bfcb937..db117fb 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Place.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Place.java
@@ -18,20 +18,19 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Represents a geographical location and additional information on how to display it. */
@CarProtocol
+@KeepFields
public final class Place {
- @Keep
@Nullable
private final CarLocation mLocation;
- @Keep
@Nullable
private final PlaceMarker mMarker;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/PlaceListMapTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/PlaceListMapTemplate.java
index bfa8ea1..f9ac3b3 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/PlaceListMapTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/PlaceListMapTemplate.java
@@ -24,13 +24,13 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Collections;
import java.util.List;
@@ -57,27 +57,20 @@
* </ul>
*/
@CarProtocol
+@KeepFields
public final class PlaceListMapTemplate implements Template {
- @Keep
private final boolean mIsLoading;
- @Keep
private final boolean mShowCurrentLocation;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final ItemList mItemList;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
- @Keep
@Nullable
private final Place mAnchor;
- @Keep
@Nullable
private final OnContentRefreshDelegate mOnContentRefreshDelegate;
@@ -168,7 +161,7 @@
public int hashCode() {
return Objects.hash(
mShowCurrentLocation, mIsLoading, mTitle, mItemList, mHeaderAction, mActionStrip,
- mAnchor, mOnContentRefreshDelegate == null);
+ mAnchor, mOnContentRefreshDelegate == null);
}
@Override
diff --git a/car/app/app/src/main/java/androidx/car/app/model/PlaceMarker.java b/car/app/app/src/main/java/androidx/car/app/model/PlaceMarker.java
index b21f963..dd3c7b8 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/PlaceMarker.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/PlaceMarker.java
@@ -21,13 +21,13 @@
import static java.util.Objects.requireNonNull;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarColorConstraints;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -35,6 +35,7 @@
/** Describes how a place is to be displayed on a map. */
@CarProtocol
+@KeepFields
public final class PlaceMarker {
/**
* Describes the type of image a marker icon represents.
@@ -70,16 +71,12 @@
private static final int MAX_LABEL_LENGTH = 3;
- @Keep
@Nullable
private final CarIcon mIcon;
- @Keep
@Nullable
private final CarText mLabel;
- @Keep
@Nullable
private final CarColor mColor;
- @Keep
@MarkerIconType
private final int mIconType;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Row.java b/car/app/app/src/main/java/androidx/car/app/model/Row.java
index 955c258b..96e99a5 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Row.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Row.java
@@ -26,7 +26,6 @@
import androidx.annotation.IntDef;
import androidx.annotation.IntRange;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
@@ -36,6 +35,7 @@
import androidx.car.app.model.constraints.ActionsConstraints;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.lang.annotation.Retention;
@@ -50,6 +50,7 @@
* or switch.
*/
@CarProtocol
+@KeepFields
public final class Row implements Item {
/** A boat that belongs to you. */
private static final String YOUR_BOAT = "\uD83D\uDEA3"; // 🚣
@@ -98,31 +99,20 @@
*/
public static final int IMAGE_TYPE_ICON = (1 << 2);
- @Keep
private final boolean mIsEnabled;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
private final List<CarText> mTexts;
- @Keep
@Nullable
private final CarIcon mImage;
- @Keep
private final List<Action> mActions;
- @Keep
private final int mNumericDecoration;
- @Keep
@Nullable
private final Toggle mToggle;
- @Keep
@Nullable
private final OnClickDelegate mOnClickDelegate;
- @Keep
private final Metadata mMetadata;
- @Keep
private final boolean mIsBrowsable;
- @Keep
@RowImageType
private final int mRowImageType;
@@ -367,7 +357,7 @@
*
* @throws NullPointerException if {@code title} is {@code null}
* @throws IllegalArgumentException if {@code title} is empty, of if it contains
- * unsupported spans
+ * unsupported spans
*/
@NonNull
public Builder setTitle(@NonNull CharSequence title) {
@@ -388,7 +378,7 @@
*
* @throws NullPointerException if {@code title} is {@code null}
* @throws IllegalArgumentException if {@code title} is empty, of if it contains
- * unsupported spans
+ * unsupported spans
*/
@NonNull
public Builder setTitle(@NonNull CarText title) {
@@ -560,7 +550,7 @@
* messages in a conversation.
*
* @param decoration the {@code int} to display. Must be positive, zero, or equal to
- * {@link Row#NO_DECORATION}.
+ * {@link Row#NO_DECORATION}.
* @throws IllegalArgumentException if {@code decoration} is invalid
*/
@ExperimentalCarApi
diff --git a/car/app/app/src/main/java/androidx/car/app/model/SearchCallbackDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/SearchCallbackDelegateImpl.java
index a618bb9..80e7ebf 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/SearchCallbackDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/SearchCallbackDelegateImpl.java
@@ -24,13 +24,13 @@
import android.annotation.SuppressLint;
import android.os.RemoteException;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
/**
@@ -40,9 +40,8 @@
*/
@RestrictTo(LIBRARY)
@CarProtocol
+@KeepFields
public class SearchCallbackDelegateImpl implements SearchCallbackDelegate {
-
- @Keep
@Nullable
private final ISearchCallback mStubCallback;
@@ -84,7 +83,7 @@
return new SearchCallbackDelegateImpl(callback);
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class SearchCallbackStub extends ISearchCallback.Stub {
private final SearchCallback mCallback;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/SearchTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/SearchTemplate.java
index e3b112c..4ac4254d 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/SearchTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/SearchTemplate.java
@@ -25,11 +25,11 @@
import android.annotation.SuppressLint;
import android.os.Looper;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.util.Collections;
import java.util.Objects;
@@ -44,6 +44,7 @@
* results as the user types without the templates being counted against the quota.
*/
@CarProtocol
+@KeepFields
public final class SearchTemplate implements Template {
/** A listener for search updates. */
@@ -70,26 +71,18 @@
}
}
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final SearchCallbackDelegate mSearchCallbackDelegate;
- @Keep
@Nullable
private final String mInitialSearchText;
- @Keep
@Nullable
private final String mSearchHint;
- @Keep
@Nullable
private final ItemList mItemList;
- @Keep
private final boolean mShowKeyboardByDefault;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/SectionedItemList.java b/car/app/app/src/main/java/androidx/car/app/model/SectionedItemList.java
index 1c49eb5..d635d22 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/SectionedItemList.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/SectionedItemList.java
@@ -18,11 +18,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -30,11 +30,10 @@
* Represents an {@link ItemList} that is contained inside a section, for internal use only.
*/
@CarProtocol
+@KeepFields
public final class SectionedItemList {
- @Keep
@Nullable
private final ItemList mItemList;
- @Keep
@Nullable
private final CarText mHeader;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Tab.java b/car/app/app/src/main/java/androidx/car/app/model/Tab.java
index ffadbe7..732d534 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Tab.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Tab.java
@@ -18,7 +18,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
@@ -26,6 +25,7 @@
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -36,22 +36,16 @@
@CarProtocol
@ExperimentalCarApi
@RequiresCarApi(6)
+@KeepFields
public final class Tab implements Content {
/** Content ID for an empty Tab object. */
private static final String EMPTY_TAB_CONTENT_ID = "EMPTY_TAB_CONTENT_ID";
- @Keep
private final boolean mIsActive;
-
- @Keep
@Nullable
private final CarText mTitle;
-
- @Keep
@Nullable
private final CarIcon mIcon;
-
- @Keep
@NonNull
private final String mContentId;
@@ -136,7 +130,6 @@
/**
* Creates and returns a new {@link Builder} initialized with this {@link Tab}'s data.
- *
*/
@NonNull
public Tab.Builder toBuilder() {
@@ -184,7 +177,7 @@
*
* @throws NullPointerException if {@code title} is {@code null}
* @throws IllegalArgumentException if {@code title} is empty, of if it contains
- * unsupported spans
+ * unsupported spans
*/
@NonNull
public Tab.Builder setTitle(@NonNull CharSequence title) {
@@ -199,7 +192,6 @@
/**
* Sets the content ID of the tab.
- *
*/
@NonNull
public Tab.Builder setContentId(@NonNull String contentId) {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/TabCallbackDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/model/TabCallbackDelegateImpl.java
index fd89c59..4e559ca 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/TabCallbackDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/TabCallbackDelegateImpl.java
@@ -32,6 +32,7 @@
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
/**
@@ -43,9 +44,8 @@
@CarProtocol
@ExperimentalCarApi
@RequiresCarApi(6)
+@KeepFields
public class TabCallbackDelegateImpl implements TabCallbackDelegate {
-
- @Keep
@Nullable
private final ITabCallback mStubCallback;
@Override
@@ -74,7 +74,7 @@
return new TabCallbackDelegateImpl(callback);
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class TabCallbackStub extends ITabCallback.Stub {
private final TabTemplate.TabCallback mCallback;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/TabContents.java b/car/app/app/src/main/java/androidx/car/app/model/TabContents.java
index e22d8fa..d27dc30 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/TabContents.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/TabContents.java
@@ -20,23 +20,23 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.TabContentsConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/**
* Represents the contents to display for a selected tab in a {@link TabTemplate}.
- *
*/
@CarProtocol
@ExperimentalCarApi
@RequiresCarApi(6)
+@KeepFields
public class TabContents implements Content {
/**
* Content ID for TabContents
@@ -45,9 +45,8 @@
*/
public static final String CONTENT_ID = "TAB_CONTENTS_CONTENT_ID";
- @Keep
@Nullable
- private Template mTemplate;
+ private final Template mTemplate;
/**
* Returns the static content ID associated with TabContents.
@@ -123,7 +122,7 @@
* template.
* The host will ignore these.
*
- * @throws NullPointerException if {@code template} is null
+ * @throws NullPointerException if {@code template} is null
* @throws IllegalArgumentException if {@code template} does not meet the requirements
*/
@SuppressLint("ExecutorRegistration")
diff --git a/car/app/app/src/main/java/androidx/car/app/model/TabTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/TabTemplate.java
index 4a963df..e3fb36f 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/TabTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/TabTemplate.java
@@ -22,13 +22,13 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.ExperimentalCarApi;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.constraints.TabsConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -56,6 +56,7 @@
@CarProtocol
@ExperimentalCarApi
@RequiresCarApi(6)
+@KeepFields
public class TabTemplate implements Template {
/** A listener for tab selection. */
@@ -71,22 +72,13 @@
}
}
- @Keep
private final boolean mIsLoading;
-
- @Keep
@Nullable
private final TabCallbackDelegate mTabCallbackDelegate;
-
- @Keep
@Nullable
private final Action mHeaderAction;
-
- @Keep
@Nullable
private final TabContents mTabContents;
-
- @Keep
@Nullable
private final List<Tab> mTabs;
@@ -244,8 +236,7 @@
/**
* Adds an {@link Tab} to display in the template.
*
- *
- * @throws NullPointerException if {@code tab} is {@code null}
+ * @throws NullPointerException if {@code tab} is {@code null}
*/
@NonNull
public TabTemplate.Builder addTab(@NonNull Tab tab) {
@@ -267,7 +258,7 @@
* @throws IllegalStateException if the template is in a loading state but there are
* tabs added or vice versa
* @throws IllegalArgumentException if the added {@link Tab}(s) or header {@link Action}
- * does not meet the template's requirements
+ * does not meet the template's requirements
*/
@NonNull
public TabTemplate build() {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/TemplateInfo.java b/car/app/app/src/main/java/androidx/car/app/model/TemplateInfo.java
index 90aa562..d94a2c8 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/TemplateInfo.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/TemplateInfo.java
@@ -18,10 +18,10 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -32,11 +32,10 @@
* <p><strong>This class is for use by host implementations and not by apps.</strong>
*/
@CarProtocol
+@KeepFields
public final class TemplateInfo {
- @Keep
@Nullable
private final Class<? extends Template> mTemplateClass;
- @Keep
@Nullable
private final String mTemplateId;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/TemplateWrapper.java b/car/app/app/src/main/java/androidx/car/app/model/TemplateWrapper.java
index afe889f..80fdeeb 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/TemplateWrapper.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/TemplateWrapper.java
@@ -20,11 +20,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -42,14 +42,12 @@
* <p><strong>This class is for use by host implementations and not by apps.</strong>
*/
@CarProtocol
+@KeepFields
public final class TemplateWrapper {
- @Keep
@Nullable
private Template mTemplate;
- @Keep
@Nullable
private String mId;
- @Keep
private List<TemplateInfo> mTemplateInfoForScreenStack = new ArrayList<>();
/** The current step in a task that the template is in. */
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Toggle.java b/car/app/app/src/main/java/androidx/car/app/model/Toggle.java
index b628a8b..80f08ad 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Toggle.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Toggle.java
@@ -21,16 +21,17 @@
import android.annotation.SuppressLint;
import android.os.Looper;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Represents a toggle that can have either a checked or unchecked state. */
@CarProtocol
+@KeepFields
public final class Toggle {
/** A listener for handling checked state change events. */
public interface OnCheckedChangeListener {
@@ -38,12 +39,9 @@
void onCheckedChange(boolean isChecked);
}
- @Keep
@Nullable
private final OnCheckedChangeDelegate mOnCheckedChangeDelegate;
- @Keep
private final boolean mIsChecked;
- @Keep
private final boolean mIsEnabled;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/model/signin/InputSignInMethod.java b/car/app/app/src/main/java/androidx/car/app/model/signin/InputSignInMethod.java
index f7d4780..5d36b9f 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/signin/InputSignInMethod.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/signin/InputSignInMethod.java
@@ -24,7 +24,6 @@
import android.os.Looper;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
@@ -33,6 +32,7 @@
import androidx.car.app.model.InputCallback;
import androidx.car.app.model.InputCallbackDelegate;
import androidx.car.app.model.InputCallbackDelegateImpl;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -45,6 +45,7 @@
* <p>For example, this can be used to request a username, a password or an activation code.
*/
@RequiresCarApi(2)
+@KeepFields
public final class InputSignInMethod implements SignInTemplate.SignInMethod {
/**
* The type of input represented by the {@link InputSignInMethod} instance.
@@ -108,25 +109,18 @@
*/
public static final int KEYBOARD_NUMBER = 4;
- @Keep
@Nullable
private final CarText mHint;
- @Keep
@Nullable
private final CarText mDefaultValue;
- @Keep
@InputType
private final int mInputType;
- @Keep
@Nullable
private final CarText mErrorMessage;
- @Keep
@KeyboardType
private final int mKeyboardType;
- @Keep
@Nullable
private final InputCallbackDelegate mInputCallbackDelegate;
- @Keep
private final boolean mShowKeyboardByDefault;
/**
@@ -256,7 +250,8 @@
/** A builder of {@link InputSignInMethod}. */
public static final class Builder {
- @Nullable final InputCallbackDelegate mInputCallbackDelegate;
+ @Nullable
+ final InputCallbackDelegate mInputCallbackDelegate;
@Nullable
CarText mHint;
@Nullable
diff --git a/car/app/app/src/main/java/androidx/car/app/model/signin/PinSignInMethod.java b/car/app/app/src/main/java/androidx/car/app/model/signin/PinSignInMethod.java
index b90fd66..0a137a5 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/signin/PinSignInMethod.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/signin/PinSignInMethod.java
@@ -18,11 +18,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.CarText;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -31,11 +31,11 @@
* use to sign-in.
*/
@RequiresCarApi(2)
+@KeepFields
public final class PinSignInMethod implements SignInTemplate.SignInMethod {
/** Maximum length, in characters, for a PIN. */
private static final int MAX_PIN_LENGTH = 12;
- @Keep
@Nullable
private final CarText mPinCode;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/signin/ProviderSignInMethod.java b/car/app/app/src/main/java/androidx/car/app/model/signin/ProviderSignInMethod.java
index 35262f6..ce0d7f6 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/signin/ProviderSignInMethod.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/signin/ProviderSignInMethod.java
@@ -18,12 +18,12 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.Action;
import androidx.car.app.model.ForegroundCarColorSpan;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -38,8 +38,8 @@
* Sign-In into Your Android App</a>).
*/
@RequiresCarApi(2)
+@KeepFields
public final class ProviderSignInMethod implements SignInTemplate.SignInMethod {
- @Keep
@Nullable
private final Action mAction;
diff --git a/car/app/app/src/main/java/androidx/car/app/model/signin/QRCodeSignInMethod.java b/car/app/app/src/main/java/androidx/car/app/model/signin/QRCodeSignInMethod.java
index c7899d1..b84eb1e 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/signin/QRCodeSignInMethod.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/signin/QRCodeSignInMethod.java
@@ -20,10 +20,10 @@
import android.net.Uri;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.RequiresCarApi;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -31,9 +31,9 @@
* A {@link SignInTemplate.SignInMethod} that presents a QR Code that the user can use to sign-in.
*/
@RequiresCarApi(4)
+@KeepFields
@SuppressWarnings("AcronymName")
public final class QRCodeSignInMethod implements SignInTemplate.SignInMethod {
- @Keep
@Nullable
private final Uri mUri;
@@ -41,7 +41,7 @@
* Returns a {@link QRCodeSignInMethod} instance.
*
* @param uri the URL to be used in creating a QR Code.
- * @throws NullPointerException if {@code url} is {@code null}
+ * @throws NullPointerException if {@code url} is {@code null}
*/
public QRCodeSignInMethod(@NonNull Uri uri) {
mUri = requireNonNull(uri);
diff --git a/car/app/app/src/main/java/androidx/car/app/model/signin/SignInTemplate.java b/car/app/app/src/main/java/androidx/car/app/model/signin/SignInTemplate.java
index e17e815..abaa6f3 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/signin/SignInTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/signin/SignInTemplate.java
@@ -23,7 +23,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
@@ -36,6 +35,7 @@
import androidx.car.app.model.ForegroundCarColorSpan;
import androidx.car.app.model.Template;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -54,6 +54,7 @@
* @see Screen#onGetTemplate()
*/
@RequiresCarApi(2)
+@KeepFields
public final class SignInTemplate implements Template {
/**
* One of the possible sign in methods that can be set on a {@link SignInTemplate}.
@@ -61,26 +62,18 @@
public interface SignInMethod {
}
- @Keep
private final boolean mIsLoading;
- @Keep
@Nullable
private final Action mHeaderAction;
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mInstructions;
- @Keep
@Nullable
private final CarText mAdditionalText;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
- @Keep
private final List<Action> mActionList;
- @Keep
@Nullable
private final SignInMethod mSignInMethod;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/Destination.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/Destination.java
index f6a9642..9823249 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/Destination.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/Destination.java
@@ -18,26 +18,24 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.CarIcon;
import androidx.car.app.model.CarText;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** A class representing information related to a destination. */
@CarProtocol
+@KeepFields
public final class Destination {
- @Keep
@Nullable
private final CarText mName;
- @Keep
@Nullable
private final CarText mAddress;
- @Keep
@Nullable
private final CarIcon mImage;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/Lane.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/Lane.java
index 31b9529..db213d2 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/Lane.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/Lane.java
@@ -18,10 +18,10 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -36,8 +36,8 @@
* and indicates which directions the driver could take to stay on the navigation route.
*/
@CarProtocol
+@KeepFields
public final class Lane {
- @Keep
private final List<LaneDirection> mDirections;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/LaneDirection.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/LaneDirection.java
index adb4390..cbf371a 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/LaneDirection.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/LaneDirection.java
@@ -19,11 +19,11 @@
import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import androidx.annotation.IntDef;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -39,7 +39,8 @@
* @see Lane
*/
@CarProtocol
-public final class LaneDirection {
+@KeepFields
+public final class LaneDirection{
/**
* Turn amount and direction.
*
@@ -108,10 +109,8 @@
@Shape
public static final int SHAPE_U_TURN_RIGHT = 10;
- @Keep
@Shape
private final int mShape;
- @Keep
private final boolean mIsRecommended;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/Maneuver.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/Maneuver.java
index ab284e5..e3da0cc 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/Maneuver.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/Maneuver.java
@@ -22,13 +22,13 @@
import androidx.annotation.IntDef;
import androidx.annotation.IntRange;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.CarIcon;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -37,6 +37,7 @@
/** Information about a maneuver that the driver will be required to perform. */
// TODO(b/154671667): Update when host(s) updates or a scheme for auto sync is established.
@CarProtocol
+@KeepFields
public final class Maneuver {
/**
* Possible maneuver types.
@@ -433,14 +434,10 @@
@Type
public static final int TYPE_FERRY_TRAIN_RIGHT = 50;
- @Keep
@Type
private final int mType;
- @Keep
private final int mRoundaboutExitNumber;
- @Keep
private final int mRoundaboutExitAngle;
- @Keep
@Nullable
private final CarIcon mIcon;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/MapController.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/MapController.java
index d1656b7..be2f3f6 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/MapController.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/MapController.java
@@ -22,7 +22,6 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.SurfaceCallback;
@@ -30,6 +29,7 @@
import androidx.car.app.annotations.RequiresCarApi;
import androidx.car.app.model.Action;
import androidx.car.app.model.ActionStrip;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -38,11 +38,10 @@
*/
@RequiresCarApi(5)
@CarProtocol
+@KeepFields
public final class MapController {
- @Keep
@Nullable
private final PanModeDelegate mPanModeDelegate;
- @Keep
@Nullable
private final ActionStrip mMapActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/MapTemplate.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/MapTemplate.java
index ddc02ca..7f94326 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/MapTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/MapTemplate.java
@@ -23,7 +23,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
@@ -43,6 +42,7 @@
import androidx.car.app.model.Row;
import androidx.car.app.model.Template;
import androidx.car.app.model.Toggle;
+import androidx.car.app.annotations.KeepFields;
import java.util.List;
import java.util.Objects;
@@ -64,20 +64,16 @@
*/
@RequiresCarApi(5)
@CarProtocol
+@KeepFields
public final class MapTemplate implements Template {
- @Keep
@Nullable
private final MapController mMapController;
- @Keep
@Nullable
private final Pane mPane;
- @Keep
@Nullable
private final ItemList mItemList;
- @Keep
@Nullable
private final Header mHeader;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/MessageInfo.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/MessageInfo.java
index 26e0a57..fe1cb04b 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/MessageInfo.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/MessageInfo.java
@@ -18,7 +18,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
@@ -29,19 +28,18 @@
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
import androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
/** Represents a message that can be shown in the {@link NavigationTemplate}. */
@CarProtocol
+@KeepFields
public final class MessageInfo implements NavigationInfo {
- @Keep
@Nullable
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mText;
- @Keep
@Nullable
private final CarIcon mImage;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/NavigationTemplate.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/NavigationTemplate.java
index 24d3fc9..94190e0 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/NavigationTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/NavigationTemplate.java
@@ -24,7 +24,6 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
@@ -36,6 +35,7 @@
import androidx.car.app.model.CarColor;
import androidx.car.app.model.Template;
import androidx.car.app.model.Toggle;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -111,6 +111,7 @@
* androidx.car.app.NAVIGATION_TEMPLATES} permission in the manifest.
*/
@CarProtocol
+@KeepFields
public final class NavigationTemplate implements Template {
/**
@@ -120,25 +121,18 @@
public interface NavigationInfo {
}
- @Keep
@Nullable
private final NavigationInfo mNavigationInfo;
- @Keep
@Nullable
private final CarColor mBackgroundColor;
- @Keep
@Nullable
private final TravelEstimate mDestinationTravelEstimate;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
- @Keep
@Nullable
private final ActionStrip mMapActionStrip;
- @Keep
@Nullable
private final Toggle mPanModeToggle;
- @Keep
@Nullable
private final PanModeDelegate mPanModeDelegate;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/PanModeDelegateImpl.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/PanModeDelegateImpl.java
index 8a3c452..56d2a3c 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/PanModeDelegateImpl.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/PanModeDelegateImpl.java
@@ -30,6 +30,7 @@
import androidx.car.app.IOnDoneCallback;
import androidx.car.app.OnDoneCallback;
import androidx.car.app.annotations.CarProtocol;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.RemoteUtils;
import org.jetbrains.annotations.NotNull;
@@ -41,8 +42,8 @@
*/
@RestrictTo(LIBRARY)
@CarProtocol
+@KeepFields
public class PanModeDelegateImpl implements PanModeDelegate {
- @Keep
@Nullable
private final IPanModeListener mStub;
@@ -72,7 +73,7 @@
return new PanModeDelegateImpl(listener);
}
- @Keep // We need to keep these stub for Bundler serialization logic.
+ @KeepFields // We need to keep these stub for Bundler serialization logic.
private static class PanModeListenerStub extends IPanModeListener.Stub {
private final PanModeListener mListener;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/PlaceListNavigationTemplate.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/PlaceListNavigationTemplate.java
index 1987c21..ecc1017 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/PlaceListNavigationTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/PlaceListNavigationTemplate.java
@@ -25,7 +25,6 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
@@ -51,6 +50,7 @@
import androidx.car.app.model.Template;
import androidx.car.app.model.Toggle;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Collections;
import java.util.List;
@@ -80,41 +80,33 @@
* androidx.car.app.NAVIGATION_TEMPLATES} permission in the manifest.
*/
@CarProtocol
+@KeepFields
public final class PlaceListNavigationTemplate implements Template {
- @Keep
private final boolean mIsLoading;
/**
* @deprecated Use the Header to set up the Title.
*/
// TODO(b/225914724): remove after hosts switch over to setHeader().
- @Keep
@Nullable
@Deprecated
private final CarText mTitle;
- @Keep
@Nullable
private final ItemList mItemList;
- @Keep
@Nullable
private final Header mHeader;
/**
* @deprecated Use the Header to set up the HeaderAction.
*/
// TODO(b/225914724): remove after hosts switch over to setHeader().
- @Keep
@Nullable
@Deprecated
private final Action mHeaderAction;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
- @Keep
@Nullable
private final ActionStrip mMapActionStrip;
- @Keep
@Nullable
private final PanModeDelegate mPanModeDelegate;
- @Keep
@Nullable
private final OnContentRefreshDelegate mOnContentRefreshDelegate;
@@ -366,7 +358,6 @@
* @throws IllegalArgumentException if {@code headerAction} does not meet the template's
* requirements
* @throws NullPointerException if {@code headerAction} is {@code null}
- *
* @deprecated use {@link #setHeader(Header)}
*/
// TODO(b/225914724): remove after hosts switch over to setHeader().
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutePreviewNavigationTemplate.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutePreviewNavigationTemplate.java
index 7559ca2..2e33dd2 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutePreviewNavigationTemplate.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutePreviewNavigationTemplate.java
@@ -25,7 +25,6 @@
import android.annotation.SuppressLint;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.Screen;
@@ -45,6 +44,7 @@
import androidx.car.app.model.Template;
import androidx.car.app.model.Toggle;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Collections;
import java.util.Objects;
@@ -84,41 +84,33 @@
* androidx.car.app.NAVIGATION_TEMPLATES} permission in the manifest.
*/
@CarProtocol
+@KeepFields
public final class RoutePreviewNavigationTemplate implements Template {
- @Keep
private final boolean mIsLoading;
/**
* @deprecated Use the Header to set up the Title.
*/
// TODO(b/225914724): remove after hosts switch over to setHeader().
- @Keep
@Nullable
@Deprecated
private final CarText mTitle;
- @Keep
@Nullable
private final Action mNavigateAction;
- @Keep
@Nullable
private final ItemList mItemList;
- @Keep
@Nullable
private final Header mHeader;
/**
* @deprecated Use the Header to set up the HeaderAction.
*/
// TODO(b/225914724): remove after hosts switch over to setHeader().
- @Keep
@Nullable
@Deprecated
private final Action mHeaderAction;
- @Keep
@Nullable
private final ActionStrip mActionStrip;
- @Keep
@Nullable
private final ActionStrip mMapActionStrip;
- @Keep
@Nullable
private final PanModeDelegate mPanModeDelegate;
@@ -368,7 +360,6 @@
* @throws IllegalArgumentException if {@code headerAction} does not meet the template's
* requirements
* @throws NullPointerException if {@code headerAction} is {@code null}
- *
* @deprecated use {@link #setHeader(Header)}
*/
// TODO(b/225914724): remove after hosts switch over to setHeader().
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutingInfo.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutingInfo.java
index fb829cb..15aee7d 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutingInfo.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/RoutingInfo.java
@@ -18,7 +18,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
@@ -26,6 +25,7 @@
import androidx.car.app.model.Distance;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.navigation.model.NavigationTemplate.NavigationInfo;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -34,20 +34,16 @@
* navigation
*/
@CarProtocol
+@KeepFields
public final class RoutingInfo implements NavigationInfo {
- @Keep
@Nullable
private final Step mCurrentStep;
- @Keep
@Nullable
private final Distance mCurrentDistance;
- @Keep
@Nullable
private final Step mNextStep;
- @Keep
@Nullable
private final CarIcon mJunctionImage;
- @Keep
private final boolean mIsLoading;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/Step.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/Step.java
index ebb742a..8ee1378 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/Step.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/Step.java
@@ -18,7 +18,6 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
@@ -28,6 +27,7 @@
import androidx.car.app.model.DurationSpan;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -42,19 +42,15 @@
* highway, or continuing straight through a roundabout.
*/
@CarProtocol
+@KeepFields
public final class Step {
- @Keep
@Nullable
private final Maneuver mManeuver;
- @Keep
private final List<Lane> mLanes;
- @Keep
@Nullable
private final CarIcon mLanesImage;
- @Keep
@Nullable
private final CarText mCue;
- @Keep
@Nullable
private final CarText mRoad;
@@ -184,8 +180,8 @@
private CarText mRoad;
/**
- * Constructs a new builder of {@link Step}.
- */
+ * Constructs a new builder of {@link Step}.
+ */
public Builder() {
}
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
index 1514cc7..cd20b95 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
@@ -22,7 +22,6 @@
import androidx.annotation.DoNotInline;
import androidx.annotation.IntRange;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
@@ -36,6 +35,7 @@
import androidx.car.app.model.constraints.CarColorConstraints;
import androidx.car.app.model.constraints.CarIconConstraints;
import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.time.Duration;
import java.time.ZonedDateTime;
@@ -47,26 +47,20 @@
*/
@SuppressWarnings("MissingSummary")
@CarProtocol
+@KeepFields
public final class TravelEstimate {
/** A value used to represent an unknown remaining amount of time. */
public static final long REMAINING_TIME_UNKNOWN = -1L;
- @Keep
@Nullable
private final Distance mRemainingDistance;
- @Keep
private final long mRemainingTimeSeconds;
- @Keep
@Nullable
private final DateTimeWithZone mArrivalTimeAtDestination;
- @Keep
private final CarColor mRemainingTimeColor;
- @Keep
private final CarColor mRemainingDistanceColor;
- @Keep
@Nullable
private final CarText mTripText;
- @Keep
@Nullable
private final CarIcon mTripIcon;
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/Trip.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/Trip.java
index 2835ce3..4d4d6f8 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/Trip.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/Trip.java
@@ -18,11 +18,11 @@
import static java.util.Objects.requireNonNull;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.CarText;
+import androidx.car.app.annotations.KeepFields;
import androidx.car.app.utils.CollectionUtils;
import java.util.ArrayList;
@@ -53,19 +53,14 @@
* </ul>
*/
@CarProtocol
+@KeepFields
public final class Trip {
- @Keep
private final List<Destination> mDestinations;
- @Keep
private final List<Step> mSteps;
- @Keep
private final List<TravelEstimate> mDestinationTravelEstimates;
- @Keep
private final List<TravelEstimate> mStepTravelEstimates;
- @Keep
@Nullable
private final CarText mCurrentRoad;
- @Keep
private final boolean mIsLoading;
/**
diff --git a/car/app/app/src/main/java/androidx/car/app/suggestion/model/Suggestion.java b/car/app/app/src/main/java/androidx/car/app/suggestion/model/Suggestion.java
index 3791896..c75f83d 100644
--- a/car/app/app/src/main/java/androidx/car/app/suggestion/model/Suggestion.java
+++ b/car/app/app/src/main/java/androidx/car/app/suggestion/model/Suggestion.java
@@ -20,13 +20,13 @@
import android.app.PendingIntent;
-import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.car.app.annotations.CarProtocol;
import androidx.car.app.model.CarIcon;
import androidx.car.app.model.CarText;
import androidx.car.app.model.constraints.CarIconConstraints;
+import androidx.car.app.annotations.KeepFields;
import java.util.Objects;
@@ -40,20 +40,16 @@
* place to drive to rather than wait for the user to enter or search for it.
*/
@CarProtocol
+@KeepFields
public final class Suggestion {
- @Keep
@NonNull
private final String mIdentifier;
- @Keep
@NonNull
private final CarText mTitle;
- @Keep
@Nullable
private final CarText mSubtitle;
- @Keep
@Nullable
private final CarIcon mIcon;
- @Keep
@Nullable
private final PendingIntent mAction;