some linting and fixing

This commit is contained in:
George Xu
2025-01-27 16:58:06 -08:00
parent 3e6834099e
commit f8aae32c6c
7 changed files with 70 additions and 65 deletions

View File

@@ -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) {

View File

@@ -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];
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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");

View File

@@ -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_

View File

@@ -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"