Revert "Revert "libmojo: Uprev the library to r456626 from Chromium""

This reverts commit 21a249e4d9cb0b2ec6f0ff84ed5f7939ea67ac52.

Test: Build.

Change-Id: I2f77e0bb4541d6520dac974cd499b30561c6658f
diff --git a/ipc/ipc_message.cc b/ipc/ipc_message.cc
index 83ee495..f5e9ac7 100644
--- a/ipc/ipc_message.cc
+++ b/ipc/ipc_message.cc
@@ -11,10 +11,8 @@
 #include "base/atomic_sequence_num.h"
 #include "base/logging.h"
 #include "build/build_config.h"
-#include "ipc/attachment_broker.h"
 #include "ipc/ipc_message_attachment.h"
 #include "ipc/ipc_message_attachment_set.h"
-#include "ipc/placeholder_brokerable_attachment.h"
 
 #if defined(OS_POSIX)
 #include "base/file_descriptor_posix.h"
@@ -52,9 +50,6 @@
 Message::Message() : base::Pickle(sizeof(Header)) {
   header()->routing = header()->type = 0;
   header()->flags = GetRefNumUpper24();
-#if USE_ATTACHMENT_BROKER
-  header()->num_brokered_attachments = 0;
-#endif
 #if defined(OS_POSIX)
   header()->num_fds = 0;
   header()->pad = 0;
@@ -68,9 +63,6 @@
   header()->type = type;
   DCHECK((priority & 0xffffff00) == 0);
   header()->flags = priority | GetRefNumUpper24();
-#if USE_ATTACHMENT_BROKER
-  header()->num_brokered_attachments = 0;
-#endif
 #if defined(OS_POSIX)
   header()->num_fds = 0;
   header()->pad = 0;
@@ -86,12 +78,10 @@
 Message::Message(const Message& other) : base::Pickle(other) {
   Init();
   attachment_set_ = other.attachment_set_;
-  sender_pid_ = other.sender_pid_;
 }
 
 void Message::Init() {
   dispatch_error_ = false;
-  sender_pid_ = base::kNullProcessId;
 #ifdef IPC_MESSAGE_LOG_ENABLED
   received_time_ = 0;
   dont_log_ = false;
@@ -102,7 +92,6 @@
 Message& Message::operator=(const Message& other) {
   *static_cast<base::Pickle*>(this) = other;
   attachment_set_ = other.attachment_set_;
-  sender_pid_ = other.sender_pid_;
   return *this;
 }
 
@@ -146,26 +135,6 @@
       message_end(nullptr) {}
 Message::NextMessageInfo::~NextMessageInfo() {}
 
-Message::SerializedAttachmentIds
-Message::SerializedIdsOfBrokerableAttachments() {
-  DCHECK(HasBrokerableAttachments());
-  std::vector<scoped_refptr<IPC::BrokerableAttachment>> attachments(
-      attachment_set_->GetBrokerableAttachments());
-  CHECK_LE(attachments.size(), std::numeric_limits<size_t>::max() /
-                                   BrokerableAttachment::kNonceSize);
-  size_t size = attachments.size() * BrokerableAttachment::kNonceSize;
-  char* buffer = static_cast<char*>(malloc(size));
-  for (size_t i = 0; i < attachments.size(); ++i) {
-    char* start_range = buffer + i * BrokerableAttachment::kNonceSize;
-    BrokerableAttachment::AttachmentId id = attachments[i]->GetIdentifier();
-    id.SerializeToBuffer(start_range, BrokerableAttachment::kNonceSize);
-  }
-  SerializedAttachmentIds ids;
-  ids.buffer = buffer;
-  ids.size = size;
-  return ids;
-}
-
 // static
 void Message::FindNext(const char* range_start,
                        const char* range_end,
@@ -182,43 +151,6 @@
   bool have_entire_pickle =
       static_cast<size_t>(range_end - range_start) >= pickle_size;
 
-#if USE_ATTACHMENT_BROKER
-  // TODO(dskiba): determine message_size when entire pickle is not available
-
-  if (!have_entire_pickle)
-    return;
-
-  const char* pickle_end = range_start + pickle_size;
-
-  // The data is not copied.
-  Message message(range_start, static_cast<int>(pickle_size));
-  size_t num_attachments = message.header()->num_brokered_attachments;
-
-  // Check for possible overflows.
-  size_t max_size_t = std::numeric_limits<size_t>::max();
-  if (num_attachments >= max_size_t / BrokerableAttachment::kNonceSize)
-    return;
-
-  size_t attachment_length = num_attachments * BrokerableAttachment::kNonceSize;
-  if (pickle_size > max_size_t - attachment_length)
-    return;
-
-  // Check whether the range includes the attachments.
-  size_t buffer_length = static_cast<size_t>(range_end - range_start);
-  if (buffer_length < attachment_length + pickle_size)
-    return;
-
-  for (size_t i = 0; i < num_attachments; ++i) {
-    const char* attachment_start =
-        pickle_end + i * BrokerableAttachment::kNonceSize;
-    BrokerableAttachment::AttachmentId id(attachment_start,
-                                          BrokerableAttachment::kNonceSize);
-    info->attachment_ids.push_back(id);
-  }
-  info->message_end =
-      pickle_end + num_attachments * BrokerableAttachment::kNonceSize;
-  info->message_size = info->message_end - range_start;
-#else
   info->message_size = pickle_size;
 
   if (!have_entire_pickle)
@@ -227,53 +159,32 @@
   const char* pickle_end = range_start + pickle_size;
 
   info->message_end = pickle_end;
-#endif  // USE_ATTACHMENT_BROKER
 
   info->pickle_end = pickle_end;
   info->message_found = true;
 }
 
-bool Message::AddPlaceholderBrokerableAttachmentWithId(
-    BrokerableAttachment::AttachmentId id) {
-  scoped_refptr<PlaceholderBrokerableAttachment> attachment(
-      new PlaceholderBrokerableAttachment(id));
-  return attachment_set()->AddAttachment(attachment);
-}
-
 bool Message::WriteAttachment(
     scoped_refptr<base::Pickle::Attachment> attachment) {
-  bool brokerable;
   size_t index;
   bool success = attachment_set()->AddAttachment(
       make_scoped_refptr(static_cast<MessageAttachment*>(attachment.get())),
-      &index, &brokerable);
+      &index);
   DCHECK(success);
 
   // NOTE: If you add more data to the pickle, make sure to update
   // PickleSizer::AddAttachment.
 
-  // Write the type of descriptor.
-  WriteBool(brokerable);
-
   // Write the index of the descriptor so that we don't have to
   // keep the current descriptor as extra decoding state when deserialising.
   WriteInt(static_cast<int>(index));
 
-#if USE_ATTACHMENT_BROKER
-  if (brokerable)
-    header()->num_brokered_attachments++;
-#endif
-
   return success;
 }
 
 bool Message::ReadAttachment(
     base::PickleIterator* iter,
     scoped_refptr<base::Pickle::Attachment>* attachment) const {
-  bool brokerable;
-  if (!iter->ReadBool(&brokerable))
-    return false;
-
   int index;
   if (!iter->ReadInt(&index))
     return false;
@@ -282,9 +193,7 @@
   if (!attachment_set)
     return false;
 
-  *attachment = brokerable
-                    ? attachment_set->GetBrokerableAttachmentAt(index)
-                    : attachment_set->GetNonBrokerableAttachmentAt(index);
+  *attachment = attachment_set->GetAttachmentAt(index);
 
   return nullptr != attachment->get();
 }
@@ -293,13 +202,4 @@
   return attachment_set_.get() && !attachment_set_->empty();
 }
 
-bool Message::HasMojoHandles() const {
-  return attachment_set_.get() && attachment_set_->num_mojo_handles() > 0;
-}
-
-bool Message::HasBrokerableAttachments() const {
-  return attachment_set_.get() &&
-         attachment_set_->num_brokerable_attachments() > 0;
-}
-
 }  // namespace IPC