summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorkodehawa2021-01-26 00:37:43 -0300
committerkodehawa2021-01-26 00:37:43 -0300
commitb9903847bb0cf931c3b39b567b24b0cd0a916a8c (patch)
treed3c4ce4d8c811197a495a04fe9f70ee402dfcf5d
parent492bca3a6960140265dff0c7221bf5041f0bb132 (diff)
downloadaur-b9903847bb0cf931c3b39b567b24b0cd0a916a8c.tar.gz
add temp patch to fix discord
-rw-r--r--.SRCINFO4
-rw-r--r--0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch160
-rw-r--r--PKGBUILD8
3 files changed, 169 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ce2a3ea87c5e..ae714b265648 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = electron-ozone
pkgdesc = Electron compiled with wayland support via Ozone
pkgver = 11.2.1
- pkgrel = 3
+ pkgrel = 4
url = https://electronjs.org/
arch = x86_64
license = MIT
@@ -51,6 +51,7 @@ pkgbase = electron-ozone
source = v8-icu68.patch
source = chromium-skia-harmony.patch
source = 0001-fix-add-Wayland-support-26022.patch
+ source = 0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch
sha256sums = SKIP
sha256sums = SKIP
sha256sums = 5270db01f3f8aaa5137dec275a02caa832b7f2e37942e068cba8d28b3a29df39
@@ -60,5 +61,6 @@ pkgbase = electron-ozone
sha256sums = 6e919c9712d8fe6c2918778df1f8c2ee0675a87a48be5d2aaa54e320703ced4b
sha256sums = 771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1
sha256sums = f896ed4008feb76be3a9bef17d6e237b8592de19dc667b1905cacd311e97c70b
+ sha256sums = 151edbe0ef4098a4ab730652327b00215f6b67ce0df89a26a2da24888c65fcb5
pkgname = electron-ozone
diff --git a/0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch b/0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch
new file mode 100644
index 000000000000..e9ca24af1e86
--- /dev/null
+++ b/0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch
@@ -0,0 +1,160 @@
+From 47640eaa9a5cd3d4ed53f841f34f30c49f89cff9 Mon Sep 17 00:00:00 2001
+From: Charles Kerr <charles@charleskerr.com>
+Date: Mon, 25 Jan 2021 14:44:04 -0600
+Subject: [PATCH] fix: don't throw on bad icons in BrowserWindow constructor
+ (#27441) (#27478)
+
+---
+ shell/browser/api/electron_api_base_window.cc | 11 ++++++--
+ shell/browser/api/electron_api_base_window.h | 3 ++
+ shell/common/api/electron_api_native_image.cc | 28 ++++++++++++++-----
+ shell/common/api/electron_api_native_image.h | 10 +++++--
+ spec-main/api-browser-window-spec.ts | 9 ++++++
+ 5 files changed, 49 insertions(+), 12 deletions(-)
+
+diff --git a/shell/browser/api/electron_api_base_window.cc b/shell/browser/api/electron_api_base_window.cc
+index 4995db43e..d053ed6e8 100644
+--- a/shell/browser/api/electron_api_base_window.cc
++++ b/shell/browser/api/electron_api_base_window.cc
+@@ -101,7 +101,7 @@ BaseWindow::BaseWindow(v8::Isolate* isolate,
+ #if defined(TOOLKIT_VIEWS)
+ v8::Local<v8::Value> icon;
+ if (options.Get(options::kIcon, &icon)) {
+- SetIcon(isolate, icon);
++ SetIconImpl(isolate, icon, NativeImage::OnConvertError::kWarn);
+ }
+ #endif
+ }
+@@ -999,8 +999,15 @@ bool BaseWindow::SetThumbarButtons(gin_helper::Arguments* args) {
+
+ #if defined(TOOLKIT_VIEWS)
+ void BaseWindow::SetIcon(v8::Isolate* isolate, v8::Local<v8::Value> icon) {
++ SetIconImpl(isolate, icon, NativeImage::OnConvertError::kThrow);
++}
++
++void BaseWindow::SetIconImpl(v8::Isolate* isolate,
++ v8::Local<v8::Value> icon,
++ NativeImage::OnConvertError on_error) {
+ NativeImage* native_image = nullptr;
+- if (!NativeImage::TryConvertNativeImage(isolate, icon, &native_image))
++ if (!NativeImage::TryConvertNativeImage(isolate, icon, &native_image,
++ on_error))
+ return;
+
+ #if defined(OS_WIN)
+diff --git a/shell/browser/api/electron_api_base_window.h b/shell/browser/api/electron_api_base_window.h
+index 912c2306f..2276e83b5 100644
+--- a/shell/browser/api/electron_api_base_window.h
++++ b/shell/browser/api/electron_api_base_window.h
+@@ -222,6 +222,9 @@ class BaseWindow : public gin_helper::TrackableObject<BaseWindow>,
+ bool SetThumbarButtons(gin_helper::Arguments* args);
+ #if defined(TOOLKIT_VIEWS)
+ void SetIcon(v8::Isolate* isolate, v8::Local<v8::Value> icon);
++ void SetIconImpl(v8::Isolate* isolate,
++ v8::Local<v8::Value> icon,
++ NativeImage::OnConvertError on_error);
+ #endif
+ #if defined(OS_WIN)
+ typedef base::RepeatingCallback<void(v8::Local<v8::Value>,
+diff --git a/shell/common/api/electron_api_native_image.cc b/shell/common/api/electron_api_native_image.cc
+index c786d0eb8..2c087a313 100644
+--- a/shell/common/api/electron_api_native_image.cc
++++ b/shell/common/api/electron_api_native_image.cc
+@@ -10,6 +10,7 @@
+ #include <vector>
+
+ #include "base/files/file_util.h"
++#include "base/logging.h"
+ #include "base/strings/pattern.h"
+ #include "base/strings/string_util.h"
+ #include "base/strings/utf_string_conversions.h"
+@@ -140,7 +141,10 @@ NativeImage::~NativeImage() {
+ // static
+ bool NativeImage::TryConvertNativeImage(v8::Isolate* isolate,
+ v8::Local<v8::Value> image,
+- NativeImage** native_image) {
++ NativeImage** native_image,
++ OnConvertError on_error) {
++ std::string error_message;
++
+ base::FilePath icon_path;
+ if (gin::ConvertFromV8(isolate, image, &icon_path)) {
+ *native_image = NativeImage::CreateFromPath(isolate, icon_path).get();
+@@ -150,17 +154,27 @@ bool NativeImage::TryConvertNativeImage(v8::Isolate* isolate,
+ #else
+ const auto img_path = icon_path.value();
+ #endif
+- isolate->ThrowException(v8::Exception::Error(gin::StringToV8(
+- isolate, "Failed to load image from path '" + img_path + "'")));
+- return false;
++ error_message = "Failed to load image from path '" + img_path + "'";
+ }
+ } else {
+ if (!gin::ConvertFromV8(isolate, image, native_image)) {
+- isolate->ThrowException(v8::Exception::Error(gin::StringToV8(
+- isolate, "Argument must be a file path or a NativeImage")));
+- return false;
++ error_message = "Argument must be a file path or a NativeImage";
+ }
+ }
++
++ if (!error_message.empty()) {
++ switch (on_error) {
++ case OnConvertError::kThrow:
++ isolate->ThrowException(
++ v8::Exception::Error(gin::StringToV8(isolate, error_message)));
++ break;
++ case OnConvertError::kWarn:
++ LOG(WARNING) << error_message;
++ break;
++ }
++ return false;
++ }
++
+ return true;
+ }
+
+diff --git a/shell/common/api/electron_api_native_image.h b/shell/common/api/electron_api_native_image.h
+index 1c89fcdfa..f0ecb35cc 100644
+--- a/shell/common/api/electron_api_native_image.h
++++ b/shell/common/api/electron_api_native_image.h
+@@ -77,9 +77,13 @@ class NativeImage : public gin::Wrappable<NativeImage> {
+
+ static v8::Local<v8::FunctionTemplate> GetConstructor(v8::Isolate* isolate);
+
+- static bool TryConvertNativeImage(v8::Isolate* isolate,
+- v8::Local<v8::Value> image,
+- NativeImage** native_image);
++ enum class OnConvertError { kThrow, kWarn };
++
++ static bool TryConvertNativeImage(
++ v8::Isolate* isolate,
++ v8::Local<v8::Value> image,
++ NativeImage** native_image,
++ OnConvertError on_error = OnConvertError::kThrow);
+
+ // gin::Wrappable
+ static gin::WrapperInfo kWrapperInfo;
+diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts
+index 379cdff04..7e490427c 100644
+--- a/spec-main/api-browser-window-spec.ts
++++ b/spec-main/api-browser-window-spec.ts
+@@ -62,6 +62,15 @@ describe('BrowserWindow module', () => {
+ const appProcess = childProcess.spawn(process.execPath, [appPath]);
+ await new Promise((resolve) => { appProcess.once('exit', resolve); });
+ });
++
++ it('does not crash or throw when passed an invalid icon', async () => {
++ expect(() => {
++ const w = new BrowserWindow({
++ icon: undefined
++ } as any);
++ w.destroy();
++ }).not.to.throw();
++ });
+ });
+
+ describe('garbage collection', () => {
+--
+2.30.0
+
diff --git a/PKGBUILD b/PKGBUILD
index 0d58a8321bdd..1ea72cc55260 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -9,7 +9,7 @@ provides=('electron')
conflicts=('electron')
_commit=8805b996e0d8cfb6e3921f9b586366bafb125b59
_chromiumver=87.0.4280.141
-pkgrel=3
+pkgrel=4
pkgdesc='Electron compiled with wayland support via Ozone'
arch=('x86_64')
url='https://electronjs.org/'
@@ -33,6 +33,7 @@ source=('git+https://github.com/electron/electron.git'
'v8-icu68.patch'
'chromium-skia-harmony.patch'
'0001-fix-add-Wayland-support-26022.patch'
+ '0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch'
)
sha256sums=('SKIP'
'SKIP'
@@ -42,7 +43,8 @@ sha256sums=('SKIP'
'38fb5218331d6e03915490dab64f7b8bf26833a581d1aaa02090437c67e9439c'
'6e919c9712d8fe6c2918778df1f8c2ee0675a87a48be5d2aaa54e320703ced4b'
'771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
- 'f896ed4008feb76be3a9bef17d6e237b8592de19dc667b1905cacd311e97c70b')
+ 'f896ed4008feb76be3a9bef17d6e237b8592de19dc667b1905cacd311e97c70b'
+ '151edbe0ef4098a4ab730652327b00215f6b67ce0df89a26a2da24888c65fcb5')
_system_libs=('ffmpeg'
'flac'
@@ -92,6 +94,8 @@ prepare() {
cd src/electron
echo "Applying local electron patches"
+ # Discord crash fix. Remove on 11.2.2 (!)
+ patch -Np1 -i ../../0001-fix-don-t-throw-on-bad-icons-in-BrowserWindow-constr.patch
patch -Np1 -i ../../0001-fix-add-Wayland-support-26022.patch
cd ../../