@@ -928,6 +928,98 @@ index 2b17323d8a939a18a788d34367a8c427740c0f17..b4764f1c0406b4f93b6936b32104f3de
928928 NS_IMETHODIMP BrowserChild::OnProgressChange(nsIWebProgress* aWebProgress,
929929 nsIRequest* aRequest,
930930 int32_t aCurSelfProgress,
931+ diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.cc b/dom/media/systemservices/video_engine/desktop_capture_impl.cc
932+ index 6fdb72a8ec50fecc9895911a4ee7ccbccb441c61..229aa455da74950ff601378b88e12bf7425b89e7 100644
933+ --- a/dom/media/systemservices/video_engine/desktop_capture_impl.cc
934+ +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.cc
935+ @@ -211,8 +211,9 @@ int32_t AppDeviceInfoImpl::GetOrientation(const char* deviceUniqueIdUTF8,
936+
937+ VideoCaptureModule* DesktopCaptureImpl::Create(const int32_t id,
938+ const char* uniqueId,
939+ - const CaptureDeviceType type) {
940+ - return new rtc::RefCountedObject<DesktopCaptureImpl>(id, uniqueId, type);
941+ + const CaptureDeviceType type,
942+ + bool captureCursor) {
943+ + return new rtc::RefCountedObject<DesktopCaptureImpl>(id, uniqueId, type, captureCursor);
944+ }
945+
946+ int32_t WindowDeviceInfoImpl::Init() {
947+ @@ -358,19 +359,24 @@ int32_t DesktopCaptureImpl::Init() {
948+ DesktopCapturer::SourceId sourceId = atoi(_deviceUniqueId.c_str());
949+ pWindowCapturer->SelectSource(sourceId);
950+
951+ - MouseCursorMonitor* pMouseCursorMonitor =
952+ - MouseCursorMonitor::CreateForWindow(
953+ - webrtc::DesktopCaptureOptions::CreateDefault(), sourceId);
954+ - desktop_capturer_cursor_composer_ =
955+ - std::unique_ptr<DesktopAndCursorComposer>(new DesktopAndCursorComposer(
956+ - pWindowCapturer.release(), pMouseCursorMonitor));
957+ + if (capture_cursor_) {
958+ + MouseCursorMonitor* pMouseCursorMonitor =
959+ + MouseCursorMonitor::CreateForWindow(
960+ + webrtc::DesktopCaptureOptions::CreateDefault(), sourceId);
961+ + desktop_capturer_cursor_composer_ =
962+ + std::unique_ptr<DesktopAndCursorComposer>(new DesktopAndCursorComposer(
963+ + pWindowCapturer.release(), pMouseCursorMonitor));
964+ + } else {
965+ + desktop_capturer_cursor_composer_ = std::move(pWindowCapturer);
966+ + }
967+ }
968+
969+ return 0;
970+ }
971+
972+ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t id, const char* uniqueId,
973+ - const CaptureDeviceType type)
974+ + const CaptureDeviceType type,
975+ + bool captureCursor)
976+ : _id(id),
977+ _deviceUniqueId(uniqueId),
978+ _deviceType(type),
979+ @@ -381,6 +387,7 @@ DesktopCaptureImpl::DesktopCaptureImpl(const int32_t id, const char* uniqueId,
980+ delta_ntp_internal_ms_(
981+ Clock::GetRealTimeClock()->CurrentNtpInMilliseconds() -
982+ last_capture_time_),
983+ + capture_cursor_(captureCursor),
984+ time_event_(EventWrapper::Create()),
985+ #if defined(_WIN32)
986+ capturer_thread_(
987+ diff --git a/dom/media/systemservices/video_engine/desktop_capture_impl.h b/dom/media/systemservices/video_engine/desktop_capture_impl.h
988+ index 4270926fbb83664427574d26982a8561cab8bec3..24859f58c3d4f018684106223eea32a28226302b 100644
989+ --- a/dom/media/systemservices/video_engine/desktop_capture_impl.h
990+ +++ b/dom/media/systemservices/video_engine/desktop_capture_impl.h
991+ @@ -159,7 +159,8 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback,
992+ /* Create a screen capture modules object
993+ */
994+ static VideoCaptureModule* Create(const int32_t id, const char* uniqueId,
995+ - const CaptureDeviceType type);
996+ + const CaptureDeviceType type,
997+ + bool captureCursor = true);
998+ static VideoCaptureModule::DeviceInfo* CreateDeviceInfo(
999+ const int32_t id, const CaptureDeviceType type);
1000+
1001+ @@ -191,7 +192,7 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback,
1002+
1003+ protected:
1004+ DesktopCaptureImpl(const int32_t id, const char* uniqueId,
1005+ - const CaptureDeviceType type);
1006+ + const CaptureDeviceType type, bool captureCursor);
1007+ virtual ~DesktopCaptureImpl();
1008+ int32_t DeliverCapturedFrame(webrtc::VideoFrame& captureFrame,
1009+ int64_t capture_time);
1010+ @@ -239,10 +240,11 @@ class DesktopCaptureImpl : public DesktopCapturer::Callback,
1011+ void process();
1012+
1013+ private:
1014+ + bool capture_cursor_ = true;
1015+ // This is created on the main thread and accessed on both the main thread
1016+ // and the capturer thread. It is created prior to the capturer thread
1017+ // starting and is destroyed after it is stopped.
1018+ - std::unique_ptr<DesktopAndCursorComposer> desktop_capturer_cursor_composer_;
1019+ + std::unique_ptr<DesktopCapturer> desktop_capturer_cursor_composer_;
1020+
1021+ std::unique_ptr<EventWrapper> time_event_;
1022+ #if defined(_WIN32)
9311023diff --git a/dom/script/ScriptSettings.cpp b/dom/script/ScriptSettings.cpp
9321024index 3f69c0f398ab6d849fe011e836343c09110673ef..4c06a9100a1d41119cb2984ee3734a1043a9c50a 100644
9331025--- a/dom/script/ScriptSettings.cpp
0 commit comments