From 2b5f4f9bffe56c4fd9f3a252c0f2aec5e3ea669c Mon Sep 17 00:00:00 2001 From: psykose Date: Sat, 3 Jun 2023 12:19:10 +0000 Subject: [PATCH] testing/electron: back to real libstdc++ --- testing/electron/APKBUILD | 22 +- testing/electron/libcxx-muslmode.patch | 7 - testing/electron/libstdc++13.patch | 379 +++++++++++++++++++++++++ testing/electron/vector-const.patch | 113 ++++++++ 4 files changed, 501 insertions(+), 20 deletions(-) delete mode 100644 testing/electron/libcxx-muslmode.patch create mode 100644 testing/electron/libstdc++13.patch create mode 100644 testing/electron/vector-const.patch diff --git a/testing/electron/APKBUILD b/testing/electron/APKBUILD index 1555af0d2fe..4fff177b43b 100644 --- a/testing/electron/APKBUILD +++ b/testing/electron/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: psykose pkgname=electron pkgver=25.0.1 -pkgrel=0 +pkgrel=1 _chromium=114.0.5735.90 _depot_tools=79f13899e6a718f6b4ab526fc5b4dcd547f90bbe pkgdesc="Electron cross-platform desktop toolkit" @@ -104,7 +104,7 @@ source="$pkgname-$pkgver.tar.zst::https://dev.alpinelinux.org/archive/electron/e fix-missing-cstdint-include-musl.patch gdbinit.patch import-version.patch - libcxx-muslmode.patch + libstdc++13.patch mman.patch musl-sandbox.patch musl-tid-caching.patch @@ -119,6 +119,7 @@ source="$pkgname-$pkgver.tar.zst::https://dev.alpinelinux.org/archive/electron/e icon.patch python-jinja-3.10.patch + vector-const.patch webpack-hash.patch default.conf @@ -249,15 +250,7 @@ prepare() { ./update_npm_deps ) - # these are normally unbundled, but they can't be with custom_libcxx. - # we use custom_libcxx as there are a few libstdc++ incompatibilities - # that now cause segfaults with the wayland ozone platform since electron 22. - # obviously, this is a FIXME. - # --- - # jsoncpp - # re2 - # woff2 - # --- + # re2 - 2023.06 port # libavif - https://github.com/AOMediaCodec/libavif/commit/4d2776a3 # libaom - https://aomedia.googlesource.com/aom/+/706ee36dcc82%5E%21/ local use_system=" @@ -269,6 +262,7 @@ prepare() { freetype harfbuzz-ng icu + jsoncpp libdrm libevent libjpeg @@ -277,6 +271,7 @@ prepare() { libxslt opus snappy + woff2 zlib " @@ -388,7 +383,7 @@ _configure() { proprietary_codecs=true rtc_link_pipewire=true rtc_use_pipewire=true - use_custom_libcxx=true + use_custom_libcxx=false use_dawn=false use_gnome_keyring=false use_pulseaudio=true @@ -466,7 +461,7 @@ fa291e941076146d0edd5b96c088240a44a6e0aca3dfc744929655607182d2dc47e6c35ecb419f7c 9200f78bad70e95c648a5e8392d50642190600f655c6baa366ff6467ebad52d3b3f305dad58f3610da67136f4b723557653b174ec5c25be8d8737ee04d9ee09f fix-missing-cstdint-include-musl.patch 33ee60863cc438ef57ffef92ba4cf67a856a5ffc16138bce241bcf87e47b15154aa86918e793c26f7ec4dc62a445257ad5673ed7001daf22c4043cf6cc57da7f gdbinit.patch 8de65109ece27ea63bd469f2220c56b8c752ba0a50fdf390082a2d5ae74b8e010199126175569f6d5084270dd4e0571e68aec32c0bca8211a6699925b3a09124 import-version.patch -1bb1b31ee3057fb626a2d5eb44698946484e45017310d55026347f18f774453828802438ba14691d81edaad6c96c5df25c4aca772a30674a04feca3df11fccfb libcxx-muslmode.patch +971afb067aa6fa81ada35dfb44e03283da2c8827e19925d964ab4264477790c3ab42153e5963d7de199ba8e45a78b0742898322768e1ba34eb1993844a4ea46f libstdc++13.patch 0e991842e23a4b9133898125eeb39e45e3f86f886eef5d2f0d9a72ee143a3e124b3b4f60be94edd57ce4185bcd69704edb51f76d08fdb6207f5559a08dd41ab0 mman.patch 50c274a420bb8a7f14fcb56e40920dac8f708792a4520789b4987facea459bef88113d5a2b60fa8c57bee6e92bff3617d6b73fa305c8c44614c638971cffd440 musl-sandbox.patch e7163ac5810ac85366cef2447412287c856e3d67c6b77f219a6e5a418b1965b98e449c409424ad0704a5bded9355dd0aec3dc4585918ce5a2ab36c079707afe2 musl-tid-caching.patch @@ -480,6 +475,7 @@ e48693e6b7aeebf69a5acbf80d9a35defe4c23835121dfeb58b051ac7c527e758a41004f4d193274 ce6991ca3396d61fda9d2755bc6bfaeb14414fd9353bda960001b027af9ce4cd61c894c9700e4ec13a992a46e44ee87dba42c3251afc0e86e727354f349dc9d0 webauthn-variant.patch 905565c10f5e5600e7d4db965c892cc45009a258e9995da958974d838ace469e1db1019195307e8807860d5b55ba6bfeea478b1f39a9b99e82c619b2816a1a22 icon.patch e05180199ee1d559e4e577cedd3e589844ecf40d98a86321bf1bea5607b02eeb5feb486deddae40e1005b644550331f6b8500177aa7e79bcb3750d3c1ceb76c3 python-jinja-3.10.patch +71571b15cf8bd6259b7fd22bea0e46b64890f3db776365de33fe539f26ce9ef99459e05c3dde9434c3657225bc67160abc915acd93033cb487c770c6a2a5975f vector-const.patch 2aa340854316f1284217c0ca17cbf44953684ad6c7da90815117df30928612eb9fb9ffb734b948dfc309cd25d1a67cd57f77aac2d052a3dd9aca07a3a58cbb30 webpack-hash.patch 08460b15037511a4e5469ceac6ae5dd4db4c8cb87c129aaaf40ba58b16c60b8a307ffdd85805efead235758abed09ec31db1ef4cf9159f7b9acdcee3031bc96c default.conf 191559fc7aa1ea0353c6fb0cc321ee1d5803a0e44848c8be941cfab96277b0de6a59962d373e2a2a1686c8f9be2bcf2d2f33706759a339a959e297d3f7fda463 electron.desktop diff --git a/testing/electron/libcxx-muslmode.patch b/testing/electron/libcxx-muslmode.patch deleted file mode 100644 index 1efcc09abd9..00000000000 --- a/testing/electron/libcxx-muslmode.patch +++ /dev/null @@ -1,7 +0,0 @@ ---- a/buildtools/third_party/libc++/__config_site -+++ b/buildtools/third_party/libc++/__config_site -@@ -49,3 +49,4 @@ - #define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES - -+#define _LIBCPP_HAS_MUSL_LIBC - #endif // _LIBCPP_CONFIG_SITE diff --git a/testing/electron/libstdc++13.patch b/testing/electron/libstdc++13.patch new file mode 100644 index 00000000000..dcc67a94bb4 --- /dev/null +++ b/testing/electron/libstdc++13.patch @@ -0,0 +1,379 @@ +missing libstdc++13 includes +-- +--- a/third_party/ruy/src/ruy/profiler/instrumentation.h ++++ b/third_party/ruy/src/ruy/profiler/instrumentation.h +@@ -19,6 +19,7 @@ + #ifdef RUY_PROFILER + #include + #include ++#include + #include + #endif + +--- a/third_party/openscreen/src/platform/base/error.h ++++ b/third_party/openscreen/src/platform/base/error.h +@@ -6,6 +6,7 @@ + #define PLATFORM_BASE_ERROR_H_ + + #include ++#include + #include + #include + #include +--- a/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h ++++ b/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +@@ -2389,6 +2389,7 @@ + #undef VMA_IMPLEMENTATION + + #include ++#include + #include + #include + #include +--- a/third_party/swiftshader/third_party/llvm-10.0/llvm/include/llvm/Support/Signals.h ++++ b/third_party/swiftshader/third_party/llvm-10.0/llvm/include/llvm/Support/Signals.h +@@ -14,6 +14,7 @@ + #ifndef LLVM_SUPPORT_SIGNALS_H + #define LLVM_SUPPORT_SIGNALS_H + ++#include + #include + + namespace llvm { +--- a/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h ++++ b/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h +@@ -2579,6 +2579,7 @@ + #undef VMA_IMPLEMENTATION + + #include ++#include + #include + #include + #include +--- a/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.cc ++++ b/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.cc +@@ -17,6 +17,7 @@ + + #include + #include ++#include + + #include "third_party/fft2d/fft.h" + +--- a/ui/base/prediction/kalman_filter.h ++++ b/ui/base/prediction/kalman_filter.h +@@ -8,6 +8,8 @@ + #include "base/component_export.h" + #include "ui/gfx/geometry/matrix3_f.h" + ++#include ++ + namespace ui { + + // This Kalman filter is used to predict state in one axles. +--- a/base/strings/string_piece.h ++++ b/base/strings/string_piece.h +@@ -24,6 +24,7 @@ + #include + + #include ++#include + #include + #include + #include +--- a/ui/events/types/scroll_types.h ++++ b/ui/events/types/scroll_types.h +@@ -5,6 +5,8 @@ + #ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_ + #define UI_EVENTS_TYPES_SCROLL_TYPES_H_ + ++#include ++ + namespace ui { + + enum class ScrollGranularity : uint8_t { +--- a/third_party/webrtc/rtc_base/system/file_wrapper.h ++++ b/third_party/webrtc/rtc_base/system/file_wrapper.h +@@ -14,6 +14,7 @@ + #include + #include + ++#include + #include + + #include "absl/strings/string_view.h" +--- a/third_party/pdfium/constants/annotation_flags.h ++++ b/third_party/pdfium/constants/annotation_flags.h +@@ -5,6 +5,8 @@ + #ifndef CONSTANTS_ANNOTATION_FLAGS_H_ + #define CONSTANTS_ANNOTATION_FLAGS_H_ + ++#include ++ + namespace pdfium { + namespace annotation_flags { + +--- a/third_party/s2cellid/src/s2/util/math/mathutil.h ++++ b/third_party/s2cellid/src/s2/util/math/mathutil.h +@@ -21,6 +21,7 @@ + #ifndef S2_UTIL_MATH_MATHUTIL_H_ + #define S2_UTIL_MATH_MATHUTIL_H_ + ++#include + #include + + class MathUtil { +--- a/third_party/s2cellid/src/s2/s1angle.h ++++ b/third_party/s2cellid/src/s2/s1angle.h +@@ -24,6 +24,7 @@ + #define S2_S1ANGLE_H_ + + #include ++#include + #include + #include + #include +--- a/third_party/maldoca/src/maldoca/ole/header.h ++++ b/third_party/maldoca/src/maldoca/ole/header.h +@@ -45,6 +45,8 @@ + + #include "absl/strings/string_view.h" + ++#include ++ + namespace maldoca { + + class OLEHeader { +--- a/base/cpu.h ++++ b/base/cpu.h +@@ -5,6 +5,7 @@ + #ifndef BASE_CPU_H_ + #define BASE_CPU_H_ + ++#include + #include + + #include "base/base_export.h" +--- a/components/password_manager/core/browser/generation/password_generator.h ++++ b/components/password_manager/core/browser/generation/password_generator.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_ + #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_ + ++#include + #include + + +--- a/base/debug/profiler.h ++++ b/base/debug/profiler.h +@@ -7,6 +7,7 @@ + + #include + ++#include + #include + + #include "base/base_export.h" +--- a/components/dom_distiller/core/url_utils.h ++++ b/components/dom_distiller/core/url_utils.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_DOM_DISTILLER_CORE_URL_UTILS_H_ + #define COMPONENTS_DOM_DISTILLER_CORE_URL_UTILS_H_ + ++#include + #include + + #include "base/strings/string_piece_forward.h" +--- a/components/feature_engagement/internal/event_storage_validator.h ++++ b/components/feature_engagement/internal/event_storage_validator.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_ + #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_ + ++#include + #include + + namespace feature_engagement { +--- a/chrome/test/chromedriver/chrome/web_view_impl.cc ++++ b/chrome/test/chromedriver/chrome/web_view_impl.cc +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + #include + #include + +--- a/cc/trees/target_property.cc ++++ b/cc/trees/target_property.cc +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include ++ + #include "cc/trees/target_property.h" + + #include "ui/gfx/animation/keyframe/target_property.h" +--- a/components/viz/common/view_transition_element_resource_id.h ++++ b/components/viz/common/view_transition_element_resource_id.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_VIZ_COMMON_VIEW_TRANSITION_ELEMENT_RESOURCE_ID_H_ + #define COMPONENTS_VIZ_COMMON_VIEW_TRANSITION_ELEMENT_RESOURCE_ID_H_ + ++#include + #include + #include + +--- a/gpu/config/gpu_feature_info.h ++++ b/gpu/config/gpu_feature_info.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_ + #define GPU_CONFIG_GPU_FEATURE_INFO_H_ + ++#include + #include + #include + +--- a/gpu/config/gpu_driver_bug_workarounds.h ++++ b/gpu/config/gpu_driver_bug_workarounds.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_GPU_DRIVER_BUG_WORKAROUNDS_H_ + #define GPU_CONFIG_GPU_DRIVER_BUG_WORKAROUNDS_H_ + ++#include + #include + + #include "build/build_config.h" +--- a/third_party/blink/public/common/page_state/page_state.h ++++ b/third_party/blink/public/common/page_state/page_state.h +@@ -5,6 +5,7 @@ + #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_H_ + #define THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_H_ + ++#include + #include + #include + +--- a/pdf/document_attachment_info.h ++++ b/pdf/document_attachment_info.h +@@ -5,6 +5,7 @@ + #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_ + #define PDF_DOCUMENT_ATTACHMENT_INFO_H_ + ++#include + #include + + +--- a/components/payments/content/utility/fingerprint_parser.h ++++ b/components/payments/content/utility/fingerprint_parser.h +@@ -7,6 +7,7 @@ + + #include + ++#include + #include + #include + +--- a/net/cert/pki/string_util.h ++++ b/net/cert/pki/string_util.h +@@ -7,6 +7,7 @@ + + #include "net/base/net_export.h" + ++#include + #include + #include + +--- a/media/base/video_transformation.h ++++ b/media/base/video_transformation.h +@@ -5,6 +5,7 @@ + #ifndef MEDIA_BASE_VIDEO_TRANSFORMATION_H_ + #define MEDIA_BASE_VIDEO_TRANSFORMATION_H_ + ++#include + #include + + #include "base/numerics/math_constants.h" +--- a/components/omnibox/browser/on_device_head_model.h ++++ b/components/omnibox/browser/on_device_head_model.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_ + #define COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_ + ++#include + #include + #include + #include +--- a/components/autofill/core/browser/autofill_ablation_study.h ++++ b/components/autofill/core/browser/autofill_ablation_study.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_ + #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_ + ++#include + #include + + class GURL; +--- a/components/autofill/core/browser/strike_databases/strike_database_base.h ++++ b/components/autofill/core/browser/strike_databases/strike_database_base.h +@@ -5,6 +5,7 @@ + #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_STRIKE_DATABASES_STRIKE_DATABASE_BASE_H_ + #define COMPONENTS_AUTOFILL_CORE_BROWSER_STRIKE_DATABASES_STRIKE_DATABASE_BASE_H_ + ++#include + #include + #include + #include +--- a/chrome/browser/privacy_budget/encountered_surface_tracker.h ++++ b/chrome/browser/privacy_budget/encountered_surface_tracker.h +@@ -5,6 +5,7 @@ + #ifndef CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_ + #define CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_ + ++#include + #include + + #include "base/containers/flat_set.h" +--- a/chrome/browser/resource_coordinator/decision_details.h ++++ b/chrome/browser/resource_coordinator/decision_details.h +@@ -5,6 +5,7 @@ + #ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_DECISION_DETAILS_H_ + #define CHROME_BROWSER_RESOURCE_COORDINATOR_DECISION_DETAILS_H_ + ++#include + #include + #include + +--- a/net/third_party/quiche/src/quiche/quic/core/qpack/qpack_stream_sender_delegate.h ++++ b/net/third_party/quiche/src/quiche/quic/core/qpack/qpack_stream_sender_delegate.h +@@ -8,6 +8,8 @@ + #include "absl/strings/string_view.h" + #include "quiche/quic/platform/api/quic_export.h" + ++#include ++ + namespace quic { + + // This interface writes encoder/decoder data to peer. +--- a/third_party/perfetto/src/trace_processor/sqlite/query_constraints.h ++++ b/third_party/perfetto/src/trace_processor/sqlite/query_constraints.h +@@ -17,6 +17,7 @@ + #ifndef SRC_TRACE_PROCESSOR_SQLITE_QUERY_CONSTRAINTS_H_ + #define SRC_TRACE_PROCESSOR_SQLITE_QUERY_CONSTRAINTS_H_ + ++#include + #include + #include + +--- a/third_party/perfetto/include/perfetto/base/export.h ++++ b/third_party/perfetto/include/perfetto/base/export.h +@@ -17,6 +17,8 @@ + #ifndef INCLUDE_PERFETTO_BASE_EXPORT_H_ + #define INCLUDE_PERFETTO_BASE_EXPORT_H_ + ++#include ++ + #include "perfetto/base/build_config.h" + #include "perfetto/public/abi/export.h" + diff --git a/testing/electron/vector-const.patch b/testing/electron/vector-const.patch new file mode 100644 index 00000000000..cb65e12857b --- /dev/null +++ b/testing/electron/vector-const.patch @@ -0,0 +1,113 @@ +--- a/chrome/browser/process_singleton_posix.cc ++++ b/chrome/browser/process_singleton_posix.cc +@@ -607,7 +607,7 @@ + // |reader| is for sending back ACK message. + void HandleMessage(const std::string& current_dir, + const std::vector& argv, +- const std::vector additional_data, ++ const std::vector additional_data, + SocketReader* reader); + + private: +@@ -664,7 +664,7 @@ + void ProcessSingleton::LinuxWatcher::HandleMessage( + const std::string& current_dir, + const std::vector& argv, +- const std::vector additional_data, ++ const std::vector additional_data, + SocketReader* reader) { + DCHECK(ui_task_runner_->BelongsToCurrentThread()); + DCHECK(reader); +@@ -754,7 +754,7 @@ + base::StringToSizeT(tokens[0], &num_args); + std::vector command_line(tokens.begin() + 1, tokens.begin() + 1 + num_args); + +- std::vector additional_data; ++ std::vector additional_data; + if (tokens.size() >= 3 + num_args) { + size_t additional_data_size; + base::StringToSizeT(tokens[1 + num_args], &additional_data_size); +@@ -763,7 +763,7 @@ + std::string(1, kTokenDelimiter)); + const uint8_t* additional_data_bits = + reinterpret_cast(remaining_args.c_str()); +- additional_data = std::vector( ++ additional_data = std::vector( + additional_data_bits, additional_data_bits + additional_data_size); + } + +--- a/chrome/browser/process_singleton.h ++++ b/chrome/browser/process_singleton.h +@@ -102,7 +102,7 @@ + using NotificationCallback = + base::RepeatingCallback additional_data)>; ++ const std::vector additional_data)>; + + #if BUILDFLAG(IS_WIN) + ProcessSingleton(const std::string& program_name, +--- a/chrome/browser/process_singleton_win.cc ++++ b/chrome/browser/process_singleton_win.cc +@@ -81,7 +81,7 @@ + bool ParseCommandLine(const COPYDATASTRUCT* cds, + base::CommandLine* parsed_command_line, + base::FilePath* current_directory, +- std::vector* parsed_additional_data) { ++ std::vector* parsed_additional_data) { + // We should have enough room for the shortest command (min_message_size) + // and also be a multiple of wchar_t bytes. The shortest command + // possible is L"START\0\0" (empty command line, current directory, +@@ -163,7 +163,7 @@ + msg.substr(fourth_null + 1, fifth_null - fourth_null); + const uint8_t* additional_data_bytes = + reinterpret_cast(additional_data.c_str()); +- *parsed_additional_data = std::vector(additional_data_bytes, ++ *parsed_additional_data = std::vector(additional_data_bytes, + additional_data_bytes + additional_data_length); + + return true; +@@ -187,7 +187,7 @@ + + base::CommandLine parsed_command_line(base::CommandLine::NO_PROGRAM); + base::FilePath current_directory; +- std::vector additional_data; ++ std::vector additional_data; + if (!ParseCommandLine(cds, &parsed_command_line, ¤t_directory, &additional_data)) { + *result = TRUE; + return true; +--- a/electron/shell/browser/api/electron_api_app.cc ++++ b/electron/shell/browser/api/electron_api_app.cc +@@ -519,10 +519,10 @@ + const base::RepeatingCallback< + void(const base::CommandLine& command_line, + const base::FilePath& current_directory, +- const std::vector additional_data)>& callback, ++ const std::vector additional_data)>& callback, + const base::CommandLine& cmd, + const base::FilePath& cwd, +- const std::vector additional_data) { ++ const std::vector additional_data) { + // Make sure the callback is called after app gets ready. + if (Browser::Get()->is_ready()) { + callback.Run(cmd, cwd, std::move(additional_data)); +@@ -1082,7 +1082,7 @@ + + void App::OnSecondInstance(const base::CommandLine& cmd, + const base::FilePath& cwd, +- const std::vector additional_data) { ++ const std::vector additional_data) { + v8::Isolate* isolate = JavascriptEnvironment::GetIsolate(); + v8::Locker locker(isolate); + v8::HandleScope handle_scope(isolate); +--- a/electron/shell/browser/api/electron_api_app.h ++++ b/electron/shell/browser/api/electron_api_app.h +@@ -195,7 +195,7 @@ + std::string GetLocaleCountryCode(); + void OnSecondInstance(const base::CommandLine& cmd, + const base::FilePath& cwd, +- const std::vector additional_data); ++ const std::vector additional_data); + bool HasSingleInstanceLock() const; + bool RequestSingleInstanceLock(gin::Arguments* args); + void ReleaseSingleInstanceLock();