| Index: ppapi/tests/test_graphics_2d.cc
|
| ===================================================================
|
| --- ppapi/tests/test_graphics_2d.cc (revision 90603)
|
| +++ ppapi/tests/test_graphics_2d.cc (working copy)
|
| @@ -43,15 +43,15 @@
|
| }
|
|
|
| void TestGraphics2D::RunTest() {
|
| - instance_->LogTest("InvalidResource", TestInvalidResource());
|
| - instance_->LogTest("InvalidSize", TestInvalidSize());
|
| - instance_->LogTest("Humongous", TestHumongous());
|
| - instance_->LogTest("InitToZero", TestInitToZero());
|
| - instance_->LogTest("Describe", TestDescribe());
|
| - instance_->LogTest("Paint", TestPaint());
|
| - //instance_->LogTest("Scroll", TestScroll()); // TODO(brettw) implement.
|
| - instance_->LogTest("Replace", TestReplace());
|
| - instance_->LogTest("Flush", TestFlush());
|
| + RUN_TEST(InvalidResource);
|
| + RUN_TEST(InvalidSize);
|
| + RUN_TEST(Humongous);
|
| + RUN_TEST(InitToZero);
|
| + RUN_TEST(Describe);
|
| + RUN_ASYNC_TEST(Paint);
|
| + // RUN_ASYNC_TEST(Scroll); // TODO(brettw) implement.
|
| + RUN_ASYNC_TEST(Replace);
|
| + RUN_ASYNC_TEST(Flush);
|
| }
|
|
|
| void TestGraphics2D::QuitMessageLoop() {
|
| @@ -79,8 +79,11 @@
|
| }
|
|
|
| bool TestGraphics2D::FlushAndWaitForDone(pp::Graphics2D* context) {
|
| - pp::CompletionCallback cc(&FlushCallbackQuitMessageLoop, this);
|
| + int32_t flags = (force_async_ ? 0 : PP_COMPLETIONCALLBACK_FLAG_OPTIONAL);
|
| + pp::CompletionCallback cc(&FlushCallbackQuitMessageLoop, this, flags);
|
| int32_t rv = context->Flush(cc);
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return false;
|
| if (rv == PP_OK)
|
| return true;
|
| if (rv != PP_OK_COMPLETIONPENDING)
|
| @@ -209,11 +212,11 @@
|
| // Flush.
|
| if (graphics_2d_interface_->Flush(
|
| image.pp_resource(),
|
| - PP_MakeCompletionCallback(&FlushCallbackNOP, NULL)) == PP_OK)
|
| + PP_MakeOptionalCompletionCallback(&FlushCallbackNOP, NULL)) == PP_OK)
|
| return "Flush succeeded with a different resource";
|
| if (graphics_2d_interface_->Flush(
|
| null_context.pp_resource(),
|
| - PP_MakeCompletionCallback(&FlushCallbackNOP, NULL)) == PP_OK)
|
| + PP_MakeOptionalCompletionCallback(&FlushCallbackNOP, NULL)) == PP_OK)
|
| return "Flush succeeded with a NULL resource";
|
|
|
| // ReadImageData.
|
| @@ -526,16 +529,27 @@
|
| if (!FlushAndWaitForDone(&dc_nopaints))
|
| return "Couldn't flush the nopaint device";
|
|
|
| + int32_t flags = (force_async_ ? 0 : PP_COMPLETIONCALLBACK_FLAG_OPTIONAL);
|
| +
|
| // Test that multiple flushes fail if we don't get a callback in between.
|
| - rv = dc_nopaints.Flush(pp::CompletionCallback(&FlushCallbackNOP, NULL));
|
| + rv = dc_nopaints.Flush(pp::CompletionCallback(&FlushCallbackNOP, NULL,
|
| + flags));
|
| + if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + return "Flush must complete asynchronously.";
|
| if (rv != PP_OK && rv != PP_OK_COMPLETIONPENDING)
|
| return "Couldn't flush first time for multiple flush test.";
|
|
|
| - if (rv != PP_OK) {
|
| - // If the first flush would block, then a second should fail.
|
| - rv = dc_nopaints.Flush(pp::CompletionCallback(&FlushCallbackNOP, NULL));
|
| - if (rv == PP_OK || rv == PP_OK_COMPLETIONPENDING)
|
| - return "Second flush succeeded before callback ran.";
|
| + if (rv == PP_OK_COMPLETIONPENDING) {
|
| + // If the first flush completes asynchronously, then a second should fail.
|
| + rv = dc_nopaints.Flush(pp::CompletionCallback(&FlushCallbackNOP, NULL,
|
| + flags));
|
| + if (force_async_) {
|
| + if (rv != PP_OK_COMPLETIONPENDING)
|
| + return "Second flush must fail asynchronously.";
|
| + } else {
|
| + if (rv == PP_OK || rv == PP_OK_COMPLETIONPENDING)
|
| + return "Second flush succeeded before callback ran.";
|
| + }
|
| }
|
|
|
| PASS();
|
|
|