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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: cc/ipc/struct_traits_unittest.cc
diff --git a/cc/ipc/struct_traits_unittest.cc b/cc/ipc/struct_traits_unittest.cc
index 5d22e492c579dd577f6d3141de592f2a9663a9d4..6f4e318c9e03537fee860008652564521ab8c1ec 100644
--- a/cc/ipc/struct_traits_unittest.cc
+++ b/cc/ipc/struct_traits_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "cc/input/selection.h"
#include "cc/ipc/traits_test_service.mojom.h"
#include "cc/output/copy_output_result.h"
@@ -91,6 +92,12 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService {
callback.Run(s);
}
+ void EchoSingleReleaseCallback(
+ std::unique_ptr<SingleReleaseCallback> s,
+ const EchoSingleReleaseCallbackCallback& callback) override {
+ callback.Run(std::move(s));
+ }
+
void EchoSharedQuadState(
const SharedQuadState& s,
const EchoSharedQuadStateCallback& callback) override {
@@ -129,6 +136,26 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService {
DISALLOW_COPY_AND_ASSIGN(StructTraitsTest);
};
+class TextureMailboxReleaserImpl : public mojom::TextureMailboxReleaser {
+ public:
+ TextureMailboxReleaserImpl(mojom::TextureMailboxReleaserRequest request,
+ base::Closure quit_closure)
+ : quit_closure_(quit_closure), binding_(this, std::move(request)) {}
+
+ bool is_called() { return is_called_; }
+
+ // mojom::TextureMailboxReleaser implementation:
+ void Release(const gpu::SyncToken& sync_token, bool is_lost) override {
+ is_called_ = true;
+ quit_closure_.Run();
+ }
+
+ private:
+ bool is_called_ = false;
+ base::Closure quit_closure_;
+ mojo::Binding<mojom::TextureMailboxReleaser> binding_;
+};
+
void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {}
void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token,
@@ -861,6 +888,23 @@ TEST_F(StructTraitsTest, Selection) {
EXPECT_EQ(is_empty_text_form_control, output.is_empty_text_form_control);
}
+TEST_F(StructTraitsTest, SingleReleaseCallback) {
+ base::RunLoop run_loop;
+ mojom::TextureMailboxReleaserPtr releaser;
+ TextureMailboxReleaserImpl impl(MakeRequest(&releaser),
+ run_loop.QuitClosure());
+ auto input = SingleReleaseCallback::Create(std::move(releaser));
+
+ mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
+ std::unique_ptr<SingleReleaseCallback> output;
+ proxy->EchoSingleReleaseCallback(std::move(input), &output);
+
+ EXPECT_FALSE(impl.is_called());
+ output->Run(gpu::SyncToken(), true);
+ run_loop.Run();
+ EXPECT_TRUE(impl.is_called());
+}
+
TEST_F(StructTraitsTest, SurfaceId) {
static constexpr FrameSinkId frame_sink_id(1337, 1234);
static LocalSurfaceId local_surface_id(0xfbadbeef,

Powered by Google App Engine
This is Rietveld 408576698