Update pinned side panel toolbar button highlighting and add ability to unpin/repin.

This cl:
- Adds a profile pref for whether the csc side panel should be pinned,
  the default state is pinned.
- Adds a context menu for the pinned button with the ability to unpin
- Adds a pin button in the side panel header only for csc with the
  ability to unpin/repin
- Updates highlighting so that CSC button is highlighted if CSC is
  open and the button is visible (otherwise the side panel button is
  highlighted)
- Updated toolbar button interaction so clicking csc or side panel
  button while highlighted closes the side panel, and clicking a
  non-highlighted button behaves the same whether the side panel is
  open or closed.

Follow-up work includes updating the pin icon and tooltip, updating the
side panel button tooltip while CSC is open, and logging metrics.

Bug: b:272116476, b:272116688
Change-Id: Icde01e4247ac37e2d5f8f1f2053d30bd06538cba
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4354637
Reviewed-by: Dana Fried <[email protected]>
Commit-Queue: Caroline Rising <[email protected]>
Reviewed-by: Gabriel Charette <[email protected]>
Reviewed-by: Emily Shack <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1120954}
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index d5c20db..bc34265 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -75,6 +75,7 @@
 #include "chrome/browser/ui/prefs/prefs_tab_helper.h"
 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h"
 #include "chrome/browser/ui/send_tab_to_self/send_tab_to_self_bubble.h"
+#include "chrome/browser/ui/side_panel/side_panel_prefs.h"
 #include "chrome/browser/ui/tabs/pinned_tab_codec.h"
 #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
 #include "chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.h"
@@ -1718,12 +1719,7 @@
   registry->RegisterBooleanPref(
       webauthn::pref_names::kRemoteProxiedRequestsAllowed, false);
 
-  // When in RTL mode, the side panel should default to the left of the screen.
-  // Otherwise, the side panel should default to the right side of the screen.
-  // TODO(dljames): Add enum values kAlternateSide / kDefaultSide that will
-  // replace false and true respectively.
-  registry->RegisterBooleanPref(prefs::kSidePanelHorizontalAlignment,
-                                base::i18n::IsRTL() ? false : true);
+  side_panel_prefs::RegisterProfilePrefs(registry);
 #endif
 
   registry->RegisterBooleanPref(webauthn::pref_names::kAllowWithBrokenCerts,