Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / ui / tabs / tab_menu_model.cc
blob25b449127047b026c308b5753cc424a4a12b1781
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,
15 int index)
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) {
31 AddItemWithStringId(
32 TabStripModel::CommandTogglePinned,
33 will_pin ? IDS_TAB_CXMENU_PIN_TABS : IDS_TAB_CXMENU_UNPIN_TABS);
34 } else {
35 AddItemWithStringId(
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());
42 AddItemWithStringId(
43 TabStripModel::CommandToggleTabAudioMuted,
44 will_mute ? IDS_TAB_CXMENU_AUDIO_MUTE_TABS :
45 IDS_TAB_CXMENU_AUDIO_UNMUTE_TABS);
46 } else {
47 const bool will_mute =
48 !tab_strip->GetWebContentsAt(index)->IsAudioMuted();
49 AddItemWithStringId(
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);
58 } else {
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);