Index: chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc |
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc |
index 9fac8d6cb24ed95c309f143e8a34a6b9030671aa..53ea5d5386592ec1d52544e222d1c21aaf6258ca 100644 |
--- a/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc |
+++ b/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc |
@@ -14,7 +14,10 @@ |
#include "chrome/browser/ui/toolbar/media_router_action.h" |
#include "chrome/browser/ui/toolbar/media_router_action_controller.h" |
#include "chrome/browser/ui/toolbar/media_router_contextual_menu.h" |
+#include "chrome/grit/chromium_strings.h" |
+#include "chrome/grit/generated_resources.h" |
#include "chrome/test/base/browser_with_test_window_test.h" |
+#include "ui/base/l10n/l10n_util.h" |
namespace { |
@@ -42,10 +45,13 @@ class MediaRouterContextualMenuUnitTest : public BrowserWithTestWindowTest { |
signin_manager_ = |
SigninManagerFactory::GetInstance()->GetForProfile(profile()); |
- browser_action_test_util_.reset( |
- new BrowserActionTestUtil(browser(), false)); |
- action_.reset(new MediaRouterAction(browser(), |
- browser_action_test_util_->GetToolbarActionsBar())); |
+ browser_action_test_util_ = |
+ base::MakeUnique<BrowserActionTestUtil>(browser(), false); |
+ action_ = base::MakeUnique<MediaRouterAction>( |
+ browser(), browser_action_test_util_->GetToolbarActionsBar()); |
+ |
+ // Pin the Media Router action to the toolbar. |
+ MediaRouterActionController::SetAlwaysShowActionPref(profile(), true); |
model_ = static_cast<ui::SimpleMenuModel*>(action_->GetContextMenu()); |
} |
@@ -55,19 +61,21 @@ class MediaRouterContextualMenuUnitTest : public BrowserWithTestWindowTest { |
BrowserWithTestWindowTest::TearDown(); |
} |
- SigninManagerBase* signin_manager() { return signin_manager_; } |
- ui::SimpleMenuModel* model() { return model_; } |
- ToolbarActionsModel* toolbar_actions_model() { |
- return toolbar_actions_model_; |
- } |
+ protected: |
+ // These constants are used to specify the state of the Media Router action |
+ // that is inferred in the production code. |
+ static const bool kInToolbar = true; |
+ static const bool kInOverflowMenu = false; |
+ static const bool kShownByPolicy = true; |
+ static const bool kShownByUser = false; |
- private: |
std::unique_ptr<BrowserActionTestUtil> browser_action_test_util_; |
std::unique_ptr<MediaRouterAction> action_; |
- SigninManagerBase* signin_manager_; |
- ui::SimpleMenuModel* model_; |
- ToolbarActionsModel* toolbar_actions_model_; |
+ SigninManagerBase* signin_manager_ = nullptr; |
+ ui::SimpleMenuModel* model_ = nullptr; |
+ ToolbarActionsModel* toolbar_actions_model_ = nullptr; |
+ private: |
DISALLOW_COPY_AND_ASSIGN(MediaRouterContextualMenuUnitTest); |
}; |
@@ -78,10 +86,11 @@ TEST_F(MediaRouterContextualMenuUnitTest, Basic) { |
// Learn more |
// Help |
// Always show icon (checkbox) |
+ // Hide in Chrome menu / Show in toolbar |
// ----- |
// Enable cloud services (checkbox) |
// Report an issue |
- int expected_number_items = 8; |
+ int expected_number_items = 9; |
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
// On all platforms except Linux, there's an additional menu item to access |
@@ -90,27 +99,27 @@ TEST_F(MediaRouterContextualMenuUnitTest, Basic) { |
#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
// Verify the number of menu items, including separators. |
- EXPECT_EQ(model()->GetItemCount(), expected_number_items); |
+ EXPECT_EQ(model_->GetItemCount(), expected_number_items); |
for (int i = 0; i < expected_number_items; i++) { |
- EXPECT_TRUE(model()->IsEnabledAt(i)); |
+ EXPECT_TRUE(model_->IsEnabledAt(i)); |
// The cloud services toggle exists and is enabled, but not visible until |
// the user has authenticated their account. |
const bool expected_visibility = |
- model()->GetCommandIdAt(i) != IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE; |
- EXPECT_EQ(expected_visibility, model()->IsVisibleAt(i)); |
+ model_->GetCommandIdAt(i) != IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE; |
+ EXPECT_EQ(expected_visibility, model_->IsVisibleAt(i)); |
} |
// Set up an authenticated account. |
- signin_manager()->SetAuthenticatedAccountInfo("foo@bar.com", "password"); |
+ signin_manager_->SetAuthenticatedAccountInfo("foo@bar.com", "password"); |
// Run the same checks as before. All existing menu items should be now |
// enabled and visible. |
- EXPECT_EQ(model()->GetItemCount(), expected_number_items); |
+ EXPECT_EQ(model_->GetItemCount(), expected_number_items); |
for (int i = 0; i < expected_number_items; i++) { |
- EXPECT_TRUE(model()->IsEnabledAt(i)); |
- EXPECT_TRUE(model()->IsVisibleAt(i)); |
+ EXPECT_TRUE(model_->IsEnabledAt(i)); |
+ EXPECT_TRUE(model_->IsVisibleAt(i)); |
} |
} |
@@ -119,11 +128,11 @@ TEST_F(MediaRouterContextualMenuUnitTest, Basic) { |
TEST_F(MediaRouterContextualMenuUnitTest, ToggleCloudServicesItem) { |
// The Media Router Action has a getter for the model, but not the delegate. |
// Create the MediaRouterContextualMenu ui::SimpleMenuModel::Delegate here. |
- MediaRouterContextualMenu menu(browser()); |
+ MediaRouterContextualMenu menu(browser(), kInToolbar, kShownByPolicy); |
// Set up an authenticated account such that the cloud services menu item is |
// surfaced. Whether or not it is surfaced is tested in the "Basic" test. |
- signin_manager()->SetAuthenticatedAccountInfo("foo@bar.com", "password"); |
+ signin_manager_->SetAuthenticatedAccountInfo("foo@bar.com", "password"); |
// By default, the command is not checked. |
EXPECT_FALSE(menu.IsCommandIdChecked( |
@@ -139,7 +148,7 @@ TEST_F(MediaRouterContextualMenuUnitTest, ToggleCloudServicesItem) { |
} |
TEST_F(MediaRouterContextualMenuUnitTest, ToggleAlwaysShowIconItem) { |
- MediaRouterContextualMenu menu(browser()); |
+ MediaRouterContextualMenu menu(browser(), kInToolbar, kShownByUser); |
// Whether the option is checked should reflect the pref. |
MediaRouterActionController::SetAlwaysShowActionPref(profile(), true); |
@@ -160,7 +169,7 @@ TEST_F(MediaRouterContextualMenuUnitTest, ToggleAlwaysShowIconItem) { |
TEST_F(MediaRouterContextualMenuUnitTest, ActionShownByPolicy) { |
// Create a contextual menu for an icon shown by administrator policy. |
- MediaRouterContextualMenu menu(browser(), true); |
+ MediaRouterContextualMenu menu(browser(), kInToolbar, kShownByPolicy); |
// The item "Added by your administrator" should be shown disabled. |
EXPECT_TRUE(menu.IsCommandIdVisible(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY)); |
@@ -170,3 +179,25 @@ TEST_F(MediaRouterContextualMenuUnitTest, ActionShownByPolicy) { |
EXPECT_FALSE(HasCommandId(menu.menu_model(), |
IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION)); |
} |
+ |
+TEST_F(MediaRouterContextualMenuUnitTest, HideActionInOverflowItem) { |
+ MediaRouterContextualMenu menu(browser(), kInToolbar, kShownByUser); |
+ |
+ // When the action icon is in the toolbar, this menu item should say "Hide |
+ // in Chrome menu." |
apacible
2017/03/02 02:02:57
nit here and below: period outside quotes since it
takumif
2017/03/03 00:10:48
Done.
|
+ const base::string16& menu_item_label = menu.menu_model()->GetLabelAt( |
+ menu.menu_model()->GetIndexOfCommandId(IDC_MEDIA_ROUTER_SHOW_IN_TOOLBAR)); |
+ EXPECT_EQ(menu_item_label, |
+ l10n_util::GetStringUTF16(IDS_EXTENSIONS_HIDE_BUTTON_IN_MENU)); |
+} |
+ |
+TEST_F(MediaRouterContextualMenuUnitTest, ShowActionInToolbarItem) { |
+ MediaRouterContextualMenu menu(browser(), kInOverflowMenu, kShownByUser); |
+ |
+ // When the action icon is in the overflow menu, this menu item should say |
+ // "Show in toolbar." |
+ const base::string16& menu_item_label = menu.menu_model()->GetLabelAt( |
+ menu.menu_model()->GetIndexOfCommandId(IDC_MEDIA_ROUTER_SHOW_IN_TOOLBAR)); |
+ EXPECT_EQ(menu_item_label, |
+ l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_BUTTON_IN_TOOLBAR)); |
+} |