fix: potential crash when setting vibrancy (#29677)

This commit is contained in:
Shelley Vohr 2021-06-16 08:39:20 +02:00 коммит произвёл GitHub
Родитель 81795744cf
Коммит 2ae7e04598
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -1360,8 +1360,6 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
return;
}
vibrancy_type_ = type;
NSVisualEffectView* effect_view = (NSVisualEffectView*)vibrant_view;
if (effect_view == nil) {
effect_view = [[[NSVisualEffectView alloc]
@ -1390,7 +1388,7 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
node::Environment* env =
node::Environment::GetCurrent(JavascriptEnvironment::GetIsolate());
NSVisualEffectMaterial vibrancyType;
NSVisualEffectMaterial vibrancyType{};
if (type == "appearance-based") {
EmitWarning(env, "NSVisualEffectMaterialAppearanceBased" + dep_warn,
"electron");
@ -1447,8 +1445,10 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
}
}
if (vibrancyType)
if (vibrancyType) {
vibrancy_type_ = type;
[effect_view setMaterial:vibrancyType];
}
}
void NativeWindowMac::SetWindowButtonVisibility(bool visible) {

Просмотреть файл

@ -1609,6 +1609,13 @@ describe('BrowserWindow module', () => {
w.setVibrancy('' as any);
}).to.not.throw();
});
it('does not crash if vibrancy is set to an invalid value', () => {
const w = new BrowserWindow({ show: false });
expect(() => {
w.setVibrancy('i-am-not-a-valid-vibrancy-type' as any);
}).to.not.throw();
});
});
ifdescribe(process.platform === 'darwin')('trafficLightPosition', () => {