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

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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 const ReturnedResource& r, 85 const ReturnedResource& r,
85 const EchoReturnedResourceCallback& callback) override { 86 const EchoReturnedResourceCallback& callback) override {
86 callback.Run(r); 87 callback.Run(r);
87 } 88 }
88 89
89 void EchoSelection(const Selection<gfx::SelectionBound>& s, 90 void EchoSelection(const Selection<gfx::SelectionBound>& s,
90 const EchoSelectionCallback& callback) override { 91 const EchoSelectionCallback& callback) override {
91 callback.Run(s); 92 callback.Run(s);
92 } 93 }
93 94
95 void EchoSingleReleaseCallback(
96 std::unique_ptr<SingleReleaseCallback> s,
97 const EchoSingleReleaseCallbackCallback& callback) override {
98 callback.Run(std::move(s));
99 }
100
94 void EchoSharedQuadState( 101 void EchoSharedQuadState(
95 const SharedQuadState& s, 102 const SharedQuadState& s,
96 const EchoSharedQuadStateCallback& callback) override { 103 const EchoSharedQuadStateCallback& callback) override {
97 callback.Run(s); 104 callback.Run(s);
98 } 105 }
99 106
100 void EchoSurfaceId(const SurfaceId& s, 107 void EchoSurfaceId(const SurfaceId& s,
101 const EchoSurfaceIdCallback& callback) override { 108 const EchoSurfaceIdCallback& callback) override {
102 callback.Run(s); 109 callback.Run(s);
103 } 110 }
(...skipping 18 matching lines...) Expand all
122 void EchoTransferableResource( 129 void EchoTransferableResource(
123 const TransferableResource& t, 130 const TransferableResource& t,
124 const EchoTransferableResourceCallback& callback) override { 131 const EchoTransferableResourceCallback& callback) override {
125 callback.Run(t); 132 callback.Run(t);
126 } 133 }
127 134
128 mojo::BindingSet<TraitsTestService> traits_test_bindings_; 135 mojo::BindingSet<TraitsTestService> traits_test_bindings_;
129 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); 136 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest);
130 }; 137 };
131 138
139 class TextureMailboxReleaserImpl : public mojom::TextureMailboxReleaser {
140 public:
141 TextureMailboxReleaserImpl(mojom::TextureMailboxReleaserRequest request,
142 base::Closure quit_closure)
143 : quit_closure_(quit_closure), binding_(this, std::move(request)) {}
144
145 bool is_called() { return is_called_; }
146
147 // mojom::TextureMailboxReleaser implementation:
148 void Release(const gpu::SyncToken& sync_token, bool is_lost) override {
149 is_called_ = true;
150 quit_closure_.Run();
151 }
152
153 private:
154 bool is_called_ = false;
155 base::Closure quit_closure_;
156 mojo::Binding<mojom::TextureMailboxReleaser> binding_;
157 };
158
132 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} 159 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {}
133 160
134 void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token, 161 void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token,
135 bool is_lost) {} 162 bool is_lost) {}
136 163
137 } // namespace 164 } // namespace
138 165
139 TEST_F(StructTraitsTest, BeginFrameArgs) { 166 TEST_F(StructTraitsTest, BeginFrameArgs) {
140 const base::TimeTicks frame_time = base::TimeTicks::Now(); 167 const base::TimeTicks frame_time = base::TimeTicks::Now();
141 const base::TimeTicks deadline = base::TimeTicks::Now(); 168 const base::TimeTicks deadline = base::TimeTicks::Now();
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 input.is_empty_text_form_control = is_empty_text_form_control; 881 input.is_empty_text_form_control = is_empty_text_form_control;
855 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 882 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
856 Selection<gfx::SelectionBound> output; 883 Selection<gfx::SelectionBound> output;
857 proxy->EchoSelection(input, &output); 884 proxy->EchoSelection(input, &output);
858 EXPECT_EQ(start, output.start); 885 EXPECT_EQ(start, output.start);
859 EXPECT_EQ(end, output.end); 886 EXPECT_EQ(end, output.end);
860 EXPECT_EQ(is_editable, output.is_editable); 887 EXPECT_EQ(is_editable, output.is_editable);
861 EXPECT_EQ(is_empty_text_form_control, output.is_empty_text_form_control); 888 EXPECT_EQ(is_empty_text_form_control, output.is_empty_text_form_control);
862 } 889 }
863 890
891 TEST_F(StructTraitsTest, SingleReleaseCallback) {
892 base::RunLoop run_loop;
893 mojom::TextureMailboxReleaserPtr releaser;
894 TextureMailboxReleaserImpl impl(MakeRequest(&releaser),
895 run_loop.QuitClosure());
896 auto input = SingleReleaseCallback::Create(std::move(releaser));
897
898 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
899 std::unique_ptr<SingleReleaseCallback> output;
900 proxy->EchoSingleReleaseCallback(std::move(input), &output);
901
902 EXPECT_FALSE(impl.is_called());
903 output->Run(gpu::SyncToken(), true);
904 run_loop.Run();
905 EXPECT_TRUE(impl.is_called());
906 }
907
864 TEST_F(StructTraitsTest, SurfaceId) { 908 TEST_F(StructTraitsTest, SurfaceId) {
865 static constexpr FrameSinkId frame_sink_id(1337, 1234); 909 static constexpr FrameSinkId frame_sink_id(1337, 1234);
866 static LocalSurfaceId local_surface_id(0xfbadbeef, 910 static LocalSurfaceId local_surface_id(0xfbadbeef,
867 base::UnguessableToken::Create()); 911 base::UnguessableToken::Create());
868 SurfaceId input(frame_sink_id, local_surface_id); 912 SurfaceId input(frame_sink_id, local_surface_id);
869 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 913 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
870 SurfaceId output; 914 SurfaceId output;
871 proxy->EchoSurfaceId(input, &output); 915 proxy->EchoSurfaceId(input, &output);
872 EXPECT_EQ(frame_sink_id, output.frame_sink_id()); 916 EXPECT_EQ(frame_sink_id, output.frame_sink_id());
873 EXPECT_EQ(local_surface_id, output.local_surface_id()); 917 EXPECT_EQ(local_surface_id, output.local_surface_id());
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 1126 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()); 1127 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()); 1128 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
1085 EXPECT_EQ(color_space, out_quad->color_space); 1129 EXPECT_EQ(color_space, out_quad->color_space);
1086 EXPECT_EQ(resource_offset, out_quad->resource_offset); 1130 EXPECT_EQ(resource_offset, out_quad->resource_offset);
1087 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 1131 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
1088 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); 1132 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel);
1089 } 1133 }
1090 1134
1091 } // namespace cc 1135 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698