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,
