Chromium Code Reviews| Index: chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
| diff --git a/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc b/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
| index d8bb1ff72288dcc8f37f49eb795b6d9c510bce5a..2a607b576c78dce58015a75b50f0156d871a580c 100644 |
| --- a/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
| +++ b/chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc |
| @@ -10,6 +10,8 @@ |
| #include "chrome/browser/media/router/media_source_helper.h" |
| #include "chrome/browser/media/router/mock_media_router.h" |
| #include "chrome/browser/media/router/mock_screen_availability_listener.h" |
| +#include "chrome/browser/media/router/offscreen_presentation_manager.h" |
| +#include "chrome/browser/media/router/offscreen_presentation_manager_factory.h" |
| #include "chrome/browser/media/router/route_request_result.h" |
| #include "chrome/browser/media/router/test_helper.h" |
| #include "chrome/browser/profiles/profile.h" |
| @@ -20,6 +22,7 @@ |
| #include "content/public/browser/render_process_host.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/test/web_contents_tester.h" |
| +#include "mojo/public/cpp/bindings/binding.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| using ::testing::_; |
| @@ -39,7 +42,7 @@ const char kFrameUrl[] = "http://anotherframeurl.fakeurl.com/"; |
| namespace media_router { |
| class MockDelegateObserver |
| - : public content::PresentationServiceDelegate::Observer { |
| + : public content::PresentationServiceDelegateBase::Observer { |
| public: |
| MOCK_METHOD0(OnDelegateDestroyed, void()); |
| MOCK_METHOD1(OnDefaultPresentationStarted, |
| @@ -62,6 +65,38 @@ class MockCreatePresentationConnnectionCallbacks { |
| void(const content::PresentationError& error)); |
| }; |
| +class MockOffscreenPresentationManager : public OffscreenPresentationManager { |
| + public: |
| + void RegisterOffscreenPresentationController( |
| + const std::string& presentation_id, |
| + const GURL& presentation_url, |
| + const RenderFrameHostId& render_frame_id, |
| + content::PresentationConnectionPtr controller) override { |
| + RegisterOffscreenPresentationController(presentation_id, presentation_url, |
| + render_frame_id); |
| + } |
| + |
| + MOCK_METHOD3(RegisterOffscreenPresentationController, |
| + void(const std::string& presentation_id, |
| + const GURL& presentation_url, |
| + const RenderFrameHostId& render_frame_id)); |
| + MOCK_METHOD2(UnregisterOffscreenPresentationController, |
| + void(const std::string& presentation_id, |
| + const RenderFrameHostId& render_frame_id)); |
| + MOCK_METHOD3(OnOffscreenPresentationReceiverCreated, |
| + void(const std::string& presentation_id, |
| + const GURL& presentation_url, |
| + const content::ReceiverConnectionAvailableCallback& |
| + receiver_callback)); |
| + MOCK_METHOD1(OnOffscreenPresentationReceiverTerminated, |
| + void(const std::string& presentation_id)); |
| +}; |
| + |
| +std::unique_ptr<KeyedService> BuildMockOffscreenPresentationManager( |
| + content::BrowserContext* context) { |
| + return base::MakeUnique<MockOffscreenPresentationManager>(); |
| +} |
| + |
| class PresentationServiceDelegateImplTest |
| : public ChromeRenderViewHostTestHarness { |
| public: |
| @@ -471,4 +506,28 @@ TEST_F(PresentationServiceDelegateImplTest, SinksObserverCantRegister) { |
| render_process_id, render_frame_id, &listener)); |
| } |
| +TEST_F(PresentationServiceDelegateImplTest, ConnectToOffscreenPresentation) { |
| + content::RenderFrameHost* main_frame = GetWebContents()->GetMainFrame(); |
| + ASSERT_TRUE(main_frame); |
| + int render_process_id = main_frame->GetProcess()->GetID(); |
| + int render_frame_id = main_frame->GetRoutingID(); |
| + content::PresentationSessionInfo session_info( |
| + GURL("http://www.example.com/presentation.html"), "presentation_id", |
| + true); |
| + |
| + OffscreenPresentationManagerFactory::GetInstance()->SetTestingFactory( |
| + profile(), &BuildMockOffscreenPresentationManager); |
| + MockOffscreenPresentationManager* mock_offscreen_manager = |
| + static_cast<MockOffscreenPresentationManager*>( |
| + OffscreenPresentationManagerFactory::GetOrCreateForBrowserContext( |
| + profile())); |
| + EXPECT_CALL(*mock_offscreen_manager, |
| + RegisterOffscreenPresentationController(_, _, _)); |
|
mark a. foltz
2016/11/15 23:41:46
Please validate arguments passed to RegisterOffscr
zhaobin
2016/11/16 18:02:41
Done.
|
| + |
| + content::PresentationConnectionPtr connection_ptr; |
| + delegate_impl_->ConnectToOffscreenPresentation(render_process_id, |
| + render_frame_id, session_info, |
| + std::move(connection_ptr)); |
| +} |
| + |
| } // namespace media_router |