| 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..5cc5106ad2a86a076338234837be04af09713dc4 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 inject the state of the Media Router action
|
| + // that would be 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".
|
| + 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));
|
| +}
|
|
|