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',
+          ],
+        }],
+      ],
     },
   ],
 }