diff options
author | Michael Bruning <michael.bruning@qt.io> | 2019-10-15 18:08:23 +0200 |
---|---|---|
committer | Michael BrĂ¼ning <michael.bruning@qt.io> | 2019-10-16 14:44:58 +0000 |
commit | a42666a17663f7fdad5be9640527b60d6018cea5 (patch) | |
tree | 0b08fffd491242f30999d16f8b6b0c0ece592e77 | |
parent | 3d7a96629b790ee12d9be864e284c14606da649d (diff) | |
download | qtwebengine-chromium-a42666a17663f7fdad5be9640527b60d6018cea5.tar.gz |
Apply workarounds to build extensions with gcc 5.3.1
Add workaround to generators and manifest handlers to make
the extensions code build with GCC 5.3.1, which is missing a
couple of C++14 features and has bugs with some C++11 features.
Reverts some of the previous workarounds.
Task-number: QTBUG-76329
Change-Id: I2e6a268babbbb64ccdf8f703abf1afd1ee5e8857
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
31 files changed, 172 insertions, 9 deletions
diff --git a/chromium/extensions/common/api/bluetooth/bluetooth_manifest_handler.cc b/chromium/extensions/common/api/bluetooth/bluetooth_manifest_handler.cc index 07c85a1bdbd..25b7d78736b 100644 --- a/chromium/extensions/common/api/bluetooth/bluetooth_manifest_handler.cc +++ b/chromium/extensions/common/api/bluetooth/bluetooth_manifest_handler.cc @@ -42,7 +42,11 @@ ManifestPermission* BluetoothManifestHandler::CreateInitialRequiredPermission( base::span<const char* const> BluetoothManifestHandler::Keys() const { static constexpr const char* kKeys[] = {manifest_keys::kBluetooth}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/api/declarative/declarative_manifest_handler.cc b/chromium/extensions/common/api/declarative/declarative_manifest_handler.cc index 6292a63db32..e715e61e6c8 100644 --- a/chromium/extensions/common/api/declarative/declarative_manifest_handler.cc +++ b/chromium/extensions/common/api/declarative/declarative_manifest_handler.cc @@ -31,7 +31,11 @@ bool DeclarativeManifestHandler::Parse(Extension* extension, base::span<const char* const> DeclarativeManifestHandler::Keys() const { static constexpr const char* kKeys[] = {manifest_keys::kEventRules}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc b/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc index dea6c9cb81e..3f4ea77f5c6 100644 --- a/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc +++ b/chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc @@ -85,7 +85,11 @@ bool DNRManifestHandler::Validate(const Extension* extension, base::span<const char* const> DNRManifestHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kDeclarativeNetRequestKey}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace declarative_net_request diff --git a/chromium/extensions/common/api/printer_provider/usb_printer_manifest_handler.cc b/chromium/extensions/common/api/printer_provider/usb_printer_manifest_handler.cc index c6c90880252..595591e5db3 100644 --- a/chromium/extensions/common/api/printer_provider/usb_printer_manifest_handler.cc +++ b/chromium/extensions/common/api/printer_provider/usb_printer_manifest_handler.cc @@ -32,7 +32,11 @@ bool UsbPrinterManifestHandler::Parse(Extension* extension, base::span<const char* const> UsbPrinterManifestHandler::Keys() const { static constexpr const char* kKeys[] = {manifest_keys::kUsbPrinters}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/api/sockets/sockets_manifest_handler.cc b/chromium/extensions/common/api/sockets/sockets_manifest_handler.cc index afdd62bafdd..0a56437aa43 100644 --- a/chromium/extensions/common/api/sockets/sockets_manifest_handler.cc +++ b/chromium/extensions/common/api/sockets/sockets_manifest_handler.cc @@ -42,7 +42,11 @@ ManifestPermission* SocketsManifestHandler::CreateInitialRequiredPermission( base::span<const char* const> SocketsManifestHandler::Keys() const { static constexpr const char* kKeys[] = {manifest_keys::kSockets}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/app_isolation_info.cc b/chromium/extensions/common/manifest_handlers/app_isolation_info.cc index 21d0868c759..fb171a6b25e 100644 --- a/chromium/extensions/common/manifest_handlers/app_isolation_info.cc +++ b/chromium/extensions/common/manifest_handlers/app_isolation_info.cc @@ -98,7 +98,11 @@ bool AppIsolationHandler::AlwaysParseForType(Manifest::Type type) const { base::span<const char* const> AppIsolationHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kIsolation}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/automation.cc b/chromium/extensions/common/manifest_handlers/automation.cc index e3f111e4e96..915f30663e5 100644 --- a/chromium/extensions/common/manifest_handlers/automation.cc +++ b/chromium/extensions/common/manifest_handlers/automation.cc @@ -182,7 +182,11 @@ bool AutomationHandler::Parse(Extension* extension, base::string16* error) { base::span<const char* const> AutomationHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kAutomation}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } ManifestPermission* AutomationHandler::CreatePermission() { diff --git a/chromium/extensions/common/manifest_handlers/background_info.cc b/chromium/extensions/common/manifest_handlers/background_info.cc index eae4adc2a0f..05a3a4df8bb 100644 --- a/chromium/extensions/common/manifest_handlers/background_info.cc +++ b/chromium/extensions/common/manifest_handlers/background_info.cc @@ -380,7 +380,12 @@ base::span<const char* const> BackgroundManifestHandler::Keys() const { keys::kBackgroundPersistent, keys::kBackgroundScripts, keys::kBackgroundServiceWorkerScript, keys::kPlatformAppBackgroundPage, keys::kPlatformAppBackgroundScripts}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 7); +#endif + } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/content_capabilities_handler.cc b/chromium/extensions/common/manifest_handlers/content_capabilities_handler.cc index 3ce1ed7d2aa..091f08f1e12 100644 --- a/chromium/extensions/common/manifest_handlers/content_capabilities_handler.cc +++ b/chromium/extensions/common/manifest_handlers/content_capabilities_handler.cc @@ -120,7 +120,11 @@ bool ContentCapabilitiesHandler::Parse(Extension* extension, base::span<const char* const> ContentCapabilitiesHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kContentCapabilities}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/content_scripts_handler.cc b/chromium/extensions/common/manifest_handlers/content_scripts_handler.cc index 48511e525c2..c0fe38523b8 100644 --- a/chromium/extensions/common/manifest_handlers/content_scripts_handler.cc +++ b/chromium/extensions/common/manifest_handlers/content_scripts_handler.cc @@ -375,7 +375,11 @@ ContentScriptsHandler::~ContentScriptsHandler() {} base::span<const char* const> ContentScriptsHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kContentScripts}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } bool ContentScriptsHandler::Parse(Extension* extension, base::string16* error) { diff --git a/chromium/extensions/common/manifest_handlers/csp_info.cc b/chromium/extensions/common/manifest_handlers/csp_info.cc index b6c1c158e27..127901228b1 100644 --- a/chromium/extensions/common/manifest_handlers/csp_info.cc +++ b/chromium/extensions/common/manifest_handlers/csp_info.cc @@ -358,7 +358,11 @@ base::span<const char* const> CSPHandler::Keys() const { static constexpr const char* kKeys[] = { keys::kContentSecurityPolicy, keys::kPlatformAppContentSecurityPolicy, keys::kSandboxedPagesCSP}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 3); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/default_locale_handler.cc b/chromium/extensions/common/manifest_handlers/default_locale_handler.cc index 83dfdc71f7e..cc1c83811f6 100644 --- a/chromium/extensions/common/manifest_handlers/default_locale_handler.cc +++ b/chromium/extensions/common/manifest_handlers/default_locale_handler.cc @@ -115,7 +115,11 @@ bool DefaultLocaleHandler::AlwaysValidateForType(Manifest::Type type) const { base::span<const char* const> DefaultLocaleHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kDefaultLocale}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/externally_connectable.cc b/chromium/extensions/common/manifest_handlers/externally_connectable.cc index 3d775167d9f..3e7de3da524 100644 --- a/chromium/extensions/common/manifest_handlers/externally_connectable.cc +++ b/chromium/extensions/common/manifest_handlers/externally_connectable.cc @@ -86,7 +86,11 @@ bool ExternallyConnectableHandler::Parse(Extension* extension, base::span<const char* const> ExternallyConnectableHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kExternallyConnectable}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } // static diff --git a/chromium/extensions/common/manifest_handlers/file_handler_info.cc b/chromium/extensions/common/manifest_handlers/file_handler_info.cc index 848d17bedec..53847c29a36 100644 --- a/chromium/extensions/common/manifest_handlers/file_handler_info.cc +++ b/chromium/extensions/common/manifest_handlers/file_handler_info.cc @@ -212,7 +212,11 @@ bool FileHandlersParser::Parse(Extension* extension, base::string16* error) { base::span<const char* const> FileHandlersParser::Keys() const { static constexpr const char* kKeys[] = {keys::kFileHandlers}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/icons_handler.cc b/chromium/extensions/common/manifest_handlers/icons_handler.cc index b031ff2821b..90b4bbf2d28 100644 --- a/chromium/extensions/common/manifest_handlers/icons_handler.cc +++ b/chromium/extensions/common/manifest_handlers/icons_handler.cc @@ -87,7 +87,11 @@ bool IconsHandler::Validate(const Extension* extension, base::span<const char* const> IconsHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kIcons}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/incognito_info.cc b/chromium/extensions/common/manifest_handlers/incognito_info.cc index 6eac595cb34..c9e083d56cf 100644 --- a/chromium/extensions/common/manifest_handlers/incognito_info.cc +++ b/chromium/extensions/common/manifest_handlers/incognito_info.cc @@ -81,7 +81,11 @@ bool IncognitoHandler::AlwaysParseForType(Manifest::Type type) const { base::span<const char* const> IncognitoHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kIncognito}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/kiosk_mode_info.cc b/chromium/extensions/common/manifest_handlers/kiosk_mode_info.cc index 3d7b73b311f..1deb56a7022 100644 --- a/chromium/extensions/common/manifest_handlers/kiosk_mode_info.cc +++ b/chromium/extensions/common/manifest_handlers/kiosk_mode_info.cc @@ -213,7 +213,11 @@ base::span<const char* const> KioskModeHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kKiosk, keys::kKioskEnabled, keys::kKioskOnly, keys::kKioskSecondaryApps}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 4); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/mime_types_handler.cc b/chromium/extensions/common/manifest_handlers/mime_types_handler.cc index f4874a50d7f..382855c1210 100644 --- a/chromium/extensions/common/manifest_handlers/mime_types_handler.cc +++ b/chromium/extensions/common/manifest_handlers/mime_types_handler.cc @@ -142,5 +142,9 @@ bool MimeTypesHandlerParser::Parse(extensions::Extension* extension, base::span<const char* const> MimeTypesHandlerParser::Keys() const { static constexpr const char* kKeys[] = {keys::kMIMETypes, keys::kMimeTypesHandler}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 2); +#endif } diff --git a/chromium/extensions/common/manifest_handlers/nacl_modules_handler.cc b/chromium/extensions/common/manifest_handlers/nacl_modules_handler.cc index fe86cf1998f..d6ae4b6db21 100644 --- a/chromium/extensions/common/manifest_handlers/nacl_modules_handler.cc +++ b/chromium/extensions/common/manifest_handlers/nacl_modules_handler.cc @@ -89,7 +89,11 @@ bool NaClModulesHandler::Parse(Extension* extension, base::string16* error) { base::span<const char* const> NaClModulesHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kNaClModules}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/oauth2_manifest_handler.cc b/chromium/extensions/common/manifest_handlers/oauth2_manifest_handler.cc index e69a8da540a..670244961a1 100644 --- a/chromium/extensions/common/manifest_handlers/oauth2_manifest_handler.cc +++ b/chromium/extensions/common/manifest_handlers/oauth2_manifest_handler.cc @@ -103,7 +103,11 @@ bool OAuth2ManifestHandler::Parse(Extension* extension, base::span<const char* const> OAuth2ManifestHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kOAuth2}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/offline_enabled_info.cc b/chromium/extensions/common/manifest_handlers/offline_enabled_info.cc index 018a00dabde..6fba78e1e32 100644 --- a/chromium/extensions/common/manifest_handlers/offline_enabled_info.cc +++ b/chromium/extensions/common/manifest_handlers/offline_enabled_info.cc @@ -74,7 +74,11 @@ bool OfflineEnabledHandler::AlwaysParseForType(Manifest::Type type) const { base::span<const char* const> OfflineEnabledHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kOfflineEnabled}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/options_page_info.cc b/chromium/extensions/common/manifest_handlers/options_page_info.cc index c8cddb3897e..570139465c2 100644 --- a/chromium/extensions/common/manifest_handlers/options_page_info.cc +++ b/chromium/extensions/common/manifest_handlers/options_page_info.cc @@ -223,7 +223,11 @@ bool OptionsPageManifestHandler::Validate( base::span<const char* const> OptionsPageManifestHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kOptionsPage, keys::kOptionsUI}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys,2); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/requirements_info.cc b/chromium/extensions/common/manifest_handlers/requirements_info.cc index d743e300d4a..5c649b23fac 100644 --- a/chromium/extensions/common/manifest_handlers/requirements_info.cc +++ b/chromium/extensions/common/manifest_handlers/requirements_info.cc @@ -43,7 +43,11 @@ RequirementsHandler::~RequirementsHandler() { base::span<const char* const> RequirementsHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kRequirements}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } bool RequirementsHandler::AlwaysParseForType(Manifest::Type type) const { diff --git a/chromium/extensions/common/manifest_handlers/sandboxed_page_info.cc b/chromium/extensions/common/manifest_handlers/sandboxed_page_info.cc index e5caeb56bb7..64d6a282b6f 100644 --- a/chromium/extensions/common/manifest_handlers/sandboxed_page_info.cc +++ b/chromium/extensions/common/manifest_handlers/sandboxed_page_info.cc @@ -91,7 +91,11 @@ bool SandboxedPageHandler::Parse(Extension* extension, base::string16* error) { base::span<const char* const> SandboxedPageHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kSandboxedPages}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/shared_module_info.cc b/chromium/extensions/common/manifest_handlers/shared_module_info.cc index e5f3341d5d4..34000286ace 100644 --- a/chromium/extensions/common/manifest_handlers/shared_module_info.cc +++ b/chromium/extensions/common/manifest_handlers/shared_module_info.cc @@ -246,7 +246,11 @@ bool SharedModuleHandler::Validate( base::span<const char* const> SharedModuleHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kExport, keys::kImport}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/web_accessible_resources_info.cc b/chromium/extensions/common/manifest_handlers/web_accessible_resources_info.cc index be6685fac9c..5a3da0d2311 100644 --- a/chromium/extensions/common/manifest_handlers/web_accessible_resources_info.cc +++ b/chromium/extensions/common/manifest_handlers/web_accessible_resources_info.cc @@ -94,7 +94,11 @@ bool WebAccessibleResourcesHandler::Parse(Extension* extension, base::span<const char* const> WebAccessibleResourcesHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kWebAccessibleResources}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_handlers/webview_info.cc b/chromium/extensions/common/manifest_handlers/webview_info.cc index f3cc32d266c..86ec38496d5 100644 --- a/chromium/extensions/common/manifest_handlers/webview_info.cc +++ b/chromium/extensions/common/manifest_handlers/webview_info.cc @@ -193,7 +193,11 @@ bool WebviewHandler::Parse(Extension* extension, base::string16* error) { base::span<const char* const> WebviewHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kWebview}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } } // namespace extensions diff --git a/chromium/extensions/common/manifest_url_handlers.cc b/chromium/extensions/common/manifest_url_handlers.cc index 39450837d2a..6a1748a8175 100644 --- a/chromium/extensions/common/manifest_url_handlers.cc +++ b/chromium/extensions/common/manifest_url_handlers.cc @@ -121,7 +121,11 @@ bool HomepageURLHandler::Parse(Extension* extension, base::string16* error) { base::span<const char* const> HomepageURLHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kHomepageURL}; +#if !defined(__GNUC__) || __GNUC__ > 5 return kKeys; +#else + return base::make_span(kKeys, 1); +#endif } UpdateURLHandler::UpdateURLHandler() { @@ -154,7 +158,7 @@ bool UpdateURLHandler::Parse(Extension* extension, base::string16* error) { base::span<const char* const> UpdateURLHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kUpdateURL}; - return kKeys; + return base::make_span(kKeys, 1); } AboutPageHandler::AboutPageHandler() { @@ -206,7 +210,7 @@ bool AboutPageHandler::Validate(const Extension* extension, base::span<const char* const> AboutPageHandler::Keys() const { static constexpr const char* kKeys[] = {keys::kAboutPage}; - return kKeys; + return base::make_span(kKeys, 1); } } // namespace extensions diff --git a/chromium/extensions/common/permissions/permissions_info.h b/chromium/extensions/common/permissions/permissions_info.h index 7c4e8c6e244..437e0cc5f58 100644 --- a/chromium/extensions/common/permissions/permissions_info.h +++ b/chromium/extensions/common/permissions/permissions_info.h @@ -21,6 +21,17 @@ #include "extensions/common/permissions/api_permission.h" #include "extensions/common/permissions/api_permission_set.h" +#if defined(__GNUC__) && __GNUC__ <= 5 +// Provide a custom hasher because GCC 5 still needs it. +namespace std { + template<> struct hash<extensions::APIPermission::ID> { + std::size_t operator()(extensions::APIPermission::ID arg) const { + return static_cast<std::size_t>(arg); + } + }; +} +#endif + namespace extensions { struct Alias; diff --git a/chromium/tools/json_schema_compiler/cc_generator.py b/chromium/tools/json_schema_compiler/cc_generator.py index 52df07f8ada..45994c57e8b 100644 --- a/chromium/tools/json_schema_compiler/cc_generator.py +++ b/chromium/tools/json_schema_compiler/cc_generator.py @@ -209,6 +209,7 @@ class _Generator(object): """ props = [] dicts = [] + addition = 0 for prop in type_.properties.values(): t = prop.type_ @@ -245,31 +246,71 @@ class _Generator(object): else: props.append(move_str % ('additional_properties', 'additional_properties')) + addition = True - return (props, dicts) + return (props, dicts, addition) def _GenerateMoveCtor(self, type_): - props, dicts = self._GetMoveProps(type_, '%s(rhs.%s)', + props, dicts, addition = self._GetMoveProps(type_, '%s(rhs.%s)', '%s(std::move(rhs.%s))') s = '' + s = s + '\n#if !defined(__GNUC__) || __GNUC__ > 5\n' if props: s = s + ': %s' % (',\n'.join(props)) - s = s + '{' + s = s + '\n{' for item in dicts: s = s + ('\n%s.Swap(&rhs.%s);' % (item, item)) s = s + '\n}' + s = s + '\n#else\n' + additional_props = None + if props: + if addition == True: + additional_props = props.pop() + + if props: + s = s + ': %s' % (',\n'.join(props)) + s = s + '\n{' + for item in dicts: + s = s + ('\n%s.Swap(&rhs.%s);' % (item, item)) + if additional_props != None: + s = s + '\n for (auto& x : rhs.additional_properties) {' + s = s + '\n additional_properties.emplace(std::move(x.first) ,std::move( x.second));' + s = s + '\n }' + s = s + '\n}' + s = s + '\n#endif' + return Code().Append(s) def _GenerateMoveAssignOperator(self, type_): - props, dicts = self._GetMoveProps(type_, '%s = rhs.%s;', + props, dicts, addition = self._GetMoveProps(type_, '%s = rhs.%s;', '%s = std::move(rhs.%s);') - s = '{\n' + s = '' + s = s + '\n#if !defined(__GNUC__) || __GNUC__ > 5' + s = s + '\n{' if props: s = s + '\n'.join(props) + + for item in dicts: + s = s + ('\n%s.Swap(&rhs.%s);' % (item, item)) + s = s + '\nreturn *this;\n}' + + s = s + '\n#else' + s = s + '\n{' + additional_props = None + if props: + if addition == True: + additional_props = props.pop() + s = s + '\n'.join(props) + if additional_props != None: + s = s + '\n for (auto& x : rhs.additional_properties) {' + s = s + '\n additional_properties.emplace(std::move(x.first), std::move(x.second));' + s = s + '\n }' + for item in dicts: s = s + ('%s.Swap(&rhs.%s);' % (item, item)) s = s + '\nreturn *this;\n}' + s = s + '\n#endif' return Code().Append(s) diff --git a/chromium/tools/json_schema_compiler/h_generator.py b/chromium/tools/json_schema_compiler/h_generator.py index 9a9bb9b81dd..90e34d33fa3 100644 --- a/chromium/tools/json_schema_compiler/h_generator.py +++ b/chromium/tools/json_schema_compiler/h_generator.py @@ -281,9 +281,7 @@ class _Generator(object): (c.Eblock() .Append() .Sblock(' private:') - .Append('#if !defined(__GNUC__) || __GNUC__ > 5') .Append('DISALLOW_COPY_AND_ASSIGN(%(classname)s);') - .Append('#endif') .Eblock('};') ) return c.Substitute({'classname': classname}) |