browser(firefox): screencast for Mac headful (#2985)

This commit is contained in:
Yury Semikhatsky 2020-07-16 15:34:33 -07:00 committed by GitHub
parent 056f0e290d
commit 89ccf99b90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 25 deletions

View File

@ -1,2 +1,2 @@
1129
Changed: yurys@chromium.org Wed Jul 15 23:55:13 GMTST 2020
1130
Changed: yurys@chromium.org Thu Jul 16 15:31:21 PDT 2020

View File

@ -296,7 +296,8 @@ class PageHandler {
const docShell = this._pageTarget._gBrowser.ownerGlobal.docShell;
// Exclude address bar and navigation control from the video.
const rect = this._pageTarget.linkedBrowser().getBoundingClientRect();
this._videoSessionId = screencast.startVideoRecording(docShell, file, width, height, scale || 0, rect.top);
const devicePixelRatio = this._pageTarget._window.devicePixelRatio;
this._videoSessionId = screencast.startVideoRecording(docShell, file, width, height, scale || 0, devicePixelRatio * rect.top);
}
stopVideoRecording() {

View File

@ -37,30 +37,14 @@ rtc::scoped_refptr<webrtc::VideoCaptureModule> CreateWindowCapturer(nsIWidget* w
HeadlessWidget* headlessWidget = static_cast<HeadlessWidget*>(widget);
return HeadlessWindowCapturer::Create(headlessWidget);
}
#ifdef MOZ_WIDGET_GTK
mozilla::widget::CompositorWidgetInitData initData;
widget->GetCompositorWidgetInitData(&initData);
const mozilla::widget::GtkCompositorWidgetInitData& gtkInitData = initData.get_GtkCompositorWidgetInitData();
uintptr_t rawWindowId = reinterpret_cast<uintptr_t>(widget->GetNativeData(NS_NATIVE_WINDOW_WEBRTC_DEVICE_ID));
if (!rawWindowId) {
fprintf(stderr, "Failed to get native window id\n");
return nullptr;
}
nsCString windowId;
# ifdef MOZ_X11
windowId.AppendPrintf("%lu", gtkInitData.XWindow());
windowId.AppendPrintf("%" PRIuPTR, rawWindowId);
return webrtc::DesktopCaptureImpl::Create(sessionId, windowId.get(), webrtc::CaptureDeviceType::Window);
# else
// TODO: support in wayland
fprintf(stderr, "Video capture for Wayland is not implemented\n");
return nullptr;
# endif
#elif defined(_WIN32)
mozilla::widget::CompositorWidgetInitData initData;
widget->GetCompositorWidgetInitData(&initData);
const mozilla::widget::WinCompositorWidgetInitData& winInitData = initData.get_WinCompositorWidgetInitData();
nsCString windowId;
windowId.AppendPrintf("%lu", winInitData.hWnd());
return webrtc::DesktopCaptureImpl::Create(sessionId, windowId.get(), webrtc::CaptureDeviceType::Window);
#else
fprintf(stderr, "Video capture is not implemented on this platform\n");
return nullptr;
#endif
}
}