diff --git a/packages/CarSystemUI/res/values/strings.xml b/packages/CarSystemUI/res/values/strings.xml
index fbdb5167fadee..06ae7cfd6d1bb 100644
--- a/packages/CarSystemUI/res/values/strings.xml
+++ b/packages/CarSystemUI/res/values/strings.xml
@@ -22,6 +22,8 @@
Min
Max
+
+ --
Voice recognition now handled by connected Bluetooth device
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/hvac/AdjustableTemperatureView.java b/packages/CarSystemUI/src/com/android/systemui/car/hvac/AdjustableTemperatureView.java
index 85d4ceb81eeb0..af2a1d36bbd72 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/hvac/AdjustableTemperatureView.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/hvac/AdjustableTemperatureView.java
@@ -40,6 +40,9 @@ public class AdjustableTemperatureView extends LinearLayout implements Temperatu
private float mMinTempC;
private float mMaxTempC;
private String mTempFormat;
+ private String mNullTempText;
+ private String mMinTempText;
+ private String mMaxTempText;
private boolean mDisplayInFahrenheit = false;
private HvacController mHvacController;
@@ -59,6 +62,9 @@ public class AdjustableTemperatureView extends LinearLayout implements Temperatu
mTempFormat = getResources().getString(R.string.hvac_temperature_format);
mMinTempC = getResources().getFloat(R.dimen.hvac_min_value_celsius);
mMaxTempC = getResources().getFloat(R.dimen.hvac_max_value_celsius);
+ mNullTempText = getResources().getString(R.string.hvac_null_temp_text);
+ mMinTempText = getResources().getString(R.string.hvac_min_text);
+ mMaxTempText = getResources().getString(R.string.hvac_max_text);
initializeButtons();
}
@@ -69,12 +75,23 @@ public class AdjustableTemperatureView extends LinearLayout implements Temperatu
@Override
public void setTemp(float tempC) {
- if (tempC > mMaxTempC || tempC < mMinTempC) {
- return;
- }
if (mTempTextView == null) {
mTempTextView = findViewById(R.id.hvac_temperature_text);
}
+ if (Float.isNaN(tempC)) {
+ mTempTextView.setText(mNullTempText);
+ return;
+ }
+ if (tempC <= mMinTempC) {
+ mTempTextView.setText(mMinTempText);
+ mCurrentTempC = mMinTempC;
+ return;
+ }
+ if (tempC >= mMaxTempC) {
+ mTempTextView.setText(mMaxTempText);
+ mCurrentTempC = mMaxTempC;
+ return;
+ }
mTempTextView.setText(String.format(mTempFormat,
mDisplayInFahrenheit ? convertToFahrenheit(tempC) : tempC));
mCurrentTempC = tempC;
diff --git a/packages/CarSystemUI/tests/src/com/android/systemui/car/hvac/AdjustableTemperatureViewTest.java b/packages/CarSystemUI/tests/src/com/android/systemui/car/hvac/AdjustableTemperatureViewTest.java
index a3a55aae5f189..fe071d54fb107 100644
--- a/packages/CarSystemUI/tests/src/com/android/systemui/car/hvac/AdjustableTemperatureViewTest.java
+++ b/packages/CarSystemUI/tests/src/com/android/systemui/car/hvac/AdjustableTemperatureViewTest.java
@@ -97,6 +97,48 @@ public class AdjustableTemperatureViewTest extends SysuiTestCase {
assertEquals(tempText.getText(), String.format(mFormat, TEMP_CELSIUS));
}
+ @Test
+ public void setTemp_tempNaN_setsTextToNaNText() {
+ when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),
+ anyInt())).thenReturn(true);
+ when(mCarPropertyManager.getFloatProperty(eq(HVAC_TEMPERATURE_SET), anyInt())).thenReturn(
+ Float.NaN);
+
+ mHvacController.addTemperatureViewToController(mAdjustableTemperatureView);
+
+ TextView tempText = mAdjustableTemperatureView.findViewById(R.id.hvac_temperature_text);
+ assertEquals(tempText.getText(),
+ getContext().getResources().getString(R.string.hvac_null_temp_text));
+ }
+
+ @Test
+ public void setTemp_tempBelowMin_setsTextToMinTempText() {
+ when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),
+ anyInt())).thenReturn(true);
+ when(mCarPropertyManager.getFloatProperty(eq(HVAC_TEMPERATURE_SET), anyInt())).thenReturn(
+ getContext().getResources().getFloat(R.dimen.hvac_min_value_celsius));
+
+ mHvacController.addTemperatureViewToController(mAdjustableTemperatureView);
+
+ TextView tempText = mAdjustableTemperatureView.findViewById(R.id.hvac_temperature_text);
+ assertEquals(tempText.getText(),
+ getContext().getResources().getString(R.string.hvac_min_text));
+ }
+
+ @Test
+ public void setTemp_tempAboveMax_setsTextToMaxTempText() {
+ when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),
+ anyInt())).thenReturn(true);
+ when(mCarPropertyManager.getFloatProperty(eq(HVAC_TEMPERATURE_SET), anyInt())).thenReturn(
+ getContext().getResources().getFloat(R.dimen.hvac_max_value_celsius));
+
+ mHvacController.addTemperatureViewToController(mAdjustableTemperatureView);
+
+ TextView tempText = mAdjustableTemperatureView.findViewById(R.id.hvac_temperature_text);
+ assertEquals(tempText.getText(),
+ getContext().getResources().getString(R.string.hvac_max_text));
+ }
+
@Test
public void setTemperatureToFahrenheit_callsViewSetDisplayInFahrenheit() {
when(mCarPropertyManager.isPropertyAvailable(eq(HVAC_TEMPERATURE_SET),