Reland "Reland "Disable customize chrome context menu item when customize chrome isn't registered.""

This is a reland of commit 62361738e694763ead55a911d18d82107653d7ef

See patchset 1 vs 2 for the test failure fix. This test started failing because we added a check that verifies that customize chrome is registered to the tab's registry and the test was ensuring registry to the window's registry.

Original change's description:
> Reland "Disable customize chrome context menu item when customize chrome isn't registered."
>
> This is a reland of commit dd6a0645bb72aa8ba8cf4cf7ba3c9b27f7238de6
>
> See patchset 1 vs 2 for the difference which adds the missing dep that
> this was reverted for to chrome/browser/ui/views/toolbar/BUILD.gn
>
> Original change's description:
> > Disable customize chrome context menu item when customize chrome isn't registered.
> >
> > This also adds a check in BrowserCommandController to not try to open
> > the customize chrome side panel if it is not registered which it checks
> > for the customize chrome side panel controller. Also add test.
> >
> > Bug: 364340028
> > Change-Id: I2478f0bb0b845eb92b4e18dfb21e3bf8bc7d56e5
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5846012
> > Commit-Queue: Caroline Rising <corising@chromium.org>
> > Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
> > Reviewed-by: David Pennington <dpenning@chromium.org>
> > Cr-Commit-Position: refs/heads/main@{#1353291}
>
> Bug: 364340028
> Change-Id: I132ae8d117d03241253ebb880d1190a2ad34e827
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5850510
> Reviewed-by: David Pennington <dpenning@chromium.org>
> Commit-Queue: Caroline Rising <corising@chromium.org>
> Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
> Cr-Commit-Position: refs/heads/main@{#1353965}

Bug: 364340028, 365953512
Change-Id: Ic07e461efe95536b009ce8f8d15ae93d557f4c4d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5854947
Commit-Queue: Caroline Rising <corising@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: David Pennington <dpenning@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1354512}
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 7fcb036..c07f1397 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -2006,7 +2006,8 @@
   customize_chrome::SidePanelController* side_panel_controller =
       tab->tab_features()->customize_chrome_side_panel_controller();
 
-  if (!side_panel_controller) {
+  if (!side_panel_controller ||
+      !side_panel_controller->IsCustomizeChromeEntryAvailable()) {
     return;
   }
 
diff --git a/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc b/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc
index a35eb68..1afc9dc 100644
--- a/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc
+++ b/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc
@@ -247,9 +247,9 @@
   // Replace the contents of the CustomizeChrome side panel with an empty view
   // so it loads faster.
   auto* registry = browser()
-                       ->browser_window_features()
-                       ->side_panel_coordinator()
-                       ->GetWindowRegistry();
+                       ->GetActiveTabInterface()
+                       ->GetTabFeatures()
+                       ->side_panel_registry();
   registry->Deregister(
       SidePanelEntry::Key(SidePanelEntry::Id::kCustomizeChrome));
   registry->Register(std::make_unique<SidePanelEntry>(
diff --git a/chrome/browser/ui/views/toolbar/BUILD.gn b/chrome/browser/ui/views/toolbar/BUILD.gn
index e7a443d8..e368f86 100644
--- a/chrome/browser/ui/views/toolbar/BUILD.gn
+++ b/chrome/browser/ui/views/toolbar/BUILD.gn
@@ -116,6 +116,7 @@
     "//chrome/browser/ui/actions:actions_headers",
     "//chrome/browser/ui/browser_window",
     "//chrome/browser/ui/color:mixers",
+    "//chrome/browser/ui/customize_chrome",
     "//chrome/browser/ui/tabs:tab_enums",
     "//chrome/browser/ui/tabs:tab_strip_model_observer",
     "//chrome/browser/ui/views/side_panel:side_panel_enums",
diff --git a/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc b/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc
index c78bb82..65803837 100644
--- a/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc
+++ b/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc
@@ -14,6 +14,8 @@
 #include "chrome/browser/ui/browser_actions.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_window/public/browser_window_features.h"
+#include "chrome/browser/ui/customize_chrome/side_panel_controller.h"
+#include "chrome/browser/ui/tabs/public/tab_features.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/side_panel/side_panel_action_callback.h"
 #include "chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container.h"
@@ -345,6 +347,13 @@
   if (command_id == IDC_UPDATE_SIDE_PANEL_PIN_STATE) {
     return browser_->profile()->IsRegularProfile() && is_pinnable_;
   }
+  if (command_id == IDC_SHOW_CUSTOMIZE_CHROME_TOOLBAR) {
+    tabs::TabModel* tab = browser_->tab_strip_model()->GetActiveTab();
+    customize_chrome::SidePanelController* side_panel_controller =
+        tab->tab_features()->customize_chrome_side_panel_controller();
+    return side_panel_controller &&
+           side_panel_controller->IsCustomizeChromeEntryAvailable();
+  }
   return true;
 }
 
diff --git a/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_browsertest.cc b/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_browsertest.cc
index 2fffc10..ba485079 100644
--- a/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_browsertest.cc
+++ b/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_browsertest.cc
@@ -109,6 +109,18 @@
 }
 
 IN_PROC_BROWSER_TEST_F(PinnedToolbarActionsContainerBrowserTest,
+                       CustomizeToolbarCanNotBeCalledFromIncognitoWindow) {
+  Browser* incognito_browser = Browser::Create(Browser::CreateParams(
+      browser()->profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true),
+      true));
+  AddBlankTabAndShow(incognito_browser);
+  auto pinned_button = std::make_unique<PinnedActionToolbarButton>(
+      incognito_browser, actions::kActionCut, container());
+  EXPECT_FALSE(
+      pinned_button->IsCommandIdEnabled(IDC_SHOW_CUSTOMIZE_CHROME_TOOLBAR));
+}
+
+IN_PROC_BROWSER_TEST_F(PinnedToolbarActionsContainerBrowserTest,
                        TranslateStatusIndicator) {
   PinnedToolbarActionsModel* const actions_model =
       PinnedToolbarActionsModel::Get(browser()->profile());