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; |
+} |