Index: chrome/browser/ui/toolbar/media_router_contextual_menu.cc |
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc |
index a67ddf38427968a092a8f0070681b808724f59c9..2c2bd23b27722ec4588e7714adc47ea7061e7d4a 100644 |
--- a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc |
+++ b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc |
@@ -20,12 +20,21 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/models/menu_model_delegate.h" |
+#if defined(GOOGLE_CHROME_BUILD) |
+#include "base/prefs/pref_service.h" |
+#include "chrome/common/pref_names.h" |
+#endif // defined(GOOGLE_CHROME_BUILD) |
+ |
MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser) |
: browser_(browser), |
menu_model_(this) { |
menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT, |
IDS_MEDIA_ROUTER_ABOUT); |
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
+#if defined(GOOGLE_CHROME_BUILD) |
+ menu_model_.AddCheckItemWithStringId(IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE, |
+ IDS_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE); |
+#endif // defined(GOOGLE_CHROME_BUILD) |
menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_LEARN_MORE, |
IDS_MEDIA_ROUTER_LEARN_MORE); |
menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP, |
@@ -41,6 +50,12 @@ MediaRouterContextualMenu::~MediaRouterContextualMenu() { |
} |
bool MediaRouterContextualMenu::IsCommandIdChecked(int command_id) const { |
+#if defined(GOOGLE_CHROME_BUILD) |
+ if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) { |
+ return browser_->profile()->GetPrefs()->GetBoolean( |
+ prefs::kMediaRouterEnableCloudServices); |
+ } |
+#endif // defined(GOOGLE_CHROME_BUILD) |
return false; |
} |
@@ -48,6 +63,15 @@ bool MediaRouterContextualMenu::IsCommandIdEnabled(int command_id) const { |
return true; |
} |
+bool MediaRouterContextualMenu::IsCommandIdVisible(int command_id) const { |
+#if defined(GOOGLE_CHROME_BUILD) |
+ // Cloud services preference is not set or used if sync is disabled. |
+ if (command_id == IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE) |
+ return browser_->profile()->IsSyncAllowed(); |
+#endif // defined(GOOGLE_CHROME_BUILD) |
+ return true; |
+} |
+ |
bool MediaRouterContextualMenu::GetAcceleratorForCommandId( |
int command_id, |
ui::Accelerator* accelerator) { |
@@ -63,10 +87,24 @@ void MediaRouterContextualMenu::ExecuteCommand(int command_id, |
const char kCastLearnMorePageUrl[] = |
"https://www.google.com/chrome/devices/chromecast/learn.html"; |
+#if defined(GOOGLE_CHROME_BUILD) |
+ PrefService* pref_service; |
+#endif // defined(GOOGLE_CHROME_BUILD) |
switch (command_id) { |
case IDC_MEDIA_ROUTER_ABOUT: |
chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl)); |
break; |
+#if defined(GOOGLE_CHROME_BUILD) |
+ case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE: |
+ pref_service = browser_->profile()->GetPrefs(); |
+ pref_service->SetBoolean(prefs::kMediaRouterEnableCloudServices, |
+ !pref_service->GetBoolean(prefs::kMediaRouterEnableCloudServices)); |
+ |
+ // If this has been set before, this is a no-op. |
+ pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, |
+ true); |
+ break; |
+#endif // defined(GOOGLE_CHROME_BUILD) |
case IDC_MEDIA_ROUTER_HELP: |
chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl)); |
base::RecordAction(base::UserMetricsAction( |