| 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;
|
| +}
|
|
|