mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: use ScreenCaptureKit exclusively on macOS 14.4 and higher (#41403)
This fixes a nasty warning / permission dialog that pops up to end-users when consuming legacy APIs. Chrome has flipped these flags via field trials as have other Electron apps. It should just be the default. Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
This commit is contained in:
@@ -385,6 +385,7 @@ filenames = {
|
||||
"shell/browser/extended_web_contents_observer.h",
|
||||
"shell/browser/feature_list.cc",
|
||||
"shell/browser/feature_list.h",
|
||||
"shell/browser/feature_list_mac.mm",
|
||||
"shell/browser/file_select_helper.cc",
|
||||
"shell/browser/file_select_helper.h",
|
||||
"shell/browser/file_select_helper_mac.mm",
|
||||
|
||||
@@ -49,6 +49,11 @@ void InitializeFeatureList() {
|
||||
// 'custom dictionary word list API' spec to crash.
|
||||
std::string(",") + spellcheck::kWinDelaySpellcheckServiceInit.name;
|
||||
#endif
|
||||
std::string platform_specific_enable_features =
|
||||
EnablePlatformSpecificFeatures();
|
||||
if (platform_specific_enable_features.size() > 0) {
|
||||
enable_features += std::string(",") + platform_specific_enable_features;
|
||||
}
|
||||
base::FeatureList::InitInstance(enable_features, disable_features);
|
||||
}
|
||||
|
||||
@@ -60,4 +65,10 @@ void InitializeFieldTrials() {
|
||||
base::FieldTrialList::CreateTrialsFromString(force_fieldtrials);
|
||||
}
|
||||
|
||||
#if !BUILDFLAG(IS_MAC)
|
||||
std::string EnablePlatformSpecificFeatures() {
|
||||
return "";
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace electron
|
||||
|
||||
@@ -5,9 +5,12 @@
|
||||
#ifndef ELECTRON_SHELL_BROWSER_FEATURE_LIST_H_
|
||||
#define ELECTRON_SHELL_BROWSER_FEATURE_LIST_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace electron {
|
||||
void InitializeFeatureList();
|
||||
void InitializeFieldTrials();
|
||||
std::string EnablePlatformSpecificFeatures();
|
||||
} // namespace electron
|
||||
|
||||
#endif // ELECTRON_SHELL_BROWSER_FEATURE_LIST_H_
|
||||
|
||||
28
shell/browser/feature_list_mac.mm
Normal file
28
shell/browser/feature_list_mac.mm
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) 2024 Salesforce, Inc.
|
||||
// Use of this source code is governed by the MIT license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "electron/shell/browser/feature_list.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace electron {
|
||||
|
||||
std::string EnablePlatformSpecificFeatures() {
|
||||
if (@available(macOS 14.4, *)) {
|
||||
// These flags aren't exported so reference them by name directly, they are
|
||||
// used to ensure that screen and window capture exclusive use
|
||||
// ScreenCaptureKit APIs to avoid warning dialogs on macOS 14.4 and higher.
|
||||
// kScreenCaptureKitPickerScreen,
|
||||
// chrome/browser/media/webrtc/thumbnail_capturer_mac.mm
|
||||
// kScreenCaptureKitStreamPickerSonoma,
|
||||
// chrome/browser/media/webrtc/thumbnail_capturer_mac.mm
|
||||
// kThumbnailCapturerMac,
|
||||
// chrome/browser/media/webrtc/thumbnail_capturer_mac.mm
|
||||
return "ScreenCaptureKitPickerScreen,ScreenCaptureKitStreamPickerSonoma,"
|
||||
"ThumbnailCapturerMac:capture_mode/sc_screenshot_manager";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
} // namespace electron
|
||||
Reference in New Issue
Block a user