Update all findViewById() references to findViewByRefId()

Fixes: 157765857
Test: Robotests & CarUILibUnitTests

Change-Id: I818189e45f3bc4c5eae3fd6ddfb6b69a56a79193
diff --git a/car-ui-lib/findviewbyid-preupload-hook.sh b/car-ui-lib/findviewbyid-preupload-hook.sh
index 4969536..6478802 100755
--- a/car-ui-lib/findviewbyid-preupload-hook.sh
+++ b/car-ui-lib/findviewbyid-preupload-hook.sh
@@ -1,11 +1,7 @@
 #!/bin/bash
 
-if grep -rq "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/toolbar/; then
-    grep -r "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/toolbar/;
+if grep -rq --exclude=CarUiUtils.java "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/; then
+    grep -r --exclude-CarUiUtils.java "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/;
     echo "Illegal use of findViewById or requireViewById in car-ui-lib. Please consider using CarUiUtils#findViewByRefId or CarUiUtils#requireViewByRefId" && false;
 fi
 
-if grep -rq "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/recyclerview/; then
-    grep -r "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/recyclerview/;
-    echo "Illegal use of findViewById or requireViewById in car-ui-lib. Please consider using CarUiUtils#findViewByRefId or CarUiUtils#requireViewByRefId" && false;
-fi
diff --git a/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java b/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java
index caa967f..82801cc 100644
--- a/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java
+++ b/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java
@@ -42,6 +42,7 @@
 
 import com.android.car.ui.recyclerview.CarUiListItemAdapter;
 import com.android.car.ui.recyclerview.CarUiRadioButtonListItemAdapter;
+import com.android.car.ui.utils.CarUiUtils;
 
 /**
  * Wrapper for AlertDialog.Builder
@@ -366,7 +367,7 @@
     private void setCustomList(@NonNull CarUiListItemAdapter adapter) {
         View customList = LayoutInflater.from(mContext).inflate(
                 R.layout.car_ui_alert_dialog_list, null);
-        RecyclerView mList = customList.requireViewById(R.id.list);
+        RecyclerView mList = CarUiUtils.requireViewByRefId(customList, R.id.list);
         mList.setLayoutManager(new LinearLayoutManager(mContext));
         mList.setAdapter(adapter);
         mBuilder.setView(customList);
@@ -599,7 +600,7 @@
         View contentView = LayoutInflater.from(mContext).inflate(
                 R.layout.car_ui_alert_dialog_edit_text, null);
 
-        EditText editText = contentView.requireViewById(R.id.textbox);
+        EditText editText = CarUiUtils.requireViewByRefId(contentView, R.id.textbox);
         editText.setText(prompt);
 
         if (textChangedListener != null) {
@@ -638,9 +639,9 @@
         View customTitle = LayoutInflater.from(mContext).inflate(
                 R.layout.car_ui_alert_dialog_title_with_subtitle, null);
 
-        TextView mTitleView = customTitle.requireViewById(R.id.alertTitle);
-        TextView mSubtitleView = customTitle.requireViewById(R.id.alertSubtitle);
-        ImageView mIconView = customTitle.requireViewById(R.id.icon);
+        TextView mTitleView = CarUiUtils.requireViewByRefId(customTitle, R.id.alertTitle);
+        TextView mSubtitleView = CarUiUtils.requireViewByRefId(customTitle, R.id.alertSubtitle);
+        ImageView mIconView = CarUiUtils.requireViewByRefId(customTitle, R.id.icon);
 
         mTitleView.setText(mTitle);
         mTitleView.setVisibility(TextUtils.isEmpty(mTitle) ? View.GONE : View.VISIBLE);
diff --git a/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java b/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java
index 4198f9b..8ec0972 100644
--- a/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java
+++ b/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java
@@ -35,6 +35,7 @@
 import com.android.car.ui.baselayout.InsetsChangedListener;
 import com.android.car.ui.toolbar.ToolbarController;
 import com.android.car.ui.toolbar.ToolbarControllerImpl;
+import com.android.car.ui.utils.CarUiUtils;
 
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -71,7 +72,8 @@
      *
      * <p>You can get a reference to it by calling {@link #getBaseLayout(Activity)}.
      */
-    /* package */ static void build(Activity activity) {
+    /* package */
+    static void build(Activity activity) {
         if (getThemeBoolean(activity, R.attr.carUiBaseLayout)) {
             sBaseLayoutMap.put(activity, new BaseLayoutController(activity));
         }
@@ -80,7 +82,8 @@
     /**
      * Destroy the BaseLayoutController for the given {@link Activity}.
      */
-    /* package */ static void destroy(Activity activity) {
+    /* package */
+    static void destroy(Activity activity) {
         sBaseLayoutMap.remove(activity);
     }
 
@@ -121,21 +124,22 @@
                 .inflate(baseLayoutRes, null, false);
 
         // Replace windowContentView with baseLayout
-        ViewGroup windowContentView = activity.getWindow().findViewById(android.R.id.content);
+        ViewGroup windowContentView = CarUiUtils.findViewByRefId(
+                activity.getWindow().getDecorView(), android.R.id.content);
         ViewGroup contentViewParent = (ViewGroup) windowContentView.getParent();
         int contentIndex = contentViewParent.indexOfChild(windowContentView);
         contentViewParent.removeView(windowContentView);
         contentViewParent.addView(baseLayout, contentIndex, windowContentView.getLayoutParams());
 
         // Add windowContentView to the baseLayout's content view
-        FrameLayout contentView = baseLayout.requireViewById(R.id.content);
+        FrameLayout contentView = CarUiUtils.requireViewByRefId(baseLayout, R.id.content);
         contentView.addView(windowContentView, new FrameLayout.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.MATCH_PARENT));
 
         if (toolbarEnabled) {
             if (legacyToolbar) {
-                mToolbarController = baseLayout.requireViewById(R.id.car_ui_toolbar);
+                mToolbarController = CarUiUtils.requireViewByRefId(baseLayout, R.id.car_ui_toolbar);
             } else {
                 mToolbarController = new ToolbarControllerImpl(baseLayout);
             }
@@ -150,7 +154,7 @@
      * {@link android.content.res.Resources.Theme}.
      */
     private static boolean getThemeBoolean(Activity activity, int attr) {
-        TypedArray a = activity.getTheme().obtainStyledAttributes(new int[] { attr });
+        TypedArray a = activity.getTheme().obtainStyledAttributes(new int[]{attr});
 
         try {
             return a.getBoolean(0, false);
@@ -191,8 +195,8 @@
         /**
          * Constructs an InsetsUpdater that calculates and dispatches insets to an {@link Activity}.
          *
-         * @param activity The activity that is using base layouts
-         * @param baseLayout The root view of the base layout
+         * @param activity    The activity that is using base layouts
+         * @param baseLayout  The root view of the base layout
          * @param contentView The android.R.id.content View
          */
         InsetsUpdater(Activity activity, View baseLayout, View contentView) {
@@ -252,7 +256,8 @@
                 return;
             }
 
-            View content = mActivity.requireViewById(android.R.id.content);
+            View content = CarUiUtils.requireViewByRefId(mActivity.getWindow().getDecorView(),
+                    android.R.id.content);
 
             // Calculate how much each inset view overlays the content view
             int top = 0;
@@ -305,8 +310,9 @@
             }
 
             if (!handled) {
-                mActivity.requireViewById(android.R.id.content).setPadding(
-                        insets.getLeft(), insets.getTop(), insets.getRight(), insets.getBottom());
+                CarUiUtils.requireViewByRefId(mActivity.getWindow().getDecorView(),
+                        android.R.id.content).setPadding(insets.getLeft(), insets.getTop(),
+                        insets.getRight(), insets.getBottom());
             }
         }
 
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java
index 6a848b8..4a61b3f 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java
@@ -36,6 +36,8 @@
 import androidx.fragment.app.DialogFragment;
 import androidx.preference.DialogPreference;
 
+import com.android.car.ui.utils.CarUiUtils;
+
 /**
  * Abstract base class which presents a dialog associated with a {@link
  * androidx.preference.DialogPreference}. Since the preference object may not be available during
@@ -193,7 +195,7 @@
      */
     @CallSuper
     protected void onBindDialogView(View view) {
-        View dialogMessageView = view.findViewById(android.R.id.message);
+        View dialogMessageView = CarUiUtils.findViewByRefId(view, android.R.id.message);
 
         if (dialogMessageView != null) {
             CharSequence message = mDialogMessage;
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java
index 8774491..3882e03 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java
@@ -25,6 +25,7 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
 
 /**
  * This class extends the base {@link EditTextPreference} class. Adds the drawable icon to
@@ -65,7 +66,7 @@
      */
     @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
     public View getWidgetActionContainer(PreferenceViewHolder holder) {
-        return holder.findViewById(R.id.action_widget_container);
+        return CarUiUtils.findViewByRefId(holder.itemView, R.id.action_widget_container);
     }
 
     @Override
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java
index 288ec95..f02f105 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java
@@ -24,6 +24,7 @@
 import androidx.preference.TwoStatePreference;
 
 import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
 
 /** A preference which shows a radio button at the start of the preference. */
 public class CarUiRadioButtonPreference extends TwoStatePreference {
@@ -58,7 +59,8 @@
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
-        RadioButton radioButton = (RadioButton) holder.findViewById(R.id.radio_button);
+        RadioButton radioButton = (RadioButton) CarUiUtils.findViewByRefId(holder.itemView,
+                R.id.radio_button);
         radioButton.setChecked(isChecked());
     }
 }
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java
index 3b3a238..7458e9b 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java
@@ -25,6 +25,7 @@
 import androidx.preference.DialogPreference;
 
 import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
 
 /** A class implements some basic methods of a seekbar dialog preference. */
 public class CarUiSeekBarDialogPreference extends DialogPreference
@@ -83,10 +84,10 @@
 
     @Override
     public void onBindDialogView(View view) {
-        mSeekBar = view.findViewById(R.id.seek_bar);
-        mSeekBarTopTextView = view.findViewById(R.id.seek_bar_text_top);
-        mSeekBarLeftTextView = view.findViewById(R.id.seek_bar_text_left);
-        mSeekBarRightTextView = view.findViewById(R.id.seek_bar_text_right);
+        mSeekBar = CarUiUtils.findViewByRefId(view, R.id.seek_bar);
+        mSeekBarTopTextView = CarUiUtils.findViewByRefId(view, R.id.seek_bar_text_top);
+        mSeekBarLeftTextView = CarUiUtils.findViewByRefId(view, R.id.seek_bar_text_left);
+        mSeekBarRightTextView = CarUiUtils.findViewByRefId(view, R.id.seek_bar_text_right);
 
         setProgress(mSeekBarProgress);
 
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java
index a96cef1..bd4ff66 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java
@@ -24,6 +24,7 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
 
 /**
  * A preference which can perform two actions. The secondary action is shown by default.
@@ -85,8 +86,9 @@
     @Override
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
-        View actionContainer = holder.findViewById(R.id.action_widget_container);
-        View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+        View actionContainer = CarUiUtils.findViewByRefId(holder.itemView,
+                R.id.action_widget_container);
+        View widgetFrame = CarUiUtils.findViewByRefId(holder.itemView, android.R.id.widget_frame);
         if (mIsActionShown) {
             actionContainer.setVisibility(View.VISIBLE);
             onBindWidgetFrame(widgetFrame);
diff --git a/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java b/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java
index 97a58d2..7df5228 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java
@@ -28,6 +28,8 @@
 import androidx.annotation.NonNull;
 import androidx.preference.EditTextPreference;
 
+import com.android.car.ui.utils.CarUiUtils;
+
 /**
  * Presents a dialog with an {@link EditText} associated with an {@link EditTextPreference}.
  *
@@ -78,7 +80,7 @@
     protected void onBindDialogView(View view) {
         super.onBindDialogView(view);
 
-        mEditText = view.findViewById(android.R.id.edit);
+        mEditText = CarUiUtils.findViewByRefId(view, android.R.id.edit);
 
         if (mEditText == null) {
             throw new IllegalStateException(
diff --git a/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java b/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java
index b3da82e..0369bdf 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java
@@ -40,6 +40,7 @@
 import com.android.car.ui.recyclerview.CarUiRecyclerView;
 import com.android.car.ui.toolbar.Toolbar;
 import com.android.car.ui.toolbar.ToolbarController;
+import com.android.car.ui.utils.CarUiUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -93,12 +94,12 @@
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-        final CarUiRecyclerView carUiRecyclerView = view.requireViewById(R.id.list);
+        final CarUiRecyclerView carUiRecyclerView = CarUiUtils.requireViewByRefId(view, R.id.list);
         mToolbar = CarUi.getToolbar(getActivity());
 
         // TODO(b/150230923) remove the code for the old toolbar height change when apps are ready
         if (mToolbar == null) {
-            Toolbar toolbarView = view.requireViewById(R.id.toolbar);
+            Toolbar toolbarView = CarUiUtils.requireViewByRefId(view, R.id.toolbar);
             mToolbar = toolbarView;
 
             carUiRecyclerView.setPadding(0, toolbarView.getHeight(), 0, 0);
@@ -211,7 +212,7 @@
     @Override
     public void onCarUiInsetsChanged(Insets insets) {
         View view = requireView();
-        view.requireViewById(R.id.list)
+        CarUiUtils.requireViewByRefId(view, R.id.list)
                 .setPadding(0, insets.getTop(), 0, insets.getBottom());
         view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
     }
diff --git a/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java b/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
index 1fc1014..6f608b9 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
@@ -39,6 +39,7 @@
 import com.android.car.ui.recyclerview.CarUiRecyclerView;
 import com.android.car.ui.toolbar.Toolbar;
 import com.android.car.ui.toolbar.ToolbarController;
+import com.android.car.ui.utils.CarUiUtils;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -89,12 +90,12 @@
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-        final CarUiRecyclerView recyclerView = view.requireViewById(R.id.list);
+        final CarUiRecyclerView recyclerView = CarUiUtils.requireViewByRefId(view, R.id.list);
         mToolbar = CarUi.getToolbar(requireActivity());
 
         // TODO(b/150230923) remove the code for the old toolbar height change when apps are ready
         if (mToolbar == null) {
-            Toolbar toolbarView = view.requireViewById(R.id.toolbar);
+            Toolbar toolbarView = CarUiUtils.requireViewByRefId(view, R.id.toolbar);
             mToolbar = toolbarView;
 
             recyclerView.setPadding(0, toolbarView.getHeight(), 0, 0);
@@ -206,7 +207,7 @@
     @Override
     public void onCarUiInsetsChanged(Insets insets) {
         View view = requireView();
-        view.requireViewById(R.id.list)
+        CarUiUtils.requireViewByRefId(view, R.id.list)
                 .setPadding(0, insets.getTop(), 0, insets.getBottom());
         view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
     }
diff --git a/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java b/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java
index 853c173..4d664e2 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java
@@ -83,8 +83,8 @@
         }
 
         // TODO(b/150230923) remove the code for the old toolbar height change when apps are ready
-        final RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
-        final Toolbar toolbar = view.findViewById(R.id.toolbar);
+        final RecyclerView recyclerView = CarUiUtils.findViewByRefId(view, R.id.recycler_view);
+        final Toolbar toolbar = CarUiUtils.findViewByRefId(view, R.id.toolbar);
         if (recyclerView == null || toolbar == null) {
             return;
         }
@@ -118,7 +118,7 @@
     @Override
     public void onCarUiInsetsChanged(Insets insets) {
         View view = requireView();
-        view.requireViewById(R.id.recycler_view)
+        CarUiUtils.requireViewByRefId(view, R.id.recycler_view)
                 .setPadding(0, insets.getTop(), 0, insets.getBottom());
         view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
     }