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