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

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

Issue 2451573003: [Media Router] Update Media Router flags post-launch. (Closed)
Patch Set: Rebase & respond to apacible@ comments. Created 4 years, 1 month 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 <string> 5 #include <string>
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/metrics/user_metrics.h" 8 #include "base/metrics/user_metrics.h"
9 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/extensions/component_migration_helper.h" 10 #include "chrome/browser/extensions/component_migration_helper.h"
11 #include "chrome/browser/media/router/media_router_factory.h" 11 #include "chrome/browser/media/router/media_router_factory.h"
12 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h" 12 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/signin/signin_manager_factory.h"
14 #include "chrome/browser/ui/browser.h" 15 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/singleton_tabs.h" 16 #include "chrome/browser/ui/singleton_tabs.h"
16 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" 17 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h"
17 #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h" 18 #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h"
18 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h" 19 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h"
19 #include "chrome/common/pref_names.h" 20 #include "chrome/common/pref_names.h"
20 #include "chrome/common/url_constants.h" 21 #include "chrome/common/url_constants.h"
21 #include "chrome/grit/chromium_strings.h" 22 #include "chrome/grit/chromium_strings.h"
22 #include "chrome/grit/generated_resources.h" 23 #include "chrome/grit/generated_resources.h"
24 #include "components/signin/core/browser/signin_manager.h"
23 #include "extensions/common/constants.h" 25 #include "extensions/common/constants.h"
24 #include "ui/base/models/menu_model_delegate.h" 26 #include "ui/base/models/menu_model_delegate.h"
25 27
26 #if defined(GOOGLE_CHROME_BUILD)
27 #include "chrome/browser/signin/signin_manager_factory.h"
28 #include "components/signin/core/browser/signin_manager.h"
29 #endif // defined(GOOGLE_CHROME_BUILD)
30 28
31 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser) 29 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser)
32 : browser_(browser), 30 : browser_(browser),
33 menu_model_(this), 31 menu_model_(this),
34 component_migration_helper_(ToolbarActionsModel::Get(browser->profile()) 32 component_migration_helper_(ToolbarActionsModel::Get(browser->profile())
35 ->component_migration_helper()) { 33 ->component_migration_helper()) {
36 DCHECK(component_migration_helper_); 34 DCHECK(component_migration_helper_);
37 35
38 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT, 36 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT,
39 IDS_MEDIA_ROUTER_ABOUT); 37 IDS_MEDIA_ROUTER_ABOUT);
40 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 38 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
41 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE, 39 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE,
42 IDS_MEDIA_ROUTER_LEARN_MORE); 40 IDS_MEDIA_ROUTER_LEARN_MORE);
43 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP, 41 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP,
44 IDS_MEDIA_ROUTER_HELP); 42 IDS_MEDIA_ROUTER_HELP);
45 menu_model_.AddCheckItemWithStringId( 43 menu_model_.AddCheckItemWithStringId(
46 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION, 44 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION,
47 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION); 45 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION);
48 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 46 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
49 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 47 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
50 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES, 48 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES,
51 IDS_MEDIA_ROUTER_MANAGE_DEVICES); 49 IDS_MEDIA_ROUTER_MANAGE_DEVICES);
52 #endif 50 #endif
53 #if defined(GOOGLE_CHROME_BUILD)
54 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE, 51 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE,
55 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE); 52 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE);
56 #endif // defined(GOOGLE_CHROME_BUILD)
57 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE, 53 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE,
58 IDS_MEDIA_ROUTER_REPORT_ISSUE); 54 IDS_MEDIA_ROUTER_REPORT_ISSUE);
59 } 55 }
60 56
61 MediaRouterContextualMenu::~MediaRouterContextualMenu() {} 57 MediaRouterContextualMenu::~MediaRouterContextualMenu() {}
62 58
63 bool MediaRouterContextualMenu::GetAlwaysShowActionPref() const { 59 bool MediaRouterContextualMenu::GetAlwaysShowActionPref() const {
64 return component_migration_helper_->GetComponentActionPref( 60 return component_migration_helper_->GetComponentActionPref(
65 ComponentToolbarActionsFactory::kMediaRouterActionId); 61 ComponentToolbarActionsFactory::kMediaRouterActionId);
66 } 62 }
67 63
68 void MediaRouterContextualMenu::SetAlwaysShowActionPref(bool always_show) { 64 void MediaRouterContextualMenu::SetAlwaysShowActionPref(bool always_show) {
69 component_migration_helper_->SetComponentActionPref( 65 component_migration_helper_->SetComponentActionPref(
70 ComponentToolbarActionsFactory::kMediaRouterActionId, always_show); 66 ComponentToolbarActionsFactory::kMediaRouterActionId, always_show);
71 } 67 }
72 68
73 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const { 69 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const {
74 #if defined(GOOGLE_CHROME_BUILD)
75 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 70 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
76 return browser_->profile()->GetPrefs()->GetBoolean( 71 return browser_->profile()->GetPrefs()->GetBoolean(
77 prefs::kMediaRouterEnableCloudServices); 72 prefs::kMediaRouterEnableCloudServices);
78 } 73 }
79 #endif // defined(GOOGLE_CHROME_BUILD)
80 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) { 74 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) {
81 return GetAlwaysShowActionPref(); 75 return GetAlwaysShowActionPref();
82 } 76 }
83 return false; 77 return false;
84 } 78 }
85 79
86 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const { 80 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const {
87 return true; 81 return true;
88 } 82 }
89 83
90 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const { 84 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const {
91 #if defined(GOOGLE_CHROME_BUILD)
92 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 85 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
93 // Cloud services preference is not set or used if the user is not signed 86 // Cloud services preference is not set or used if the user is not signed
94 // in. 87 // in.
95 SigninManagerBase* signin_manager = 88 SigninManagerBase* signin_manager =
96 SigninManagerFactory::GetForProfile(browser_->profile()); 89 SigninManagerFactory::GetForProfile(browser_->profile());
97 return signin_manager && signin_manager->IsAuthenticated(); 90 return signin_manager && signin_manager->IsAuthenticated();
98 } 91 }
99 #endif // defined(GOOGLE_CHROME_BUILD)
100 return true; 92 return true;
101 } 93 }
102 94
103 void MediaRouterContextualMenu::ExecuteCommand(int command_id, 95 void MediaRouterContextualMenu::ExecuteCommand(int command_id,
104 int event_flags) { 96 int event_flags) {
105 const char kAboutPageUrl[] = 97 const char kAboutPageUrl[] =
106 "https://www.google.com/chrome/devices/chromecast/"; 98 "https://www.google.com/chrome/devices/chromecast/";
107 const char kCastHelpCenterPageUrl[] = 99 const char kCastHelpCenterPageUrl[] =
108 "https://support.google.com/chromecast/topic/3447927"; 100 "https://support.google.com/chromecast/topic/3447927";
109 const char kCastLearnMorePageUrl[] = 101 const char kCastLearnMorePageUrl[] =
110 "https://support.google.com/chromecast/answer/2998338"; 102 "https://support.google.com/chromecast/answer/2998338";
111 103
112 #if defined(GOOGLE_CHROME_BUILD)
113 PrefService* pref_service; 104 PrefService* pref_service;
114 #endif // defined(GOOGLE_CHROME_BUILD)
115 switch (command_id) { 105 switch (command_id) {
116 case IDC_MEDIA_ROUTER_ABOUT: 106 case IDC_MEDIA_ROUTER_ABOUT:
117 chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl)); 107 chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl));
118 break; 108 break;
119 case IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION: 109 case IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION:
120 SetAlwaysShowActionPref(!GetAlwaysShowActionPref()); 110 SetAlwaysShowActionPref(!GetAlwaysShowActionPref());
121 break; 111 break;
122 #if defined(GOOGLE_CHROME_BUILD)
123 case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE: 112 case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE:
124 pref_service = browser_->profile()->GetPrefs(); 113 pref_service = browser_->profile()->GetPrefs();
125 pref_service->SetBoolean(prefs::kMediaRouterEnableCloudServices, 114 pref_service->SetBoolean(prefs::kMediaRouterEnableCloudServices,
126 !pref_service->GetBoolean(prefs::kMediaRouterEnableCloudServices)); 115 !pref_service->GetBoolean(prefs::kMediaRouterEnableCloudServices));
127 116
128 // If this has been set before, this is a no-op. 117 // If this has been set before, this is a no-op.
129 pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, true); 118 pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, true);
130 break; 119 break;
131 #endif // defined(GOOGLE_CHROME_BUILD)
132 case IDC_MEDIA_ROUTER_HELP: 120 case IDC_MEDIA_ROUTER_HELP:
133 chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl)); 121 chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl));
134 base::RecordAction(base::UserMetricsAction( 122 base::RecordAction(base::UserMetricsAction(
135 "MediaRouter_Ui_Navigate_Help")); 123 "MediaRouter_Ui_Navigate_Help"));
136 break; 124 break;
137 case IDC_MEDIA_ROUTER_LEARN_MORE: 125 case IDC_MEDIA_ROUTER_LEARN_MORE:
138 chrome::ShowSingletonTab(browser_, GURL(kCastLearnMorePageUrl)); 126 chrome::ShowSingletonTab(browser_, GURL(kCastLearnMorePageUrl));
139 break; 127 break;
140 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 128 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
141 case IDC_MEDIA_ROUTER_MANAGE_DEVICES: 129 case IDC_MEDIA_ROUTER_MANAGE_DEVICES:
(...skipping 17 matching lines...) Expand all
159 media_router::MediaRouterFactory::GetApiForBrowserContext( 147 media_router::MediaRouterFactory::GetApiForBrowserContext(
160 static_cast<content::BrowserContext*>(browser_->profile()))); 148 static_cast<content::BrowserContext*>(browser_->profile())));
161 if (media_router->media_route_provider_extension_id().empty()) 149 if (media_router->media_route_provider_extension_id().empty())
162 return; 150 return;
163 std::string feedback_url(extensions::kExtensionScheme + 151 std::string feedback_url(extensions::kExtensionScheme +
164 std::string(url::kStandardSchemeSeparator) + 152 std::string(url::kStandardSchemeSeparator) +
165 media_router->media_route_provider_extension_id() + 153 media_router->media_route_provider_extension_id() +
166 "/feedback.html"); 154 "/feedback.html");
167 chrome::ShowSingletonTab(browser_, GURL(feedback_url)); 155 chrome::ShowSingletonTab(browser_, GURL(feedback_url));
168 } 156 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698