OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_CONTEXTUAL_MENU_H_ | 5 #ifndef CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_CONTEXTUAL_MENU_H_ |
6 #define CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_CONTEXTUAL_MENU_H_ | 6 #define CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_CONTEXTUAL_MENU_H_ |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "ui/base/models/simple_menu_model.h" | 10 #include "ui/base/models/simple_menu_model.h" |
11 | 11 |
12 class Browser; | 12 class Browser; |
13 | 13 |
14 // The class for the contextual menu for the Media Router action. | 14 // The class for the contextual menu for the Media Router action. |
15 class MediaRouterContextualMenu : public ui::SimpleMenuModel::Delegate { | 15 class MediaRouterContextualMenu : public ui::SimpleMenuModel::Delegate { |
16 public: | 16 public: |
17 explicit MediaRouterContextualMenu(Browser* browser); | 17 // Creates an instance for a Media Router Action shown in the toolbar. |
| 18 static std::unique_ptr<MediaRouterContextualMenu> CreateForToolbar( |
| 19 Browser* browser); |
18 | 20 |
19 // Constructor for injecting values in tests. | 21 // Creates an instance for a Media Router Action shown in the overflow menu. |
20 MediaRouterContextualMenu(Browser* browser, bool shown_by_policy); | 22 static std::unique_ptr<MediaRouterContextualMenu> CreateForOverflowMenu( |
| 23 Browser* browser); |
| 24 |
| 25 // Constructor called by the static Create* methods above and tests. |
| 26 MediaRouterContextualMenu(Browser* browser, |
| 27 bool is_action_in_toolbar, |
| 28 bool shown_by_policy); |
21 ~MediaRouterContextualMenu() override; | 29 ~MediaRouterContextualMenu() override; |
22 | 30 |
23 ui::MenuModel* menu_model() { return &menu_model_; } | 31 ui::SimpleMenuModel* menu_model() { return &menu_model_; } |
24 | 32 |
25 private: | 33 private: |
26 FRIEND_TEST_ALL_PREFIXES(MediaRouterContextualMenuUnitTest, | 34 FRIEND_TEST_ALL_PREFIXES(MediaRouterContextualMenuUnitTest, |
27 ToggleCloudServicesItem); | 35 ToggleCloudServicesItem); |
28 FRIEND_TEST_ALL_PREFIXES(MediaRouterContextualMenuUnitTest, | 36 FRIEND_TEST_ALL_PREFIXES(MediaRouterContextualMenuUnitTest, |
29 ToggleAlwaysShowIconItem); | 37 ToggleAlwaysShowIconItem); |
30 FRIEND_TEST_ALL_PREFIXES(MediaRouterContextualMenuUnitTest, | 38 FRIEND_TEST_ALL_PREFIXES(MediaRouterContextualMenuUnitTest, |
31 ActionShownByPolicy); | 39 ActionShownByPolicy); |
32 | 40 |
33 // Gets or sets the "Always show icon" option. | 41 // Gets or sets the "Always show icon" option. |
34 bool GetAlwaysShowActionPref() const; | 42 bool GetAlwaysShowActionPref() const; |
35 void SetAlwaysShowActionPref(bool always_show); | 43 void SetAlwaysShowActionPref(bool always_show); |
36 | 44 |
37 // ui::SimpleMenuModel::Delegate: | 45 // ui::SimpleMenuModel::Delegate: |
38 bool IsCommandIdChecked(int command_id) const override; | 46 bool IsCommandIdChecked(int command_id) const override; |
39 bool IsCommandIdEnabled(int command_id) const override; | 47 bool IsCommandIdEnabled(int command_id) const override; |
40 bool IsCommandIdVisible(int command_id) const override; | 48 bool IsCommandIdVisible(int command_id) const override; |
41 void ExecuteCommand(int command_id, int event_flags) override; | 49 void ExecuteCommand(int command_id, int event_flags) override; |
42 | 50 |
| 51 // Opens feedback page loaded from the media router extension. |
43 void ReportIssue(); | 52 void ReportIssue(); |
44 | 53 |
| 54 // Gets the ID corresponding to the text for the menu option to change the |
| 55 // visibility of the action (e.g. "Hide in Chrome menu" / "Show in toolbar") |
| 56 // depending on the location of the action. |
| 57 int GetChangeVisibilityTextId(); |
| 58 |
45 Browser* const browser_; | 59 Browser* const browser_; |
46 ui::SimpleMenuModel menu_model_; | 60 ui::SimpleMenuModel menu_model_; |
47 | 61 |
| 62 // Whether the action icon is in the toolbar, as opposed to the overflow menu. |
| 63 const bool is_action_in_toolbar_; |
| 64 |
48 DISALLOW_COPY_AND_ASSIGN(MediaRouterContextualMenu); | 65 DISALLOW_COPY_AND_ASSIGN(MediaRouterContextualMenu); |
49 }; | 66 }; |
50 | 67 |
51 #endif // CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_CONTEXTUAL_MENU_H_ | 68 #endif // CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_CONTEXTUAL_MENU_H_ |
OLD | NEW |