Chromium Code Reviews| Index: chrome/browser/ui/toolbar/media_router_action_unittest.cc |
| diff --git a/chrome/browser/ui/toolbar/media_router_action_unittest.cc b/chrome/browser/ui/toolbar/media_router_action_unittest.cc |
| index d09f0225681e175132a815f50659208f07e74950..4bb7575687374432d5acd2d6afd62715e64e17cc 100644 |
| --- a/chrome/browser/ui/toolbar/media_router_action_unittest.cc |
| +++ b/chrome/browser/ui/toolbar/media_router_action_unittest.cc |
| @@ -7,6 +7,7 @@ |
| #include "chrome/browser/extensions/extension_action_test_util.h" |
| #include "chrome/browser/ui/browser_commands.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| +#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" |
| #include "chrome/browser/ui/toolbar/media_router_action.h" |
| #include "chrome/browser/ui/toolbar/toolbar_action_view_delegate.h" |
| #include "chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h" |
| @@ -48,6 +49,7 @@ class TestMediaRouterAction : public MediaRouterAction { |
| MediaRouterDialogControllerImpl* controller) { |
| DCHECK(controller); |
| controller_ = controller; |
| + controller_->SetMediaRouterAction(GetWeakPtr()); |
| } |
| private: |
| @@ -115,7 +117,7 @@ class MediaRouterActionUnitTest : public MediaRouterTest { |
| void SetUp() override { |
| MediaRouterTest::SetUp(); |
| toolbar_model_ = extensions::extension_action_test_util:: |
| - CreateToolbarModelForProfileWithoutWaitingForReady(profile()); |
| + CreateToolbarModelForProfile(profile()); |
| // browser() will only be valid once BrowserWithTestWindowTest::SetUp() |
| // has run. |
| @@ -144,6 +146,10 @@ class MediaRouterActionUnitTest : public MediaRouterTest { |
| } |
| TestMediaRouterAction* action() { return action_.get(); } |
| + bool ActionIsVisible() { |
|
Devlin
2016/07/26 21:59:02
"Visible" could mean different things here, since
takumif
2016/07/28 20:04:10
Done.
|
| + return toolbar_model_->HasComponentAction( |
| + ComponentToolbarActionsFactory::kMediaRouterActionId); |
| + } |
| const media_router::Issue* fake_issue_notification() { |
| return &fake_issue_notification_; |
| } |
| @@ -346,16 +352,60 @@ TEST_F(MediaRouterActionUnitTest, IconPressedState) { |
| EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); |
| action()->SetDelegate(mock_delegate.get()); |
| - EXPECT_CALL(*mock_delegate, OnPopupShown(true)).Times(1); |
| action()->ExecuteAction(true); |
| + EXPECT_TRUE(dialog_controller_->IsShowingMediaRouterDialog()); |
| // Pressing the icon while the popup is shown should close the popup |
| EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); |
|
msw
2016/07/26 19:59:31
nit: EXPECT_FALSE(dialog_controller_->IsShowingMed
takumif
2016/07/28 20:04:11
Done.
|
| action()->ExecuteAction(true); |
| - EXPECT_CALL(*mock_delegate, OnPopupShown(true)).Times(1); |
| dialog_controller_->CreateMediaRouterDialog(); |
| + EXPECT_TRUE(dialog_controller_->IsShowingMediaRouterDialog()); |
| EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); |
| dialog_controller_->HideMediaRouterDialog(); |
| } |
| + |
| +TEST_F(MediaRouterActionUnitTest, EphemeralIcon) { |
| + ToolbarActionsBar::disable_animations_for_testing_ = true; |
|
Devlin
2016/07/26 21:59:02
base::AutoReset<bool> disable_animations(&ToolbarA
takumif
2016/07/28 20:04:10
Done.
|
| + |
| + // Start with one window with one tab. |
| + EXPECT_EQ(0, browser()->tab_strip_model()->count()); |
| + chrome::NewTab(browser()); |
| + EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| + |
| + // Create a reference to initiator contents. |
| + WebContents* initiator_ = |
|
msw
2016/07/26 19:59:31
nit: no trailing underscore for function-local ide
takumif
2016/07/28 20:04:10
Done.
|
| + browser()->tab_strip_model()->GetActiveWebContents(); |
| + |
| + MediaRouterDialogControllerImpl::CreateForWebContents(initiator_); |
| + MediaRouterDialogControllerImpl* dialog_controller_ = |
|
msw
2016/07/26 19:59:31
ditto nit: no trailing underscore for function-loc
takumif
2016/07/28 20:04:10
Done.
|
| + MediaRouterDialogControllerImpl::FromWebContents(initiator_); |
| + ASSERT_TRUE(dialog_controller_); |
| + |
| + EXPECT_FALSE(ActionIsVisible()); |
| + // Show the popup. The icon should become visible |
|
msw
2016/07/26 19:59:31
nit: trailing periods here and in comments below.
takumif
2016/07/28 20:04:10
Done.
|
| + dialog_controller_->ShowMediaRouterDialog(); |
| + EXPECT_TRUE(ActionIsVisible()); |
| + // Hide the popup. The icon should become hidden |
| + dialog_controller_->HideMediaRouterDialog(); |
| + EXPECT_FALSE(ActionIsVisible()); |
| + |
| + // Show the popup |
| + dialog_controller_->ShowMediaRouterDialog(); |
| + // Add a local display route |
| + dialog_controller_->action_for_test() |
| + ->OnRoutesUpdated(local_display_route_list(), empty_route_id_list()); |
| + EXPECT_TRUE(ActionIsVisible()); |
| + // Hide the popup while there's still a local media route. The icon should not |
| + // be hidden as long as the media route exists |
| + dialog_controller_->HideMediaRouterDialog(); |
| + EXPECT_TRUE(ActionIsVisible()); |
| + // Remove the local route. Now the icon should be hidden |
| + dialog_controller_->action_for_test()->OnRoutesUpdated( |
| + std::vector<media_router::MediaRoute>(), |
| + empty_route_id_list()); |
| + EXPECT_FALSE(ActionIsVisible()); |
| + |
| + ToolbarActionsBar::disable_animations_for_testing_ = false; |
| +} |