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

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

Issue 2559323002: Add a policy to always show the Cast toolbar icon (Closed)
Patch Set: Address Derek's comments Created 3 years, 12 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 "chrome/browser/ui/toolbar/media_router_contextual_menu.h"
6
5 #include <string> 7 #include <string>
6 8
7 #include "base/logging.h" 9 #include "base/logging.h"
8 #include "base/metrics/user_metrics.h" 10 #include "base/metrics/user_metrics.h"
9 #include "chrome/app/chrome_command_ids.h" 11 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/extensions/component_migration_helper.h" 12 #include "chrome/browser/extensions/component_migration_helper.h"
11 #include "chrome/browser/media/router/media_router_factory.h" 13 #include "chrome/browser/media/router/media_router_factory.h"
12 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h" 14 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h"
13 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/signin/signin_manager_factory.h" 16 #include "chrome/browser/signin/signin_manager_factory.h"
15 #include "chrome/browser/ui/browser.h" 17 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/singleton_tabs.h" 18 #include "chrome/browser/ui/singleton_tabs.h"
17 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" 19 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h"
18 #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h" 20 #include "chrome/browser/ui/toolbar/media_router_action_controller.h"
19 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h" 21 #include "chrome/browser/ui/toolbar/toolbar_actions_model.h"
20 #include "chrome/common/pref_names.h" 22 #include "chrome/common/pref_names.h"
21 #include "chrome/common/url_constants.h" 23 #include "chrome/common/url_constants.h"
22 #include "chrome/grit/chromium_strings.h" 24 #include "chrome/grit/chromium_strings.h"
23 #include "chrome/grit/generated_resources.h" 25 #include "chrome/grit/generated_resources.h"
24 #include "components/signin/core/browser/signin_manager.h" 26 #include "components/signin/core/browser/signin_manager.h"
25 #include "extensions/common/constants.h" 27 #include "extensions/common/constants.h"
26 #include "ui/base/models/menu_model_delegate.h" 28 #include "ui/base/models/menu_model_delegate.h"
27 29 #include "ui/gfx/color_palette.h"
30 #include "ui/gfx/paint_vector_icon.h"
28 31
29 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser) 32 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser)
33 : MediaRouterContextualMenu(
34 browser,
35 MediaRouterActionController::IsActionShownByPolicy(
36 browser->profile())) {}
37
38 MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser,
39 bool shown_by_policy)
30 : browser_(browser), 40 : browser_(browser),
31 menu_model_(this), 41 menu_model_(this),
32 component_migration_helper_(ToolbarActionsModel::Get(browser->profile()) 42 component_migration_helper_(ToolbarActionsModel::Get(browser->profile())
33 ->component_migration_helper()) { 43 ->component_migration_helper()),
44 shown_by_policy_(shown_by_policy) {
msw 2017/01/05 01:14:57 This member isn't needed if it's only accessed in
takumif 2017/01/06 22:06:57 Right, removed.
34 DCHECK(component_migration_helper_); 45 DCHECK(component_migration_helper_);
35 46
36 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT, 47 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT,
37 IDS_MEDIA_ROUTER_ABOUT); 48 IDS_MEDIA_ROUTER_ABOUT);
38 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 49 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
39 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE, 50 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE,
40 IDS_MEDIA_ROUTER_LEARN_MORE); 51 IDS_MEDIA_ROUTER_LEARN_MORE);
41 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP, 52 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP,
42 IDS_MEDIA_ROUTER_HELP); 53 IDS_MEDIA_ROUTER_HELP);
43 menu_model_.AddCheckItemWithStringId( 54 if (shown_by_policy_) {
44 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION, 55 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY,
45 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION); 56 IDS_MEDIA_ROUTER_SHOWN_BY_POLICY);
57 menu_model_.SetIcon(
58 menu_model_.GetIndexOfCommandId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY),
59 gfx::Image(gfx::CreateVectorIcon(gfx::VectorIconId::BUSINESS, 16,
60 gfx::kChromeIconGrey)));
61 } else {
62 menu_model_.AddCheckItemWithStringId(
63 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION,
64 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION);
65 }
46 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 66 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
47 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 67 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
48 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES, 68 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES,
49 IDS_MEDIA_ROUTER_MANAGE_DEVICES); 69 IDS_MEDIA_ROUTER_MANAGE_DEVICES);
50 #endif 70 #endif
51 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE, 71 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE,
52 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE); 72 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE);
53 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE, 73 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE,
54 IDS_MEDIA_ROUTER_REPORT_ISSUE); 74 IDS_MEDIA_ROUTER_REPORT_ISSUE);
55 } 75 }
56 76
57 MediaRouterContextualMenu::~MediaRouterContextualMenu() {} 77 MediaRouterContextualMenu::~MediaRouterContextualMenu() {}
58 78
59 bool MediaRouterContextualMenu::GetAlwaysShowActionPref() const { 79 bool MediaRouterContextualMenu::GetAlwaysShowActionPref() const {
60 return component_migration_helper_->GetComponentActionPref( 80 return component_migration_helper_->GetComponentActionPref(
61 ComponentToolbarActionsFactory::kMediaRouterActionId); 81 ComponentToolbarActionsFactory::kMediaRouterActionId);
62 } 82 }
63 83
64 void MediaRouterContextualMenu::SetAlwaysShowActionPref(bool always_show) { 84 void MediaRouterContextualMenu::SetAlwaysShowActionPref(bool always_show) {
65 component_migration_helper_->SetComponentActionPref( 85 component_migration_helper_->SetComponentActionPref(
66 ComponentToolbarActionsFactory::kMediaRouterActionId, always_show); 86 ComponentToolbarActionsFactory::kMediaRouterActionId, always_show);
67 } 87 }
68 88
69 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const { 89 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const {
70 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 90 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
71 return browser_->profile()->GetPrefs()->GetBoolean( 91 return browser_->profile()->GetPrefs()->GetBoolean(
72 prefs::kMediaRouterEnableCloudServices); 92 prefs::kMediaRouterEnableCloudServices);
73 } 93 }
74 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) { 94 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION)
75 return GetAlwaysShowActionPref(); 95 return GetAlwaysShowActionPref();
76 }
77 return false; 96 return false;
78 } 97 }
79 98
80 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const { 99 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const {
81 return true; 100 return command_id != IDC_MEDIA_ROUTER_SHOWN_BY_POLICY;
82 } 101 }
83 102
84 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const { 103 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const {
85 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 104 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
86 // Cloud services preference is not set or used if the user is not signed 105 // Cloud services preference is not set or used if the user is not signed
87 // in. 106 // in.
88 SigninManagerBase* signin_manager = 107 SigninManagerBase* signin_manager =
89 SigninManagerFactory::GetForProfile(browser_->profile()); 108 SigninManagerFactory::GetForProfile(browser_->profile());
90 return signin_manager && signin_manager->IsAuthenticated(); 109 return signin_manager && signin_manager->IsAuthenticated();
91 } 110 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 media_router::MediaRouterFactory::GetApiForBrowserContext( 166 media_router::MediaRouterFactory::GetApiForBrowserContext(
148 static_cast<content::BrowserContext*>(browser_->profile()))); 167 static_cast<content::BrowserContext*>(browser_->profile())));
149 if (media_router->media_route_provider_extension_id().empty()) 168 if (media_router->media_route_provider_extension_id().empty())
150 return; 169 return;
151 std::string feedback_url(extensions::kExtensionScheme + 170 std::string feedback_url(extensions::kExtensionScheme +
152 std::string(url::kStandardSchemeSeparator) + 171 std::string(url::kStandardSchemeSeparator) +
153 media_router->media_route_provider_extension_id() + 172 media_router->media_route_provider_extension_id() +
154 "/feedback.html"); 173 "/feedback.html");
155 chrome::ShowSingletonTab(browser_, GURL(feedback_url)); 174 chrome::ShowSingletonTab(browser_, GURL(feedback_url));
156 } 175 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698