summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Bruning <michael.bruning@qt.io>2019-10-15 18:08:23 +0200
committerMichael BrĂ¼ning <michael.bruning@qt.io>2019-10-16 14:44:58 +0000
commita42666a17663f7fdad5be9640527b60d6018cea5 (patch)
tree0b08fffd491242f30999d16f8b6b0c0ece592e77
parent3d7a96629b790ee12d9be864e284c14606da649d (diff)
downloadqtwebengine-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>
-rw-r--r--chromium/extensions/common/api/bluetooth/bluetooth_manifest_handler.cc4
-rw-r--r--chromium/extensions/common/api/declarative/declarative_manifest_handler.cc4
-rw-r--r--chromium/extensions/common/api/declarative_net_request/dnr_manifest_handler.cc4
-rw-r--r--chromium/extensions/common/api/printer_provider/usb_printer_manifest_handler.cc4
-rw-r--r--chromium/extensions/common/api/sockets/sockets_manifest_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/app_isolation_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/automation.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/background_info.cc5
-rw-r--r--chromium/extensions/common/manifest_handlers/content_capabilities_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/content_scripts_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/csp_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/default_locale_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/externally_connectable.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/file_handler_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/icons_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/incognito_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/kiosk_mode_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/mime_types_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/nacl_modules_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/oauth2_manifest_handler.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/offline_enabled_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/options_page_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/requirements_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/sandboxed_page_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/shared_module_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/web_accessible_resources_info.cc4
-rw-r--r--chromium/extensions/common/manifest_handlers/webview_info.cc4
-rw-r--r--chromium/extensions/common/manifest_url_handlers.cc8
-rw-r--r--chromium/extensions/common/permissions/permissions_info.h11
-rw-r--r--chromium/tools/json_schema_compiler/cc_generator.py51
-rw-r--r--chromium/tools/json_schema_compiler/h_generator.py2
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})