Index: content/browser/presentation/presentation_service_impl_unittest.cc |
diff --git a/content/browser/presentation/presentation_service_impl_unittest.cc b/content/browser/presentation/presentation_service_impl_unittest.cc |
index 73f3dde1d00b56c60105fe3cf9dfe1c974423aad..5d7e7298f73eab2775a1c112d9f2f7690db200c7 100644 |
--- a/content/browser/presentation/presentation_service_impl_unittest.cc |
+++ b/content/browser/presentation/presentation_service_impl_unittest.cc |
@@ -60,12 +60,13 @@ void DoNothing(blink::mojom::PresentationSessionInfoPtr info, |
} // namespace |
-class MockPresentationServiceDelegate : public PresentationServiceDelegate { |
+class MockPresentationServiceDelegate |
+ : public ControllerPresentationServiceDelegate { |
public: |
MOCK_METHOD3(AddObserver, |
- void(int render_process_id, |
- int render_frame_id, |
- PresentationServiceDelegate::Observer* observer)); |
+ void(int render_process_id, |
+ int render_frame_id, |
+ PresentationServiceDelegateBase::Observer* observer)); |
MOCK_METHOD2(RemoveObserver, |
void(int render_process_id, int render_frame_id)); |
@@ -139,6 +140,21 @@ class MockPresentationServiceDelegate : public PresentationServiceDelegate { |
const content::PresentationConnectionStateChangedCallback& |
state_changed_cb)); |
+ void ConnectToOffscreenPresentation( |
+ int render_process_id, |
+ int render_frame_id, |
+ const PresentationSessionInfo& session, |
+ PresentationConnectionPtr connection) override { |
+ RegisterOffscreenPresentationConnectionRaw( |
+ render_process_id, render_frame_id, session, connection.get()); |
+ } |
+ |
+ MOCK_METHOD4(RegisterOffscreenPresentationConnectionRaw, |
+ void(int render_process_id, |
+ int render_frame_id, |
+ const PresentationSessionInfo& session, |
+ blink::mojom::PresentationConnection* connection)); |
+ |
void set_screen_availability_listening_supported(bool value) { |
screen_availability_listening_supported_ = value; |
} |
@@ -147,6 +163,36 @@ class MockPresentationServiceDelegate : public PresentationServiceDelegate { |
bool screen_availability_listening_supported_ = true; |
}; |
+class MockReceiverPresentationServiceDelegate |
+ : public ReceiverPresentationServiceDelegate { |
+ public: |
+ MOCK_METHOD3(AddObserver, |
+ void(int render_process_id, |
+ int render_frame_id, |
+ PresentationServiceDelegateBase::Observer* observer)); |
+ MOCK_METHOD2(RemoveObserver, |
+ void(int render_process_id, int render_frame_id)); |
+ MOCK_METHOD2(Reset, void(int render_process_id, int routing_id)); |
+ MOCK_METHOD1(RegisterReceiverConnectionAvailableCallback, |
+ void(const content::ReceiverConnectionAvailableCallback&)); |
+}; |
+ |
+class MockPresentationConnection : public blink::mojom::PresentationConnection { |
+ public: |
+ void SetTargetConnection( |
+ blink::mojom::PresentationConnectionPtr connection) override { |
+ SetTargetConnection(*connection); |
+ } |
+ MOCK_METHOD1(SetTargetConnection, |
+ void(blink::mojom::PresentationConnection& connection)); |
+ |
+ void OnMessage(blink::mojom::SessionMessagePtr message) override { |
+ OnConnectionMessageReceived(*message); |
+ } |
+ MOCK_METHOD1(OnConnectionMessageReceived, |
+ void(const blink::mojom::SessionMessage& message)); |
+}; |
+ |
class MockPresentationServiceClient |
: public blink::mojom::PresentationServiceClient { |
public: |
@@ -190,7 +236,8 @@ class MockPresentationServiceClient |
void(const blink::mojom::PresentationSessionInfo& session_info)); |
void OnReceiverConnectionAvailable( |
- blink::mojom::PresentationSessionInfoPtr session_info) override { |
+ blink::mojom::PresentationSessionInfoPtr session_info, |
+ blink::mojom::PresentationConnectionPtr connection) override { |
OnReceiverConnectionAvailable(*session_info); |
} |
MOCK_METHOD1(OnReceiverConnectionAvailable, |
@@ -214,7 +261,7 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
TestRenderFrameHost* render_frame_host = contents()->GetMainFrame(); |
render_frame_host->InitializeRenderFrameIfNeeded(); |
service_impl_.reset(new PresentationServiceImpl( |
- render_frame_host, contents(), &mock_delegate_)); |
+ render_frame_host, contents(), &mock_delegate_, nullptr)); |
service_impl_->Bind(std::move(request)); |
blink::mojom::PresentationServiceClientPtr client_ptr; |
@@ -374,6 +421,7 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
} |
MockPresentationServiceDelegate mock_delegate_; |
+ MockReceiverPresentationServiceDelegate mock_receiver_delegate_; |
std::unique_ptr<PresentationServiceImpl> service_impl_; |
mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; |
@@ -661,6 +709,53 @@ TEST_F(PresentationServiceImplTest, ListenForSessionMessagesWithEmptyMsg) { |
RunListenForSessionMessages(text_msg, binary_data, false); |
} |
+TEST_F(PresentationServiceImplTest, SetPresentationConnection) { |
+ blink::mojom::PresentationSessionInfoPtr session( |
+ blink::mojom::PresentationSessionInfo::New()); |
+ session->url = GURL(kPresentationUrl1); |
+ session->id = kPresentationId; |
+ |
+ blink::mojom::PresentationConnectionPtr connection; |
+ |
+ MockPresentationConnection mock_presentation_connection; |
+ mojo::Binding<blink::mojom::PresentationConnection> binding( |
+ &mock_presentation_connection, mojo::GetProxy(&connection)); |
+ |
+ EXPECT_CALL(mock_delegate_, |
+ RegisterOffscreenPresentationConnectionRaw(_, _, _, _)) |
+ .Times(1); |
+ |
+ service_impl_->SetPresentationConnection(std::move(session), |
+ std::move(connection)); |
+} |
+ |
+TEST_F(PresentationServiceImplTest, ReceiverPresentationServiceDelegate) { |
+ MockReceiverPresentationServiceDelegate mock_receiver_delegate; |
+ |
+ PresentationServiceImpl service_impl(contents()->GetMainFrame(), contents(), |
+ &mock_delegate_, |
+ &mock_receiver_delegate); |
+ |
+ EXPECT_CALL(mock_receiver_delegate, |
+ RegisterReceiverConnectionAvailableCallback(_)); |
+ |
+ blink::mojom::PresentationServiceClientPtr client_ptr; |
+ client_binding_.reset( |
+ new mojo::Binding<blink::mojom::PresentationServiceClient>( |
+ &mock_client_, mojo::GetProxy(&client_ptr))); |
+ service_impl.SetClient(std::move(client_ptr)); |
+ |
+ // NO-OP for ControllerPresentationServiceDelegate API functions |
+ EXPECT_CALL(mock_delegate_, ListenForSessionMessages(_, _, _, _)).Times(0); |
+ |
+ blink::mojom::PresentationSessionInfoPtr session( |
+ blink::mojom::PresentationSessionInfo::New()); |
+ session->url = GURL(kPresentationUrl1); |
+ session->id = kPresentationId; |
+ |
+ service_impl.ListenForSessionMessages(std::move(session)); |
+} |
+ |
TEST_F(PresentationServiceImplTest, StartSessionInProgress) { |
EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _)) |
.Times(1); |