mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
some linting and fixing
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { BrowserWindow } from 'electron/main';
|
||||
|
||||
const { createDesktopCapturer, isDisplayMediaSystemPickerAvailable } = process._linkedBinding('electron_browser_desktop_capturer');
|
||||
|
||||
const deepEqual = (a: ElectronInternal.GetSourcesOptions, b: ElectronInternal.GetSourcesOptions) => JSON.stringify(a) === JSON.stringify(b);
|
||||
@@ -21,7 +22,7 @@ export async function getSources (args: Electron.SourcesOptions, useSystemPicker
|
||||
const resizableValues = new Map();
|
||||
if (process.platform === 'darwin') {
|
||||
// Fix for bug in ScreenCaptureKit that modifies a window's styleMask the first time
|
||||
// it captures a non-resizable window. We record each non-resizable window's styleMask,
|
||||
// it captures a non-resizable window. We record each non-resizable window's styleMask
|
||||
// and we restore modified styleMasks later, after the screen capture.
|
||||
for (const win of BrowserWindow.getAllWindows()) {
|
||||
resizableValues.set([win.id], win.resizable);
|
||||
@@ -39,7 +40,7 @@ export async function getSources (args: Electron.SourcesOptions, useSystemPicker
|
||||
captureScreen,
|
||||
thumbnailSize,
|
||||
fetchWindowIcons,
|
||||
useSystemPicker,
|
||||
useSystemPicker
|
||||
};
|
||||
|
||||
for (const running of currentlyRunning) {
|
||||
|
||||
@@ -7,7 +7,6 @@ const { fromPartition, fromPath, Session } = process._linkedBinding('electron_br
|
||||
const { isDisplayMediaSystemPickerAvailable } = process._linkedBinding('electron_browser_desktop_capturer');
|
||||
|
||||
async function getNativePickerSource (preferredDisplaySurface: string) {
|
||||
|
||||
// Fake video window that activates the native system picker
|
||||
// This is used to get around the need for a screen/window
|
||||
// id in Chrome's desktopCapturer.
|
||||
@@ -23,19 +22,19 @@ async function getNativePickerSource (preferredDisplaySurface: string) {
|
||||
Note: This is an experimental API; please check the API documentation for updated restrictions`);
|
||||
}
|
||||
|
||||
let types: Electron.SourcesOptions["types"];
|
||||
let types: Electron.SourcesOptions['types'];
|
||||
switch (preferredDisplaySurface) {
|
||||
case 'no_preference':
|
||||
types = ['screen', 'window']
|
||||
types = ['screen', 'window'];
|
||||
break;
|
||||
case 'monitor':
|
||||
types = ['screen']
|
||||
types = ['screen'];
|
||||
break;
|
||||
case 'window':
|
||||
types = ['window']
|
||||
types = ['window'];
|
||||
break;
|
||||
default:
|
||||
types = ['screen', 'window']
|
||||
types = ['screen', 'window'];
|
||||
}
|
||||
|
||||
// Pass in the needed options for a more native experience
|
||||
@@ -59,7 +58,7 @@ async function getNativePickerSource (preferredDisplaySurface: string) {
|
||||
|
||||
mediaStreams[0].id = `none:${kMacOsNativePickerId}:${fakeVideoWindowId--}`;
|
||||
|
||||
console.log("MEDIASREEAMS", mediaStreams);
|
||||
console.log('MEDIASREEAMS', mediaStreams);
|
||||
return mediaStreams[0];
|
||||
}
|
||||
|
||||
|
||||
@@ -390,10 +390,10 @@ index 835c1e860501bcc8cb7c7dfe192c113de3d623ff..95950c348f2144761b960fef86390f6c
|
||||
|
||||
return result;
|
||||
diff --git a/content/browser/media/capture/native_screen_capture_picker.cc b/content/browser/media/capture/native_screen_capture_picker.cc
|
||||
index 152f3aa78032ee3f8c48fbefe052a2f1d85bed6b..400d7a2e7bb5d7d590181b9ada950f29f8b391bf 100644
|
||||
index 152f3aa78032ee3f8c48fbefe052a2f1d85bed6b..d46e91ede102c4f4cdac164cabea2e1ac1464f78 100644
|
||||
--- a/content/browser/media/capture/native_screen_capture_picker.cc
|
||||
+++ b/content/browser/media/capture/native_screen_capture_picker.cc
|
||||
@@ -7,18 +7,23 @@
|
||||
@@ -7,6 +7,7 @@
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
#include "content/browser/media/capture/native_screen_capture_picker_mac.h"
|
||||
#include "media/base/media_switches.h"
|
||||
@@ -401,15 +401,13 @@ index 152f3aa78032ee3f8c48fbefe052a2f1d85bed6b..400d7a2e7bb5d7d590181b9ada950f29
|
||||
#endif
|
||||
|
||||
namespace content {
|
||||
|
||||
@@ -14,11 +15,13 @@ namespace content {
|
||||
std::unique_ptr<NativeScreenCapturePicker>
|
||||
MaybeCreateNativeScreenCapturePicker() {
|
||||
+ LOG(INFO) << "content::MaybeCreateNativeScreenCapturePicker()";
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
- if (base::FeatureList::IsEnabled(media::kUseSCContentSharingPicker)) {
|
||||
+
|
||||
+ // if (base::FeatureList::IsEnabled(media::kUseSCContentSharingPicker)) {
|
||||
+ LOG(INFO) << "content::MaybeCreateNativeScreenCapturePicker() - CreateNativeScreenCapturePickerMac()";
|
||||
return CreateNativeScreenCapturePickerMac();
|
||||
- }
|
||||
-#endif
|
||||
|
||||
@@ -293,42 +293,8 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
captured_sources_.clear();
|
||||
|
||||
if (capture_window && capture_screen) {
|
||||
// Some capturers like PipeWire support a single capturer for both screens
|
||||
// and windows. Use it if possible, treating both as window capture
|
||||
// std::unique_ptr<webrtc::DesktopCapturer> desktop_capturer =
|
||||
// webrtc::DesktopCapturer::CreateGenericCapturer(
|
||||
// content::desktop_capture::CreateDesktopCaptureOptions());
|
||||
LOG(INFO) << "capture_window && capture_screen";
|
||||
// auto capturer = desktop_capturer ?
|
||||
// std::make_unique<DesktopCapturerWrapper>(
|
||||
// std::move(desktop_capturer))
|
||||
// : nullptr;
|
||||
// if (capturer && capturer->GetDelegatedSourceListController()) {
|
||||
// LOG(INFO) << "Inside GetDelegatedSourceListController...";
|
||||
// capture_screen_ = false;
|
||||
// capture_window_ = capture_window;
|
||||
// window_capturer_ = std::make_unique<NativeDesktopMediaList>(
|
||||
// DesktopMediaList::Type::kWindow, std::move(capturer));
|
||||
// window_capturer_->SetThumbnailSize(thumbnail_size);
|
||||
|
||||
// OnceCallback update_callback = base::BindOnce(
|
||||
// &DesktopCapturer::UpdateSourcesList,
|
||||
// weak_ptr_factory_.GetWeakPtr(), window_capturer_.get());
|
||||
// OnceCallback failure_callback = base::BindOnce(
|
||||
// &DesktopCapturer::HandleFailure, weak_ptr_factory_.GetWeakPtr());
|
||||
|
||||
// window_listener_ = std::make_unique<DesktopListListener>(
|
||||
// std::move(update_callback), std::move(failure_callback),
|
||||
// thumbnail_size.IsEmpty());
|
||||
// window_capturer_->StartUpdating(window_listener_.get());
|
||||
|
||||
// return;
|
||||
// }
|
||||
|
||||
// TODO: Add flag for MacOS 15
|
||||
if (IsDisplayMediaSystemPickerAvailable()) {
|
||||
auto capturer = MakeScreenAndWindowCapturer();
|
||||
// auto capturer = MakeWindowCapturer();
|
||||
LOG(INFO) << "Inside the IsDisplayMediaSystemPickerAvailable logic";
|
||||
capture_screen_ = false;
|
||||
capture_window_ = capture_window;
|
||||
@@ -343,6 +309,8 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
screen_capturer_->skip_next_refresh_ =
|
||||
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kNone) ? 2 : 0;
|
||||
|
||||
LOG(INFO) << "skipping next refresh";
|
||||
#endif
|
||||
|
||||
OnceCallback update_callback = base::BindOnce(
|
||||
@@ -372,6 +340,37 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
}
|
||||
|
||||
return;
|
||||
} else {
|
||||
// Some capturers like PipeWire support a single capturer for both screens
|
||||
// and windows. Use it if possible, treating both as window capture
|
||||
std::unique_ptr<webrtc::DesktopCapturer> desktop_capturer =
|
||||
webrtc::DesktopCapturer::CreateGenericCapturer(
|
||||
content::desktop_capture::CreateDesktopCaptureOptions());
|
||||
LOG(INFO) << "capture_window && capture_screen";
|
||||
auto capturer = desktop_capturer
|
||||
? std::make_unique<DesktopCapturerWrapper>(
|
||||
std::move(desktop_capturer))
|
||||
: nullptr;
|
||||
if (capturer && capturer->GetDelegatedSourceListController()) {
|
||||
capture_screen_ = false;
|
||||
capture_window_ = capture_window;
|
||||
window_capturer_ = std::make_unique<NativeDesktopMediaList>(
|
||||
DesktopMediaList::Type::kWindow, std::move(capturer));
|
||||
window_capturer_->SetThumbnailSize(thumbnail_size);
|
||||
|
||||
OnceCallback update_callback = base::BindOnce(
|
||||
&DesktopCapturer::UpdateSourcesList, weak_ptr_factory_.GetWeakPtr(),
|
||||
window_capturer_.get());
|
||||
OnceCallback failure_callback = base::BindOnce(
|
||||
&DesktopCapturer::HandleFailure, weak_ptr_factory_.GetWeakPtr());
|
||||
|
||||
window_listener_ = std::make_unique<DesktopListListener>(
|
||||
std::move(update_callback), std::move(failure_callback),
|
||||
thumbnail_size.IsEmpty());
|
||||
window_capturer_->StartUpdating(window_listener_.get());
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,7 +395,7 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
window_capturer_ = std::make_unique<NativeDesktopMediaList>(
|
||||
DesktopMediaList::Type::kWindow, std::move(capturer), true, true);
|
||||
window_capturer_->SetThumbnailSize(thumbnail_size);
|
||||
window_capturer_->ShowDelegatedList();
|
||||
// window_capturer_->ShowDelegatedList();
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
window_capturer_->skip_next_refresh_ =
|
||||
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kWindow) ? 2
|
||||
@@ -408,15 +407,15 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
window_capturer_.get());
|
||||
|
||||
// Needed to force a refresh for the native MacOS Picker
|
||||
OnceCallback wrapped_update_callback = base::BindOnce(
|
||||
&DesktopCapturer::RequestUpdate, weak_ptr_factory_.GetWeakPtr(),
|
||||
window_capturer_.get(), std::move(update_callback));
|
||||
// OnceCallback wrapped_update_callback = base::BindOnce(
|
||||
// &DesktopCapturer::RequestUpdate, weak_ptr_factory_.GetWeakPtr(),
|
||||
// window_capturer_.get(), std::move(update_callback));
|
||||
|
||||
if (window_capturer_->IsSourceListDelegated()) {
|
||||
OnceCallback failure_callback = base::BindOnce(
|
||||
&DesktopCapturer::HandleFailure, weak_ptr_factory_.GetWeakPtr());
|
||||
window_listener_ = std::make_unique<DesktopListListener>(
|
||||
std::move(wrapped_update_callback), std::move(failure_callback),
|
||||
std::move(update_callback), std::move(failure_callback),
|
||||
thumbnail_size.IsEmpty());
|
||||
window_capturer_->StartUpdating(window_listener_.get());
|
||||
} else {
|
||||
@@ -433,12 +432,16 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
screen_capturer_ = std::make_unique<NativeDesktopMediaList>(
|
||||
DesktopMediaList::Type::kScreen, std::move(capturer));
|
||||
screen_capturer_->SetThumbnailSize(thumbnail_size);
|
||||
screen_capturer_->ShowDelegatedList();
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
screen_capturer_->skip_next_refresh_ =
|
||||
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kScreen) ? 2
|
||||
: 0;
|
||||
#endif
|
||||
LOG(INFO) << "Show Delegated List...";
|
||||
// screen_capturer_->ShowDelegatedList();
|
||||
LOG(INFO) << "Showed Delegated List...";
|
||||
// #if BUILDFLAG(IS_MAC)
|
||||
// LOG(INFO) << "should skip next refresh";
|
||||
// screen_capturer_->skip_next_refresh_ =
|
||||
// ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kScreen)
|
||||
// ? 2
|
||||
// : 0;
|
||||
// #endif
|
||||
|
||||
OnceCallback update_callback = base::BindOnce(
|
||||
&DesktopCapturer::UpdateSourcesList, weak_ptr_factory_.GetWeakPtr(),
|
||||
@@ -450,13 +453,16 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||
screen_capturer_.get(), std::move(update_callback));
|
||||
|
||||
if (screen_capturer_->IsSourceListDelegated()) {
|
||||
LOG(INFO) << "Source list is delegated...";
|
||||
|
||||
OnceCallback failure_callback = base::BindOnce(
|
||||
&DesktopCapturer::HandleFailure, weak_ptr_factory_.GetWeakPtr());
|
||||
screen_listener_ = std::make_unique<DesktopListListener>(
|
||||
std::move(wrapped_update_callback), std::move(failure_callback),
|
||||
std::move(update_callback), std::move(failure_callback),
|
||||
thumbnail_size.IsEmpty());
|
||||
screen_capturer_->StartUpdating(screen_listener_.get());
|
||||
} else {
|
||||
LOG(INFO) << "Updating screen capturer, no delegated list...";
|
||||
screen_capturer_->Update(std::move(update_callback),
|
||||
/* refresh_thumbnails = */ true);
|
||||
}
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
|
||||
namespace gin {
|
||||
|
||||
v8::Local<v8::Value> Converter<blink::mojom::PreferredDisplaySurface>::ToV8(v8::Isolate* isolate,
|
||||
blink::mojom::PreferredDisplaySurface type) {
|
||||
v8::Local<v8::Value> Converter<blink::mojom::PreferredDisplaySurface>::ToV8(
|
||||
v8::Isolate* isolate,
|
||||
blink::mojom::PreferredDisplaySurface type) {
|
||||
switch (type) {
|
||||
case blink::mojom::PreferredDisplaySurface::NO_PREFERENCE:
|
||||
return StringToV8(isolate, "no_preference");
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
namespace electron {
|
||||
|
||||
// cf:
|
||||
// cf:
|
||||
// Chrome also allows browser here, but Electron does not.
|
||||
enum PreferredDisplaySurface {
|
||||
NO_PREFERENCE,
|
||||
@@ -33,4 +33,4 @@ struct Converter<blink::mojom::PreferredDisplaySurface> {
|
||||
|
||||
} // namespace gin
|
||||
|
||||
#endif // ELECTRON_SHELL_BROWSER_DISPLAY_SOURCE_CONVERTER_H_
|
||||
#endif // ELECTRON_SHELL_BROWSER_DISPLAY_SOURCE_CONVERTER_H_
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
|
||||
#include "shell/common/gin_converters/media_converter.h"
|
||||
|
||||
#include "shell/common/gin_converters/display_surface_converter.h"
|
||||
#include "content/public/browser/media_stream_request.h"
|
||||
#include "content/public/browser/render_frame_host.h"
|
||||
#include "gin/data_object_builder.h"
|
||||
#include "shell/common/gin_converters/display_surface_converter.h"
|
||||
#include "shell/common/gin_converters/frame_converter.h"
|
||||
#include "shell/common/gin_converters/gurl_converter.h"
|
||||
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
|
||||
|
||||
Reference in New Issue
Block a user