| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 MOCK_METHOD1(IsEventPageSuspended, bool(const std::string& ext_id)); | 177 MOCK_METHOD1(IsEventPageSuspended, bool(const std::string& ext_id)); |
| 178 | 178 |
| 179 MOCK_METHOD2(WakeEventPage, | 179 MOCK_METHOD2(WakeEventPage, |
| 180 bool(const std::string& extension_id, | 180 bool(const std::string& extension_id, |
| 181 const base::Callback<void(bool)>& callback)); | 181 const base::Callback<void(bool)>& callback)); |
| 182 | 182 |
| 183 private: | 183 private: |
| 184 DISALLOW_COPY_AND_ASSIGN(TestProcessManager); | 184 DISALLOW_COPY_AND_ASSIGN(TestProcessManager); |
| 185 }; | 185 }; |
| 186 | 186 |
| 187 // Mockable class for awaiting RegisterMediaRouteProvider callbacks. | |
| 188 class RegisterMediaRouteProviderHandler { | |
| 189 public: | |
| 190 MOCK_METHOD1(Invoke, void(const std::string& instance_id)); | |
| 191 }; | |
| 192 | |
| 193 TEST_F(MediaRouterMojoImplTest, CreateRoute) { | 187 TEST_F(MediaRouterMojoImplTest, CreateRoute) { |
| 194 MediaSource media_source(kSource); | 188 MediaSource media_source(kSource); |
| 195 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", | 189 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", |
| 196 false); | 190 false); |
| 197 | 191 |
| 198 // Use a lambda function as an invocation target here to work around | 192 // Use a lambda function as an invocation target here to work around |
| 199 // a limitation with GMock::Invoke that prevents it from using move-only types | 193 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 200 // in runnable parameter lists. | 194 // in runnable parameter lists. |
| 201 EXPECT_CALL(mock_media_route_provider_, | 195 EXPECT_CALL(mock_media_route_provider_, |
| 202 CreateRoute(kSource, kSinkId, _, url::Origin(GURL(kOrigin)), | 196 CreateRoute(kSource, kSinkId, _, url::Origin(GURL(kOrigin)), |
| (...skipping 1210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1413 | 1407 |
| 1414 profile_.reset(new TestingProfile); | 1408 profile_.reset(new TestingProfile); |
| 1415 // Set up a mock ProcessManager instance. | 1409 // Set up a mock ProcessManager instance. |
| 1416 extensions::ProcessManagerFactory::GetInstance()->SetTestingFactory( | 1410 extensions::ProcessManagerFactory::GetInstance()->SetTestingFactory( |
| 1417 profile_.get(), &TestProcessManager::Create); | 1411 profile_.get(), &TestProcessManager::Create); |
| 1418 process_manager_ = static_cast<TestProcessManager*>( | 1412 process_manager_ = static_cast<TestProcessManager*>( |
| 1419 extensions::ProcessManager::Get(profile_.get())); | 1413 extensions::ProcessManager::Get(profile_.get())); |
| 1420 DCHECK(process_manager_); | 1414 DCHECK(process_manager_); |
| 1421 | 1415 |
| 1422 // Create MR and its proxy, so that it can be accessed through Mojo. | 1416 // Create MR and its proxy, so that it can be accessed through Mojo. |
| 1423 media_router_.reset(new MediaRouterMojoImpl(process_manager_)); | 1417 media_router_.reset( |
| 1418 new MediaRouterMojoImpl(process_manager_, profile_.get())); |
| 1424 ProcessEventLoop(); | 1419 ProcessEventLoop(); |
| 1425 } | 1420 } |
| 1426 | 1421 |
| 1427 void TearDown() override { | 1422 void TearDown() override { |
| 1428 media_router_.reset(); | 1423 media_router_.reset(); |
| 1429 profile_.reset(); | 1424 profile_.reset(); |
| 1430 } | 1425 } |
| 1431 | 1426 |
| 1432 // Constructs bindings so that |media_router_| delegates calls to | 1427 // Constructs bindings so that |media_router_| delegates calls to |
| 1433 // |mojo_media_router_|, which are then handled by | 1428 // |mojo_media_router_|, which are then handled by |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1500 // It should be queued. | 1495 // It should be queued. |
| 1501 media_router_->DetachRoute(kRouteId); | 1496 media_router_->DetachRoute(kRouteId); |
| 1502 | 1497 |
| 1503 BindMediaRouteProvider(); | 1498 BindMediaRouteProvider(); |
| 1504 | 1499 |
| 1505 base::RunLoop run_loop, run_loop2; | 1500 base::RunLoop run_loop, run_loop2; |
| 1506 // |mojo_media_router| signals its readiness to the MR by registering | 1501 // |mojo_media_router| signals its readiness to the MR by registering |
| 1507 // itself via RegisterMediaRouteProvider(). | 1502 // itself via RegisterMediaRouteProvider(). |
| 1508 // Now that the |media_router| and |mojo_media_router| are fully initialized, | 1503 // Now that the |media_router| and |mojo_media_router| are fully initialized, |
| 1509 // the queued DetachRoute() call should be executed. | 1504 // the queued DetachRoute() call should be executed. |
| 1510 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) | 1505 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)) |
| 1511 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 1506 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 1512 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1507 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1513 .WillOnce(Return(false)); | 1508 .WillOnce(Return(false)); |
| 1514 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) | 1509 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| 1515 .Times(AtMost(1)); | 1510 .Times(AtMost(1)); |
| 1516 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId)) | 1511 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId)) |
| 1517 .WillOnce(InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); })); | 1512 .WillOnce(InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); })); |
| 1518 RegisterMediaRouteProvider(); | 1513 RegisterMediaRouteProvider(); |
| 1519 run_loop.Run(); | 1514 run_loop.Run(); |
| 1520 run_loop2.Run(); | 1515 run_loop2.Run(); |
| 1521 | 1516 |
| 1522 base::RunLoop run_loop3; | 1517 base::RunLoop run_loop3; |
| 1523 // Extension is suspended and re-awoken. | 1518 // Extension is suspended and re-awoken. |
| 1524 ResetMediaRouteProvider(); | 1519 ResetMediaRouteProvider(); |
| 1525 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1520 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1526 .WillOnce(Return(true)); | 1521 .WillOnce(Return(true)); |
| 1527 EXPECT_CALL(*process_manager_, WakeEventPage(extension_->id(), _)) | 1522 EXPECT_CALL(*process_manager_, WakeEventPage(extension_->id(), _)) |
| 1528 .WillOnce(testing::DoAll( | 1523 .WillOnce(testing::DoAll( |
| 1529 media::RunCallback<1>(true), | 1524 media::RunCallback<1>(true), |
| 1530 InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }), | 1525 InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }), |
| 1531 Return(true))); | 1526 Return(true))); |
| 1532 media_router_->DetachRoute(kRouteId2); | 1527 media_router_->DetachRoute(kRouteId2); |
| 1533 run_loop3.Run(); | 1528 run_loop3.Run(); |
| 1534 | 1529 |
| 1535 base::RunLoop run_loop4, run_loop5; | 1530 base::RunLoop run_loop4, run_loop5; |
| 1536 // RegisterMediaRouteProvider() is called. | 1531 // RegisterMediaRouteProvider() is called. |
| 1537 // The queued DetachRoute(kRouteId2) call should be executed. | 1532 // The queued DetachRoute(kRouteId2) call should be executed. |
| 1538 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) | 1533 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)) |
| 1539 .WillOnce(InvokeWithoutArgs([&run_loop4]() { run_loop4.Quit(); })); | 1534 .WillOnce(InvokeWithoutArgs([&run_loop4]() { run_loop4.Quit(); })); |
| 1540 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1535 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1541 .WillOnce(Return(false)); | 1536 .WillOnce(Return(false)); |
| 1542 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) | 1537 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| 1543 .Times(AtMost(1)); | 1538 .Times(AtMost(1)); |
| 1544 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId2)) | 1539 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId2)) |
| 1545 .WillOnce(InvokeWithoutArgs([&run_loop5]() { run_loop5.Quit(); })); | 1540 .WillOnce(InvokeWithoutArgs([&run_loop5]() { run_loop5.Quit(); })); |
| 1546 BindMediaRouteProvider(); | 1541 BindMediaRouteProvider(); |
| 1547 RegisterMediaRouteProvider(); | 1542 RegisterMediaRouteProvider(); |
| 1548 run_loop4.Run(); | 1543 run_loop4.Run(); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1638 media_router_->DetachRoute(kRouteId2); | 1633 media_router_->DetachRoute(kRouteId2); |
| 1639 | 1634 |
| 1640 // The request queue size should not exceed |kMaxPendingRequests|. | 1635 // The request queue size should not exceed |kMaxPendingRequests|. |
| 1641 EXPECT_EQ(kMaxPendingRequests, media_router_->pending_requests_.size()); | 1636 EXPECT_EQ(kMaxPendingRequests, media_router_->pending_requests_.size()); |
| 1642 | 1637 |
| 1643 base::RunLoop run_loop, run_loop2; | 1638 base::RunLoop run_loop, run_loop2; |
| 1644 size_t count = 0; | 1639 size_t count = 0; |
| 1645 // The oldest request should have been dropped, so we don't expect to see | 1640 // The oldest request should have been dropped, so we don't expect to see |
| 1646 // DetachRoute(kRouteId) here. | 1641 // DetachRoute(kRouteId) here. |
| 1647 BindMediaRouteProvider(); | 1642 BindMediaRouteProvider(); |
| 1648 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) | 1643 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)) |
| 1649 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 1644 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 1650 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())); | 1645 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())); |
| 1651 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) | 1646 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| 1652 .Times(AtMost(1)); | 1647 .Times(AtMost(1)); |
| 1653 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId2)) | 1648 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId2)) |
| 1654 .Times(kMaxPendingRequests) | 1649 .Times(kMaxPendingRequests) |
| 1655 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { | 1650 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { |
| 1656 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) | 1651 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) |
| 1657 run_loop2.Quit(); | 1652 run_loop2.Quit(); |
| 1658 })); | 1653 })); |
| 1659 RegisterMediaRouteProvider(); | 1654 RegisterMediaRouteProvider(); |
| 1660 run_loop.Run(); | 1655 run_loop.Run(); |
| 1661 run_loop2.Run(); | 1656 run_loop2.Run(); |
| 1662 ExpectVersionBucketCount(MediaRouteProviderVersion::SAME_VERSION_AS_CHROME, | 1657 ExpectVersionBucketCount(MediaRouteProviderVersion::SAME_VERSION_AS_CHROME, |
| 1663 1); | 1658 1); |
| 1664 } | 1659 } |
| 1665 | 1660 |
| 1666 #if defined(OS_WIN) | 1661 #if defined(OS_WIN) |
| 1667 TEST_F(MediaRouterMojoExtensionTest, EnableMdnsAfterEachRegister) { | 1662 TEST_F(MediaRouterMojoExtensionTest, EnableMdnsAfterEachRegister) { |
| 1668 // This should be queued since no MRPM is registered yet. | 1663 // This should be queued since no MRPM is registered yet. |
| 1669 media_router_->OnUserGesture(); | 1664 media_router_->OnUserGesture(); |
| 1670 | 1665 |
| 1671 BindMediaRouteProvider(); | 1666 BindMediaRouteProvider(); |
| 1672 | 1667 |
| 1673 base::RunLoop run_loop; | 1668 base::RunLoop run_loop; |
| 1674 base::RunLoop run_loop2; | 1669 base::RunLoop run_loop2; |
| 1675 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) | 1670 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)) |
| 1676 .WillOnce(InvokeWithoutArgs([&run_loop]() { | 1671 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 1677 run_loop.Quit(); | |
| 1678 })); | |
| 1679 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1672 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1680 .WillOnce(Return(false)).WillOnce(Return(false)); | 1673 .WillOnce(Return(false)).WillOnce(Return(false)); |
| 1681 EXPECT_CALL(mock_media_route_provider_, | 1674 EXPECT_CALL(mock_media_route_provider_, |
| 1682 UpdateMediaSinks(MediaSourceForDesktop().id())) | 1675 UpdateMediaSinks(MediaSourceForDesktop().id())) |
| 1683 .Times(2); | 1676 .Times(2); |
| 1684 // EnableMdnsDiscovery() is never called except on Windows. | 1677 // EnableMdnsDiscovery() is never called except on Windows. |
| 1685 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) | 1678 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| 1686 .WillOnce(InvokeWithoutArgs([&run_loop2]() { | 1679 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| 1687 run_loop2.Quit(); | 1680 run_loop2.Quit(); |
| 1688 })); | 1681 })); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1705 InvokeWithoutArgs([&run_loop4]() { run_loop4.Quit(); }), | 1698 InvokeWithoutArgs([&run_loop4]() { run_loop4.Quit(); }), |
| 1706 Return(true))); | 1699 Return(true))); |
| 1707 // Use DetachRoute because it unconditionally calls RunOrDefer(). | 1700 // Use DetachRoute because it unconditionally calls RunOrDefer(). |
| 1708 media_router_->DetachRoute(kRouteId); | 1701 media_router_->DetachRoute(kRouteId); |
| 1709 run_loop4.Run(); | 1702 run_loop4.Run(); |
| 1710 | 1703 |
| 1711 base::RunLoop run_loop5; | 1704 base::RunLoop run_loop5; |
| 1712 base::RunLoop run_loop6; | 1705 base::RunLoop run_loop6; |
| 1713 // RegisterMediaRouteProvider() is called. | 1706 // RegisterMediaRouteProvider() is called. |
| 1714 // The queued DetachRoute(kRouteId) call should be executed. | 1707 // The queued DetachRoute(kRouteId) call should be executed. |
| 1715 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) | 1708 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)) |
| 1716 .WillOnce(InvokeWithoutArgs([&run_loop5]() { | 1709 .WillOnce(InvokeWithoutArgs([&run_loop5]() { run_loop5.Quit(); })); |
| 1717 run_loop5.Quit(); | |
| 1718 })); | |
| 1719 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1710 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1720 .WillOnce(Return(false)).WillOnce(Return(false)); | 1711 .WillOnce(Return(false)).WillOnce(Return(false)); |
| 1721 // Expected because it was used to wake up the page. | 1712 // Expected because it was used to wake up the page. |
| 1722 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId)); | 1713 EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId)); |
| 1723 EXPECT_CALL(mock_media_route_provider_, | 1714 EXPECT_CALL(mock_media_route_provider_, |
| 1724 UpdateMediaSinks(MediaSourceForDesktop().id())); | 1715 UpdateMediaSinks(MediaSourceForDesktop().id())); |
| 1725 // EnableMdnsDiscovery() is never called except on Windows. | 1716 // EnableMdnsDiscovery() is never called except on Windows. |
| 1726 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) | 1717 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| 1727 .WillOnce(InvokeWithoutArgs([&run_loop6]() { | 1718 .WillOnce(InvokeWithoutArgs([&run_loop6]() { |
| 1728 run_loop6.Quit(); | 1719 run_loop6.Quit(); |
| 1729 })); | 1720 })); |
| 1730 BindMediaRouteProvider(); | 1721 BindMediaRouteProvider(); |
| 1731 RegisterMediaRouteProvider(); | 1722 RegisterMediaRouteProvider(); |
| 1732 run_loop5.Run(); | 1723 run_loop5.Run(); |
| 1733 run_loop6.Run(); | 1724 run_loop6.Run(); |
| 1734 // Should not call EnableMdnsDiscovery, but will call UpdateMediaSinks | 1725 // Should not call EnableMdnsDiscovery, but will call UpdateMediaSinks |
| 1735 media_router_->OnUserGesture(); | 1726 media_router_->OnUserGesture(); |
| 1736 base::RunLoop run_loop7; | 1727 base::RunLoop run_loop7; |
| 1737 run_loop7.RunUntilIdle(); | 1728 run_loop7.RunUntilIdle(); |
| 1738 } | 1729 } |
| 1739 #endif | 1730 #endif |
| 1740 | 1731 |
| 1741 TEST_F(MediaRouterMojoExtensionTest, UpdateMediaSinksOnUserGesture) { | 1732 TEST_F(MediaRouterMojoExtensionTest, UpdateMediaSinksOnUserGesture) { |
| 1742 BindMediaRouteProvider(); | 1733 BindMediaRouteProvider(); |
| 1743 | 1734 |
| 1744 base::RunLoop run_loop; | 1735 base::RunLoop run_loop; |
| 1745 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) | 1736 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)) |
| 1746 .WillOnce(InvokeWithoutArgs([&run_loop]() { | 1737 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 1747 run_loop.Quit(); | |
| 1748 })); | |
| 1749 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1738 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1750 #if defined(OS_WIN) | 1739 #if defined(OS_WIN) |
| 1751 // Windows calls once for EnableMdnsDiscovery | 1740 // Windows calls once for EnableMdnsDiscovery |
| 1752 .Times(3) | 1741 .Times(3) |
| 1753 #else | 1742 #else |
| 1754 // All others call once for registration, and once for the user gesture. | 1743 // All others call once for registration, and once for the user gesture. |
| 1755 .Times(2) | 1744 .Times(2) |
| 1756 #endif | 1745 #endif |
| 1757 .WillRepeatedly(Return(false)); | 1746 .WillRepeatedly(Return(false)); |
| 1758 | 1747 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1778 | 1767 |
| 1779 TEST_F(MediaRouterMojoExtensionTest, SyncStateToMediaRouteProvider) { | 1768 TEST_F(MediaRouterMojoExtensionTest, SyncStateToMediaRouteProvider) { |
| 1780 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) | 1769 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| 1781 .WillRepeatedly(Return(false)); | 1770 .WillRepeatedly(Return(false)); |
| 1782 MediaSource media_source = MediaSource(kSource); | 1771 MediaSource media_source = MediaSource(kSource); |
| 1783 std::unique_ptr<MockMediaSinksObserver> sinks_observer; | 1772 std::unique_ptr<MockMediaSinksObserver> sinks_observer; |
| 1784 std::unique_ptr<MockMediaRoutesObserver> routes_observer; | 1773 std::unique_ptr<MockMediaRoutesObserver> routes_observer; |
| 1785 std::unique_ptr<NullMessageObserver> messages_observer; | 1774 std::unique_ptr<NullMessageObserver> messages_observer; |
| 1786 | 1775 |
| 1787 { | 1776 { |
| 1788 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); | 1777 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)); |
| 1789 BindMediaRouteProvider(); | 1778 BindMediaRouteProvider(); |
| 1790 RegisterMediaRouteProvider(); | 1779 RegisterMediaRouteProvider(); |
| 1791 base::RunLoop().RunUntilIdle(); | 1780 base::RunLoop().RunUntilIdle(); |
| 1792 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&provide_handler_)); | 1781 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&provide_handler_)); |
| 1793 } | 1782 } |
| 1794 | 1783 |
| 1795 { | 1784 { |
| 1796 media_router_->OnSinkAvailabilityUpdated( | 1785 media_router_->OnSinkAvailabilityUpdated( |
| 1797 mojom::MediaRouter::SinkAvailability::PER_SOURCE); | 1786 mojom::MediaRouter::SinkAvailability::PER_SOURCE); |
| 1798 EXPECT_CALL(mock_media_route_provider_, | 1787 EXPECT_CALL(mock_media_route_provider_, |
| 1799 StartObservingMediaSinks(media_source.id())); | 1788 StartObservingMediaSinks(media_source.id())); |
| 1800 sinks_observer.reset(new MockMediaSinksObserver( | 1789 sinks_observer.reset(new MockMediaSinksObserver( |
| 1801 router(), media_source, url::Origin(GURL(kOrigin)))); | 1790 router(), media_source, url::Origin(GURL(kOrigin)))); |
| 1802 EXPECT_TRUE(sinks_observer->Init()); | 1791 EXPECT_TRUE(sinks_observer->Init()); |
| 1803 | 1792 |
| 1804 EXPECT_CALL(mock_media_route_provider_, | 1793 EXPECT_CALL(mock_media_route_provider_, |
| 1805 StartObservingMediaRoutes(media_source.id())); | 1794 StartObservingMediaRoutes(media_source.id())); |
| 1806 routes_observer.reset( | 1795 routes_observer.reset( |
| 1807 new MockMediaRoutesObserver(router(), media_source.id())); | 1796 new MockMediaRoutesObserver(router(), media_source.id())); |
| 1808 | 1797 |
| 1809 EXPECT_CALL(mock_media_route_provider_, | 1798 EXPECT_CALL(mock_media_route_provider_, |
| 1810 StartListeningForRouteMessages(media_source.id())); | 1799 StartListeningForRouteMessages(media_source.id())); |
| 1811 messages_observer.reset( | 1800 messages_observer.reset( |
| 1812 new NullMessageObserver(router(), media_source.id())); | 1801 new NullMessageObserver(router(), media_source.id())); |
| 1813 base::RunLoop().RunUntilIdle(); | 1802 base::RunLoop().RunUntilIdle(); |
| 1814 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 1803 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
| 1815 } | 1804 } |
| 1816 | 1805 |
| 1817 { | 1806 { |
| 1818 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); | 1807 EXPECT_CALL(provide_handler_, InvokeRaw(testing::Not(""), _)); |
| 1819 EXPECT_CALL(mock_media_route_provider_, | 1808 EXPECT_CALL(mock_media_route_provider_, |
| 1820 StartObservingMediaSinks(media_source.id())); | 1809 StartObservingMediaSinks(media_source.id())); |
| 1821 EXPECT_CALL(mock_media_route_provider_, | 1810 EXPECT_CALL(mock_media_route_provider_, |
| 1822 StartObservingMediaRoutes(media_source.id())); | 1811 StartObservingMediaRoutes(media_source.id())); |
| 1823 EXPECT_CALL(mock_media_route_provider_, | 1812 EXPECT_CALL(mock_media_route_provider_, |
| 1824 StartListeningForRouteMessages(media_source.id())); | 1813 StartListeningForRouteMessages(media_source.id())); |
| 1825 media_router_->OnConnectionError(); | 1814 media_router_->OnConnectionError(); |
| 1826 BindMediaRouteProvider(); | 1815 BindMediaRouteProvider(); |
| 1827 RegisterMediaRouteProvider(); | 1816 RegisterMediaRouteProvider(); |
| 1828 base::RunLoop().RunUntilIdle(); | 1817 base::RunLoop().RunUntilIdle(); |
| 1829 } | 1818 } |
| 1830 } | 1819 } |
| 1831 | 1820 |
| 1832 } // namespace media_router | 1821 } // namespace media_router |
| OLD | NEW |