Chromium Code Reviews| Index: chrome/browser/media/router/media_router_mojo_impl_unittest.cc |
| diff --git a/chrome/browser/media/router/media_router_mojo_impl_unittest.cc b/chrome/browser/media/router/media_router_mojo_impl_unittest.cc |
| index eb51e8381ce3cae9bd6bd39bfe552bdea9c72c9d..fc841ea242a7e9b986de63daee4ec3e84f436bcc 100644 |
| --- a/chrome/browser/media/router/media_router_mojo_impl_unittest.cc |
| +++ b/chrome/browser/media/router/media_router_mojo_impl_unittest.cc |
| @@ -9,8 +9,10 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/run_loop.h" |
| #include "base/synchronization/waitable_event.h" |
| +#include "chrome/browser/media/router/issue.h" |
| #include "chrome/browser/media/router/media_route.h" |
| #include "chrome/browser/media/router/media_router_mojo_test.h" |
| +#include "chrome/browser/media/router/media_router_type_converters.h" |
| #include "chrome/browser/media/router/mock_media_router.h" |
| #include "chrome/browser/media/router/test_helper.h" |
| #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| @@ -25,6 +27,7 @@ |
| using testing::_; |
| using testing::Eq; |
| using testing::Invoke; |
| +using testing::Mock; |
| using testing::Pointee; |
| using testing::Return; |
| using testing::ReturnRef; |
| @@ -61,6 +64,20 @@ bool ArePresentationSessionMessagesEqual( |
| : *(expected->message) == *(actual->message); |
| } |
| +interfaces::IssuePtr CreateMojoIssue(const std::string& title) { |
| + interfaces::IssuePtr mojoIssue = interfaces::Issue::New(); |
| + mojoIssue->title = title; |
| + mojoIssue->message = "msg"; |
| + mojoIssue->route_id = ""; |
| + mojoIssue->default_action = interfaces::Issue::ActionType::ACTION_TYPE_OK; |
| + mojoIssue->secondary_actions = |
| + mojo::Array<interfaces::Issue::ActionType>::New(0); |
| + mojoIssue->severity = interfaces::Issue::Severity::SEVERITY_WARNING; |
| + mojoIssue->is_blocking = false; |
| + mojoIssue->help_url = ""; |
| + return mojoIssue.Pass(); |
| +} |
| + |
| } // namespace |
| class RouteResponseCallbackHandler { |
| @@ -258,6 +275,37 @@ TEST_F(MediaRouterMojoImplTest, CloseRoute) { |
| ProcessEventLoop(); |
| } |
| +TEST_F(MediaRouterMojoImplTest, HandleIssue) { |
| + MockIssuesObserver issue_observer1(router()); |
| + MockIssuesObserver issue_observer2(router()); |
| + interfaces::IssuePtr mojo_issue1 = CreateMojoIssue("title 1"); |
| + const Issue& expected_issue1 = mojo_issue1.To<Issue>(); |
| + |
| + const Issue* issue; |
| + EXPECT_CALL(issue_observer1, |
| + OnIssueUpdated(Pointee(EqualsIssue(expected_issue1)))) |
| + .Times(1) |
|
Kevin M
2015/07/30 17:18:42
Times(1)/WillRepeatedly can become WillOnce
haibinlu
2015/07/30 21:00:08
Done.
|
| + .WillRepeatedly(SaveArg<0>(&issue)); |
| + EXPECT_CALL(issue_observer2, |
| + OnIssueUpdated(Pointee(EqualsIssue(expected_issue1)))) |
| + .Times(1); |
|
Kevin M
2015/07/30 17:18:42
Not needed, 1 time is implied
haibinlu
2015/07/30 21:00:08
Done.
|
| + media_router_proxy_->OnIssue(mojo_issue1.Pass()); |
| + ProcessEventLoop(); |
| + |
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer1)); |
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2)); |
| + |
| + router()->ClearIssue(issue->id()); |
| + router()->UnregisterIssuesObserver(&issue_observer1); |
| + interfaces::IssuePtr mojo_issue2 = CreateMojoIssue("title 2"); |
| + const Issue& expected_issue2 = mojo_issue2.To<Issue>(); |
| + |
| + EXPECT_CALL(issue_observer2, |
| + OnIssueUpdated(Pointee(EqualsIssue(expected_issue2)))); |
| + media_router_proxy_->OnIssue(mojo_issue2.Pass()); |
| + ProcessEventLoop(); |
| +} |
| + |
| TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { |
| MediaSource media_source(kSource); |