1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/tabs/tab_menu_model.h"
7 #include "base/command_line.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h"
10 #include "chrome/browser/ui/tabs/tab_utils.h"
11 #include "chrome/grit/generated_resources.h"
13 TabMenuModel::TabMenuModel(ui::SimpleMenuModel::Delegate
* delegate
,
14 TabStripModel
* tab_strip
,
16 : ui::SimpleMenuModel(delegate
) {
17 Build(tab_strip
, index
);
20 void TabMenuModel::Build(TabStripModel
* tab_strip
, int index
) {
21 bool affects_multiple_tabs
=
22 (tab_strip
->IsTabSelected(index
) &&
23 tab_strip
->selection_model().selected_indices().size() > 1);
24 AddItemWithStringId(TabStripModel::CommandNewTab
, IDS_TAB_CXMENU_NEWTAB
);
25 AddSeparator(ui::NORMAL_SEPARATOR
);
26 AddItemWithStringId(TabStripModel::CommandReload
, IDS_TAB_CXMENU_RELOAD
);
27 AddItemWithStringId(TabStripModel::CommandDuplicate
,
28 IDS_TAB_CXMENU_DUPLICATE
);
29 bool will_pin
= tab_strip
->WillContextMenuPin(index
);
30 if (affects_multiple_tabs
) {
32 TabStripModel::CommandTogglePinned
,
33 will_pin
? IDS_TAB_CXMENU_PIN_TABS
: IDS_TAB_CXMENU_UNPIN_TABS
);
36 TabStripModel::CommandTogglePinned
,
37 will_pin
? IDS_TAB_CXMENU_PIN_TAB
: IDS_TAB_CXMENU_UNPIN_TAB
);
39 if (affects_multiple_tabs
) {
40 const bool will_mute
= !chrome::AreAllTabsMuted(
41 *tab_strip
, tab_strip
->selection_model().selected_indices());
43 TabStripModel::CommandToggleTabAudioMuted
,
44 will_mute
? IDS_TAB_CXMENU_AUDIO_MUTE_TABS
:
45 IDS_TAB_CXMENU_AUDIO_UNMUTE_TABS
);
47 const bool will_mute
=
48 !tab_strip
->GetWebContentsAt(index
)->IsAudioMuted();
50 TabStripModel::CommandToggleTabAudioMuted
,
51 will_mute
? IDS_TAB_CXMENU_AUDIO_MUTE_TAB
:
52 IDS_TAB_CXMENU_AUDIO_UNMUTE_TAB
);
54 AddSeparator(ui::NORMAL_SEPARATOR
);
55 if (affects_multiple_tabs
) {
56 AddItemWithStringId(TabStripModel::CommandCloseTab
,
57 IDS_TAB_CXMENU_CLOSETABS
);
59 AddItemWithStringId(TabStripModel::CommandCloseTab
,
60 IDS_TAB_CXMENU_CLOSETAB
);
62 AddItemWithStringId(TabStripModel::CommandCloseOtherTabs
,
63 IDS_TAB_CXMENU_CLOSEOTHERTABS
);
64 AddItemWithStringId(TabStripModel::CommandCloseTabsToRight
,
65 IDS_TAB_CXMENU_CLOSETABSTORIGHT
);
66 AddSeparator(ui::NORMAL_SEPARATOR
);
67 const bool is_window
= tab_strip
->delegate()->GetRestoreTabType() ==
68 TabStripModelDelegate::RESTORE_WINDOW
;
69 AddItemWithStringId(TabStripModel::CommandRestoreTab
,
70 is_window
? IDS_RESTORE_WINDOW
: IDS_RESTORE_TAB
);
71 AddItemWithStringId(TabStripModel::CommandBookmarkAllTabs
,
72 IDS_TAB_CXMENU_BOOKMARK_ALL_TABS
);