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

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: Rebase Created 3 years, 10 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()) {
34 DCHECK(component_migration_helper_); 44 DCHECK(component_migration_helper_);
35 45
36 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT, 46 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT,
37 IDS_MEDIA_ROUTER_ABOUT); 47 IDS_MEDIA_ROUTER_ABOUT);
38 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 48 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
39 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE, 49 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE,
40 IDS_MEDIA_ROUTER_LEARN_MORE); 50 IDS_MEDIA_ROUTER_LEARN_MORE);
41 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP, 51 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP,
42 IDS_MEDIA_ROUTER_HELP); 52 IDS_MEDIA_ROUTER_HELP);
43 menu_model_.AddCheckItemWithStringId( 53 if (shown_by_policy) {
44 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION, 54 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY,
45 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION); 55 IDS_MEDIA_ROUTER_SHOWN_BY_POLICY);
56 menu_model_.SetIcon(
57 menu_model_.GetIndexOfCommandId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY),
58 gfx::Image(gfx::CreateVectorIcon(gfx::VectorIconId::BUSINESS, 16,
59 gfx::kChromeIconGrey)));
60 } else {
61 menu_model_.AddCheckItemWithStringId(
62 IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION,
63 IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION);
64 }
46 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); 65 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
47 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 66 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
48 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES, 67 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES,
49 IDS_MEDIA_ROUTER_MANAGE_DEVICES); 68 IDS_MEDIA_ROUTER_MANAGE_DEVICES);
50 #endif 69 #endif
51 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE, 70 menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE,
52 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE); 71 IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE);
53 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE, 72 menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REPORT_ISSUE,
54 IDS_MEDIA_ROUTER_REPORT_ISSUE); 73 IDS_MEDIA_ROUTER_REPORT_ISSUE);
55 } 74 }
56 75
57 MediaRouterContextualMenu::~MediaRouterContextualMenu() {} 76 MediaRouterContextualMenu::~MediaRouterContextualMenu() {}
58 77
59 bool MediaRouterContextualMenu::GetAlwaysShowActionPref() const { 78 bool MediaRouterContextualMenu::GetAlwaysShowActionPref() const {
60 return component_migration_helper_->GetComponentActionPref( 79 return component_migration_helper_->GetComponentActionPref(
61 ComponentToolbarActionsFactory::kMediaRouterActionId); 80 ComponentToolbarActionsFactory::kMediaRouterActionId);
62 } 81 }
63 82
64 void MediaRouterContextualMenu::SetAlwaysShowActionPref(bool always_show) { 83 void MediaRouterContextualMenu::SetAlwaysShowActionPref(bool always_show) {
65 component_migration_helper_->SetComponentActionPref( 84 component_migration_helper_->SetComponentActionPref(
66 ComponentToolbarActionsFactory::kMediaRouterActionId, always_show); 85 ComponentToolbarActionsFactory::kMediaRouterActionId, always_show);
67 } 86 }
68 87
69 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const { 88 bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const {
70 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 89 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
71 return browser_->profile()->GetPrefs()->GetBoolean( 90 return browser_->profile()->GetPrefs()->GetBoolean(
72 prefs::kMediaRouterEnableCloudServices); 91 prefs::kMediaRouterEnableCloudServices);
73 } 92 }
74 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) { 93 if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION)
75 return GetAlwaysShowActionPref(); 94 return GetAlwaysShowActionPref();
76 }
77 return false; 95 return false;
78 } 96 }
79 97
80 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const { 98 bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const {
81 return true; 99 return command_id != IDC_MEDIA_ROUTER_SHOWN_BY_POLICY;
82 } 100 }
83 101
84 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const { 102 bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const {
85 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { 103 if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) {
86 // Cloud services preference is not set or used if the user is not signed 104 // Cloud services preference is not set or used if the user is not signed
87 // in. 105 // in.
88 SigninManagerBase* signin_manager = 106 SigninManagerBase* signin_manager =
89 SigninManagerFactory::GetForProfile(browser_->profile()); 107 SigninManagerFactory::GetForProfile(browser_->profile());
90 return signin_manager && signin_manager->IsAuthenticated(); 108 return signin_manager && signin_manager->IsAuthenticated();
91 } 109 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 media_router::MediaRouterFactory::GetApiForBrowserContext( 165 media_router::MediaRouterFactory::GetApiForBrowserContext(
148 static_cast<content::BrowserContext*>(browser_->profile()))); 166 static_cast<content::BrowserContext*>(browser_->profile())));
149 if (media_router->media_route_provider_extension_id().empty()) 167 if (media_router->media_route_provider_extension_id().empty())
150 return; 168 return;
151 std::string feedback_url(extensions::kExtensionScheme + 169 std::string feedback_url(extensions::kExtensionScheme +
152 std::string(url::kStandardSchemeSeparator) + 170 std::string(url::kStandardSchemeSeparator) +
153 media_router->media_route_provider_extension_id() + 171 media_router->media_route_provider_extension_id() +
154 "/feedback.html"); 172 "/feedback.html");
155 chrome::ShowSingletonTab(browser_, GURL(feedback_url)); 173 chrome::ShowSingletonTab(browser_, GURL(feedback_url));
156 } 174 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698