Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3192)

Unified Diff: chrome/browser/ui/toolbar/media_router_contextual_menu.cc

Issue 2721953002: [Media Router] Add "Hide in menu/Show in toolbar" option to Cast toolbar icon (Closed)
Patch Set: Address Jennifer's and Mike's comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/toolbar/media_router_contextual_menu.cc
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
index 66374891a01fa8706a6a036c994ce5333cf8c22b..bbd2d22c564d00402bf442ca8212974aa1fe618c 100644
--- a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
+++ b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
@@ -29,15 +29,28 @@
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/vector_icons_public.h"
-MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser)
- : MediaRouterContextualMenu(
- browser,
- MediaRouterActionController::IsActionShownByPolicy(
- browser->profile())) {}
+// static
+std::unique_ptr<MediaRouterContextualMenu>
+MediaRouterContextualMenu::CreateForToolbar(Browser* browser) {
+ return base::MakeUnique<MediaRouterContextualMenu>(
+ browser, true,
+ MediaRouterActionController::IsActionShownByPolicy(browser->profile()));
+}
+
+// static
+std::unique_ptr<MediaRouterContextualMenu>
+MediaRouterContextualMenu::CreateForOverflowMenu(Browser* browser) {
+ return base::MakeUnique<MediaRouterContextualMenu>(
+ browser, false,
+ MediaRouterActionController::IsActionShownByPolicy(browser->profile()));
+}
MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser,
+ bool is_action_in_toolbar,
bool shown_by_policy)
- : browser_(browser), menu_model_(this) {
+ : browser_(browser),
+ menu_model_(this),
+ is_action_in_toolbar_(is_action_in_toolbar) {
menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT,
IDS_MEDIA_ROUTER_ABOUT);
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
@@ -57,6 +70,8 @@ MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser,
IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION,
IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION);
}
+ menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_SHOW_IN_TOOLBAR,
+ GetChangeVisibilityTextId());
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES,
@@ -91,6 +106,11 @@ bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const {
}
bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const {
+ // If the action is in the ephemeral state, disable the menu item for moving
+ // it between the toolbar and the overflow menu, since the preference would
+ // not persist.
+ if (command_id == IDC_MEDIA_ROUTER_SHOW_IN_TOOLBAR)
+ return GetAlwaysShowActionPref();
return command_id != IDC_MEDIA_ROUTER_SHOWN_BY_POLICY;
}
@@ -146,6 +166,12 @@ void MediaRouterContextualMenu::ExecuteCommand(int command_id,
case IDC_MEDIA_ROUTER_REPORT_ISSUE:
ReportIssue();
break;
+ case IDC_MEDIA_ROUTER_SHOW_IN_TOOLBAR:
+ ToolbarActionsModel::Get(browser_->profile())
+ ->SetActionVisibility(
+ ComponentToolbarActionsFactory::kMediaRouterActionId,
+ !is_action_in_toolbar_);
+ break;
default:
NOTREACHED();
}
@@ -167,3 +193,8 @@ void MediaRouterContextualMenu::ReportIssue() {
"/feedback.html");
chrome::ShowSingletonTab(browser_, GURL(feedback_url));
}
+
+int MediaRouterContextualMenu::GetChangeVisibilityTextId() {
+ return is_action_in_toolbar_ ? IDS_EXTENSIONS_HIDE_BUTTON_IN_MENU
+ : IDS_EXTENSIONS_SHOW_BUTTON_IN_TOOLBAR;
+}

Powered by Google App Engine
This is Rietveld 408576698