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

Side by Side Diff: cc/ipc/struct_traits_unittest.cc

Issue 2686833003: CopyOutputResult must have a working release callback when received over mojo (Closed)
Patch Set: c Created 3 years, 10 months 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "base/run_loop.h"
6 #include "cc/input/selection.h" 7 #include "cc/input/selection.h"
7 #include "cc/ipc/traits_test_service.mojom.h" 8 #include "cc/ipc/traits_test_service.mojom.h"
8 #include "cc/output/copy_output_result.h" 9 #include "cc/output/copy_output_result.h"
9 #include "cc/quads/debug_border_draw_quad.h" 10 #include "cc/quads/debug_border_draw_quad.h"
10 #include "cc/quads/render_pass.h" 11 #include "cc/quads/render_pass.h"
11 #include "cc/quads/render_pass_draw_quad.h" 12 #include "cc/quads/render_pass_draw_quad.h"
12 #include "cc/quads/solid_color_draw_quad.h" 13 #include "cc/quads/solid_color_draw_quad.h"
13 #include "cc/quads/stream_video_draw_quad.h" 14 #include "cc/quads/stream_video_draw_quad.h"
14 #include "cc/quads/surface_draw_quad.h" 15 #include "cc/quads/surface_draw_quad.h"
15 #include "cc/quads/texture_draw_quad.h" 16 #include "cc/quads/texture_draw_quad.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 const EchoTransferableResourceCallback& callback) override { 125 const EchoTransferableResourceCallback& callback) override {
125 callback.Run(t); 126 callback.Run(t);
126 } 127 }
127 128
128 mojo::BindingSet<TraitsTestService> traits_test_bindings_; 129 mojo::BindingSet<TraitsTestService> traits_test_bindings_;
129 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); 130 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest);
130 }; 131 };
131 132
132 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} 133 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {}
133 134
134 void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token, 135 void CopyOutputResultCallback(base::Closure quit_closure,
135 bool is_lost) {} 136 const gpu::SyncToken& expected_sync_token,
137 bool expected_is_lost,
138 const gpu::SyncToken& sync_token,
139 bool is_lost) {
140 EXPECT_EQ(expected_sync_token, sync_token);
141 EXPECT_EQ(expected_is_lost, is_lost);
142 quit_closure.Run();
143 }
136 144
137 } // namespace 145 } // namespace
138 146
139 TEST_F(StructTraitsTest, BeginFrameArgs) { 147 TEST_F(StructTraitsTest, BeginFrameArgs) {
140 const base::TimeTicks frame_time = base::TimeTicks::Now(); 148 const base::TimeTicks frame_time = base::TimeTicks::Now();
141 const base::TimeTicks deadline = base::TimeTicks::Now(); 149 const base::TimeTicks deadline = base::TimeTicks::Now();
142 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); 150 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337);
143 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; 151 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL;
144 const bool on_critical_path = true; 152 const bool on_critical_path = true;
145 BeginFrameArgs input; 153 BeginFrameArgs input;
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize()); 432 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize());
425 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(), 433 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(),
426 in_bitmap->getSize())); 434 in_bitmap->getSize()));
427 } 435 }
428 436
429 TEST_F(StructTraitsTest, CopyOutputResult_Texture) { 437 TEST_F(StructTraitsTest, CopyOutputResult_Texture) {
430 const gfx::Size size(1234, 5678); 438 const gfx::Size size(1234, 5678);
431 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { 439 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = {
432 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; 440 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3};
433 const uint32_t target = 3; 441 const uint32_t target = 3;
434 auto callback = 442 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0,
435 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback)); 443 gpu::CommandBufferId::FromUnsafeValue(0x123),
444 71234838);
445 bool is_lost = true;
446 base::RunLoop run_loop;
447 auto callback = SingleReleaseCallback::Create(base::Bind(
448 CopyOutputResultCallback, run_loop.QuitClosure(), sync_token, is_lost));
436 gpu::Mailbox mailbox; 449 gpu::Mailbox mailbox;
437 mailbox.SetName(mailbox_name); 450 mailbox.SetName(mailbox_name);
438 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); 451 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target);
439 452
440 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, 453 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox,
441 std::move(callback)); 454 std::move(callback));
442 455
443 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 456 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
444 std::unique_ptr<CopyOutputResult> output; 457 std::unique_ptr<CopyOutputResult> output;
445 proxy->EchoCopyOutputResult(std::move(input), &output); 458 proxy->EchoCopyOutputResult(std::move(input), &output);
446 459
447 EXPECT_FALSE(output->HasBitmap()); 460 EXPECT_FALSE(output->HasBitmap());
448 EXPECT_TRUE(output->HasTexture()); 461 EXPECT_TRUE(output->HasTexture());
449 EXPECT_EQ(size, output->size()); 462 EXPECT_EQ(size, output->size());
450 463
451 TextureMailbox out_mailbox; 464 TextureMailbox out_mailbox;
452 std::unique_ptr<SingleReleaseCallback> out_callback; 465 std::unique_ptr<SingleReleaseCallback> out_callback;
453 output->TakeTexture(&out_mailbox, &out_callback); 466 output->TakeTexture(&out_mailbox, &out_callback);
454 EXPECT_EQ(mailbox, out_mailbox.mailbox()); 467 EXPECT_EQ(mailbox, out_mailbox.mailbox());
468 out_callback->Run(sync_token, is_lost);
469 // If CopyOutputResultCallback is called (which is the intended behaviour),
470 // this will exit. Otherwise, this test will time out and fail.
471 // In CopyOutputResultCallback we verify that the given sync_token and is_lost
472 // have their intended values.
473 run_loop.Run();
455 } 474 }
456 475
457 TEST_F(StructTraitsTest, FilterOperation) { 476 TEST_F(StructTraitsTest, FilterOperation) {
458 const FilterOperation inputs[] = { 477 const FilterOperation inputs[] = {
459 FilterOperation::CreateBlurFilter(20), 478 FilterOperation::CreateBlurFilter(20),
460 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, 479 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f,
461 SkColorSetARGB(255, 40, 0, 0)), 480 SkColorSetARGB(255, 40, 0, 0)),
462 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( 481 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make(
463 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), 482 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4),
464 SkIntToScalar(9), SK_ColorBLACK, 483 SkIntToScalar(9), SK_ColorBLACK,
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 1101 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id());
1083 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); 1102 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id());
1084 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); 1103 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
1085 EXPECT_EQ(color_space, out_quad->color_space); 1104 EXPECT_EQ(color_space, out_quad->color_space);
1086 EXPECT_EQ(resource_offset, out_quad->resource_offset); 1105 EXPECT_EQ(resource_offset, out_quad->resource_offset);
1087 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 1106 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
1088 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); 1107 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel);
1089 } 1108 }
1090 1109
1091 } // namespace cc 1110 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698