Clean up styles file for Chassis.

-Inline "layout" attributes into layout files.
-Inline non OEM customizable one-off attributes.
-Extend DeviceDefault where possible.
-Style namespace (similar to AppCompat).

Bug: 140443143

Test: manual with Paint Booth and Dialer
Change-Id: I8e3d5bbea5bdce8bd7075885dac433059c449ffd
diff --git a/car-chassis-lib/res/layout-port/chassis_toolbar.xml b/car-chassis-lib/res/layout-port/chassis_toolbar.xml
index b69ebd1..9d86e34 100644
--- a/car-chassis-lib/res/layout-port/chassis_toolbar.xml
+++ b/car-chassis-lib/res/layout-port/chassis_toolbar.xml
@@ -18,8 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    style="@style/ChassisToolbarContainerStyle">
+    android:layout_height="wrap_content">
 
     <androidx.constraintlayout.widget.Guideline
         android:id="@+id/row_separator_guideline"
@@ -28,32 +27,43 @@
         android:orientation="horizontal"
         app:layout_constraintGuide_begin="@dimen/chassis_toolbar_first_row_height"/>
 
+    <!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
     <View
         android:id="@+id/row_separator"
-        style="@style/ChassisToolbarRowSeparatorStyle"
+        android:layout_width="match_parent"
+        android:layout_height="0.01dp"
         app:layout_constraintTop_toBottomOf="@id/row_separator_guideline"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
 
     <FrameLayout
         android:id="@+id/nav_icon_container"
-        style="@style/ChassisToolbarNavIconContainerStyle"
+        android:layout_width="@dimen/chassis_toolbar_nav_button_width"
+        android:layout_height="0dp"
+        android:background="?android:attr/selectableItemBackground"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toTopOf="@id/row_separator"
         app:layout_constraintStart_toStartOf="parent">
         <ImageView
             android:id="@+id/nav_icon"
-            style="@style/ChassisToolbarNavIconStyle"/>
+            android:layout_width="@dimen/chassis_toolbar_icon_size"
+            android:layout_height="@dimen/chassis_toolbar_icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitXY"/>
         <ImageView
             android:id="@+id/logo"
-            style="@style/ChassisToolbarLogoStyle"/>
+            android:layout_width="@dimen/chassis_toolbar_icon_size"
+            android:layout_height="@dimen/chassis_toolbar_icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitXY"/>
     </FrameLayout>
 
     <TextView
         android:id="@+id/title"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        style="@style/ChassisToolbarTitleStyle"
+        android:layout_marginStart="@dimen/chassis_toolbar_title_margin_start"
+        style="@style/TextAppearance.Chassis.Widget.Toolbar.Title"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toTopOf="@id/row_separator"
         app:layout_constraintStart_toEndOf="@id/nav_icon_container"
@@ -115,9 +125,11 @@
         app:layout_constraintTop_toBottomOf="@id/row_separator"
         app:layout_constraintBottom_toTopOf="@id/bottom_styleable"/>
 
+    <!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
     <View
         android:id="@+id/bottom_styleable"
-        style="@style/ChassisToolbarBottomStyle"
+        android:layout_width="match_parent"
+        android:layout_height="0.01dp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/car-chassis-lib/res/layout/chassis_tab_item.xml b/car-chassis-lib/res/layout/chassis_tab_item.xml
index dd2c97f..1648fff 100644
--- a/car-chassis-lib/res/layout/chassis_tab_item.xml
+++ b/car-chassis-lib/res/layout/chassis_tab_item.xml
@@ -19,8 +19,15 @@
     xmlns:android="http://schemas.android.com/apk/res/android">
     <ImageView
         android:id="@+id/chassis_tab_item_icon"
-        style="@style/ChassisTabItemIcon"/>
+        android:layout_width="@dimen/chassis_tab_icon_width"
+        android:layout_height="@dimen/chassis_tab_icon_height"
+        android:scaleType="fitCenter"
+        android:tint="@color/chassis_tab_item_selector"/>
     <TextView
         android:id="@+id/chassis_tab_item_text"
-        style="@style/ChassisTabItemText"/>
+        android:layout_width="@dimen/chassis_tab_text_width"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:gravity="center"
+        android:textAppearance="@style/TextAppearance.Chassis.Widget.Toolbar.Tab"/>
 </merge>
diff --git a/car-chassis-lib/res/layout/chassis_toolbar.xml b/car-chassis-lib/res/layout/chassis_toolbar.xml
index d5baa20..e8b09cb 100644
--- a/car-chassis-lib/res/layout/chassis_toolbar.xml
+++ b/car-chassis-lib/res/layout/chassis_toolbar.xml
@@ -18,28 +18,37 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/chassis_toolbar_first_row_height"
-    style="@style/ChassisToolbarContainerStyle">
+    android:layout_height="@dimen/chassis_toolbar_first_row_height">
 
     <FrameLayout
         android:id="@+id/nav_icon_container"
-        style="@style/ChassisToolbarNavIconContainerStyle"
+        android:layout_width="@dimen/chassis_toolbar_nav_button_width"
+        android:layout_height="0dp"
+        android:background="?android:attr/selectableItemBackground"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
         app:layout_constraintStart_toStartOf="parent">
         <ImageView
             android:id="@+id/nav_icon"
-            style="@style/ChassisToolbarNavIconStyle"/>
+            android:layout_width="@dimen/chassis_toolbar_icon_size"
+            android:layout_height="@dimen/chassis_toolbar_icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitXY"
+            style="@style/Widget.Chassis.Toolbar.NavIcon"/>
         <ImageView
             android:id="@+id/logo"
-            style="@style/ChassisToolbarLogoStyle"/>
+            android:layout_width="@dimen/chassis_toolbar_icon_size"
+            android:layout_height="@dimen/chassis_toolbar_icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitXY"/>
     </FrameLayout>
 
     <TextView
         android:id="@+id/title"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        style="@style/ChassisToolbarTitleStyle"
+        android:layout_marginStart="@dimen/chassis_toolbar_title_margin_start"
+        style="@style/TextAppearance.Chassis.Widget.Toolbar.Title"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
         app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
@@ -105,9 +114,11 @@
         app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
         app:layout_constraintEnd_toStartOf="@+id/menu_items_container"/>
 
+    <!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
     <View
         android:id="@+id/bottom_styleable"
-        style="@style/ChassisToolbarBottomStyle"
+        android:layout_width="match_parent"
+        android:layout_height="0.01dp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml b/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml
index cc71e12..fc2d6e8 100644
--- a/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml
+++ b/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml
@@ -17,7 +17,7 @@
 <Button
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/chassis_toolbar_menu_item_text"
-    style="@style/ChassisToolbarTextButtonStyle"
+    style="@style/Widget.Chassis.Toolbar.TextButton"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
     android:layout_marginLeft="@dimen/chassis_toolbar_menu_item_margin"
diff --git a/car-chassis-lib/res/values/styles.xml b/car-chassis-lib/res/values/styles.xml
index b9ea23a..83b0e96 100644
--- a/car-chassis-lib/res/values/styles.xml
+++ b/car-chassis-lib/res/values/styles.xml
@@ -16,92 +16,41 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
     <!-- Styles for chassis tab view -->
-    <style name="ChassisTabItemText">
-        <item name="android:textAppearance">@style/TextAppearance.Body3</item>
-        <item name="android:textColor">@color/chassis_tab_item_selector</item>
-        <item name="android:layout_width">@dimen/chassis_tab_text_width</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:singleLine">true</item>
-        <item name="android:gravity">center</item>
-    </style>
 
-    <style name="ChassisTabItemIcon">
-        <item name="android:layout_width">@dimen/chassis_tab_icon_width</item>
-        <item name="android:layout_height">@dimen/chassis_tab_icon_height</item>
-        <item name="android:scaleType">fitCenter</item>
-        <item name="android:tint">@color/chassis_tab_item_selector</item>
-        <item name="android:tintMode">src_in</item>
-    </style>
+    <style name="Widget.Chassis" parent="android:Widget.DeviceDefault"/>
 
-    <style name="ChassisTabItemBackground">
-        <item name="android:background">?android:attr/selectableItemBackground</item>
-    </style>
+    <style name="Widget.Chassis.Toolbar"/>
 
-    <style name="ChassisToolbarTitleStyle">
-        <item name="android:textAppearance">@style/TextAppearance.Body1</item>
-        <item name="android:singleLine">true</item>
-        <item name="android:layout_marginStart">@dimen/chassis_toolbar_title_margin_start</item>
-    </style>
-
-    <style name="ChassisToolbarContainerStyle"/>
-
-    <style name="ChassisToolbarRowSeparatorStyle">
-        <item name="android:layout_width">match_parent</item>
-        <!-- can't use 0dp or the constraintlayout effect kicks in -->
-        <item name="android:layout_height">0.01dp</item>
-    </style>
-
-    <style name="ChassisToolbarBottomStyle">
-        <item name="android:layout_width">match_parent</item>
-        <!-- can't use 0dp or the constraintlayout effect kicks in -->
-        <item name="android:layout_height">0.01dp</item>
-    </style>
-
-    <style name="ChassisToolbarNavIconContainerStyle">
-        <item name="android:layout_width">@dimen/chassis_toolbar_nav_button_width</item>
-        <item name="android:layout_height">0dp</item>
-        <item name="android:background">?android:attr/selectableItemBackground</item>
-    </style>
-
-    <style name="ChassisToolbarNavIconStyle">
-        <item name="android:layout_width">@dimen/chassis_toolbar_icon_size</item>
-        <item name="android:layout_height">@dimen/chassis_toolbar_icon_size</item>
-        <item name="android:layout_gravity">center</item>
+    <style name="Widget.Chassis.Toolbar.NavIcon">
         <item name="android:tint">@color/chassis_primary_text_color</item>
         <item name="android:src">@drawable/chassis_icon_arrow_back</item>
-        <item name="android:scaleType">fitXY</item>
     </style>
 
-    <style name="ChassisToolbarLogoStyle">
-        <item name="android:layout_width">@dimen/chassis_toolbar_icon_size</item>
-        <item name="android:layout_height">@dimen/chassis_toolbar_icon_size</item>
-        <item name="android:layout_gravity">center</item>
-        <item name="android:scaleType">fitXY</item>
-    </style>
-
-    <style name="ChassisToolbarTextButtonStyle">
+    <style name="Widget.Chassis.Toolbar.TextButton">
         <item name="android:background">?android:attr/selectableItemBackground</item>
         <item name="android:textColor">?android:attr/colorAccent</item>
-        <item name="android:textAppearance">@style/TextAppearance.Body3</item>
+        <item name="android:textAppearance">@style/TextAppearance.Chassis.Widget.Toolbar.Tab</item>
     </style>
 
-    <style name="TextAppearance">
-        <item name="android:fontFamily">roboto-regular</item>
-        <item name="android:textColor">@color/chassis_primary_text_color</item>
+    <style name="Widget.Chassis.PagedRecyclerView"/>
+    <style name="Widget.Chassis.PagedRecyclerView.NestedRecyclerView"/>
+
+    <style name="TextAppearance.Chassis" parent="android:TextAppearance.DeviceDefault">
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
     </style>
 
-    <style name="TextAppearance.Body1" parent="TextAppearance">
+    <style name="TextAppearance.Chassis.Widget"/>
+
+    <style name="TextAppearance.Chassis.Widget.Toolbar"/>
+
+    <style name="TextAppearance.Chassis.Widget.Toolbar.Title">
+        <item name="android:singleLine">true</item>
         <item name="android:textSize">32sp</item>
         <item name="android:letterSpacing">@dimen/chassis_letter_spacing_body1</item>
     </style>
 
-    <style name="TextAppearance.Body3" parent="TextAppearance">
+    <style name="TextAppearance.Chassis.Widget.Toolbar.Tab">
         <item name="android:textSize">24sp</item>
         <item name="android:letterSpacing">@dimen/chassis_letter_spacing_body3</item>
     </style>
-
-    <style name="PagedRecyclerView">
-    </style>
-    <style name="PagedRecyclerView.NestedRecyclerView">
-    </style>
 </resources>
diff --git a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
index 3296caa..1de483b 100644
--- a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
+++ b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
@@ -264,7 +264,7 @@
         TypedArray a =
                 context.obtainStyledAttributes(
                         attrs, R.styleable.PagedRecyclerView, defStyleAttr,
-                        R.style.PagedRecyclerView);
+                        R.style.Widget_Chassis_PagedRecyclerView);
 
         mScrollBarEnabled = context.getResources().getBoolean(R.bool.chassis_scrollbar_enable);
         mFullyInitialized = false;
@@ -276,7 +276,8 @@
         }
 
         mNestedRecyclerView =
-                new RecyclerView(context, attrs, R.style.PagedRecyclerView_NestedRecyclerView);
+                new RecyclerView(context, attrs,
+                        R.style.Widget_Chassis_PagedRecyclerView_NestedRecyclerView);
 
         mScrollBarPaddingStart =
                 context.getResources().getDimension(R.dimen.chassis_scrollbar_padding_start);
diff --git a/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java b/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java
index 24ec5d7..005e598 100644
--- a/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java
+++ b/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java
@@ -16,11 +16,11 @@
 package com.android.car.chassis.toolbar;
 
 import android.content.Context;
-import android.content.res.TypedArray;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.util.ArraySet;
 import android.util.AttributeSet;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -56,7 +56,6 @@
  * can be customized.
  *
  * <p>Touch feedback is using @android:attr/selectableItemBackground.
- *
  */
 public class TabLayout extends LinearLayout {
 
@@ -65,13 +64,16 @@
      */
     public interface Listener {
         /** Callback triggered when a tab is selected. */
-        default void onTabSelected(Tab tab) {}
+        default void onTabSelected(Tab tab) {
+        }
 
         /** Callback triggered when a tab is unselected. */
-        default void onTabUnselected(Tab tab) {}
+        default void onTabUnselected(Tab tab) {
+        }
 
         /** Callback triggered when a tab is reselected. */
-        default void onTabReselected(Tab tab) {}
+        default void onTabReselected(Tab tab) {
+        }
     }
 
     // View attributes
@@ -187,11 +189,10 @@
         tabItemView.setOrientation(LinearLayout.VERTICAL);
         tabItemView.setGravity(Gravity.CENTER);
         tabItemView.setPadding(mTabPaddingX, 0, mTabPaddingX, 0);
-        TypedArray ta = getContext().obtainStyledAttributes(R.style.ChassisTabItemBackground,
-                new int[]{android.R.attr.background});
-        Drawable backgroundDrawable = ta.getDrawable(0);
-        ta.recycle();
-        tabItemView.setBackground(backgroundDrawable);
+        TypedValue tv = new TypedValue();
+        getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
+                tv, /* resolveRefs= */ true);
+        tabItemView.setBackgroundResource(tv.resourceId);
         return tabItemView;
     }