Generate param traits size methods for IPC files in chrome/ (and traits it depends on).
This allows us to reuse these traits in Mojo if needed.
I didn't add GetSize to every single trait in chrome/ and below; just enough to get the chrome message generator to compile with the size traits.
This is a followup to r393058.
Review-Url: https://codereview.chromium.org/1977643002
Cr-Commit-Position: refs/heads/master@{#393526}
diff --git a/android_webview/common/android_webview_message_generator.cc b/android_webview/common/android_webview_message_generator.cc
index d8b0080..cef229b 100644
--- a/android_webview/common/android_webview_message_generator.cc
+++ b/android_webview/common/android_webview_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "android_webview/common/android_webview_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "android_webview/common/android_webview_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi
index f4d3773..12d4a37 100644
--- a/chrome/chrome_common.gypi
+++ b/chrome/chrome_common.gypi
@@ -229,6 +229,7 @@
'common/safe_browsing/protobuf_message_log_macros.h',
'common/safe_browsing/protobuf_message_param_traits.h',
'common/safe_browsing/protobuf_message_read_macros.h',
+ 'common/safe_browsing/protobuf_message_size_macros.h',
'common/safe_browsing/protobuf_message_write_macros.h',
'common/safe_browsing/zip_analyzer.cc',
'common/safe_browsing/zip_analyzer.h',
diff --git a/chrome/common/cast_messages.cc b/chrome/common/cast_messages.cc
index d1629f8..5b388624 100644
--- a/chrome/common/cast_messages.cc
+++ b/chrome/common/cast_messages.cc
@@ -6,6 +6,11 @@
namespace IPC {
+void ParamTraits<media::cast::RtpTimeTicks>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ ParamTraits<uint64_t>::GetSize(s, p.SerializeForIPC());
+}
+
void ParamTraits<media::cast::RtpTimeTicks>::Write(base::Pickle* m,
const param_type& p) {
ParamTraits<uint64_t>::Write(m, p.SerializeForIPC());
@@ -29,6 +34,11 @@
l->append(oss.str());
}
+void ParamTraits<media::cast::FrameId>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ ParamTraits<uint64_t>::GetSize(s, p.SerializeForIPC());
+}
+
void ParamTraits<media::cast::FrameId>::Write(base::Pickle* m,
const param_type& p) {
ParamTraits<uint64_t>::Write(m, p.SerializeForIPC());
diff --git a/chrome/common/cast_messages.h b/chrome/common/cast_messages.h
index 83f9981..68eecd61 100644
--- a/chrome/common/cast_messages.h
+++ b/chrome/common/cast_messages.h
@@ -21,6 +21,7 @@
template<>
struct ParamTraits<media::cast::RtpTimeTicks> {
using param_type = media::cast::RtpTimeTicks;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -31,6 +32,7 @@
template<>
struct ParamTraits<media::cast::FrameId> {
using param_type = media::cast::FrameId;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/chrome/common/common_message_generator.cc b/chrome/common/common_message_generator.cc
index eb1dda2..1eeb253e 100644
--- a/chrome/common/common_message_generator.cc
+++ b/chrome/common/common_message_generator.cc
@@ -16,6 +16,13 @@
#include "chrome/common/safe_browsing/ipc_protobuf_message_null_macros.h"
#include "chrome/common/common_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+#include "chrome/common/safe_browsing/protobuf_message_size_macros.h"
+namespace IPC {
+#include "chrome/common/common_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
#include "chrome/common/safe_browsing/protobuf_message_write_macros.h"
diff --git a/chrome/common/common_param_traits.cc b/chrome/common/common_param_traits.cc
index 466cfde6..5a73c52 100644
--- a/chrome/common/common_param_traits.cc
+++ b/chrome/common/common_param_traits.cc
@@ -5,6 +5,13 @@
// Get basic type definitions.
#include "chrome/common/common_param_traits.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#undef CHROME_COMMON_COMMON_PARAM_TRAITS_MACROS_H_
+#include "chrome/common/common_param_traits_macros.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/chrome/common/content_settings_pattern_serializer.cc b/chrome/common/content_settings_pattern_serializer.cc
index 2e1ba34..1f8045a 100644
--- a/chrome/common/content_settings_pattern_serializer.cc
+++ b/chrome/common/content_settings_pattern_serializer.cc
@@ -8,6 +8,13 @@
#include "components/content_settings/core/common/content_settings_pattern.h"
// static
+void ContentSettingsPatternSerializer::GetSize(
+ const ContentSettingsPattern& pattern, base::PickleSizer* s) {
+ IPC::GetParamSize(s, pattern.is_valid_);
+ IPC::GetParamSize(s, pattern.parts_);
+}
+
+// static
void ContentSettingsPatternSerializer::WriteToMessage(
const ContentSettingsPattern& pattern,
base::Pickle* m) {
diff --git a/chrome/common/content_settings_pattern_serializer.h b/chrome/common/content_settings_pattern_serializer.h
index a48591d..b123607 100644
--- a/chrome/common/content_settings_pattern_serializer.h
+++ b/chrome/common/content_settings_pattern_serializer.h
@@ -10,12 +10,17 @@
namespace base {
class Pickle;
class PickleIterator;
+class PickleSizer;
}
class ContentSettingsPattern;
class ContentSettingsPatternSerializer {
public:
+ // Gets the serialized pattern's size.
+ static void GetSize(const ContentSettingsPattern& pattern,
+ base::PickleSizer* s);
+
// Serializes the pattern to an IPC message.
static void WriteToMessage(const ContentSettingsPattern& pattern,
base::Pickle* m);
diff --git a/chrome/common/importer/profile_import_process_messages.cc b/chrome/common/importer/profile_import_process_messages.cc
index 4a0b9a4d..b585c24 100644
--- a/chrome/common/importer/profile_import_process_messages.cc
+++ b/chrome/common/importer/profile_import_process_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "chrome/common/importer/profile_import_process_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "chrome/common/importer/profile_import_process_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/chrome/common/render_messages.cc b/chrome/common/render_messages.cc
index d108f42e..1b419240 100644
--- a/chrome/common/render_messages.cc
+++ b/chrome/common/render_messages.cc
@@ -8,6 +8,12 @@
namespace IPC {
+void ParamTraits<ContentSettingsPattern>::GetSize(
+ base::PickleSizer* s,
+ const ContentSettingsPattern& pattern) {
+ ContentSettingsPatternSerializer::GetSize(pattern, s);
+}
+
void ParamTraits<ContentSettingsPattern>::Write(
base::Pickle* m,
const ContentSettingsPattern& pattern) {
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index 9f01811..0d23285 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -50,6 +50,7 @@
template <>
struct ParamTraits<ContentSettingsPattern> {
typedef ContentSettingsPattern param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/chrome/common/safe_browsing/ipc_protobuf_message_macros.h b/chrome/common/safe_browsing/ipc_protobuf_message_macros.h
index db17241..b40fe6e0 100644
--- a/chrome/common/safe_browsing/ipc_protobuf_message_macros.h
+++ b/chrome/common/safe_browsing/ipc_protobuf_message_macros.h
@@ -36,6 +36,7 @@
template <> \
struct IPC_MESSAGE_EXPORT ParamTraits<message_name> { \
typedef message_name param_type; \
+ static void GetSize(base::PickleSizer* s, const param_type& p); \
static void Write(base::Pickle* m, const param_type& p); \
static bool Read(const base::Pickle* m, \
base::PickleIterator* iter, \
diff --git a/chrome/common/safe_browsing/ipc_protobuf_message_unittest.cc b/chrome/common/safe_browsing/ipc_protobuf_message_unittest.cc
index d2fda1f4..4aa1ea1 100644
--- a/chrome/common/safe_browsing/ipc_protobuf_message_unittest.cc
+++ b/chrome/common/safe_browsing/ipc_protobuf_message_unittest.cc
@@ -9,6 +9,11 @@
#define IPC_MESSAGE_IMPL
#include "chrome/common/safe_browsing/ipc_protobuf_message_test_messages.h"
+// Generate ipc protobuf traits size methods.
+#include "chrome/common/safe_browsing/protobuf_message_size_macros.h"
+namespace IPC {
+#include "chrome/common/safe_browsing/ipc_protobuf_message_test_messages.h"
+} // namespace IPC
// Generate ipc protobuf traits write methods.
#include "chrome/common/safe_browsing/protobuf_message_write_macros.h"
namespace IPC {
diff --git a/chrome/common/safe_browsing/protobuf_message_param_traits.h b/chrome/common/safe_browsing/protobuf_message_param_traits.h
index a935584d..76613ce 100644
--- a/chrome/common/safe_browsing/protobuf_message_param_traits.h
+++ b/chrome/common/safe_browsing/protobuf_message_param_traits.h
@@ -20,6 +20,12 @@
struct ParamTraits<google::protobuf::RepeatedPtrField<Element>> {
typedef google::protobuf::RepeatedPtrField<Element> param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p) {
+ GetParamSize(s, p.size());
+ for (const auto& element : p)
+ GetParamSize(s, element);
+ }
+
static void Write(base::Pickle* m, const param_type& p) {
WriteParam(m, p.size());
for (const auto& element : p)
diff --git a/chrome/common/safe_browsing/protobuf_message_size_macros.h b/chrome/common/safe_browsing/protobuf_message_size_macros.h
new file mode 100644
index 0000000..98be728
--- /dev/null
+++ b/chrome/common/safe_browsing/protobuf_message_size_macros.h
@@ -0,0 +1,31 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_COMMON_SAFE_BROWSING_PROTOBUF_MESSAGE_SIZE_MACROS_H_
+#define CHROME_COMMON_SAFE_BROWSING_PROTOBUF_MESSAGE_SIZE_MACROS_H_
+
+// Null out all the macros that need nulling.
+#include "chrome/common/safe_browsing/ipc_protobuf_message_null_macros.h"
+
+// Set up so next include will generate size methods.
+#undef IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN
+#undef IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER
+#undef IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER
+#undef IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER
+#undef IPC_PROTOBUF_MESSAGE_TRAITS_END
+
+#define IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(message_name) \
+ void ParamTraits<message_name>::GetSize(base::PickleSizer* s, \
+ const param_type& p) {
+#define IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER \
+ IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER
+#define IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(name) \
+ s->AddBool(); \
+ if (p.has_##name()) \
+ GetParamSize(s, p.name());
+#define IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(name) \
+ GetParamSize(s, p.name());
+#define IPC_PROTOBUF_MESSAGE_TRAITS_END() }
+
+#endif // CHROME_COMMON_SAFE_BROWSING_PROTOBUF_MESSAGE_SIZE_MACROS_H_
diff --git a/components/autofill/content/common/autofill_message_generator.cc b/components/autofill/content/common/autofill_message_generator.cc
index 0529172..4bc61d1 100644
--- a/components/autofill/content/common/autofill_message_generator.cc
+++ b/components/autofill/content/common/autofill_message_generator.cc
@@ -14,6 +14,14 @@
#include "ipc/struct_destructor_macros.h"
#include "components/autofill/content/common/autofill_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#undef COMPONENTS_AUTOFILL_CONTENT_COMMON_AUTOFILL_PARAM_TRAITS_MACROS_H_
+#include "components/autofill/content/common/autofill_message_generator.h"
+#include "components/autofill/content/common/autofill_param_traits_macros.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/cdm/common/cdm_message_generator.cc b/components/cdm/common/cdm_message_generator.cc
index 2aabce7..3c3e260 100644
--- a/components/cdm/common/cdm_message_generator.cc
+++ b/components/cdm/common/cdm_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/cdm/common/cdm_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/cdm/common/cdm_message_generator.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/content_settings/content/common/content_settings_message_generator.cc b/components/content_settings/content/common/content_settings_message_generator.cc
index 7e00666..0156c49 100644
--- a/components/content_settings/content/common/content_settings_message_generator.cc
+++ b/components/content_settings/content/common/content_settings_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/content_settings/content/common/content_settings_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/content_settings/content/common/content_settings_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/data_reduction_proxy/content/common/data_reduction_proxy_messages.cc b/components/data_reduction_proxy/content/common/data_reduction_proxy_messages.cc
index bfa8356a..d2a80bd 100644
--- a/components/data_reduction_proxy/content/common/data_reduction_proxy_messages.cc
+++ b/components/data_reduction_proxy/content/common/data_reduction_proxy_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/data_reduction_proxy/content/common/data_reduction_proxy_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/data_reduction_proxy/content/common/data_reduction_proxy_messages.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/guest_view/common/guest_view_message_generator.cc b/components/guest_view/common/guest_view_message_generator.cc
index 6a0bca1..a55a976a 100644
--- a/components/guest_view/common/guest_view_message_generator.cc
+++ b/components/guest_view/common/guest_view_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/guest_view/common/guest_view_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/guest_view/common/guest_view_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/nacl/common/nacl_host_messages.cc b/components/nacl/common/nacl_host_messages.cc
index 1b47272..37d6db6 100644
--- a/components/nacl/common/nacl_host_messages.cc
+++ b/components/nacl/common/nacl_host_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/nacl/common/nacl_host_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/nacl/common/nacl_host_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/nacl/common/nacl_messages.cc b/components/nacl/common/nacl_messages.cc
index 2140736..e1a5720e 100644
--- a/components/nacl/common/nacl_messages.cc
+++ b/components/nacl/common/nacl_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/nacl/common/nacl_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/nacl/common/nacl_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/nacl/common/nacl_renderer_messages.cc b/components/nacl/common/nacl_renderer_messages.cc
index 0950901..a703c1e 100644
--- a/components/nacl/common/nacl_renderer_messages.cc
+++ b/components/nacl/common/nacl_renderer_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/nacl/common/nacl_renderer_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/nacl/common/nacl_renderer_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/nacl/common/nacl_types_param_traits.cc b/components/nacl/common/nacl_types_param_traits.cc
index a295163..900975b 100644
--- a/components/nacl/common/nacl_types_param_traits.cc
+++ b/components/nacl/common/nacl_types_param_traits.cc
@@ -16,6 +16,13 @@
#undef COMPONENTS_NACL_COMMON_NACL_TYPES_PARAM_TRAITS_H_
#include "components/nacl/common/nacl_types_param_traits.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#undef COMPONENTS_NACL_COMMON_NACL_TYPES_PARAM_TRAITS_H_
+#include "components/nacl/common/nacl_types_param_traits.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/network_hints/common/network_hints_message_generator.cc b/components/network_hints/common/network_hints_message_generator.cc
index f315e98..594871a 100644
--- a/components/network_hints/common/network_hints_message_generator.cc
+++ b/components/network_hints/common/network_hints_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/network_hints/common/network_hints_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/network_hints/common/network_hints_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/page_load_metrics/common/page_load_metrics_messages.cc b/components/page_load_metrics/common/page_load_metrics_messages.cc
index a7990e7..07bdd98 100644
--- a/components/page_load_metrics/common/page_load_metrics_messages.cc
+++ b/components/page_load_metrics/common/page_load_metrics_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/page_load_metrics/common/page_load_metrics_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/page_load_metrics/common/page_load_metrics_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/pdf/common/pdf_message_generator.cc b/components/pdf/common/pdf_message_generator.cc
index 025d94c..3cd31df7 100644
--- a/components/pdf/common/pdf_message_generator.cc
+++ b/components/pdf/common/pdf_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/pdf/common/pdf_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/pdf/common/pdf_message_generator.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/printing/common/print_messages.cc b/components/printing/common/print_messages.cc
index e1a107a..6798e35 100644
--- a/components/printing/common/print_messages.cc
+++ b/components/printing/common/print_messages.cc
@@ -16,6 +16,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/printing/common/print_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/printing/common/print_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/startup_metric_utils/common/startup_metric_message_generator.cc b/components/startup_metric_utils/common/startup_metric_message_generator.cc
index dbd429c..5a9f19a 100644
--- a/components/startup_metric_utils/common/startup_metric_message_generator.cc
+++ b/components/startup_metric_utils/common/startup_metric_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/startup_metric_utils/common/startup_metric_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/startup_metric_utils/common/startup_metric_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/tracing/tracing_messages.cc b/components/tracing/tracing_messages.cc
index 3d7637a..7c6b789 100644
--- a/components/tracing/tracing_messages.cc
+++ b/components/tracing/tracing_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/tracing/tracing_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/tracing/tracing_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/translate/content/common/data_file_cld_data_provider_messages.cc b/components/translate/content/common/data_file_cld_data_provider_messages.cc
index bd23d23..f9b9876 100644
--- a/components/translate/content/common/data_file_cld_data_provider_messages.cc
+++ b/components/translate/content/common/data_file_cld_data_provider_messages.cc
@@ -18,6 +18,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/translate/content/common/data_file_cld_data_provider_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/translate/content/common/data_file_cld_data_provider_messages.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/translate/content/common/translate_messages.cc b/components/translate/content/common/translate_messages.cc
index 459248a..73a8661e 100644
--- a/components/translate/content/common/translate_messages.cc
+++ b/components/translate/content/common/translate_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/translate/content/common/translate_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/translate/content/common/translate_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/components/visitedlink/common/visitedlink_message_generator.cc b/components/visitedlink/common/visitedlink_message_generator.cc
index 29d31916..9ab374ed 100644
--- a/components/visitedlink/common/visitedlink_message_generator.cc
+++ b/components/visitedlink/common/visitedlink_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "components/visitedlink/common/visitedlink_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "components/visitedlink/common/visitedlink_message_generator.h"
+} // namespace IPC
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/extensions/common/extension_message_generator.cc b/extensions/common/extension_message_generator.cc
index b066c4f..0ed6784 100644
--- a/extensions/common/extension_message_generator.cc
+++ b/extensions/common/extension_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "extensions/common/extension_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "extensions/common/extension_message_generator.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/extensions/common/extension_messages.cc b/extensions/common/extension_messages.cc
index 9f51c08e..243e4b95 100644
--- a/extensions/common/extension_messages.cc
+++ b/extensions/common/extension_messages.cc
@@ -121,6 +121,12 @@
}
};
+void ParamTraits<URLPattern>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.valid_schemes());
+ GetParamSize(s, p.GetAsString());
+}
+
void ParamTraits<URLPattern>::Write(base::Pickle* m, const param_type& p) {
WriteParam(m, p.valid_schemes());
WriteParam(m, p.GetAsString());
@@ -150,6 +156,11 @@
LogParam(p.GetAsString(), l);
}
+void ParamTraits<URLPatternSet>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.patterns());
+}
+
void ParamTraits<URLPatternSet>::Write(base::Pickle* m, const param_type& p) {
WriteParam(m, p.patterns());
}
@@ -171,6 +182,11 @@
LogParam(p.patterns(), l);
}
+void ParamTraits<APIPermission::ID>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, static_cast<int>(p));
+}
+
void ParamTraits<APIPermission::ID>::Write(base::Pickle* m,
const param_type& p) {
WriteParam(m, static_cast<int>(p));
@@ -192,6 +208,17 @@
LogParam(static_cast<int>(p), l);
}
+void ParamTraits<APIPermissionSet>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ APIPermissionSet::const_iterator it = p.begin();
+ const APIPermissionSet::const_iterator end = p.end();
+ GetParamSize(s, static_cast<uint32_t>(p.size()));
+ for (; it != end; ++it) {
+ GetParamSize(s, it->id());
+ it->GetSize(s);
+ }
+}
+
void ParamTraits<APIPermissionSet>::Write(base::Pickle* m,
const param_type& p) {
APIPermissionSet::const_iterator it = p.begin();
@@ -230,6 +257,17 @@
LogParam(p.map(), l);
}
+void ParamTraits<ManifestPermissionSet>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ ManifestPermissionSet::const_iterator it = p.begin();
+ const ManifestPermissionSet::const_iterator end = p.end();
+ GetParamSize(s, static_cast<uint32_t>(p.size()));
+ for (; it != end; ++it) {
+ GetParamSize(s, it->name());
+ it->GetSize(s);
+ }
+}
+
void ParamTraits<ManifestPermissionSet>::Write(base::Pickle* m,
const param_type& p) {
ManifestPermissionSet::const_iterator it = p.begin();
@@ -267,6 +305,11 @@
LogParam(p.map(), l);
}
+void ParamTraits<HostID>::GetSize(base::PickleSizer* s, const param_type& p) {
+ GetParamSize(s, p.type());
+ GetParamSize(s, p.id());
+}
+
void ParamTraits<HostID>::Write(base::Pickle* m, const param_type& p) {
WriteParam(m, p.type());
WriteParam(m, p.id());
@@ -291,6 +334,14 @@
LogParam(p.id(), l);
}
+void ParamTraits<ExtensionMsg_PermissionSetStruct>::GetSize(
+ base::PickleSizer* s, const param_type& p) {
+ GetParamSize(s, p.apis);
+ GetParamSize(s, p.manifest_permissions);
+ GetParamSize(s, p.explicit_hosts);
+ GetParamSize(s, p.scriptable_hosts);
+}
+
void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(base::Pickle* m,
const param_type& p) {
WriteParam(m, p.apis);
diff --git a/extensions/common/extension_messages.h b/extensions/common/extension_messages.h
index 8b3bce3..bd48626 100644
--- a/extensions/common/extension_messages.h
+++ b/extensions/common/extension_messages.h
@@ -306,6 +306,7 @@
template <>
struct ParamTraits<URLPattern> {
typedef URLPattern param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -316,6 +317,7 @@
template <>
struct ParamTraits<extensions::URLPatternSet> {
typedef extensions::URLPatternSet param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -326,6 +328,7 @@
template <>
struct ParamTraits<extensions::APIPermission::ID> {
typedef extensions::APIPermission::ID param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -336,6 +339,7 @@
template <>
struct ParamTraits<extensions::APIPermissionSet> {
typedef extensions::APIPermissionSet param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -346,6 +350,7 @@
template <>
struct ParamTraits<extensions::ManifestPermissionSet> {
typedef extensions::ManifestPermissionSet param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -356,6 +361,7 @@
template <>
struct ParamTraits<HostID> {
typedef HostID param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -366,6 +372,7 @@
template <>
struct ParamTraits<ExtensionMsg_PermissionSetStruct> {
typedef ExtensionMsg_PermissionSetStruct param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/extensions/common/permissions/api_permission.cc b/extensions/common/permissions/api_permission.cc
index db84d8a..148fc8e 100644
--- a/extensions/common/permissions/api_permission.cc
+++ b/extensions/common/permissions/api_permission.cc
@@ -69,6 +69,8 @@
return new SimpleAPIPermission(info());
}
+ void GetSize(base::PickleSizer* s) const override {}
+
void Write(base::Pickle* m) const override {}
bool Read(const base::Pickle* m, base::PickleIterator* iter) override {
diff --git a/extensions/common/permissions/api_permission.h b/extensions/common/permissions/api_permission.h
index a6069df..47aa5430 100644
--- a/extensions/common/permissions/api_permission.h
+++ b/extensions/common/permissions/api_permission.h
@@ -323,6 +323,9 @@
virtual APIPermission* Intersect(const APIPermission* rhs) const = 0;
// IPC functions
+ // Gets the size of the data to be written.
+ virtual void GetSize(base::PickleSizer* s) const = 0;
+
// Writes this into the given IPC message |m|.
virtual void Write(base::Pickle* m) const = 0;
diff --git a/extensions/common/permissions/manifest_permission.cc b/extensions/common/permissions/manifest_permission.cc
index c53f0f4..9315d1d 100644
--- a/extensions/common/permissions/manifest_permission.cc
+++ b/extensions/common/permissions/manifest_permission.cc
@@ -27,6 +27,13 @@
return ToValue()->Equals(rhs->ToValue().get());
}
+void ManifestPermission::GetSize(base::PickleSizer* s) const {
+ base::ListValue singleton;
+ base::Value* value = ToValue().release();
+ singleton.Append(value);
+ IPC::GetParamSize(s, singleton);
+}
+
void ManifestPermission::Write(base::Pickle* m) const {
base::ListValue singleton;
base::Value* value = ToValue().release();
diff --git a/extensions/common/permissions/manifest_permission.h b/extensions/common/permissions/manifest_permission.h
index 98e4c230..aa05d5fb 100644
--- a/extensions/common/permissions/manifest_permission.h
+++ b/extensions/common/permissions/manifest_permission.h
@@ -68,6 +68,9 @@
bool Equal(const ManifestPermission* rhs) const;
// IPC functions
+ // Gets the size of the data to be written.
+ void GetSize(base::PickleSizer* s) const;
+
// Writes this into the given IPC message |m|.
void Write(base::Pickle* m) const;
diff --git a/extensions/common/permissions/set_disjunction_permission.h b/extensions/common/permissions/set_disjunction_permission.h
index d787d62..fedcf2c 100644
--- a/extensions/common/permissions/set_disjunction_permission.h
+++ b/extensions/common/permissions/set_disjunction_permission.h
@@ -152,6 +152,10 @@
return std::unique_ptr<base::Value>(list);
}
+ void GetSize(base::PickleSizer* s) const override {
+ IPC::GetParamSize(s, data_set_);
+ }
+
void Write(base::Pickle* m) const override { IPC::WriteParam(m, data_set_); }
bool Read(const base::Pickle* m, base::PickleIterator* iter) override {
diff --git a/extensions/common/permissions/settings_override_permission.cc b/extensions/common/permissions/settings_override_permission.cc
index 4c7c4214..263f9dc 100644
--- a/extensions/common/permissions/settings_override_permission.cc
+++ b/extensions/common/permissions/settings_override_permission.cc
@@ -80,6 +80,8 @@
return new SettingsOverrideAPIPermission(info(), setting_value_);
}
+void SettingsOverrideAPIPermission::GetSize(base::PickleSizer* s) const {}
+
void SettingsOverrideAPIPermission::Write(base::Pickle* m) const {}
bool SettingsOverrideAPIPermission::Read(const base::Pickle* m,
diff --git a/extensions/common/permissions/settings_override_permission.h b/extensions/common/permissions/settings_override_permission.h
index e5bb9a0..66e92d6 100644
--- a/extensions/common/permissions/settings_override_permission.h
+++ b/extensions/common/permissions/settings_override_permission.h
@@ -33,6 +33,7 @@
APIPermission* Diff(const APIPermission* rhs) const override;
APIPermission* Union(const APIPermission* rhs) const override;
APIPermission* Intersect(const APIPermission* rhs) const override;
+ void GetSize(base::PickleSizer* s) const override;
void Write(base::Pickle* m) const override;
bool Read(const base::Pickle* m, base::PickleIterator* iter) override;
void Log(std::string* log) const override;
diff --git a/gpu/ipc/common/gpu_message_generator.cc b/gpu/ipc/common/gpu_message_generator.cc
index ab8f4890..46a9d7f 100644
--- a/gpu/ipc/common/gpu_message_generator.cc
+++ b/gpu/ipc/common/gpu_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "gpu/ipc/common/gpu_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "gpu/ipc/common/gpu_message_generator.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/gpu/ipc/common/gpu_param_traits.cc b/gpu/ipc/common/gpu_param_traits.cc
index efc2987..b5f35b2 100644
--- a/gpu/ipc/common/gpu_param_traits.cc
+++ b/gpu/ipc/common/gpu_param_traits.cc
@@ -5,6 +5,13 @@
// Get basic type definitions.
#include "gpu/ipc/common/gpu_param_traits.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#undef GPU_IPC_COMMON_GPU_PARAM_TRAITS_MACROS_H_
+#include "gpu/ipc/common/gpu_param_traits_macros.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
index 18a154f..f31add1 100644
--- a/ipc/ipc_message_utils.cc
+++ b/ipc/ipc_message_utils.cc
@@ -996,6 +996,14 @@
ParamTraits<int64_t>::Log(p.ToInternalValue(), l);
}
+void ParamTraits<IPC::ChannelHandle>::GetSize(base::PickleSizer* sizer,
+ const param_type& p) {
+ GetParamSize(sizer, p.name);
+#if defined(OS_POSIX)
+ GetParamSize(sizer, p.socket);
+#endif
+}
+
void ParamTraits<IPC::ChannelHandle>::Write(base::Pickle* m,
const param_type& p) {
#if defined(OS_WIN)
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h
index 0de489b..9848549 100644
--- a/ipc/ipc_message_utils.h
+++ b/ipc/ipc_message_utils.h
@@ -992,6 +992,7 @@
template<>
struct IPC_EXPORT ParamTraits<IPC::ChannelHandle> {
typedef ChannelHandle param_type;
+ static void GetSize(base::PickleSizer* sizer, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/media/gpu/ipc/common/media_message_generator.cc b/media/gpu/ipc/common/media_message_generator.cc
index 9f3c3ab..6e8178ce 100644
--- a/media/gpu/ipc/common/media_message_generator.cc
+++ b/media/gpu/ipc/common/media_message_generator.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "media/gpu/ipc/common/media_message_generator.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "media/gpu/ipc/common/media_message_generator.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/media/gpu/ipc/common/media_messages.cc b/media/gpu/ipc/common/media_messages.cc
index d1916f3..0c3c6f7a 100644
--- a/media/gpu/ipc/common/media_messages.cc
+++ b/media/gpu/ipc/common/media_messages.cc
@@ -12,6 +12,20 @@
namespace IPC {
+void ParamTraits<media::BitstreamBuffer>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.id());
+ GetParamSize(s, static_cast<uint64_t>(p.size()));
+ GetParamSize(s, static_cast<uint64_t>(p.offset()));
+ GetParamSize(s, p.presentation_timestamp());
+ GetParamSize(s, p.key_id());
+ if (!p.key_id().empty()) {
+ GetParamSize(s, p.iv());
+ GetParamSize(s, p.subsamples());
+ }
+ GetParamSize(s, p.handle());
+}
+
void ParamTraits<media::BitstreamBuffer>::Write(base::Pickle* m,
const param_type& p) {
WriteParam(m, p.id());
diff --git a/media/gpu/ipc/common/media_messages.h b/media/gpu/ipc/common/media_messages.h
index 780e378..6c128a63 100644
--- a/media/gpu/ipc/common/media_messages.h
+++ b/media/gpu/ipc/common/media_messages.h
@@ -25,6 +25,7 @@
template <>
struct ParamTraits<media::BitstreamBuffer> {
using param_type = media::BitstreamBuffer;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/ppapi/proxy/ppapi_messages.cc b/ppapi/proxy/ppapi_messages.cc
index 5cee1c7..6ed361b2 100644
--- a/ppapi/proxy/ppapi_messages.cc
+++ b/ppapi/proxy/ppapi_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "ppapi/proxy/ppapi_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "ppapi/proxy/ppapi_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/ppapi/proxy/ppapi_param_traits.cc b/ppapi/proxy/ppapi_param_traits.cc
index 9d21eac1..d55f5758 100644
--- a/ppapi/proxy/ppapi_param_traits.cc
+++ b/ppapi/proxy/ppapi_param_traits.cc
@@ -79,6 +79,11 @@
// PP_Bool ---------------------------------------------------------------------
// static
+void ParamTraits<PP_Bool>::GetSize(base::PickleSizer* s, const param_type& p) {
+ GetParamSize(s, PP_ToBool(p));
+}
+
+// static
void ParamTraits<PP_Bool>::Write(base::Pickle* m, const param_type& p) {
WriteParam(m, PP_ToBool(p));
}
@@ -151,6 +156,13 @@
// PP_NetAddress_Private -------------------------------------------------------
// static
+void ParamTraits<PP_NetAddress_Private>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.size);
+ s->AddBytes(static_cast<int>(p.size));
+}
+
+// static
void ParamTraits<PP_NetAddress_Private>::Write(base::Pickle* m,
const param_type& p) {
WriteParam(m, p.size);
@@ -186,6 +198,13 @@
// HostResource ----------------------------------------------------------------
// static
+void ParamTraits<ppapi::HostResource>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.instance());
+ GetParamSize(s, p.host_resource());
+}
+
+// static
void ParamTraits<ppapi::HostResource>::Write(base::Pickle* m,
const param_type& p) {
WriteParam(m, p.instance());
@@ -253,6 +272,13 @@
// ppapi::PpapiPermissions -----------------------------------------------------
+// static
+void ParamTraits<ppapi::PpapiPermissions>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.GetBits());
+}
+
+// static
void ParamTraits<ppapi::PpapiPermissions>::Write(base::Pickle* m,
const param_type& p) {
WriteParam(m, p.GetBits());
@@ -675,6 +701,13 @@
// ppapi::CompositorLayerData --------------------------------------------------
// static
+void ParamTraits<ppapi::CompositorLayerData::Transform>::GetSize(
+ base::PickleSizer* s, const param_type& p) {
+ for (size_t i = 0; i < arraysize(p.matrix); i++)
+ GetParamSize(s, p.matrix[i]);
+}
+
+// static
void ParamTraits<ppapi::CompositorLayerData::Transform>::Write(
base::Pickle* m,
const param_type& p) {
diff --git a/ppapi/proxy/ppapi_param_traits.h b/ppapi/proxy/ppapi_param_traits.h
index 6996547..75d4529f4 100644
--- a/ppapi/proxy/ppapi_param_traits.h
+++ b/ppapi/proxy/ppapi_param_traits.h
@@ -49,6 +49,7 @@
template<>
struct PPAPI_PROXY_EXPORT ParamTraits<PP_Bool> {
typedef PP_Bool param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -59,6 +60,7 @@
template <>
struct PPAPI_PROXY_EXPORT ParamTraits<PP_NetAddress_Private> {
typedef PP_NetAddress_Private param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -142,6 +144,7 @@
template<>
struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::HostResource> {
typedef ppapi::HostResource param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -173,6 +176,7 @@
template<>
struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::PpapiPermissions> {
typedef ppapi::PpapiPermissions param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -225,6 +229,7 @@
template<>
struct PPAPI_PROXY_EXPORT ParamTraits<ppapi::CompositorLayerData::Transform> {
typedef ppapi::CompositorLayerData::Transform param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/remoting/host/chromoting_messages.cc b/remoting/host/chromoting_messages.cc
index 36c3cf4..174bebe 100644
--- a/remoting/host/chromoting_messages.cc
+++ b/remoting/host/chromoting_messages.cc
@@ -14,6 +14,12 @@
#include "ipc/struct_destructor_macros.h"
#include "remoting/host/chromoting_messages.h"
+// Generate param traits size methods.
+#include "ipc/param_traits_size_macros.h"
+namespace IPC {
+#include "remoting/host/chromoting_messages.h"
+}
+
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
diff --git a/remoting/host/chromoting_param_traits.cc b/remoting/host/chromoting_param_traits.cc
index a440c34..a19345a 100644
--- a/remoting/host/chromoting_param_traits.cc
+++ b/remoting/host/chromoting_param_traits.cc
@@ -13,6 +13,13 @@
namespace IPC {
// static
+void ParamTraits<webrtc::DesktopVector>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.x());
+ GetParamSize(s, p.y());
+}
+
+// static
void ParamTraits<webrtc::DesktopVector>::Write(base::Pickle* m,
const webrtc::DesktopVector& p) {
m->WriteInt(p.x());
@@ -38,6 +45,13 @@
}
// static
+void ParamTraits<webrtc::DesktopSize>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.width());
+ GetParamSize(s, p.height());
+}
+
+// static
void ParamTraits<webrtc::DesktopSize>::Write(base::Pickle* m,
const webrtc::DesktopSize& p) {
m->WriteInt(p.width());
@@ -63,6 +77,15 @@
}
// static
+void ParamTraits<webrtc::DesktopRect>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.left());
+ GetParamSize(s, p.top());
+ GetParamSize(s, p.right());
+ GetParamSize(s, p.bottom());
+}
+
+// static
void ParamTraits<webrtc::DesktopRect>::Write(base::Pickle* m,
const webrtc::DesktopRect& p) {
m->WriteInt(p.left());
@@ -190,6 +213,12 @@
}
// static
+void ParamTraits<net::IPAddress>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.bytes());
+}
+
+// static
void ParamTraits<net::IPAddress>::Write(base::Pickle* m, const param_type& p) {
WriteParam(m, p.bytes());
}
@@ -216,6 +245,13 @@
}
// static
+void ParamTraits<net::IPEndPoint>::GetSize(base::PickleSizer* s,
+ const param_type& p) {
+ GetParamSize(s, p.address());
+ GetParamSize(s, p.port());
+}
+
+// static
void ParamTraits<net::IPEndPoint>::Write(base::Pickle* m, const param_type& p) {
WriteParam(m, p.address());
WriteParam(m, p.port());
diff --git a/remoting/host/chromoting_param_traits.h b/remoting/host/chromoting_param_traits.h
index 2ca0baf..290a5cf 100644
--- a/remoting/host/chromoting_param_traits.h
+++ b/remoting/host/chromoting_param_traits.h
@@ -19,6 +19,7 @@
template <>
struct ParamTraits<webrtc::DesktopVector> {
typedef webrtc::DesktopVector param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -29,6 +30,7 @@
template <>
struct ParamTraits<webrtc::DesktopSize> {
typedef webrtc::DesktopSize param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -39,6 +41,7 @@
template <>
struct ParamTraits<webrtc::DesktopRect> {
typedef webrtc::DesktopRect param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -69,6 +72,7 @@
template <>
struct ParamTraits<net::IPAddress> {
typedef net::IPAddress param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
@@ -79,6 +83,7 @@
template <>
struct ParamTraits<net::IPEndPoint> {
typedef net::IPEndPoint param_type;
+ static void GetSize(base::PickleSizer* s, const param_type& p);
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,