Commit b6f010b1 authored by Hans Wennborg's avatar Hans Wennborg Committed by Commit Bot

IPC_STRUCT_BEGIN: Don't explicitly default copy constructors etc

The classes may not actually be copyable, copy-assignable, etc. Previously the
compiler would not complain until trying to *use* the defaulted ctor/operator,
but the new -Wdefaulted-function-deleted warning warns about this up front.

(As a concrete example, ExtensionMsg_TabConnectionInfo isn't copy-assignable
because of base::DictionaryValue member, which is a base::Value, which can't
be copied.)

To ensure these structs are still movable, remove the user-declared destructor.
This is also a simplification in that it removes all the code that was necessary
to define that destructor out-of-line.

Bug: 890307
Change-Id: I27ec3a0639bdeb94776acdd78b173791d0b8162d
Reviewed-on: https://chromium-review.googlesource.com/c/1261082Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarDaniele Castagna <dcastagna@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarAntoine Labour <piman@chromium.org>
Reviewed-by: default avatarNico Weber <thakis@chromium.org>
Commit-Queue: Hans Wennborg <hans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#610331}
parent 7ede47e3
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "android_webview/common/android_webview_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "android_webview/common/android_webview_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "chrome/common/apps/platform_apps/chrome_apps_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "chrome/common/apps/platform_apps/chrome_apps_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -11,11 +11,6 @@
#include "chrome/common/safe_browsing/ipc_protobuf_message_null_macros.h"
#include "chrome/common/common_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "chrome/common/safe_browsing/ipc_protobuf_message_null_macros.h"
#include "chrome/common/common_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
#include "chrome/common/safe_browsing/protobuf_message_write_macros.h"
......
......@@ -11,11 +11,6 @@
#undef CHROME_COMMON_IMPORTER_PROFILE_IMPORT_PROCESS_PARAM_TRAITS_MACROS_H_
#include "chrome/common/importer/profile_import_process_param_traits_macros.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef CHROME_COMMON_IMPORTER_PROFILE_IMPORT_PROCESS_PARAM_TRAITS_MACROS_H_
#include "chrome/common/importer/profile_import_process_param_traits_macros.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -23,16 +23,6 @@
"chrome_extension_messages.h"
#endif
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef CHROMECAST_COMMON_EXTENSIONS_API_CAST_EXTENSION_MESSAGES_H_
#include "chromecast/common/extensions_api/cast_extension_messages.h"
#include "content/public/common/common_param_traits.h"
#ifndef CHROMECAST_COMMON_EXTENSIONS_API_CAST_EXTENSION_MESSAGES_H_
#error "Failed to include header chromecast/common/extensions_api/"
"chrome_extension_messages.h"
#endif
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "components/cdm/common/cdm_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "components/cdm/common/cdm_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "components/guest_view/common/guest_view_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "components/guest_view/common/guest_view_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "components/nacl/common/nacl_host_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "components/nacl/common/nacl_host_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "components/nacl/common/nacl_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "components/nacl/common/nacl_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -11,11 +11,6 @@
#undef COMPONENTS_NACL_COMMON_NACL_TYPES_PARAM_TRAITS_H_
#include "components/nacl/common/nacl_types_param_traits.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#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 {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "components/network_hints/common/network_hints_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "components/network_hints/common/network_hints_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -28,15 +28,6 @@
#error "Failed to include header components/printing/common/print_messages.h"
#endif
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef COMPONENTS_PRINTING_COMMON_PRINT_MESSAGES_H_
#undef COMPONENTS_PRINTING_COMMON_PRINTING_PARAM_TRAITS_MACROS_H_
#include "components/printing/common/print_messages.h"
#ifndef COMPONENTS_PRINTING_COMMON_PRINT_MESSAGES_H_
#error "Failed to include header components/printing/common/print_messages.h"
#endif
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "components/subresource_filter/content/common/subresource_filter_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "components/subresource_filter/content/common/subresource_filter_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -18,14 +18,6 @@
#error "Failed to include components/tracing/common/tracing_messages.h"
#endif
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef COMPONENTS_TRACING_COMMON_TRACING_MESSAGES_H_
#include "components/tracing/common/tracing_messages.h"
#ifndef COMPONENTS_TRACING_COMMON_TRACING_MESSAGES_H_
#error "Failed to include components/tracing/common/tracing_messages.h"
#endif
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "content/common/content_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "content/common/content_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -12,11 +12,6 @@
#undef CONTENT_SHELL_COMMON_LAYOUT_TEST_LAYOUT_TEST_MESSAGES_H_
#include "content/shell/common/layout_test/layout_test_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef CONTENT_SHELL_COMMON_LAYOUT_TEST_LAYOUT_TEST_MESSAGES_H_
#include "content/shell/common/layout_test/layout_test_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -12,11 +12,6 @@
#undef CONTENT_SHELL_COMMON_SHELL_MESSAGES_H_
#include "content/shell/common/shell_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef CONTENT_SHELL_COMMON_SHELL_MESSAGES_H_
#include "content/shell/common/shell_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "extensions/common/extension_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "extensions/common/extension_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "gpu/ipc/common/gpu_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "gpu/ipc/common/gpu_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -29,7 +29,6 @@ component("ipc") {
"param_traits_read_macros.h",
"param_traits_write_macros.h",
"struct_constructor_macros.h",
"struct_destructor_macros.h",
]
if (!is_ios) {
......
......@@ -24,10 +24,6 @@
#include "ipc/struct_constructor_macros.h"
#include "ipc/ipc_channel_proxy_unittest_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "ipc/ipc_channel_proxy_unittest_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -42,9 +42,6 @@
// // Generate constructors.
// #include "ipc/struct_constructor_macros.h"
// #include "path/to/YYY_message_generator.h"
// // Generate destructors.
// #include "ipc/struct_destructor_macros.h"
// #include "path/to/YYY_message_generator.h"
// // Generate param traits write methods.
// #include "ipc/param_traits_write_macros.h"
// namespace IPC {
......@@ -217,12 +214,7 @@
IPC_STRUCT_TRAITS_BEGIN(struct_name) \
IPC_STRUCT_TRAITS_END() \
struct IPC_MESSAGE_EXPORT struct_name : parent { \
struct_name(); \
struct_name(const struct_name&) = default; \
struct_name(struct_name&&) = default; \
struct_name& operator=(const struct_name&) = default; \
struct_name& operator=(struct_name&&) = default; \
~struct_name();
struct_name();
// Optional variadic parameters specify the default value for this struct
// member. They are passed through to the constructor for |type|.
#define IPC_STRUCT_MEMBER(type, name, ...) type name;
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "ipc/ipc_test_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "ipc/ipc_test_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
// Copyright (c) 2011 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 IPC_STRUCT_DESTRUCTOR_MACROS_H_
#define IPC_STRUCT_DESTRUCTOR_MACROS_H_
// Null out all the macros that need nulling.
#include "ipc/ipc_message_null_macros.h"
// Set up so next include will generate destructors.
#undef IPC_STRUCT_BEGIN_WITH_PARENT
#define IPC_STRUCT_BEGIN_WITH_PARENT(struct_name, parent) \
struct_name::~struct_name() {}
#endif // IPC_STRUCT_DESTRUCTOR_MACROS_H_
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "media/gpu/ipc/common/media_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "media/gpu/ipc/common/media_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -18,14 +18,6 @@
#error "Failed to include ppapi/proxy/ppapi_messages.h"
#endif
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#undef PPAPI_PROXY_PPAPI_MESSAGES_H_
#include "ppapi/proxy/ppapi_messages.h"
#ifndef PPAPI_PROXY_PPAPI_MESSAGES_H_
#error "Failed to include ppapi/proxy/ppapi_messages.h"
#endif
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "remoting/host/chromoting_messages.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "remoting/host/chromoting_messages.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
......@@ -568,11 +568,6 @@ void ParamTraits<url::Origin>::Log(const url::Origin& p, std::string* l) {
#include "ipc/struct_constructor_macros.h"
#include "net_ipc_param_traits.h"
// Generate destructors.
#undef SERVICES_NETWORK_PUBLIC_CPP_NET_IPC_PARAM_TRAITS_H_
#include "ipc/struct_destructor_macros.h"
#include "net_ipc_param_traits.h"
// Generate param traits write methods.
#undef SERVICES_NETWORK_PUBLIC_CPP_NET_IPC_PARAM_TRAITS_H_
#include "ipc/param_traits_write_macros.h"
......
......@@ -265,11 +265,6 @@ void ParamTraits<scoped_refptr<network::ResourceRequestBody>>::Log(
#include "ipc/struct_constructor_macros.h"
#include "network_ipc_param_traits.h"
// Generate destructors.
#undef SERVICES_NETWORK_PUBLIC_CPP_NETWORK_IPC_PARAM_TRAITS_H_
#include "ipc/struct_destructor_macros.h"
#include "network_ipc_param_traits.h"
// Generate param traits write methods.
#undef SERVICES_NETWORK_PUBLIC_CPP_NETWORK_IPC_PARAM_TRAITS_H_
#include "ipc/param_traits_write_macros.h"
......
......@@ -67,11 +67,6 @@ void ParamTraits<net::IPAddress>::Log(const param_type& p, std::string* l) {
#include "ipc/struct_constructor_macros.h"
#include "p2p_param_traits.h"
// Generate destructors.
#undef SERVICES_NETWORK_PUBLIC_CPP_P2P_PARAM_TRAITS_H_
#include "ipc/struct_destructor_macros.h"
#include "p2p_param_traits.h"
// Generate param traits write methods.
#undef SERVICES_NETWORK_PUBLIC_CPP_P2P_PARAM_TRAITS_H_
#include "ipc/param_traits_write_macros.h"
......
......@@ -10,10 +10,6 @@
#include "ipc/struct_constructor_macros.h"
#include "ui/ozone/common/gpu/ozone_gpu_message_generator.h"
// Generate destructors.
#include "ipc/struct_destructor_macros.h"
#include "ui/ozone/common/gpu/ozone_gpu_message_generator.h"
// Generate param traits write methods.
#include "ipc/param_traits_write_macros.h"
namespace IPC {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment