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 <GLES2/gl2.h> | 5 #include <GLES2/gl2.h> |
6 | 6 |
7 #include "base/memory/shared_memory.h" | 7 #include "base/memory/shared_memory.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "ppapi/c/pp_errors.h" | 9 #include "ppapi/c/pp_errors.h" |
10 #include "ppapi/c/ppb_video_decoder.h" | 10 #include "ppapi/c/ppb_video_decoder.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 } | 51 } |
52 | 52 |
53 private: | 53 private: |
54 bool called_; | 54 bool called_; |
55 int32_t result_; | 55 int32_t result_; |
56 }; | 56 }; |
57 | 57 |
58 class VideoDecoderResourceTest : public PluginProxyTest { | 58 class VideoDecoderResourceTest : public PluginProxyTest { |
59 public: | 59 public: |
60 VideoDecoderResourceTest() | 60 VideoDecoderResourceTest() |
61 : decoder_iface_(thunk::GetPPB_VideoDecoder_1_0_Thunk()) {} | 61 : decoder_iface_(thunk::GetPPB_VideoDecoder_1_1_Thunk()) {} |
62 | 62 |
63 const PPB_VideoDecoder_1_0* decoder_iface() const { return decoder_iface_; } | 63 const PPB_VideoDecoder_1_1* decoder_iface() const { return decoder_iface_; } |
64 | 64 |
65 void SendReply(const ResourceMessageCallParams& params, | 65 void SendReply(const ResourceMessageCallParams& params, |
66 int32_t result, | 66 int32_t result, |
67 const IPC::Message& nested_message) { | 67 const IPC::Message& nested_message) { |
68 ResourceMessageReplyParams reply_params(params.pp_resource(), | 68 ResourceMessageReplyParams reply_params(params.pp_resource(), |
69 params.sequence()); | 69 params.sequence()); |
70 reply_params.set_result(result); | 70 reply_params.set_result(result); |
71 PluginMessageFilter::DispatchResourceReplyForTest(reply_params, | 71 PluginMessageFilter::DispatchResourceReplyForTest(reply_params, |
72 nested_message); | 72 nested_message); |
73 } | 73 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 | 110 |
111 PP_Resource CreateAndInitializeDecoder() { | 111 PP_Resource CreateAndInitializeDecoder() { |
112 PP_Resource decoder = CreateDecoder(); | 112 PP_Resource decoder = CreateDecoder(); |
113 LockingResourceReleaser graphics3d(CreateGraphics3d()); | 113 LockingResourceReleaser graphics3d(CreateGraphics3d()); |
114 MockCompletionCallback cb; | 114 MockCompletionCallback cb; |
115 int32_t result = decoder_iface()->Initialize( | 115 int32_t result = decoder_iface()->Initialize( |
116 decoder, | 116 decoder, |
117 graphics3d.get(), | 117 graphics3d.get(), |
118 PP_VIDEOPROFILE_H264MAIN, | 118 PP_VIDEOPROFILE_H264MAIN, |
119 PP_HARDWAREACCELERATION_WITHFALLBACK, | 119 PP_HARDWAREACCELERATION_WITHFALLBACK, |
| 120 0, |
120 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, | 121 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, |
121 &cb)); | 122 &cb)); |
122 if (result != PP_OK_COMPLETIONPENDING) | 123 if (result != PP_OK_COMPLETIONPENDING) |
123 return 0; | 124 return 0; |
124 ResourceMessageCallParams params; | 125 ResourceMessageCallParams params; |
125 IPC::Message msg; | 126 IPC::Message msg; |
126 if (!sink().GetFirstResourceCallMatching( | 127 if (!sink().GetFirstResourceCallMatching( |
127 PpapiHostMsg_VideoDecoder_Initialize::ID, ¶ms, &msg)) | 128 PpapiHostMsg_VideoDecoder_Initialize::ID, ¶ms, &msg)) |
128 return 0; | 129 return 0; |
129 sink().ClearMessages(); | 130 sink().ClearMessages(); |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 | 291 |
291 private: | 292 private: |
292 bool CheckMsg(ResourceMessageCallParams* params, int id) { | 293 bool CheckMsg(ResourceMessageCallParams* params, int id) { |
293 IPC::Message msg; | 294 IPC::Message msg; |
294 if (!sink().GetFirstResourceCallMatching(id, params, &msg)) | 295 if (!sink().GetFirstResourceCallMatching(id, params, &msg)) |
295 return false; | 296 return false; |
296 sink().ClearMessages(); | 297 sink().ClearMessages(); |
297 return true; | 298 return true; |
298 } | 299 } |
299 | 300 |
300 const PPB_VideoDecoder_1_0* decoder_iface_; | 301 const PPB_VideoDecoder_1_1* decoder_iface_; |
301 | 302 |
302 char decode_buffer_[kDecodeBufferSize]; | 303 char decode_buffer_[kDecodeBufferSize]; |
303 }; | 304 }; |
304 | 305 |
305 } // namespace | 306 } // namespace |
306 | 307 |
307 TEST_F(VideoDecoderResourceTest, Initialize) { | 308 TEST_F(VideoDecoderResourceTest, Initialize) { |
308 // Initialize with 0 graphics3d_context should fail. | 309 // Initialize with 0 graphics3d_context should fail. |
309 { | 310 { |
310 LockingResourceReleaser decoder(CreateDecoder()); | 311 LockingResourceReleaser decoder(CreateDecoder()); |
311 MockCompletionCallback cb; | 312 MockCompletionCallback cb; |
312 int32_t result = decoder_iface()->Initialize( | 313 int32_t result = decoder_iface()->Initialize( |
313 decoder.get(), | 314 decoder.get(), |
314 0 /* invalid 3d graphics */, | 315 0 /* invalid 3d graphics */, |
315 PP_VIDEOPROFILE_H264MAIN, | 316 PP_VIDEOPROFILE_H264MAIN, |
316 PP_HARDWAREACCELERATION_WITHFALLBACK, | 317 PP_HARDWAREACCELERATION_WITHFALLBACK, |
| 318 0, |
317 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, | 319 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, |
318 &cb)); | 320 &cb)); |
319 ASSERT_EQ(PP_ERROR_BADRESOURCE, result); | 321 ASSERT_EQ(PP_ERROR_BADRESOURCE, result); |
320 } | 322 } |
321 // Initialize with bad profile value should fail. | 323 // Initialize with bad profile value should fail. |
322 { | 324 { |
323 LockingResourceReleaser decoder(CreateDecoder()); | 325 LockingResourceReleaser decoder(CreateDecoder()); |
324 MockCompletionCallback cb; | 326 MockCompletionCallback cb; |
325 int32_t result = decoder_iface()->Initialize( | 327 int32_t result = decoder_iface()->Initialize( |
326 decoder.get(), | 328 decoder.get(), |
327 1 /* non-zero resource */, | 329 1 /* non-zero resource */, |
328 static_cast<PP_VideoProfile>(-1), | 330 static_cast<PP_VideoProfile>(-1), |
329 PP_HARDWAREACCELERATION_WITHFALLBACK, | 331 PP_HARDWAREACCELERATION_WITHFALLBACK, |
| 332 0, |
330 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, | 333 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, |
331 &cb)); | 334 &cb)); |
332 ASSERT_EQ(PP_ERROR_BADARGUMENT, result); | 335 ASSERT_EQ(PP_ERROR_BADARGUMENT, result); |
333 } | 336 } |
334 // Initialize with valid graphics3d_context and profile should succeed. | 337 // Initialize with valid graphics3d_context and profile should succeed. |
335 { | 338 { |
336 LockingResourceReleaser decoder(CreateDecoder()); | 339 LockingResourceReleaser decoder(CreateDecoder()); |
337 LockingResourceReleaser graphics3d(CreateGraphics3d()); | 340 LockingResourceReleaser graphics3d(CreateGraphics3d()); |
338 MockCompletionCallback cb; | 341 MockCompletionCallback cb; |
339 int32_t result = decoder_iface()->Initialize( | 342 int32_t result = decoder_iface()->Initialize( |
340 decoder.get(), | 343 decoder.get(), |
341 graphics3d.get(), | 344 graphics3d.get(), |
342 PP_VIDEOPROFILE_H264MAIN, | 345 PP_VIDEOPROFILE_H264MAIN, |
343 PP_HARDWAREACCELERATION_WITHFALLBACK, | 346 PP_HARDWAREACCELERATION_WITHFALLBACK, |
| 347 0, |
344 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, | 348 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, |
345 &cb)); | 349 &cb)); |
346 ASSERT_EQ(PP_OK_COMPLETIONPENDING, result); | 350 ASSERT_EQ(PP_OK_COMPLETIONPENDING, result); |
347 ASSERT_TRUE(decoder_iface()->IsVideoDecoder(decoder.get())); | 351 ASSERT_TRUE(decoder_iface()->IsVideoDecoder(decoder.get())); |
348 | 352 |
349 // Another attempt while pending should fail. | 353 // Another attempt while pending should fail. |
350 result = decoder_iface()->Initialize( | 354 result = decoder_iface()->Initialize( |
351 decoder.get(), | 355 decoder.get(), |
352 graphics3d.get(), | 356 graphics3d.get(), |
353 PP_VIDEOPROFILE_H264MAIN, | 357 PP_VIDEOPROFILE_H264MAIN, |
354 PP_HARDWAREACCELERATION_WITHFALLBACK, | 358 PP_HARDWAREACCELERATION_WITHFALLBACK, |
| 359 0, |
355 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, | 360 PP_MakeOptionalCompletionCallback(&MockCompletionCallback::Callback, |
356 &cb)); | 361 &cb)); |
357 ASSERT_EQ(PP_ERROR_INPROGRESS, result); | 362 ASSERT_EQ(PP_ERROR_INPROGRESS, result); |
358 | 363 |
359 // Check for host message and send a reply to complete initialization. | 364 // Check for host message and send a reply to complete initialization. |
360 ResourceMessageCallParams params; | 365 ResourceMessageCallParams params; |
361 IPC::Message msg; | 366 IPC::Message msg; |
362 ASSERT_TRUE(sink().GetFirstResourceCallMatching( | 367 ASSERT_TRUE(sink().GetFirstResourceCallMatching( |
363 PpapiHostMsg_VideoDecoder_Initialize::ID, ¶ms, &msg)); | 368 PpapiHostMsg_VideoDecoder_Initialize::ID, ¶ms, &msg)); |
364 sink().ClearMessages(); | 369 sink().ClearMessages(); |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 ASSERT_FALSE(uncalled_cb.called()); | 577 ASSERT_FALSE(uncalled_cb.called()); |
573 ASSERT_EQ(PP_ERROR_RESOURCE_FAILED, CallFlush(decoder.get(), &uncalled_cb)); | 578 ASSERT_EQ(PP_ERROR_RESOURCE_FAILED, CallFlush(decoder.get(), &uncalled_cb)); |
574 ASSERT_FALSE(uncalled_cb.called()); | 579 ASSERT_FALSE(uncalled_cb.called()); |
575 ASSERT_EQ(PP_ERROR_RESOURCE_FAILED, CallReset(decoder.get(), &uncalled_cb)); | 580 ASSERT_EQ(PP_ERROR_RESOURCE_FAILED, CallReset(decoder.get(), &uncalled_cb)); |
576 ASSERT_FALSE(uncalled_cb.called()); | 581 ASSERT_FALSE(uncalled_cb.called()); |
577 } | 582 } |
578 #endif // !defined(OS_WIN) || !defined(ARCH_CPU_64_BITS) | 583 #endif // !defined(OS_WIN) || !defined(ARCH_CPU_64_BITS) |
579 | 584 |
580 } // namespace proxy | 585 } // namespace proxy |
581 } // namespace ppapi | 586 } // namespace ppapi |
OLD | NEW |