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 6040eade26819d52c0121ac28e06ff3df977dd7a..d6ff7d8ecd66b3bf1dd8993250585dc3ef138cc7 100644 |
| --- a/chrome/browser/ui/toolbar/media_router_action_unittest.cc |
| +++ b/chrome/browser/ui/toolbar/media_router_action_unittest.cc |
| @@ -22,6 +22,17 @@ |
| using content::WebContents; |
| using media_router::MediaRouterDialogControllerImpl; |
| +using testing::Return; |
| + |
| +class MockToolbarActionsBar : public ToolbarActionsBar { |
| + public: |
| + MockToolbarActionsBar(ToolbarActionsBarDelegate* delegate, Browser* browser) |
| + : ToolbarActionsBar(delegate, browser, nullptr) {} |
| + ~MockToolbarActionsBar() override {} |
| + |
| + MOCK_METHOD0(UndoPopOut, void()); |
| + MOCK_METHOD0(popped_out_action, ToolbarActionViewController*()); |
| +}; |
| class MockToolbarActionViewDelegate : public ToolbarActionViewDelegate { |
| public: |
| @@ -113,10 +124,7 @@ class MediaRouterActionUnitTest : public MediaRouterWebUITest { |
| // has run. |
| browser_action_test_util_.reset( |
| new BrowserActionTestUtil(browser(), false)); |
| - action_.reset( |
| - new TestMediaRouterAction( |
| - browser(), |
| - browser_action_test_util_->GetToolbarActionsBar())); |
| + action_.reset(new TestMediaRouterAction(browser(), GetActionsBar())); |
| local_display_route_list_.push_back( |
| media_router::MediaRoute("routeId1", fake_source1_, "sinkId1", |
| @@ -140,7 +148,12 @@ class MediaRouterActionUnitTest : public MediaRouterWebUITest { |
| icon_id, MediaRouterAction::GetIconColor(icon_id))); |
| } |
| + ToolbarActionsBar* GetActionsBar() { |
| + return browser_action_test_util_->GetToolbarActionsBar(); |
| + } |
| + |
| TestMediaRouterAction* action() { return action_.get(); } |
| + ToolbarActionsModel* toolbar_model() { return toolbar_model_; } |
| const media_router::Issue& fake_issue_notification() { |
| return fake_issue_notification_; |
| } |
| @@ -352,3 +365,21 @@ TEST_F(MediaRouterActionUnitTest, IconPressedState) { |
| EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); |
| dialog_controller->HideMediaRouterDialog(); |
| } |
| + |
| +TEST_F(MediaRouterActionUnitTest, UndoPopOutOnContextMenuClosed) { |
| + MockToolbarActionsBar mock_actions_bar(GetActionsBar()->delegate_for_test(), |
| + browser()); |
| + TestMediaRouterAction media_router_action(browser(), &mock_actions_bar); |
| + chrome::NewTab(browser()); |
| + MediaRouterDialogControllerImpl* dialog_controller = |
| + MediaRouterDialogControllerImpl::GetOrCreateForWebContents( |
| + browser()->tab_strip_model()->GetActiveWebContents()); |
| + media_router_action.SetMediaRouterDialogController(dialog_controller); |
| + |
| + // If the media router action is popped out when closing its context menu, |
| + // then it should go back into the overflow menu. |
| + EXPECT_CALL(mock_actions_bar, popped_out_action()) |
|
Devlin
2016/12/15 22:25:26
I'm not a big fan of using mocks like this, becaus
|
| + .WillOnce(Return(&media_router_action)); |
| + EXPECT_CALL(mock_actions_bar, UndoPopOut()).Times(1); |
| + media_router_action.OnContextMenuClosed(); |
| +} |