Index: mojo/edk/system/channel.cc |
diff --git a/mojo/edk/system/channel.cc b/mojo/edk/system/channel.cc |
index 8a44d36024e2346b3eab90a48f1eb77a35adcd63..9fc8cfcc884b94b4590c88c31db7c9790ffe0f0d 100644 |
--- a/mojo/edk/system/channel.cc |
+++ b/mojo/edk/system/channel.cc |
@@ -14,6 +14,7 @@ |
#include "base/macros.h" |
#include "base/memory/aligned_memory.h" |
#include "base/process/process_handle.h" |
+#include "mojo/edk/embedder/embedder_internal.h" |
#include "mojo/edk/embedder/platform_handle.h" |
#if defined(OS_MACOSX) && !defined(OS_IOS) |
@@ -45,6 +46,8 @@ static_assert(offsetof(Channel::Message::LegacyHeader, message_type) == |
"message_type should be at the same offset in both Header " |
"structs."); |
+bool g_use_legacy_protocol = false; |
+ |
} // namespace |
const size_t kReadBufferSize = 4096; |
@@ -53,13 +56,10 @@ const size_t kMaxChannelMessageSize = 256 * 1024 * 1024; |
const size_t kMaxAttachedHandles = 128; |
Channel::Message::Message(size_t payload_size, size_t max_handles) |
-#if defined(MOJO_EDK_LEGACY_PROTOCOL) |
- : Message(payload_size, max_handles, MessageType::NORMAL_LEGACY) { |
-} |
-#else |
- : Message(payload_size, max_handles, MessageType::NORMAL) { |
-} |
-#endif |
+ : Message(payload_size, |
+ max_handles, |
+ g_use_legacy_protocol ? MessageType::NORMAL_LEGACY |
+ : MessageType::NORMAL) {} |
Channel::Message::Message(size_t payload_size, |
size_t max_handles, |
@@ -395,6 +395,13 @@ ScopedPlatformHandleVectorPtr Channel::Message::TakeHandlesForTransport() { |
#endif |
} |
+// static |
+void Channel::Message::SetUseLegacyTransportProtocol(bool use_legacy_protocol) { |
+ // Make sure this is called before mojo::edk::Init() is called. |
+ DCHECK(!internal::g_core); |
+ g_use_legacy_protocol = use_legacy_protocol; |
+} |
+ |
#if defined(OS_WIN) |
// static |
bool Channel::Message::RewriteHandles(base::ProcessHandle from_process, |