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

Unified Diff: chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc

Issue 2721953002: [Media Router] Add "Hide in menu/Show in toolbar" option to Cast toolbar icon (Closed)
Patch Set: Address Jennifer's and Mike's comments 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 side-by-side diff with in-line comments
Download patch
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));
+}

Powered by Google App Engine
This is Rietveld 408576698