Add listener for panel header icon

Bug: 146813761
Test: make -j42 RunSettingsRoboTests
Change-Id: I473b535593d4ecb445027d6c7dafbb235a70ffcf
diff --git a/src/com/android/settings/panel/PanelContent.java b/src/com/android/settings/panel/PanelContent.java
index 5670469..60b9ed7 100644
--- a/src/com/android/settings/panel/PanelContent.java
+++ b/src/com/android/settings/panel/PanelContent.java
@@ -55,7 +55,6 @@
      */
     List<Uri> getSlices();
 
-
     /**
      * @return an {@link Intent} to the full content in Settings that is summarized by the Panel.
      *
@@ -64,4 +63,15 @@
      * </p>
      */
     Intent getSeeMoreIntent();
+
+    /**
+     * @return an {@link Intent} to the go to the target activity.
+     *
+     * <p>
+     *     A common usage is to go back to previous panel.
+     * </p>
+     */
+    default Intent getHeaderIconIntent() {
+        return null;
+    }
 }
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 8fda894..0f46758 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -201,6 +201,9 @@
             mTitleIcon.setImageIcon(icon.toIcon(getContext()));
             mHeaderTitle.setText(mPanel.getTitle());
             mHeaderSubtitle.setText(mPanel.getSubTitle());
+            if (mPanel.getHeaderIconIntent() != null) {
+                mTitleIcon.setOnClickListener(getHeaderIconListener());
+            }
         }
         mSeeMoreButton.setOnClickListener(getSeeMoreListener());
         mDoneButton.setOnClickListener(getCloseListener());
@@ -381,4 +384,12 @@
             getActivity().finish();
         };
     }
+
+    @VisibleForTesting
+    View.OnClickListener getHeaderIconListener() {
+        return (v) -> {
+            final FragmentActivity activity = getActivity();
+            activity.startActivity(mPanel.getHeaderIconIntent());
+        };
+    }
 }