Move ChromeOS/Android checking for legacy protocol to build files.
This allows for NaCl on ChromeOS to be detected and built with the old
EDK protocol.
BUG=604282
Review-Url: https://codereview.chromium.org/2083893002
Cr-Commit-Position: refs/heads/master@{#400894}
diff --git a/mojo/edk/system/BUILD.gn b/mojo/edk/system/BUILD.gn
index e0e8045..b1d2d6db 100644
--- a/mojo/edk/system/BUILD.gn
+++ b/mojo/edk/system/BUILD.gn
@@ -115,6 +115,12 @@
]
}
+ # Use target_os == "chromeos" instead of is_chromeos because we need to
+ # build NaCl targets (i.e. IRT) for ChromeOS the same as the rest of ChromeOS.
+ if (is_android || target_os == "chromeos") {
+ defines += [ "MOJO_EDK_LEGACY_PROTOCOL" ]
+ }
+
allow_circular_includes_from = [ "//mojo/edk/embedder" ]
}
diff --git a/mojo/edk/system/channel.cc b/mojo/edk/system/channel.cc
index ee9faa2..ac97fbb 100644
--- a/mojo/edk/system/channel.cc
+++ b/mojo/edk/system/channel.cc
@@ -29,7 +29,7 @@
static_assert(sizeof(Channel::Message::Header) % kChannelMessageAlignment == 0,
"Invalid Header size.");
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
static_assert(sizeof(Channel::Message::Header) == 8,
"Header must be 8 bytes on ChromeOS and Android");
#endif
@@ -67,7 +67,7 @@
(extra_header_size % kChannelMessageAlignment);
}
DCHECK_EQ(0u, extra_header_size % kChannelMessageAlignment);
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
DCHECK_EQ(0u, extra_header_size);
#endif
@@ -88,7 +88,7 @@
DCHECK_LE(sizeof(Header) + extra_header_size,
std::numeric_limits<uint16_t>::max());
header_->message_type = message_type;
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
header_->num_handles = static_cast<uint16_t>(max_handles);
#else
header_->num_header_bytes =
@@ -192,7 +192,7 @@
}
size_t Channel::Message::payload_size() const {
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
return header_->num_bytes - sizeof(Header);
#else
return size_ - header_->num_header_bytes;
@@ -215,7 +215,7 @@
#endif
void Channel::Message::SetHandles(ScopedPlatformHandleVectorPtr new_handles) {
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
// Old semantics for ChromeOS and Android
if (header_->num_handles == 0) {
CHECK(!new_handles || new_handles->size() == 0);
@@ -238,7 +238,7 @@
for (size_t i = 0; i < handle_vector_->size(); i++)
handles_[i].handle = base::win::HandleToUint32((*handle_vector_)[i].handle);
#endif // defined(OS_WIN)
-#endif // defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#endif // defined(MOJO_EDK_LEGACY_PROTOCOL)
#if defined(OS_MACOSX) && !defined(OS_IOS)
size_t mach_port_index = 0;
@@ -506,7 +506,7 @@
return true;
}
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
size_t extra_header_size = 0;
const void* extra_header = nullptr;
size_t payload_size = header->num_bytes - sizeof(Message::Header);
@@ -527,7 +527,7 @@
const_cast<char*>(read_buffer_->occupied_bytes()) +
header->num_header_bytes)
: nullptr;
-#endif // defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#endif // defined(MOJO_EDK_LEGACY_PROTOCOL)
ScopedPlatformHandleVectorPtr handles;
if (header->num_handles > 0) {
diff --git a/mojo/edk/system/channel.h b/mojo/edk/system/channel.h
index c3fb77b..aa6d70c 100644
--- a/mojo/edk/system/channel.h
+++ b/mojo/edk/system/channel.h
@@ -45,7 +45,7 @@
// Message size in bytes, including the header.
uint32_t num_bytes;
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
// Old message wire format for ChromeOS and Android.
// Number of attached handles.
uint16_t num_handles;
@@ -64,7 +64,7 @@
MessageType message_type;
char padding[6];
-#endif // defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#endif // defined(MOJO_EDK_LEGACY_PROTOCOL)
};
#if defined(OS_MACOSX) && !defined(OS_IOS)
@@ -116,7 +116,7 @@
const void* data() const { return data_; }
size_t data_num_bytes() const { return size_; }
-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#if defined(MOJO_EDK_LEGACY_PROTOCOL)
void* mutable_payload() { return static_cast<void*>(header_ + 1); }
const void* payload() const {
return static_cast<const void*>(header_ + 1);
@@ -132,7 +132,7 @@
void* mutable_payload() { return data_ + header_->num_header_bytes; }
const void* payload() const { return data_ + header_->num_header_bytes; }
size_t payload_size() const;
-#endif // defined(OS_CHROMEOS) || defined(OS_ANDROID)
+#endif // defined(MOJO_EDK_LEGACY_PROTOCOL)
size_t num_handles() const { return header_->num_handles; }
bool has_handles() const { return header_->num_handles > 0; }
diff --git a/mojo/mojo_edk.gyp b/mojo/mojo_edk.gyp
index bd99c42..5541839b 100644
--- a/mojo/mojo_edk.gyp
+++ b/mojo/mojo_edk.gyp
@@ -55,6 +55,11 @@
'../third_party/ashmem/ashmem.gyp:ashmem',
],
}],
+ ['OS=="android" or chromeos==1', {
+ 'defines': [
+ 'MOJO_EDK_LEGACY_PROTOCOL',
+ ],
+ }],
['OS=="win"', {
# Structure was padded due to __declspec(align()), which is
# uninteresting.
diff --git a/mojo/mojo_edk_nacl.gyp b/mojo/mojo_edk_nacl.gyp
index a1ea79d..14882462 100644
--- a/mojo/mojo_edk_nacl.gyp
+++ b/mojo/mojo_edk_nacl.gyp
@@ -66,6 +66,13 @@
'<@(mojo_edk_system_impl_sources)',
'<@(mojo_edk_system_impl_nacl_nonsfi_sources)',
],
+ 'conditions': [
+ ['OS=="android" or chromeos==1', {
+ 'defines': [
+ 'MOJO_EDK_LEGACY_PROTOCOL',
+ ],
+ }],
+ ],
},
],
}