Make GpuMemoryBufferHandle::dxgi_handle a base::win::ScopedHandle
In the process, convert the buffer_types.mojom to handle<platform>. This
also adds a legacy IPC::ParamTraits<ScopedHandle> to support sending
GpuMemoryBufferHandle over legacy IPC.
Tbr: [email protected]
Bug: 863011, 710376
Change-Id: I087d9d83edc729b512dbb79806a0b4b2db2b31bd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2064609
Commit-Queue: Robert Sesek <[email protected]>
Reviewed-by: Ken Rockot <[email protected]>
Reviewed-by: Daniele Castagna <[email protected]>
Reviewed-by: Michael Thiessen <[email protected]>
Cr-Commit-Position: refs/heads/master@{#745586}
diff --git a/ipc/ipc_message_utils_unittest.cc b/ipc/ipc_message_utils_unittest.cc
index 92f31029..d3c7427e 100644
--- a/ipc/ipc_message_utils_unittest.cc
+++ b/ipc/ipc_message_utils_unittest.cc
@@ -13,10 +13,15 @@
#include "base/memory/ptr_util.h"
#include "base/test/test_shared_memory_util.h"
#include "base/unguessable_token.h"
+#include "build/build_config.h"
#include "ipc/ipc_channel_handle.h"
#include "ipc/ipc_message.h"
#include "testing/gtest/include/gtest/gtest.h"
+#if defined(OS_WIN)
+#include <windows.h>
+#endif
+
namespace IPC {
namespace {
@@ -230,5 +235,23 @@
EXPECT_EQ(input, output);
}
+#if defined(OS_WIN)
+TEST(IPCMessageUtilsTest, ScopedHandle) {
+ HANDLE raw_dupe_handle;
+ ASSERT_TRUE(::DuplicateHandle(::GetCurrentProcess(), ::GetCurrentProcess(),
+ ::GetCurrentProcess(), &raw_dupe_handle, 0,
+ FALSE, DUPLICATE_SAME_ACCESS));
+ base::win::ScopedHandle dupe_handle(raw_dupe_handle);
+
+ Message message(0, 0, Message::PRIORITY_LOW);
+ WriteParam(&message, dupe_handle);
+
+ base::PickleIterator iter(message);
+ base::win::ScopedHandle read_handle;
+ EXPECT_TRUE(ReadParam(&message, &iter, &read_handle));
+ EXPECT_TRUE(read_handle.IsValid());
+}
+#endif // defined(OS_WIN)
+
} // namespace
} // namespace IPC