Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Side by Side Diff: ppapi/proxy/device_enumeration_resource_helper_unittest.cc

Issue 46433002: Support using TrackedCallbacks as hints to determine the handling thread of resource reply messages (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/ppapi_proxy.gypi ('k') | ppapi/proxy/file_chooser_resource_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/compiler_specific.h" 6 #include "base/compiler_specific.h"
7 #include "ppapi/c/pp_errors.h" 7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/proxy/connection.h" 8 #include "ppapi/proxy/connection.h"
9 #include "ppapi/proxy/device_enumeration_resource_helper.h" 9 #include "ppapi/proxy/device_enumeration_resource_helper.h"
10 #include "ppapi/proxy/plugin_message_filter.h"
10 #include "ppapi/proxy/plugin_resource.h" 11 #include "ppapi/proxy/plugin_resource.h"
11 #include "ppapi/proxy/plugin_resource_tracker.h" 12 #include "ppapi/proxy/plugin_resource_tracker.h"
12 #include "ppapi/proxy/plugin_var_tracker.h" 13 #include "ppapi/proxy/plugin_var_tracker.h"
13 #include "ppapi/proxy/ppapi_message_utils.h" 14 #include "ppapi/proxy/ppapi_message_utils.h"
14 #include "ppapi/proxy/ppapi_messages.h" 15 #include "ppapi/proxy/ppapi_messages.h"
15 #include "ppapi/proxy/ppapi_proxy_test.h" 16 #include "ppapi/proxy/ppapi_proxy_test.h"
16 #include "ppapi/shared_impl/ppb_device_ref_shared.h" 17 #include "ppapi/shared_impl/ppb_device_ref_shared.h"
17 #include "ppapi/shared_impl/proxy_lock.h" 18 #include "ppapi/shared_impl/proxy_lock.h"
18 #include "ppapi/shared_impl/var.h" 19 #include "ppapi/shared_impl/var.h"
19 #include "ppapi/thunk/enter.h" 20 #include "ppapi/thunk/enter.h"
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 data_item.name = "name_1"; 252 data_item.name = "name_1";
252 data_item.id = "id_1"; 253 data_item.id = "id_1";
253 data.push_back(data_item); 254 data.push_back(data_item);
254 data_item.type = PP_DEVICETYPE_DEV_VIDEOCAPTURE; 255 data_item.type = PP_DEVICETYPE_DEV_VIDEOCAPTURE;
255 data_item.name = "name_2"; 256 data_item.name = "name_2";
256 data_item.id = "id_2"; 257 data_item.id = "id_2";
257 data.push_back(data_item); 258 data.push_back(data_item);
258 259
259 { 260 {
260 ProxyAutoUnlock unlock; 261 ProxyAutoUnlock unlock;
261 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( 262 PluginMessageFilter::DispatchResourceReplyForTest(
262 PpapiPluginMsg_ResourceReply( 263 reply_params,
263 reply_params, 264 PpapiPluginMsg_DeviceEnumeration_EnumerateDevicesReply(data));
264 PpapiPluginMsg_DeviceEnumeration_EnumerateDevicesReply(data))));
265 } 265 }
266 EXPECT_TRUE(callback.called()); 266 EXPECT_TRUE(callback.called());
267 EXPECT_EQ(PP_OK, callback.result()); 267 EXPECT_EQ(PP_OK, callback.result());
268 EXPECT_EQ(2U, output.count()); 268 EXPECT_EQ(2U, output.count());
269 for (size_t i = 0; i < output.count(); ++i) 269 for (size_t i = 0; i < output.count(); ++i)
270 EXPECT_TRUE(CompareDeviceRef(&var_tracker(), output.data()[i], data[i])); 270 EXPECT_TRUE(CompareDeviceRef(&var_tracker(), output.data()[i], data[i]));
271 } 271 }
272 272
273 TEST_F(DeviceEnumerationResourceHelperTest, MonitorDeviceChange) { 273 TEST_F(DeviceEnumerationResourceHelperTest, MonitorDeviceChange) {
274 ProxyAutoLock lock; 274 ProxyAutoLock lock;
(...skipping 22 matching lines...) Expand all
297 297
298 ResourceMessageReplyParams reply_params(params.pp_resource(), 0); 298 ResourceMessageReplyParams reply_params(params.pp_resource(), 0);
299 reply_params.set_result(PP_OK); 299 reply_params.set_result(PP_OK);
300 std::vector<DeviceRefData> data; 300 std::vector<DeviceRefData> data;
301 301
302 helper.SetExpectedResult(data); 302 helper.SetExpectedResult(data);
303 303
304 { 304 {
305 ProxyAutoUnlock unlock; 305 ProxyAutoUnlock unlock;
306 // Synthesize a response with no device. 306 // Synthesize a response with no device.
307 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( 307 PluginMessageFilter::DispatchResourceReplyForTest(
308 PpapiPluginMsg_ResourceReply( 308 reply_params,
309 reply_params, 309 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange(
310 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange( 310 callback_id, data));
311 callback_id, data))));
312 } 311 }
313 EXPECT_TRUE(helper.called() && helper.same_as_expected()); 312 EXPECT_TRUE(helper.called() && helper.same_as_expected());
314 313
315 DeviceRefData data_item; 314 DeviceRefData data_item;
316 data_item.type = PP_DEVICETYPE_DEV_AUDIOCAPTURE; 315 data_item.type = PP_DEVICETYPE_DEV_AUDIOCAPTURE;
317 data_item.name = "name_1"; 316 data_item.name = "name_1";
318 data_item.id = "id_1"; 317 data_item.id = "id_1";
319 data.push_back(data_item); 318 data.push_back(data_item);
320 data_item.type = PP_DEVICETYPE_DEV_VIDEOCAPTURE; 319 data_item.type = PP_DEVICETYPE_DEV_VIDEOCAPTURE;
321 data_item.name = "name_2"; 320 data_item.name = "name_2";
322 data_item.id = "id_2"; 321 data_item.id = "id_2";
323 data.push_back(data_item); 322 data.push_back(data_item);
324 323
325 helper.SetExpectedResult(data); 324 helper.SetExpectedResult(data);
326 325
327 { 326 {
328 ProxyAutoUnlock unlock; 327 ProxyAutoUnlock unlock;
329 // Synthesize a response with some devices. 328 // Synthesize a response with some devices.
330 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( 329 PluginMessageFilter::DispatchResourceReplyForTest(
331 PpapiPluginMsg_ResourceReply( 330 reply_params,
332 reply_params, 331 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange(
333 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange( 332 callback_id, data));
334 callback_id, data))));
335 } 333 }
336 EXPECT_TRUE(helper.called() && helper.same_as_expected()); 334 EXPECT_TRUE(helper.called() && helper.same_as_expected());
337 335
338 TestMonitorDeviceChange helper2(&var_tracker()); 336 TestMonitorDeviceChange helper2(&var_tracker());
339 337
340 result = device_enumeration.MonitorDeviceChange( 338 result = device_enumeration.MonitorDeviceChange(
341 &TestMonitorDeviceChange::MonitorDeviceChangeCallback, &helper2); 339 &TestMonitorDeviceChange::MonitorDeviceChangeCallback, &helper2);
342 ASSERT_EQ(PP_OK, result); 340 ASSERT_EQ(PP_OK, result);
343 341
344 // Should have sent another MonitorDeviceChange message. 342 // Should have sent another MonitorDeviceChange message.
345 ResourceMessageCallParams params2; 343 ResourceMessageCallParams params2;
346 IPC::Message msg2; 344 IPC::Message msg2;
347 ASSERT_TRUE(sink().GetFirstResourceCallMatching( 345 ASSERT_TRUE(sink().GetFirstResourceCallMatching(
348 PpapiHostMsg_DeviceEnumeration_MonitorDeviceChange::ID, &params2, &msg2)); 346 PpapiHostMsg_DeviceEnumeration_MonitorDeviceChange::ID, &params2, &msg2));
349 sink().ClearMessages(); 347 sink().ClearMessages();
350 348
351 uint32_t callback_id2 = 0; 349 uint32_t callback_id2 = 0;
352 ASSERT_TRUE(UnpackMessage<PpapiHostMsg_DeviceEnumeration_MonitorDeviceChange>( 350 ASSERT_TRUE(UnpackMessage<PpapiHostMsg_DeviceEnumeration_MonitorDeviceChange>(
353 msg2, &callback_id2)); 351 msg2, &callback_id2));
354 352
355 helper.SetExpectedResult(data); 353 helper.SetExpectedResult(data);
356 helper2.SetExpectedResult(data); 354 helper2.SetExpectedResult(data);
357 { 355 {
358 ProxyAutoUnlock unlock; 356 ProxyAutoUnlock unlock;
359 // |helper2| should receive the result while |helper| shouldn't. 357 // |helper2| should receive the result while |helper| shouldn't.
360 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( 358 PluginMessageFilter::DispatchResourceReplyForTest(
361 PpapiPluginMsg_ResourceReply( 359 reply_params,
362 reply_params, 360 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange(
363 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange( 361 callback_id2, data));
364 callback_id2, data))));
365 } 362 }
366 EXPECT_TRUE(helper2.called() && helper2.same_as_expected()); 363 EXPECT_TRUE(helper2.called() && helper2.same_as_expected());
367 EXPECT_FALSE(helper.called()); 364 EXPECT_FALSE(helper.called());
368 365
369 helper.SetExpectedResult(data); 366 helper.SetExpectedResult(data);
370 helper2.SetExpectedResult(data); 367 helper2.SetExpectedResult(data);
371 { 368 {
372 ProxyAutoUnlock unlock; 369 ProxyAutoUnlock unlock;
373 // Even if a message with |callback_id| arrives. |helper| shouldn't receive 370 // Even if a message with |callback_id| arrives. |helper| shouldn't receive
374 // the result. 371 // the result.
375 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( 372 PluginMessageFilter::DispatchResourceReplyForTest(
376 PpapiPluginMsg_ResourceReply( 373 reply_params,
377 reply_params, 374 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange(
378 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange( 375 callback_id, data));
379 callback_id, data))));
380 } 376 }
381 EXPECT_FALSE(helper2.called()); 377 EXPECT_FALSE(helper2.called());
382 EXPECT_FALSE(helper.called()); 378 EXPECT_FALSE(helper.called());
383 379
384 result = device_enumeration.MonitorDeviceChange(NULL, NULL); 380 result = device_enumeration.MonitorDeviceChange(NULL, NULL);
385 ASSERT_EQ(PP_OK, result); 381 ASSERT_EQ(PP_OK, result);
386 382
387 // Should have sent a StopMonitoringDeviceChange message. 383 // Should have sent a StopMonitoringDeviceChange message.
388 ResourceMessageCallParams params3; 384 ResourceMessageCallParams params3;
389 IPC::Message msg3; 385 IPC::Message msg3;
390 ASSERT_TRUE(sink().GetFirstResourceCallMatching( 386 ASSERT_TRUE(sink().GetFirstResourceCallMatching(
391 PpapiHostMsg_DeviceEnumeration_StopMonitoringDeviceChange::ID, 387 PpapiHostMsg_DeviceEnumeration_StopMonitoringDeviceChange::ID,
392 &params3, &msg3)); 388 &params3, &msg3));
393 sink().ClearMessages(); 389 sink().ClearMessages();
394 390
395 helper2.SetExpectedResult(data); 391 helper2.SetExpectedResult(data);
396 { 392 {
397 ProxyAutoUnlock unlock; 393 ProxyAutoUnlock unlock;
398 // |helper2| shouldn't receive any result any more. 394 // |helper2| shouldn't receive any result any more.
399 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( 395 PluginMessageFilter::DispatchResourceReplyForTest(
400 PpapiPluginMsg_ResourceReply( 396 reply_params,
401 reply_params, 397 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange(
402 PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange( 398 callback_id2, data));
403 callback_id2, data))));
404 } 399 }
405 EXPECT_FALSE(helper2.called()); 400 EXPECT_FALSE(helper2.called());
406 } 401 }
407 402
408 } // namespace proxy 403 } // namespace proxy
409 } // namespace ppapi 404 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/ppapi_proxy.gypi ('k') | ppapi/proxy/file_chooser_resource_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698