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