OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "chrome/browser/extensions/extension_apitest.h" | 8 #include "chrome/browser/extensions/extension_apitest.h" |
9 #include "chrome/browser/extensions/extension_function_test_utils.h" | 9 #include "chrome/browser/extensions/extension_function_test_utils.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 net::IPAddressNumber ip_number; | 106 net::IPAddressNumber ip_number; |
107 net::ParseIPLiteralToNumber("192.168.1.1", &ip_number); | 107 net::ParseIPLiteralToNumber("192.168.1.1", &ip_number); |
108 net::IPEndPoint ip_endpoint(ip_number, 8009); | 108 net::IPEndPoint ip_endpoint(ip_number, 8009); |
109 mock_cast_socket_ = new MockCastSocket( | 109 mock_cast_socket_ = new MockCastSocket( |
110 api, ip_endpoint, &capturing_net_log_, api->GetLogger()); | 110 api, ip_endpoint, &capturing_net_log_, api->GetLogger()); |
111 // Transfers ownership of the socket. | 111 // Transfers ownership of the socket. |
112 api->SetSocketForTest( | 112 api->SetSocketForTest( |
113 make_scoped_ptr<CastSocket>(mock_cast_socket_).Pass()); | 113 make_scoped_ptr<CastSocket>(mock_cast_socket_).Pass()); |
114 } | 114 } |
115 | 115 |
| 116 void SetUpOpenSendClose() { |
| 117 SetUpMockCastSocket(); |
| 118 EXPECT_CALL(*mock_cast_socket_, error_state()) |
| 119 .WillRepeatedly(Return(cast_channel::CHANNEL_ERROR_NONE)); |
| 120 { |
| 121 InSequence sequence; |
| 122 EXPECT_CALL(*mock_cast_socket_, Connect(_)) |
| 123 .WillOnce(InvokeCompletionCallback<0>(net::OK)); |
| 124 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 125 .WillOnce(Return(cast_channel::READY_STATE_OPEN)); |
| 126 EXPECT_CALL(*mock_cast_socket_, SendMessage(A<const MessageInfo&>(), _)) |
| 127 .WillOnce(InvokeCompletionCallback<1>(net::OK)); |
| 128 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 129 .WillOnce(Return(cast_channel::READY_STATE_OPEN)); |
| 130 EXPECT_CALL(*mock_cast_socket_, Close(_)) |
| 131 .WillOnce(InvokeCompletionCallback<0>(net::OK)); |
| 132 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 133 .WillOnce(Return(cast_channel::READY_STATE_CLOSED)); |
| 134 } |
| 135 } |
| 136 |
116 extensions::CastChannelAPI* GetApi() { | 137 extensions::CastChannelAPI* GetApi() { |
117 return extensions::CastChannelAPI::Get(profile()); | 138 return extensions::CastChannelAPI::Get(profile()); |
118 } | 139 } |
119 | 140 |
120 void CallOnError(extensions::CastChannelAPI* api) { | 141 void CallOnError(extensions::CastChannelAPI* api) { |
121 cast_channel::LastErrors last_errors; | 142 cast_channel::LastErrors last_errors; |
122 last_errors.challenge_reply_error_type = | 143 last_errors.challenge_reply_error_type = |
123 cast_channel::proto::CHALLENGE_REPLY_ERROR_NSS_CERT_PARSING_FAILED; | 144 cast_channel::proto::CHALLENGE_REPLY_ERROR_NSS_CERT_PARSING_FAILED; |
124 last_errors.nss_error_code = -8164; | 145 last_errors.nss_error_code = -8164; |
125 api->OnError(mock_cast_socket_, | 146 api->OnError(mock_cast_socket_, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest | 188 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest |
168 // always return true without actually running the test. Remove when fixed. | 189 // always return true without actually running the test. Remove when fixed. |
169 #if defined(OS_WIN) && !defined(NDEBUG) | 190 #if defined(OS_WIN) && !defined(NDEBUG) |
170 #define MAYBE_TestOpenSendClose DISABLED_TestOpenSendClose | 191 #define MAYBE_TestOpenSendClose DISABLED_TestOpenSendClose |
171 #else | 192 #else |
172 #define MAYBE_TestOpenSendClose TestOpenSendClose | 193 #define MAYBE_TestOpenSendClose TestOpenSendClose |
173 #endif | 194 #endif |
174 // Test loading extension, opening a channel with ConnectInfo, adding a | 195 // Test loading extension, opening a channel with ConnectInfo, adding a |
175 // listener, writing, reading, and closing. | 196 // listener, writing, reading, and closing. |
176 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenSendClose) { | 197 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenSendClose) { |
177 SetUpMockCastSocket(); | 198 SetUpOpenSendClose(); |
178 EXPECT_CALL(*mock_cast_socket_, error_state()) | |
179 .WillRepeatedly(Return(cast_channel::CHANNEL_ERROR_NONE)); | |
180 | |
181 { | |
182 InSequence dummy; | |
183 EXPECT_CALL(*mock_cast_socket_, Connect(_)) | |
184 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | |
185 EXPECT_CALL(*mock_cast_socket_, ready_state()) | |
186 .WillOnce(Return(cast_channel::READY_STATE_OPEN)); | |
187 EXPECT_CALL(*mock_cast_socket_, SendMessage(A<const MessageInfo&>(), _)) | |
188 .WillOnce(InvokeCompletionCallback<1>(net::OK)); | |
189 EXPECT_CALL(*mock_cast_socket_, ready_state()) | |
190 .WillOnce(Return(cast_channel::READY_STATE_OPEN)); | |
191 EXPECT_CALL(*mock_cast_socket_, Close(_)) | |
192 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | |
193 EXPECT_CALL(*mock_cast_socket_, ready_state()) | |
194 .WillOnce(Return(cast_channel::READY_STATE_CLOSED)); | |
195 } | |
196 | 199 |
197 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", | 200 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", |
198 "test_open_send_close.html")); | 201 "test_open_send_close.html")); |
199 } | 202 } |
200 | 203 |
201 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest | 204 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest |
202 // always return true without actually running the test. Remove when fixed. | 205 // always return true without actually running the test. Remove when fixed. |
203 #if defined(OS_WIN) && !defined(NDEBUG) | 206 #if defined(OS_WIN) && !defined(NDEBUG) |
204 #define MAYBE_TestOpenSendCloseWithUrl DISABLED_TestOpenSendCloseWithUrl | 207 #define MAYBE_TestOpenSendCloseWithUrl DISABLED_TestOpenSendCloseWithUrl |
205 #else | 208 #else |
206 #define MAYBE_TestOpenSendCloseWithUrl TestOpenSendCloseWithUrl | 209 #define MAYBE_TestOpenSendCloseWithUrl TestOpenSendCloseWithUrl |
207 #endif | 210 #endif |
208 // Test loading extension, opening a channel with a URL, adding a listener, | 211 // Test loading extension, opening a channel with a URL, adding a listener, |
209 // writing, reading, and closing. | 212 // writing, reading, and closing. |
210 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenSendCloseWithUrl) { | 213 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenSendCloseWithUrl) { |
211 SetUpMockCastSocket(); | 214 SetUpOpenSendClose(); |
212 EXPECT_CALL(*mock_cast_socket_, error_state()) | |
213 .WillRepeatedly(Return(cast_channel::CHANNEL_ERROR_NONE)); | |
214 | |
215 { | |
216 InSequence dummy; | |
217 EXPECT_CALL(*mock_cast_socket_, Connect(_)) | |
218 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | |
219 EXPECT_CALL(*mock_cast_socket_, ready_state()) | |
220 .WillOnce(Return(cast_channel::READY_STATE_OPEN)); | |
221 EXPECT_CALL(*mock_cast_socket_, SendMessage(A<const MessageInfo&>(), _)) | |
222 .WillOnce(InvokeCompletionCallback<1>(net::OK)); | |
223 EXPECT_CALL(*mock_cast_socket_, ready_state()) | |
224 .WillOnce(Return(cast_channel::READY_STATE_OPEN)); | |
225 EXPECT_CALL(*mock_cast_socket_, Close(_)) | |
226 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | |
227 EXPECT_CALL(*mock_cast_socket_, ready_state()) | |
228 .WillOnce(Return(cast_channel::READY_STATE_CLOSED)); | |
229 } | |
230 | 215 |
231 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", | 216 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", |
232 "test_open_send_close_url.html")); | 217 "test_open_send_close_url.html")); |
233 } | 218 } |
234 | 219 |
235 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest | 220 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest |
236 // always return true without actually running the test. Remove when fixed. | 221 // always return true without actually running the test. Remove when fixed. |
237 #if defined(OS_WIN) && !defined(NDEBUG) | 222 #if defined(OS_WIN) && !defined(NDEBUG) |
238 #define MAYBE_TestOpenReceiveClose DISABLED_TestOpenReceiveClose | 223 #define MAYBE_TestOpenReceiveClose DISABLED_TestOpenReceiveClose |
239 #else | 224 #else |
240 #define MAYBE_TestOpenReceiveClose TestOpenReceiveClose | 225 #define MAYBE_TestOpenReceiveClose TestOpenReceiveClose |
241 #endif | 226 #endif |
242 // Test loading extension, opening a channel, adding a listener, | 227 // Test loading extension, opening a channel, adding a listener, |
243 // writing, reading, and closing. | 228 // writing, reading, and closing. |
244 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenReceiveClose) { | 229 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenReceiveClose) { |
245 SetUpMockCastSocket(); | 230 SetUpMockCastSocket(); |
246 EXPECT_CALL(*mock_cast_socket_, error_state()) | 231 EXPECT_CALL(*mock_cast_socket_, error_state()) |
247 .WillRepeatedly(Return(cast_channel::CHANNEL_ERROR_NONE)); | 232 .WillRepeatedly(Return(cast_channel::CHANNEL_ERROR_NONE)); |
248 | 233 |
249 { | 234 { |
250 InSequence dummy; | 235 InSequence sequence; |
251 EXPECT_CALL(*mock_cast_socket_, Connect(_)) | 236 EXPECT_CALL(*mock_cast_socket_, Connect(_)) |
252 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | 237 .WillOnce(InvokeCompletionCallback<0>(net::OK)); |
253 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 238 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
254 .Times(3) | 239 .Times(3) |
255 .WillRepeatedly(Return(cast_channel::READY_STATE_OPEN)); | 240 .WillRepeatedly(Return(cast_channel::READY_STATE_OPEN)); |
256 EXPECT_CALL(*mock_cast_socket_, Close(_)) | 241 EXPECT_CALL(*mock_cast_socket_, Close(_)) |
257 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | 242 .WillOnce(InvokeCompletionCallback<0>(net::OK)); |
258 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 243 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
259 .WillOnce(Return(cast_channel::READY_STATE_CLOSED)); | 244 .WillOnce(Return(cast_channel::READY_STATE_CLOSED)); |
260 } | 245 } |
261 | 246 |
262 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", | 247 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", |
263 "test_open_receive_close.html")); | 248 "test_open_receive_close.html")); |
264 | 249 |
265 ResultCatcher catcher; | 250 ResultCatcher catcher; |
266 CallOnMessage("some-message"); | 251 CallOnMessage("some-message"); |
267 CallOnMessage("some-message"); | 252 CallOnMessage("some-message"); |
268 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 253 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
269 } | 254 } |
270 | 255 |
| 256 // TODO(imcheng): Win Dbg has a workaround that makes RunExtensionSubtest |
| 257 // always return true without actually running the test. Remove when fixed. |
| 258 #if defined(OS_WIN) && !defined(NDEBUG) |
| 259 #define MAYBE_TestGetLogs DISABLED_TestGetLogs |
| 260 #else |
| 261 #define MAYBE_TestGetLogs TestGetLogs |
| 262 #endif |
| 263 // Test loading extension, execute a open-send-close sequence, then get logs. |
| 264 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestGetLogs) { |
| 265 SetUpOpenSendClose(); |
| 266 |
| 267 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", "test_get_logs.html")); |
| 268 } |
| 269 |
271 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest | 270 // TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest |
272 // always return true without actually running the test. Remove when fixed. | 271 // always return true without actually running the test. Remove when fixed. |
273 // Flaky on mac: crbug.com/393969 | 272 // Flaky on mac: crbug.com/393969 |
274 #if (defined(OS_WIN) && !defined(NDEBUG)) || defined(OS_MACOSX) | 273 #if (defined(OS_WIN) && !defined(NDEBUG)) || defined(OS_MACOSX) |
275 #define MAYBE_TestOpenError DISABLED_TestOpenError | 274 #define MAYBE_TestOpenError DISABLED_TestOpenError |
276 #else | 275 #else |
277 #define MAYBE_TestOpenError TestOpenError | 276 #define MAYBE_TestOpenError TestOpenError |
278 #endif | 277 #endif |
279 // Test the case when socket open results in an error. | 278 // Test the case when socket open results in an error. |
280 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenError) { | 279 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenError) { |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 cast_channel_send_function.get(), | 389 cast_channel_send_function.get(), |
391 "[{\"channelId\": 1, \"url\": \"cast://127.0.0.1:8009\", " | 390 "[{\"channelId\": 1, \"url\": \"cast://127.0.0.1:8009\", " |
392 "\"connectInfo\": " | 391 "\"connectInfo\": " |
393 "{\"ipAddress\": \"127.0.0.1\", \"port\": 8009, " | 392 "{\"ipAddress\": \"127.0.0.1\", \"port\": 8009, " |
394 "\"auth\": \"ssl\"}, \"readyState\": \"open\"}, " | 393 "\"auth\": \"ssl\"}, \"readyState\": \"open\"}, " |
395 "{\"namespace_\": \"foo\", \"sourceId\": \"src\", " | 394 "{\"namespace_\": \"foo\", \"sourceId\": \"src\", " |
396 "\"destinationId\": \"\", \"data\": \"data\"}]", | 395 "\"destinationId\": \"\", \"data\": \"data\"}]", |
397 browser()); | 396 browser()); |
398 EXPECT_EQ(error, "message_info.destination_id is required"); | 397 EXPECT_EQ(error, "message_info.destination_id is required"); |
399 } | 398 } |
OLD | NEW |