IPC::Message -> base::Pickle
This changes consumers of IPC::Message to generally refer
refer to base::Pickle instead when performing serialization
and deserialization operations. The few specific instances
where the IPC::Message interface (Read/WriteAttachent) is
needed can safely be static_cast'd, as IPC::Message is the
only public subclass of base::Pickle.
The purpose of this change is to facilitate the transition
to Mojo IPC, as we've trained the Mojo bindings layer to
use existing ParamTraits<T> parameterized over base::Pickle.
To support this base::Pickle has had some stub interfaces
added for WriteAttachment and ReadAttachment, along with a
Pickle::Attachment.
A follow-up patch will add sizing traits to the standard
IPC_STRUCT macros, enabling the majority of Chrome IPC
structs to be carried over Mojo message pipes as-is.
BUG=577685
[email protected]
Review URL: https://codereview.chromium.org/1659003003
Cr-Commit-Position: refs/heads/master@{#373323}
diff --git a/ipc/param_traits_read_macros.h b/ipc/param_traits_read_macros.h
index a66c89a..45e6352 100644
--- a/ipc/param_traits_read_macros.h
+++ b/ipc/param_traits_read_macros.h
@@ -22,25 +22,25 @@
#undef IPC_STRUCT_TRAITS_MEMBER
#undef IPC_STRUCT_TRAITS_PARENT
#undef IPC_STRUCT_TRAITS_END
-#define IPC_STRUCT_TRAITS_BEGIN(struct_name) \
- bool ParamTraits<struct_name>:: \
- Read(const Message* m, base::PickleIterator* iter, param_type* p) { \
- return
+#define IPC_STRUCT_TRAITS_BEGIN(struct_name) \
+ bool ParamTraits<struct_name>::Read( \
+ const base::Pickle* m, base::PickleIterator* iter, param_type* p) { \
+ return
#define IPC_STRUCT_TRAITS_MEMBER(name) ReadParam(m, iter, &p->name) &&
#define IPC_STRUCT_TRAITS_PARENT(type) ParamTraits<type>::Read(m, iter, p) &&
#define IPC_STRUCT_TRAITS_END() 1; }
#undef IPC_ENUM_TRAITS_VALIDATE
-#define IPC_ENUM_TRAITS_VALIDATE(enum_name, validation_expression) \
- bool ParamTraits<enum_name>:: \
- Read(const Message* m, base::PickleIterator* iter, param_type* p) { \
- int value; \
- if (!iter->ReadInt(&value)) \
- return false; \
- if (!(validation_expression)) \
- return false; \
- *p = static_cast<param_type>(value); \
- return true; \
+#define IPC_ENUM_TRAITS_VALIDATE(enum_name, validation_expression) \
+ bool ParamTraits<enum_name>::Read( \
+ const base::Pickle* m, base::PickleIterator* iter, param_type* p) { \
+ int value; \
+ if (!iter->ReadInt(&value)) \
+ return false; \
+ if (!(validation_expression)) \
+ return false; \
+ *p = static_cast<param_type>(value); \
+ return true; \
}
#endif // IPC_PARAM_TRAITS_READ_MACROS_H_