Skip to content

Commit

Permalink
Disable Super G icon when Search Companion is not available on page
Browse files Browse the repository at this point in the history
This required to things:
1. Using a different Super G icon that has padding built in (requested
   by UI)
2. When disabled, switch to a monochrome icon so the disabled theme
   can be applied.

https://screencast.googleplex.com/cast/NjU1NTU1NDk3ODcyNTg4OHwwNzI5YjBmNy1hMA

(cherry picked from commit b760749)

Bug: b:284980135
Change-Id: I7756d27ddee593b416d88138bcc8030e08e37955
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4581150
Reviewed-by: Caroline Rising <corising@chromium.org>
Commit-Queue: Duncan Mercer <mercerd@google.com>
Reviewed-by: Ali Stanfield <stanfield@google.com>
Cr-Original-Commit-Position: refs/heads/main@{#1153443}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4591038
Commit-Queue: Michael Crouse <mcrouse@chromium.org>
Reviewed-by: Shakti Sahu <shaktisahu@chromium.org>
Reviewed-by: Duncan Mercer <mercerd@google.com>
Cr-Commit-Position: refs/branch-heads/5790@{#406}
Cr-Branched-From: 1d71a33-refs/heads/main@{#1148114}
  • Loading branch information
Duncan Mercer authored and Chromium LUCI CQ committed Jun 6, 2023
1 parent 070d1ec commit 16eb494
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 10 deletions.
Expand Up @@ -16,6 +16,7 @@
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/side_panel/side_panel_entry.h"
#include "chrome/browser/ui/views/side_panel/side_panel_registry.h"
#include "chrome/browser/ui/views/side_panel/side_panel_toolbar_container.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/common/pref_names.h"
Expand All @@ -31,9 +32,11 @@ SearchCompanionSidePanelCoordinator::SearchCompanionSidePanelCoordinator(
// TODO(b/269331995): Localize menu item label.
name_(l10n_util::GetStringUTF16(IDS_SIDE_PANEL_COMPANION_TITLE)),
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
icon_(vector_icons::kGoogleGLogoIcon),
icon_(vector_icons::kGoogleSuperGIcon),
disabled_icon_(vector_icons::kGoogleGLogoMonochromeIcon),
#else
icon_(vector_icons::kSearchIcon),
disabled_icon_(vector_icons::kSearchIcon),
#endif
pref_service_(browser->profile()->GetPrefs()) {
if (auto* template_url_service =
Expand Down Expand Up @@ -113,15 +116,15 @@ void SearchCompanionSidePanelCoordinator::OnTabStripModelChanged(
}
}
if (selection.active_tab_changed()) {
MaybeUpdatePinnedButtonEnabledState();
MaybeUpdateCompanionEnabledState();
}
}

void SearchCompanionSidePanelCoordinator::TabChangedAt(
content::WebContents* contents,
int index,
TabChangeType change_type) {
MaybeUpdatePinnedButtonEnabledState();
MaybeUpdateCompanionEnabledState();
}

void SearchCompanionSidePanelCoordinator::
Expand Down Expand Up @@ -175,19 +178,45 @@ void SearchCompanionSidePanelCoordinator::
}
}

void SearchCompanionSidePanelCoordinator::
MaybeUpdatePinnedButtonEnabledState() {
void SearchCompanionSidePanelCoordinator::MaybeUpdateCompanionEnabledState() {
bool enabled = companion::IsCompanionAvailableForCurrentActiveTab(browser_);
MaybeUpdatePinnedButtonEnabledState(enabled);
MaybeUpdateComboboxEntryEnabledState(enabled);
}

void SearchCompanionSidePanelCoordinator::MaybeUpdatePinnedButtonEnabledState(
bool enabled) {
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_);
if (!browser_view) {
return;
}
SidePanelToolbarContainer* container =
browser_view->toolbar()->side_panel_container();
if (container && container->IsPinned(SidePanelEntry::Id::kSearchCompanion)) {
bool enabled = companion::IsCompanionAvailableForCurrentActiveTab(browser_);
container->GetPinnedButtonForId(SidePanelEntry::Id::kSearchCompanion)
.SetEnabled(enabled);
ToolbarButton& button =
container->GetPinnedButtonForId(SidePanelEntry::Id::kSearchCompanion);
button.SetEnabled(enabled);
button.SetVectorIcon(enabled ? icon() : disabled_icon());
}
}

void SearchCompanionSidePanelCoordinator::MaybeUpdateComboboxEntryEnabledState(
bool enabled) {
auto* registry = SidePanelRegistry::Get(
browser_->tab_strip_model()->GetActiveWebContents());
if (!registry) {
return;
}

auto* entry = registry->GetEntryForKey(
SidePanelEntry::Key(SidePanelEntry::Id::kSearchCompanion));
if (!entry) {
return;
}

entry->ResetIcon(ui::ImageModel::FromVectorIcon(
(enabled ? icon() : disabled_icon()), ui::kColorIcon,
/*icon_size=*/16));
}

void SearchCompanionSidePanelCoordinator::OnTemplateURLServiceShuttingDown() {
Expand Down
Expand Up @@ -46,6 +46,7 @@ class SearchCompanionSidePanelCoordinator

std::u16string name() const { return name_; }
const gfx::VectorIcon& icon() { return *icon_; }
const gfx::VectorIcon& disabled_icon() { return *disabled_icon_; }

// TabStripModelObserver:
void OnTabStripModelChanged(
Expand Down Expand Up @@ -74,9 +75,15 @@ class SearchCompanionSidePanelCoordinator
// Updates CSC availability in side panel.
void UpdateCompanionAvailabilityInSidePanel();

// Update companion enabled state based on active tab's url.
void MaybeUpdateCompanionEnabledState();

// Update whether the CSC pinned toolbar button is enabled if the button is
// pinned based on active tab's url.
void MaybeUpdatePinnedButtonEnabledState();
// pinned.
void MaybeUpdatePinnedButtonEnabledState(bool enabled);

// Update whether the CSC combobox entry is enabled if the entry exists.
void MaybeUpdateComboboxEntryEnabledState(bool enabled);

// Called if there is a change in the state of policy pref.
void OnPolicyPrefChanged();
Expand All @@ -87,6 +94,7 @@ class SearchCompanionSidePanelCoordinator
raw_ptr<Browser> browser_;
std::u16string name_;
const raw_ref<const gfx::VectorIcon, ExperimentalAsh> icon_;
const raw_ref<const gfx::VectorIcon, ExperimentalAsh> disabled_icon_;
raw_ptr<PrefService> pref_service_;
bool dsp_is_google_ = false;
bool csc_enabled_via_policy_ = false;
Expand Down

0 comments on commit 16eb494

Please sign in to comment.