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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
63 } // namespace | 63 } // namespace |
64 | 64 |
65 class MockPresentationServiceDelegate : public PresentationServiceDelegate { | 65 class MockPresentationServiceDelegate : public PresentationServiceDelegate { |
66 public: | 66 public: |
67 MOCK_METHOD3(AddObserver, | 67 MOCK_METHOD3(AddObserver, |
68 void(int render_process_id, | 68 void(int render_process_id, |
69 int render_frame_id, | 69 int render_frame_id, |
70 PresentationServiceDelegate::Observer* observer)); | 70 PresentationServiceDelegate::Observer* observer)); |
71 MOCK_METHOD2(RemoveObserver, | 71 MOCK_METHOD2(RemoveObserver, |
72 void(int render_process_id, int render_frame_id)); | 72 void(int render_process_id, int render_frame_id)); |
73 MOCK_METHOD3(AddScreenAvailabilityListener, | 73 |
74 bool( | 74 bool AddScreenAvailabilityListener( |
Bernhard Bauer
2015/09/29 11:24:07
Is this overriding a method? If so, please add ove
mlamouri (slow - plz ping)
2015/09/29 11:34:27
Oups.
| |
75 int render_process_id, | 75 int render_process_id, |
76 int routing_id, | 76 int routing_id, |
77 PresentationScreenAvailabilityListener* listener)); | 77 PresentationScreenAvailabilityListener* listener) { |
78 if (!screen_availability_listening_supported_) { | |
79 listener->OnScreenAvailabilityNotSupported(); | |
Bernhard Bauer
2015/09/29 11:24:07
Nit: C++ usually doesn't use braces for single-lin
mlamouri (slow - plz ping)
2015/09/29 11:34:27
Done.
| |
80 } | |
81 return AddScreenAvailabilityListener(); | |
82 } | |
83 MOCK_METHOD0(AddScreenAvailabilityListener, bool()); | |
84 | |
78 MOCK_METHOD3(RemoveScreenAvailabilityListener, | 85 MOCK_METHOD3(RemoveScreenAvailabilityListener, |
79 void( | 86 void( |
80 int render_process_id, | 87 int render_process_id, |
81 int routing_id, | 88 int routing_id, |
82 PresentationScreenAvailabilityListener* listener)); | 89 PresentationScreenAvailabilityListener* listener)); |
83 MOCK_METHOD2(Reset, | 90 MOCK_METHOD2(Reset, |
84 void( | 91 void( |
85 int render_process_id, | 92 int render_process_id, |
86 int routing_id)); | 93 int routing_id)); |
87 MOCK_METHOD3(SetDefaultPresentationUrl, | 94 MOCK_METHOD3(SetDefaultPresentationUrl, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
125 scoped_ptr<PresentationSessionMessage> message_request, | 132 scoped_ptr<PresentationSessionMessage> message_request, |
126 const SendMessageCallback& send_message_cb) override { | 133 const SendMessageCallback& send_message_cb) override { |
127 SendMessageRawPtr(render_process_id, render_frame_id, session, | 134 SendMessageRawPtr(render_process_id, render_frame_id, session, |
128 message_request.release(), send_message_cb); | 135 message_request.release(), send_message_cb); |
129 } | 136 } |
130 MOCK_METHOD3( | 137 MOCK_METHOD3( |
131 ListenForSessionStateChange, | 138 ListenForSessionStateChange, |
132 void(int render_process_id, | 139 void(int render_process_id, |
133 int render_frame_id, | 140 int render_frame_id, |
134 const content::SessionStateChangedCallback& state_changed_cb)); | 141 const content::SessionStateChangedCallback& state_changed_cb)); |
142 | |
143 void set_screen_availability_listening_supported(bool value) { | |
144 screen_availability_listening_supported_ = value; | |
145 } | |
146 | |
147 private: | |
148 bool screen_availability_listening_supported_ = true; | |
135 }; | 149 }; |
136 | 150 |
137 class MockPresentationServiceClient : | 151 class MockPresentationServiceClient : |
138 public presentation::PresentationServiceClient { | 152 public presentation::PresentationServiceClient { |
139 public: | 153 public: |
140 MOCK_METHOD2(OnScreenAvailabilityUpdated, | 154 MOCK_METHOD2(OnScreenAvailabilityUpdated, |
141 void(const mojo::String& url, bool available)); | 155 void(const mojo::String& url, bool available)); |
142 void OnSessionStateChanged( | 156 void OnSessionStateChanged( |
143 presentation::PresentationSessionInfoPtr session_info, | 157 presentation::PresentationSessionInfoPtr session_info, |
144 presentation::PresentationSessionState new_state) override { | 158 presentation::PresentationSessionState new_state) override { |
145 OnSessionStateChanged(*session_info, new_state); | 159 OnSessionStateChanged(*session_info, new_state); |
146 } | 160 } |
147 MOCK_METHOD2(OnSessionStateChanged, | 161 MOCK_METHOD2(OnSessionStateChanged, |
148 void(const presentation::PresentationSessionInfo& session_info, | 162 void(const presentation::PresentationSessionInfo& session_info, |
149 presentation::PresentationSessionState new_state)); | 163 presentation::PresentationSessionState new_state)); |
150 void OnScreenAvailabilityNotSupported(const mojo::String& url) override { | 164 |
151 NOTIMPLEMENTED(); | 165 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const mojo::String& url)); |
152 } | |
153 | 166 |
154 void OnSessionMessagesReceived( | 167 void OnSessionMessagesReceived( |
155 presentation::PresentationSessionInfoPtr session_info, | 168 presentation::PresentationSessionInfoPtr session_info, |
156 mojo::Array<presentation::SessionMessagePtr> messages) override { | 169 mojo::Array<presentation::SessionMessagePtr> messages) override { |
157 messages_received_ = messages.Pass(); | 170 messages_received_ = messages.Pass(); |
158 MessagesReceived(); | 171 MessagesReceived(); |
159 } | 172 } |
160 MOCK_METHOD0(MessagesReceived, void()); | 173 MOCK_METHOD0(MessagesReceived, void()); |
161 | 174 |
162 mojo::Array<presentation::SessionMessagePtr> messages_received_; | 175 mojo::Array<presentation::SessionMessagePtr> messages_received_; |
(...skipping 28 matching lines...) Expand all Loading... | |
191 RenderViewHostImplTestHarness::TearDown(); | 204 RenderViewHostImplTestHarness::TearDown(); |
192 } | 205 } |
193 | 206 |
194 void ListenForScreenAvailabilityAndWait( | 207 void ListenForScreenAvailabilityAndWait( |
195 const mojo::String& url, bool delegate_success) { | 208 const mojo::String& url, bool delegate_success) { |
196 base::RunLoop run_loop; | 209 base::RunLoop run_loop; |
197 // This will call to |service_impl_| via mojo. Process the message | 210 // This will call to |service_impl_| via mojo. Process the message |
198 // using RunLoop. | 211 // using RunLoop. |
199 // The callback shouldn't be invoked since there is no availability | 212 // The callback shouldn't be invoked since there is no availability |
200 // result yet. | 213 // result yet. |
201 EXPECT_CALL(mock_delegate_, AddScreenAvailabilityListener(_, _, _)) | 214 EXPECT_CALL(mock_delegate_, AddScreenAvailabilityListener()) |
202 .WillOnce(DoAll( | 215 .WillOnce(DoAll( |
203 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 216 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
204 Return(delegate_success))); | 217 Return(delegate_success))); |
205 service_ptr_->ListenForScreenAvailability(url); | 218 service_ptr_->ListenForScreenAvailability(url); |
206 run_loop.Run(); | 219 run_loop.Run(); |
207 | 220 |
208 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); | 221 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); |
209 } | 222 } |
210 | 223 |
211 void RunLoopFor(base::TimeDelta duration) { | 224 void RunLoopFor(base::TimeDelta duration) { |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
824 | 837 |
825 EXPECT_CALL(mock_client_, | 838 EXPECT_CALL(mock_client_, |
826 OnSessionStateChanged( | 839 OnSessionStateChanged( |
827 Equals(session_info), | 840 Equals(session_info), |
828 presentation::PRESENTATION_SESSION_STATE_CONNECTED)); | 841 presentation::PRESENTATION_SESSION_STATE_CONNECTED)); |
829 service_impl_->OnSessionStateChanged( | 842 service_impl_->OnSessionStateChanged( |
830 content::PresentationSessionInfo(kPresentationUrl, kPresentationId), | 843 content::PresentationSessionInfo(kPresentationUrl, kPresentationId), |
831 content::PRESENTATION_SESSION_STATE_CONNECTED); | 844 content::PRESENTATION_SESSION_STATE_CONNECTED); |
832 } | 845 } |
833 | 846 |
847 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) { | |
848 mock_delegate_.set_screen_availability_listening_supported(false); | |
849 EXPECT_CALL(mock_client_, | |
850 OnScreenAvailabilityNotSupported(Eq(kPresentationUrl))); | |
851 | |
852 ListenForScreenAvailabilityAndWait(kPresentationUrl, false); | |
853 } | |
854 | |
834 } // namespace content | 855 } // namespace content |
OLD | NEW |