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

Side by Side Diff: chrome/browser/ui/toolbar/media_router_contextual_menu.cc

Issue 2155293002: Show the Cast toolbar icon ephemerally when Cast is in use (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 4 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 unified diff | Download patch
OLDNEW
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 #include "base/logging.h" 5 #include "base/logging.h"
6 #include "base/metrics/user_metrics.h" 6 #include "base/metrics/user_metrics.h"
7 #include "chrome/app/chrome_command_ids.h" 7 #include "chrome/app/chrome_command_ids.h"
8 #include "chrome/browser/extensions/component_migration_helper.h" 8 #include "chrome/browser/extensions/component_migration_helper.h"
9 #include "chrome/browser/media/router/media_router_factory.h" 9 #include "chrome/browser/media/router/media_router_factory.h"
10 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h" 10 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/singleton_tabs.h" 13 #include "chrome/browser/ui/singleton_tabs.h"
14 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" 14 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h"
15 #include "chrome/browser/ui/toolbar/media_router_action.h"
15 #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h" 16 #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h"
16 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h" 17 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h"
18 #include "chrome/common/pref_names.h"
17 #include "chrome/common/url_constants.h" 19 #include "chrome/common/url_constants.h"
18 #include "chrome/grit/chromium_strings.h" 20 #include "chrome/grit/chromium_strings.h"
19 #include "chrome/grit/generated_resources.h" 21 #include "chrome/grit/generated_resources.h"
22 #include "components/prefs/pref_service.h"
20 #include "extensions/common/constants.h" 23 #include "extensions/common/constants.h"
21 #include "ui/base/l10n/l10n_util.h" 24 #include "ui/base/l10n/l10n_util.h"
22 #include "ui/base/models/menu_model_delegate.h" 25 #include "ui/base/models/menu_model_delegate.h"
23 26
24 #if defined(GOOGLE_CHROME_BUILD) 27 #if defined(GOOGLE_CHROME_BUILD)
25 #include "chrome/browser/signin/signin_manager_factory.h" 28 #include "chrome/browser/signin/signin_manager_factory.h"
26 #include "chrome/common/pref_names.h"
27 #include "components/prefs/pref_service.h"
28 #include "components/signin/core/browser/signin_manager.h" 29 #include "components/signin/core/browser/signin_manager.h"
29 #endif // defined(GOOGLE_CHROME_BUILD) 30 #endif // defined(GOOGLE_CHROME_BUILD)
30 31
31 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser) 32 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser)
32 : browser_(browser), 33 : browser_(browser),
33 menu_model_(this) { 34 menu_model_(this) {
34 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT, 35 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT,
35 IDS_MEDIA_ROUTER_ABOUT); 36 IDS_MEDIA_ROUTER_ABOUT);
36 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 37 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
37 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE, 38 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE,
38 IDS_MEDIA_ROUTER_LEARN_MORE); 39 IDS_MEDIA_ROUTER_LEARN_MORE);
39 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP, 40 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP,
40 IDS_MEDIA_ROUTER_HELP); 41 IDS_MEDIA_ROUTER_HELP);
41 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION, 42 menu_model_.AddCheckItemWithStringId(
42 IDS_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION); 43 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION,
44 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION);
43 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 45 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
44 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 46 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
45 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES, 47 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES,
46 IDS_MEDIA_ROUTER_MANAGE_DEVICES); 48 IDS_MEDIA_ROUTER_MANAGE_DEVICES);
47 #endif 49 #endif
48 #if defined(GOOGLE_CHROME_BUILD) 50 #if defined(GOOGLE_CHROME_BUILD)
49 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE, 51 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE,
50 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE); 52 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE);
51 #endif // defined(GOOGLE_CHROME_BUILD) 53 #endif // defined(GOOGLE_CHROME_BUILD)
52 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE, 54 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE,
53 IDS_MEDIA_ROUTER_REPORT_ISSUE); 55 IDS_MEDIA_ROUTER_REPORT_ISSUE);
54 } 56 }
55 57
56 MediaRouterContextualMenu::~MediaRouterContextualMenu() { 58 MediaRouterContextualMenu::~MediaRouterContextualMenu() {
57 } 59 }
58 60
59 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const { 61 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const {
60 #if defined(GOOGLE_CHROME_BUILD) 62 #if defined(GOOGLE_CHROME_BUILD)
61 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 63 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
62 return browser_->profile()->GetPrefs()->GetBoolean( 64 return browser_->profile()->GetPrefs()->GetBoolean(
63 prefs::kMediaRouterEnableCloudServices); 65 prefs::kMediaRouterEnableCloudServices);
64 } 66 }
65 #endif // defined(GOOGLE_CHROME_BUILD) 67 #endif // defined(GOOGLE_CHROME_BUILD)
68 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) {
69 return browser_->profile()->GetPrefs()->GetBoolean(
70 prefs::kMediaRouterAlwaysShowActionIcon);
71 }
66 return false; 72 return false;
67 } 73 }
68 74
69 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const { 75 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const {
70 return true; 76 return true;
71 } 77 }
72 78
73 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const { 79 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const {
74 #if defined(GOOGLE_CHROME_BUILD) 80 #if defined(GOOGLE_CHROME_BUILD)
75 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 81 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
(...skipping 10 matching lines...) Expand all
86 void MediaRouterContextualMenu::ExecuteCommand(int command_id, 92 void MediaRouterContextualMenu::ExecuteCommand(int command_id,
87 int event_flags) { 93 int event_flags) {
88 const char kAboutPageUrl[] = 94 const char kAboutPageUrl[] =
89 "https://www.google.com/chrome/devices/chromecast/"; 95 "https://www.google.com/chrome/devices/chromecast/";
90 const char kCastHelpCenterPageUrl[] = 96 const char kCastHelpCenterPageUrl[] =
91 "https://support.google.com/chromecast/topic/3447927"; 97 "https://support.google.com/chromecast/topic/3447927";
92 const char kCastLearnMorePageUrl[] = 98 const char kCastLearnMorePageUrl[] =
93 "https://support.google.com/chromecast/answer/2998338"; 99 "https://support.google.com/chromecast/answer/2998338";
94 100
95 #if defined(GOOGLE_CHROME_BUILD) 101 #if defined(GOOGLE_CHROME_BUILD)
96 PrefService* pref_service;
97 #endif // defined(GOOGLE_CHROME_BUILD) 102 #endif // defined(GOOGLE_CHROME_BUILD)
98 switch (command_id) { 103 switch (command_id) {
99 case IDC_MEDIA_ROUTER_ABOUT: 104 case IDC_MEDIA_ROUTER_ABOUT:
100 chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl)); 105 chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl));
101 break; 106 break;
107 case IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION:
108 DCHECK(action_);
109 action_->ToggleVisibilityPreference();
110 break;
102 #if defined(GOOGLE_CHROME_BUILD) 111 #if defined(GOOGLE_CHROME_BUILD)
103 case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE: 112 case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE: {
104 pref_service = browser_->profile()->GetPrefs(); 113 PrefService* pref_service = browser_->profile()->GetPrefs();
105 pref_service->SetBoolean(prefs::kMediaRouterEnableCloudServices, 114 pref_service->SetBoolean(prefs::kMediaRouterEnableCloudServices,
106 !pref_service->GetBoolean(prefs::kMediaRouterEnableCloudServices)); 115 !pref_service->GetBoolean(prefs::kMediaRouterEnableCloudServices));
107 116
108 // If this has been set before, this is a no-op. 117 // If this has been set before, this is a no-op.
109 pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, 118 pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, true);
110 true);
111 break; 119 break;
120 }
112 #endif // defined(GOOGLE_CHROME_BUILD) 121 #endif // defined(GOOGLE_CHROME_BUILD)
113 case IDC_MEDIA_ROUTER_HELP: 122 case IDC_MEDIA_ROUTER_HELP:
114 chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl)); 123 chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl));
115 base::RecordAction(base::UserMetricsAction( 124 base::RecordAction(base::UserMetricsAction(
116 "MediaRouter_Ui_Navigate_Help")); 125 "MediaRouter_Ui_Navigate_Help"));
117 break; 126 break;
118 case IDC_MEDIA_ROUTER_LEARN_MORE: 127 case IDC_MEDIA_ROUTER_LEARN_MORE:
119 chrome::ShowSingletonTab(browser_, GURL(kCastLearnMorePageUrl)); 128 chrome::ShowSingletonTab(browser_, GURL(kCastLearnMorePageUrl));
120 break; 129 break;
121 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 130 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
122 case IDC_MEDIA_ROUTER_MANAGE_DEVICES: 131 case IDC_MEDIA_ROUTER_MANAGE_DEVICES:
123 chrome::ShowSingletonTab(browser_, GURL(chrome::kChromeUICastURL)); 132 chrome::ShowSingletonTab(browser_, GURL(chrome::kChromeUICastURL));
124 break; 133 break;
125 #endif 134 #endif
126 case IDC_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION:
127 RemoveMediaRouterComponentAction();
128 break;
129 case IDC_MEDIA_ROUTER_REPORT_ISSUE: 135 case IDC_MEDIA_ROUTER_REPORT_ISSUE:
130 ReportIssue(); 136 ReportIssue();
131 break; 137 break;
132 default: 138 default:
133 NOTREACHED(); 139 NOTREACHED();
134 } 140 }
135 } 141 }
136 142
143 void MediaRouterContextualMenu::SetMediaRouterAction(
144 MediaRouterAction* action) {
145 action_ = action;
146 }
147
137 void MediaRouterContextualMenu::ReportIssue() { 148 void MediaRouterContextualMenu::ReportIssue() {
138 // Opens feedback page loaded from the media router extension. 149 // Opens feedback page loaded from the media router extension.
139 // This is temporary until feedback UI is redesigned. 150 // This is temporary until feedback UI is redesigned.
140 // TODO(crbug.com/597778): remove reference to MediaRouterMojoImpl 151 // TODO(crbug.com/597778): remove reference to MediaRouterMojoImpl
141 media_router::MediaRouterMojoImpl* media_router = 152 media_router::MediaRouterMojoImpl* media_router =
142 static_cast<media_router::MediaRouterMojoImpl*>( 153 static_cast<media_router::MediaRouterMojoImpl*>(
143 media_router::MediaRouterFactory::GetApiForBrowserContext( 154 media_router::MediaRouterFactory::GetApiForBrowserContext(
144 static_cast<content::BrowserContext*>(browser_->profile()))); 155 static_cast<content::BrowserContext*>(browser_->profile())));
145 if (media_router->media_route_provider_extension_id().empty()) 156 if (media_router->media_route_provider_extension_id().empty())
146 return; 157 return;
147 std::string feedback_url(extensions::kExtensionScheme + 158 std::string feedback_url(extensions::kExtensionScheme +
148 std::string(url::kStandardSchemeSeparator) + 159 std::string(url::kStandardSchemeSeparator) +
149 media_router->media_route_provider_extension_id() + 160 media_router->media_route_provider_extension_id() +
150 "/feedback.html"); 161 "/feedback.html");
151 chrome::ShowSingletonTab(browser_, GURL(feedback_url)); 162 chrome::ShowSingletonTab(browser_, GURL(feedback_url));
152 } 163 }
153
154 void MediaRouterContextualMenu::RemoveMediaRouterComponentAction() {
155 ToolbarActionsModel::Get(browser_->profile())->component_migration_helper()
156 ->OnActionRemoved(ComponentToolbarActionsFactory::kMediaRouterActionId);
157 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698