diff options
Diffstat (limited to 'chromium/content/browser/media/capture')
21 files changed, 161 insertions, 187 deletions
diff --git a/chromium/content/browser/media/capture/audio_mirroring_manager.cc b/chromium/content/browser/media/capture/audio_mirroring_manager.cc index eff29c39c7e..03b80f3ff70 100644 --- a/chromium/content/browser/media/capture/audio_mirroring_manager.cc +++ b/chromium/content/browser/media/capture/audio_mirroring_manager.cc @@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/bind_helpers.h" +#include "base/logging.h" #include "base/stl_util.h" namespace content { diff --git a/chromium/content/browser/media/capture/audio_mirroring_manager_unittest.cc b/chromium/content/browser/media/capture/audio_mirroring_manager_unittest.cc index f21c8c4e7a3..307def9004a 100644 --- a/chromium/content/browser/media/capture/audio_mirroring_manager_unittest.cc +++ b/chromium/content/browser/media/capture/audio_mirroring_manager_unittest.cc @@ -12,7 +12,6 @@ #include "base/bind_helpers.h" #include "base/macros.h" #include "base/synchronization/waitable_event.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/test/browser_task_environment.h" @@ -80,8 +79,8 @@ class MockMirroringDestination render_process_id_, render_frame_id_)) != candidates.end()) { result.insert(GlobalFrameRoutingId(render_process_id_, render_frame_id_)); } - base::PostTask(FROM_HERE, {BrowserThread::IO}, - base::BindOnce(std::move(*results_callback), + GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(std::move(*results_callback), std::move(result), is_duplication_)); } diff --git a/chromium/content/browser/media/capture/aura_window_video_capture_device.cc b/chromium/content/browser/media/capture/aura_window_video_capture_device.cc index a3d33bf2636..7ab685a0a7a 100644 --- a/chromium/content/browser/media/capture/aura_window_video_capture_device.cc +++ b/chromium/content/browser/media/capture/aura_window_video_capture_device.cc @@ -12,7 +12,6 @@ #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/optional.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "content/browser/media/capture/mouse_cursor_overlay_controller.h" #include "content/public/browser/browser_task_traits.h" @@ -26,7 +25,7 @@ #include "ui/aura/window_occlusion_tracker.h" #if defined(OS_CHROMEOS) -#include "content/browser/media/capture/lame_window_capturer_chromeos.h" +#include "content/browser/media/capture/slow_window_capturer_chromeos.h" #endif namespace content { @@ -48,8 +47,8 @@ class AuraWindowVideoCaptureDevice::WindowTracker DCHECK(device_task_runner_); DCHECK(cursor_controller_); - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&WindowTracker::ResolveTarget, AsWeakPtr(), source_id)); } @@ -82,7 +81,7 @@ class AuraWindowVideoCaptureDevice::WindowTracker target_window_ = DesktopMediaID::GetNativeWindowById(source_id); if (target_window_ && #if defined(OS_CHROMEOS) - // See class comments for LameWindowCapturerChromeOS. + // See class comments for SlowWindowCapturerChromeOS. (source_id.type == DesktopMediaID::TYPE_WINDOW || target_window_->GetFrameSinkId().is_valid()) && #else @@ -159,8 +158,8 @@ AuraWindowVideoCaptureDevice::~AuraWindowVideoCaptureDevice() = default; #if defined(OS_CHROMEOS) void AuraWindowVideoCaptureDevice::CreateCapturer( mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer> receiver) { - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce( [](base::WeakPtr<WindowTracker> tracker_ptr, mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer> @@ -176,7 +175,7 @@ void AuraWindowVideoCaptureDevice::CreateCapturer( VLOG(1) << "AuraWindowVideoCaptureDevice is using the LAME " "capturer. :("; mojo::MakeSelfOwnedReceiver( - std::make_unique<LameWindowCapturerChromeOS>( + std::make_unique<SlowWindowCapturerChromeOS>( tracker->target_window()), std::move(receiver)); } else { diff --git a/chromium/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc b/chromium/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc index 9cbeed4d268..01c39effc56 100644 --- a/chromium/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc +++ b/chromium/content/browser/media/capture/aura_window_video_capture_device_browsertest.cc @@ -8,7 +8,6 @@ #include "base/macros.h" #include "base/run_loop.h" -#include "base/task/post_task.h" #include "build/build_config.h" #include "cc/test/pixel_test_utils.h" #include "components/viz/common/features.h" @@ -162,8 +161,8 @@ class AuraWindowVideoCaptureDeviceBrowserTest // Wait for at least the minimum capture period before checking for more // captured frames. base::RunLoop run_loop; - base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, - run_loop.QuitClosure(), GetMinCapturePeriod()); + GetUIThreadTaskRunner({})->PostDelayedTask( + FROM_HERE, run_loop.QuitClosure(), GetMinCapturePeriod()); run_loop.Run(); } } @@ -222,11 +221,12 @@ IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, RunUntilIdle(); } +// Disabled (crbug.com/1096988) // Tests that the device starts, captures a frame, and then gracefully // errors-out because the target window is destroyed before the device is // stopped. IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, - ErrorsOutWhenWindowIsDestroyed) { + DISABLED_ErrorsOutWhenWindowIsDestroyed) { NavigateToInitialDocument(); AllocateAndStartAndWaitForFirstFrame(); @@ -244,11 +244,12 @@ IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, StopAndDeAllocate(); } +// Disabled (crbug.com/1096988) // Tests that the device stops delivering frames while suspended. When resumed, // any content changes that occurred during the suspend should cause a new frame // to be delivered, to ensure the client is up-to-date. IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, - SuspendsAndResumes) { + DISABLED_SuspendsAndResumes) { NavigateToInitialDocument(); AllocateAndStartAndWaitForFirstFrame(); @@ -265,8 +266,8 @@ IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, // frames were queued because the device should be suspended. ChangePageContentColor(SK_ColorGREEN); base::RunLoop run_loop; - base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, run_loop.QuitClosure(), - base::TimeDelta::FromSeconds(5)); + GetUIThreadTaskRunner({})->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), + base::TimeDelta::FromSeconds(5)); run_loop.Run(); EXPECT_FALSE(HasCapturedFramesInQueue()); @@ -278,10 +279,11 @@ IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, StopAndDeAllocate(); } +// Disabled (crbug.com/1096988) // Tests that the device delivers refresh frames when asked, while the source // content is not changing. IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, - DeliversRefreshFramesUponRequest) { + DISABLED_DeliversRefreshFramesUponRequest) { NavigateToInitialDocument(); AllocateAndStartAndWaitForFirstFrame(); @@ -301,10 +303,11 @@ IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, } #if defined(OS_CHROMEOS) +// Disabled (crbug.com/1096988) // On ChromeOS, another window may occlude a window that is being captured. // Make sure the visibility is set to visible during capture if it's occluded. IN_PROC_BROWSER_TEST_F(AuraWindowVideoCaptureDeviceBrowserTest, - CapturesOccludedWindows) { + DISABLED_CapturesOccludedWindows) { NavigateToInitialDocument(); AllocateAndStartAndWaitForFirstFrame(); @@ -356,11 +359,12 @@ INSTANTIATE_TEST_SUITE_P( true /* fixed aspect ratio */))); #endif // defined(OS_CHROMEOS) +// Disabled (crbug.com/1096988) // Tests that the device successfully captures a series of content changes, // whether the browser is running with software compositing or GPU-accelerated // compositing. IN_PROC_BROWSER_TEST_P(AuraWindowVideoCaptureDeviceBrowserTestP, - CapturesContentChanges) { + DISABLED_CapturesContentChanges) { SCOPED_TRACE(testing::Message() << "Test parameters: " << (IsSoftwareCompositingTest() ? "Software Compositing" diff --git a/chromium/content/browser/media/capture/desktop_capture_device.cc b/chromium/content/browser/media/capture/desktop_capture_device.cc index 3385690f9b9..ddbd972ff04 100644 --- a/chromium/content/browser/media/capture/desktop_capture_device.cc +++ b/chromium/content/browser/media/capture/desktop_capture_device.cc @@ -20,7 +20,6 @@ #include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" #include "base/synchronization/lock.h" -#include "base/task/post_task.h" #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "base/time/tick_clock.h" @@ -478,8 +477,8 @@ void DesktopCaptureDevice::Core::RequestWakeLock() { // TODO(https://crbug.com/823869): Fix DesktopCaptureDeviceTest and remove // this conditional. if (BrowserThread::IsThreadInitialized(BrowserThread::UI)) { - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&BindWakeLockProvider, std::move(receiver))); + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&BindWakeLockProvider, std::move(receiver))); } wake_lock_provider->GetWakeLockWithoutContext( diff --git a/chromium/content/browser/media/capture/desktop_streams_registry_impl.cc b/chromium/content/browser/media/capture/desktop_streams_registry_impl.cc index b8ce040a132..e345bbadc2f 100644 --- a/chromium/content/browser/media/capture/desktop_streams_registry_impl.cc +++ b/chromium/content/browser/media/capture/desktop_streams_registry_impl.cc @@ -10,7 +10,6 @@ #include "base/macros.h" #include "base/no_destructor.h" #include "base/stl_util.h" -#include "base/task/post_task.h" #include "base/time/time.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -67,8 +66,8 @@ std::string DesktopStreamsRegistryImpl::RegisterStream( stream.extension_name = extension_name; stream.type = type; - base::PostDelayedTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostDelayedTask( + FROM_HERE, base::BindOnce(&DesktopStreamsRegistryImpl::CleanupStream, base::Unretained(this), id), base::TimeDelta::FromSeconds(kApprovedStreamTimeToLiveSeconds)); diff --git a/chromium/content/browser/media/capture/fake_video_capture_stack.cc b/chromium/content/browser/media/capture/fake_video_capture_stack.cc index 161351d1036..1c43d52483b 100644 --- a/chromium/content/browser/media/capture/fake_video_capture_stack.cc +++ b/chromium/content/browser/media/capture/fake_video_capture_stack.cc @@ -66,7 +66,7 @@ class FakeVideoCaptureStack::Receiver : public media::VideoFrameReceiver { const_cast<uint8_t*>(static_cast<const uint8_t*>(mapping.memory())), mapping.size(), frame_info->timestamp); CHECK(frame); - frame->metadata()->MergeInternalValuesFrom(frame_info->metadata); + frame->set_metadata(frame_info->metadata); if (frame_info->color_space.has_value()) frame->set_color_space(frame_info->color_space.value()); // This destruction observer will unmap the shared memory when the diff --git a/chromium/content/browser/media/capture/frame_sink_video_capture_device.cc b/chromium/content/browser/media/capture/frame_sink_video_capture_device.cc index 549e6563c0d..11c02abc610 100644 --- a/chromium/content/browser/media/capture/frame_sink_video_capture_device.cc +++ b/chromium/content/browser/media/capture/frame_sink_video_capture_device.cc @@ -15,7 +15,6 @@ #include "base/memory/weak_ptr.h" #include "base/notreached.h" #include "base/numerics/safe_conversions.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "components/viz/host/host_frame_sink_manager.h" @@ -115,8 +114,8 @@ void FrameSinkVideoCaptureDevice::AllocateAndStartWithReceiver( capturer_->ChangeTarget(target_); } - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&MouseCursorOverlayController::Start, cursor_controller_->GetWeakPtr(), capturer_->CreateOverlay(kMouseCursorStackingIndex), @@ -171,8 +170,8 @@ void FrameSinkVideoCaptureDevice::StopAndDeAllocate() { wake_lock_.reset(); } - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&MouseCursorOverlayController::Stop, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&MouseCursorOverlayController::Stop, cursor_controller_->GetWeakPtr())); MaybeStopConsuming(); @@ -232,12 +231,8 @@ void FrameSinkVideoCaptureDevice::OnFrameCaptured( } const BufferId buffer_id = static_cast<BufferId>(index); - // Set the INTERACTIVE_CONTENT frame metadata. - media::VideoFrameMetadata modified_metadata; - modified_metadata.MergeInternalValuesFrom(info->metadata); - modified_metadata.SetBoolean(media::VideoFrameMetadata::INTERACTIVE_CONTENT, - cursor_controller_->IsUserInteractingWithView()); - info->metadata = modified_metadata.GetInternalValues().Clone(); + info->metadata.interactive_content = + cursor_controller_->IsUserInteractingWithView(); // Pass the video frame to the VideoFrameReceiver. This is done by first // passing the shared memory buffer handle and then notifying it that a new @@ -271,8 +266,8 @@ void FrameSinkVideoCaptureDevice::OnLog(const std::string& message) { if (BrowserThread::CurrentlyOn(BrowserThread::IO)) { receiver_->OnLog(message); } else { - base::PostTask( - FROM_HERE, {BrowserThread::IO}, + GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&media::VideoFrameReceiver::OnLog, base::Unretained(receiver_.get()), message)); } @@ -314,8 +309,8 @@ void FrameSinkVideoCaptureDevice::CreateCapturerViaGlobalManager( mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer> receiver) { // Send the receiver to UI thread because that's where HostFrameSinkManager // lives. - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce( [](mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer> receiver) { @@ -379,8 +374,8 @@ void FrameSinkVideoCaptureDevice::RequestWakeLock() { mojo::Remote<device::mojom::WakeLockProvider> wake_lock_provider; auto receiver = wake_lock_provider.BindNewPipeAndPassReceiver(); - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&BindWakeLockProvider, std::move(receiver))); + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&BindWakeLockProvider, std::move(receiver))); wake_lock_provider->GetWakeLockWithoutContext( device::mojom::WakeLockType::kPreventDisplaySleep, device::mojom::WakeLockReason::kOther, "screen capture", diff --git a/chromium/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc b/chromium/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc index ae3fe08166e..3fb27b6ff88 100644 --- a/chromium/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc +++ b/chromium/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc @@ -11,8 +11,8 @@ #include "base/containers/flat_map.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/shared_memory_mapping.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" +#include "content/public/browser/browser_thread.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_utils.h" #include "media/base/video_frame.h" @@ -55,7 +55,7 @@ namespace { // Convenience macro to post a task to run on the device thread. #define POST_DEVICE_TASK(closure) \ - base::PostTask(FROM_HERE, {BrowserThread::IO}, closure) + GetIOThreadTaskRunner({})->PostTask(FROM_HERE, closure) // Convenience macro to block the test procedure until all pending tasks have // run on the device thread. @@ -273,8 +273,8 @@ class FrameSinkVideoCaptureDeviceForTest : public FrameSinkVideoCaptureDevice { protected: void CreateCapturer(mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer> receiver) final { - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce( [](MockFrameSinkVideoCapturer* capturer, mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer> @@ -384,9 +384,8 @@ class FrameSinkVideoCaptureDeviceTest : public testing::Test { device->OnFrameCaptured( std::move(data), media::mojom::VideoFrameInfo::New( - kMinCapturePeriod * frame_number, - base::Value(base::Value::Type::DICTIONARY), kFormat, - kResolution, gfx::Rect(kResolution), + kMinCapturePeriod * frame_number, media::VideoFrameMetadata(), + kFormat, kResolution, gfx::Rect(kResolution), gfx::ColorSpace::CreateREC709(), nullptr), gfx::Rect(kResolution), std::move(callbacks_remote)); }, diff --git a/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_aura.cc b/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_aura.cc index 4c6d8bf832e..f6f805f7240 100644 --- a/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_aura.cc +++ b/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_aura.cc @@ -16,17 +16,6 @@ namespace content { -namespace { - -ui::Cursor CreateDefaultPointerCursor() { - ui::Cursor cursor(ui::mojom::CursorType::kPointer); - std::unique_ptr<ui::CursorLoader> loader(ui::CursorLoader::Create()); - loader->SetPlatformCursor(&cursor); - return cursor; -} - -} // namespace - class MouseCursorOverlayController::Observer : public ui::EventHandler, public aura::WindowObserver { public: @@ -167,7 +156,7 @@ gfx::NativeCursor MouseCursorOverlayController::GetCurrentCursorOrDefault() } } - return CreateDefaultPointerCursor(); + return ui::mojom::CursorType::kPointer; } gfx::RectF MouseCursorOverlayController::ComputeRelativeBoundsForOverlay( @@ -212,13 +201,9 @@ void MouseCursorOverlayController::DisconnectFromToolkitForTesting() { observer_->StopTracking(); - // The default cursor is ui::mojom::CursorType::kNone. Make it kPointer so - // the tests have a non-empty cursor bitmap to work with. - auto* const window = Observer::GetTargetWindow(observer_); - CHECK(window); - auto* const host = window->GetHost(); - CHECK(host); - host->SetCursor(CreateDefaultPointerCursor()); + // Note: Not overriding the mouse cursor since the default is already + // ui::mojom::CursorType::kPointer, which provides the tests a bitmap they can + // work with. } // static diff --git a/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_browsertest.cc b/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_browsertest.cc index 3273303ed79..29e11332bd9 100644 --- a/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_browsertest.cc +++ b/chromium/content/browser/media/capture/mouse_cursor_overlay_controller_browsertest.cc @@ -6,7 +6,6 @@ #include "base/macros.h" #include "base/run_loop.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" @@ -64,8 +63,7 @@ class MouseCursorOverlayControllerBrowserTest : public ContentBrowserTest { auto overlay_ptr = std::make_unique<FakeOverlay>(); FakeOverlay* const overlay = overlay_ptr.get(); DCHECK_CURRENTLY_ON(BrowserThread::UI); - controller_.Start(std::move(overlay_ptr), - base::CreateSingleThreadTaskRunner({BrowserThread::UI})); + controller_.Start(std::move(overlay_ptr), GetUIThreadTaskRunner({})); return overlay; } diff --git a/chromium/content/browser/media/capture/lame_capture_overlay_chromeos.cc b/chromium/content/browser/media/capture/slow_capture_overlay_chromeos.cc index 95497843db9..29946034b5e 100644 --- a/chromium/content/browser/media/capture/lame_capture_overlay_chromeos.cc +++ b/chromium/content/browser/media/capture/slow_capture_overlay_chromeos.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/browser/media/capture/lame_capture_overlay_chromeos.h" +#include "content/browser/media/capture/slow_capture_overlay_chromeos.h" #include <algorithm> #include <cmath> @@ -10,7 +10,7 @@ #include "base/bind.h" #include "base/numerics/ranges.h" #include "base/numerics/safe_conversions.h" -#include "content/browser/media/capture/lame_window_capturer_chromeos.h" +#include "content/browser/media/capture/slow_window_capturer_chromeos.h" #include "media/base/video_frame.h" #include "skia/ext/image_operations.h" #include "third_party/skia/include/core/SkColor.h" @@ -19,9 +19,9 @@ namespace content { -LameCaptureOverlayChromeOS::Owner::~Owner() = default; +SlowCaptureOverlayChromeOS::Owner::~Owner() = default; -LameCaptureOverlayChromeOS::LameCaptureOverlayChromeOS( +SlowCaptureOverlayChromeOS::SlowCaptureOverlayChromeOS( Owner* owner, mojo::PendingReceiver<viz::mojom::FrameSinkVideoCaptureOverlay> receiver) : receiver_(this, std::move(receiver)) { @@ -31,11 +31,11 @@ LameCaptureOverlayChromeOS::LameCaptureOverlayChromeOS( } } -LameCaptureOverlayChromeOS::~LameCaptureOverlayChromeOS() { +SlowCaptureOverlayChromeOS::~SlowCaptureOverlayChromeOS() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } -void LameCaptureOverlayChromeOS::SetImageAndBounds(const SkBitmap& image, +void SlowCaptureOverlayChromeOS::SetImageAndBounds(const SkBitmap& image, const gfx::RectF& bounds) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -44,7 +44,7 @@ void LameCaptureOverlayChromeOS::SetImageAndBounds(const SkBitmap& image, cached_scaled_image_.reset(); } -void LameCaptureOverlayChromeOS::SetBounds(const gfx::RectF& bounds) { +void SlowCaptureOverlayChromeOS::SetBounds(const gfx::RectF& bounds) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (bounds != bounds_) { @@ -89,8 +89,8 @@ inline int alpha_blend(int alpha, int src, int dst) { } // namespace -LameCaptureOverlayChromeOS::OnceRenderer -LameCaptureOverlayChromeOS::MakeRenderer(const gfx::Rect& region_in_frame) { +SlowCaptureOverlayChromeOS::OnceRenderer +SlowCaptureOverlayChromeOS::MakeRenderer(const gfx::Rect& region_in_frame) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (bounds_.IsEmpty() || image_.drawsNothing()) { @@ -122,7 +122,7 @@ LameCaptureOverlayChromeOS::MakeRenderer(const gfx::Rect& region_in_frame) { // The following binds all state required to render the overlay on a // VideoFrame at a later time. This callback does not require - // LameCaptureOverlayChromeOS to outlive it. + // SlowCaptureOverlayChromeOS to outlive it. return base::BindOnce( [](const SkBitmap& image, const gfx::Point& position, const gfx::Rect& rect, media::VideoFrame* frame) { diff --git a/chromium/content/browser/media/capture/lame_capture_overlay_chromeos.h b/chromium/content/browser/media/capture/slow_capture_overlay_chromeos.h index fc912f0fd8a..1a00e0f99a4 100644 --- a/chromium/content/browser/media/capture/lame_capture_overlay_chromeos.h +++ b/chromium/content/browser/media/capture/slow_capture_overlay_chromeos.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_BROWSER_MEDIA_CAPTURE_LAME_CAPTURE_OVERLAY_CHROMEOS_H_ -#define CONTENT_BROWSER_MEDIA_CAPTURE_LAME_CAPTURE_OVERLAY_CHROMEOS_H_ +#ifndef CONTENT_BROWSER_MEDIA_CAPTURE_SLOW_CAPTURE_OVERLAY_CHROMEOS_H_ +#define CONTENT_BROWSER_MEDIA_CAPTURE_SLOW_CAPTURE_OVERLAY_CHROMEOS_H_ #include "base/callback.h" #include "base/macros.h" @@ -23,7 +23,7 @@ namespace content { // A minimal FrameSinkVideoCaptureOverlay implementation for aura::Window video // capture on ChromeOS (i.e., not desktop capture, and not WebContents capture). -// See class comments for LameWindowCapturerChromeOS for further details on why +// See class comments for SlowWindowCapturerChromeOS for further details on why // this exists and why this placeholder is needed for now. // // The implementation here is a hodgepodge of code borrowed from @@ -35,16 +35,16 @@ namespace content { // renderer. // // TODO(crbug/806366): The goal is to remove this code by 2019. -class CONTENT_EXPORT LameCaptureOverlayChromeOS +class CONTENT_EXPORT SlowCaptureOverlayChromeOS : public viz::mojom::FrameSinkVideoCaptureOverlay { public: - // Implemented by LameWindowCapturerChromeOS. + // Implemented by SlowWindowCapturerChromeOS. class CONTENT_EXPORT Owner { public: // Called to notify that the |overlay| has lost its mojo binding. The owner // will usually delete it during this method call. virtual void OnOverlayConnectionLost( - LameCaptureOverlayChromeOS* overlay) = 0; + SlowCaptureOverlayChromeOS* overlay) = 0; protected: virtual ~Owner(); @@ -53,10 +53,10 @@ class CONTENT_EXPORT LameCaptureOverlayChromeOS // A OnceCallback that, when run, renders the overlay on a VideoFrame. using OnceRenderer = base::OnceCallback<void(media::VideoFrame*)>; - LameCaptureOverlayChromeOS( + SlowCaptureOverlayChromeOS( Owner* owner, mojo::PendingReceiver<viz::mojom::FrameSinkVideoCaptureOverlay> receiver); - ~LameCaptureOverlayChromeOS() final; + ~SlowCaptureOverlayChromeOS() final; // viz::mojom::FrameSinkVideoCaptureOverlay implementation. void SetImageAndBounds(const SkBitmap& image, const gfx::RectF& bounds) final; @@ -81,9 +81,9 @@ class CONTENT_EXPORT LameCaptureOverlayChromeOS // bitmap size changes. SkBitmap cached_scaled_image_; - DISALLOW_COPY_AND_ASSIGN(LameCaptureOverlayChromeOS); + DISALLOW_COPY_AND_ASSIGN(SlowCaptureOverlayChromeOS); }; } // namespace content -#endif // CONTENT_BROWSER_MEDIA_CAPTURE_LAME_CAPTURE_OVERLAY_CHROMEOS_H_ +#endif // CONTENT_BROWSER_MEDIA_CAPTURE_SLOW_CAPTURE_OVERLAY_CHROMEOS_H_ diff --git a/chromium/content/browser/media/capture/lame_capture_overlay_chromeos_unittest.cc b/chromium/content/browser/media/capture/slow_capture_overlay_chromeos_unittest.cc index 6c29a34c3f4..b3808834a1a 100644 --- a/chromium/content/browser/media/capture/lame_capture_overlay_chromeos_unittest.cc +++ b/chromium/content/browser/media/capture/slow_capture_overlay_chromeos_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/browser/media/capture/lame_capture_overlay_chromeos.h" +#include "content/browser/media/capture/slow_capture_overlay_chromeos.h" #include <stdint.h> @@ -27,7 +27,7 @@ constexpr gfx::Size kFrameSize = gfx::Size(320, 200); constexpr gfx::Rect kContentRegion = gfx::Rect(kFrameSize); constexpr gfx::RectF kSpanOfEntireFrame = gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f); -class LameCaptureOverlayChromeOSTest : public testing::Test { +class SlowCaptureOverlayChromeOSTest : public testing::Test { public: void RunUntilIdle() { env_.RunUntilIdle(); } @@ -68,9 +68,9 @@ class LameCaptureOverlayChromeOSTest : public testing::Test { base::test::TaskEnvironment env_; }; -TEST_F(LameCaptureOverlayChromeOSTest, UnsetImageNotRenderedOnFrame) { +TEST_F(SlowCaptureOverlayChromeOSTest, UnsetImageNotRenderedOnFrame) { mojo::Remote<viz::mojom::FrameSinkVideoCaptureOverlay> overlay_remote; - LameCaptureOverlayChromeOS overlay( + SlowCaptureOverlayChromeOS overlay( nullptr, overlay_remote.BindNewPipeAndPassReceiver()); // Bounds set, but no image. → Should not render anything. @@ -82,9 +82,9 @@ TEST_F(LameCaptureOverlayChromeOSTest, UnsetImageNotRenderedOnFrame) { EXPECT_TRUE(overlay.MakeRenderer(kContentRegion)); } -TEST_F(LameCaptureOverlayChromeOSTest, HiddenImageNotRenderedOnFrame) { +TEST_F(SlowCaptureOverlayChromeOSTest, HiddenImageNotRenderedOnFrame) { mojo::Remote<viz::mojom::FrameSinkVideoCaptureOverlay> overlay_remote; - LameCaptureOverlayChromeOS overlay( + SlowCaptureOverlayChromeOS overlay( nullptr, overlay_remote.BindNewPipeAndPassReceiver()); // Both image and bounds set. → Should render something. @@ -96,9 +96,9 @@ TEST_F(LameCaptureOverlayChromeOSTest, HiddenImageNotRenderedOnFrame) { EXPECT_FALSE(overlay.MakeRenderer(kContentRegion)); } -TEST_F(LameCaptureOverlayChromeOSTest, OutOfBoundsOverlayNotRenderedOnFrame) { +TEST_F(SlowCaptureOverlayChromeOSTest, OutOfBoundsOverlayNotRenderedOnFrame) { mojo::Remote<viz::mojom::FrameSinkVideoCaptureOverlay> overlay_remote; - LameCaptureOverlayChromeOS overlay( + SlowCaptureOverlayChromeOS overlay( nullptr, overlay_remote.BindNewPipeAndPassReceiver()); // Both image and bounds set. → Should render something. @@ -110,9 +110,9 @@ TEST_F(LameCaptureOverlayChromeOSTest, OutOfBoundsOverlayNotRenderedOnFrame) { EXPECT_FALSE(overlay.MakeRenderer(kContentRegion)); } -TEST_F(LameCaptureOverlayChromeOSTest, ImageRenderedOnFrame) { +TEST_F(SlowCaptureOverlayChromeOSTest, ImageRenderedOnFrame) { mojo::Remote<viz::mojom::FrameSinkVideoCaptureOverlay> overlay_remote; - LameCaptureOverlayChromeOS overlay( + SlowCaptureOverlayChromeOS overlay( nullptr, overlay_remote.BindNewPipeAndPassReceiver()); // Create blank black frame. No non-zero pixels should be present. @@ -156,16 +156,16 @@ TEST_F(LameCaptureOverlayChromeOSTest, ImageRenderedOnFrame) { } } -TEST_F(LameCaptureOverlayChromeOSTest, ReportsLostMojoConnection) { - class MockOwner : public LameCaptureOverlayChromeOS::Owner { +TEST_F(SlowCaptureOverlayChromeOSTest, ReportsLostMojoConnection) { + class MockOwner : public SlowCaptureOverlayChromeOS::Owner { public: ~MockOwner() final = default; MOCK_METHOD1(OnOverlayConnectionLost, - void(LameCaptureOverlayChromeOS* overlay)); + void(SlowCaptureOverlayChromeOS* overlay)); } mock_owner; mojo::Remote<viz::mojom::FrameSinkVideoCaptureOverlay> overlay_remote; - LameCaptureOverlayChromeOS overlay( + SlowCaptureOverlayChromeOS overlay( &mock_owner, overlay_remote.BindNewPipeAndPassReceiver()); ASSERT_TRUE(overlay_remote); RunUntilIdle(); // Propagate mojo tasks. diff --git a/chromium/content/browser/media/capture/lame_window_capturer_chromeos.cc b/chromium/content/browser/media/capture/slow_window_capturer_chromeos.cc index 1a7536a42c7..25982224ef9 100644 --- a/chromium/content/browser/media/capture/lame_window_capturer_chromeos.cc +++ b/chromium/content/browser/media/capture/slow_window_capturer_chromeos.cc @@ -2,13 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/browser/media/capture/lame_window_capturer_chromeos.h" +#include "content/browser/media/capture/slow_window_capturer_chromeos.h" #include <algorithm> #include "base/bind.h" #include "base/bind_helpers.h" #include "base/location.h" +#include "base/threading/sequenced_task_runner_handle.h" #include "components/viz/common/frame_sinks/copy_output_request.h" #include "components/viz/common/frame_sinks/copy_output_result.h" #include "media/base/limits.h" @@ -31,22 +32,22 @@ gfx::Size AdjustSizeForI420Format(const gfx::Size& raw_size) { } // namespace // static -constexpr base::TimeDelta LameWindowCapturerChromeOS::kAbsoluteMinCapturePeriod; +constexpr base::TimeDelta SlowWindowCapturerChromeOS::kAbsoluteMinCapturePeriod; -LameWindowCapturerChromeOS::LameWindowCapturerChromeOS(aura::Window* target) +SlowWindowCapturerChromeOS::SlowWindowCapturerChromeOS(aura::Window* target) : target_(target), copy_request_source_(base::UnguessableToken::Create()) { if (target_) { target_->AddObserver(this); } } -LameWindowCapturerChromeOS::~LameWindowCapturerChromeOS() { +SlowWindowCapturerChromeOS::~SlowWindowCapturerChromeOS() { if (target_) { target_->RemoveObserver(this); } } -void LameWindowCapturerChromeOS::SetFormat(media::VideoPixelFormat format, +void SlowWindowCapturerChromeOS::SetFormat(media::VideoPixelFormat format, const gfx::ColorSpace& color_space) { if (format != media::PIXEL_FORMAT_I420) { LOG(DFATAL) << "Invalid pixel format: Only I420 is supported."; @@ -57,7 +58,7 @@ void LameWindowCapturerChromeOS::SetFormat(media::VideoPixelFormat format, } } -void LameWindowCapturerChromeOS::SetMinCapturePeriod( +void SlowWindowCapturerChromeOS::SetMinCapturePeriod( base::TimeDelta min_capture_period) { capture_period_ = std::max(min_capture_period, kAbsoluteMinCapturePeriod); @@ -65,14 +66,14 @@ void LameWindowCapturerChromeOS::SetMinCapturePeriod( // re-start with the new capture period. if (timer_.IsRunning()) { timer_.Start(FROM_HERE, capture_period_, this, - &LameWindowCapturerChromeOS::CaptureNextFrame); + &SlowWindowCapturerChromeOS::CaptureNextFrame); } } -void LameWindowCapturerChromeOS::SetMinSizeChangePeriod( +void SlowWindowCapturerChromeOS::SetMinSizeChangePeriod( base::TimeDelta min_period) {} -void LameWindowCapturerChromeOS::SetResolutionConstraints( +void SlowWindowCapturerChromeOS::SetResolutionConstraints( const gfx::Size& min_size, const gfx::Size& max_size, bool use_fixed_aspect_ratio) { @@ -95,17 +96,17 @@ void LameWindowCapturerChromeOS::SetResolutionConstraints( in_flight_count_ = 0; } -void LameWindowCapturerChromeOS::SetAutoThrottlingEnabled(bool enabled) { +void SlowWindowCapturerChromeOS::SetAutoThrottlingEnabled(bool enabled) { NOTIMPLEMENTED(); } -void LameWindowCapturerChromeOS::ChangeTarget( +void SlowWindowCapturerChromeOS::ChangeTarget( const base::Optional<viz::FrameSinkId>& frame_sink_id) { - // The LameWindowCapturerChromeOS does not capture from compositor frame + // The SlowWindowCapturerChromeOS does not capture from compositor frame // sinks. } -void LameWindowCapturerChromeOS::Start( +void SlowWindowCapturerChromeOS::Start( mojo::PendingRemote<viz::mojom::FrameSinkVideoConsumer> consumer) { DCHECK(consumer); @@ -115,13 +116,13 @@ void LameWindowCapturerChromeOS::Start( // In the future, if the connection to the consumer is lost before a call to // Stop(), make that call on its behalf. consumer_.set_disconnect_handler(base::BindOnce( - &LameWindowCapturerChromeOS::Stop, base::Unretained(this))); + &SlowWindowCapturerChromeOS::Stop, base::Unretained(this))); timer_.Start(FROM_HERE, capture_period_, this, - &LameWindowCapturerChromeOS::CaptureNextFrame); + &SlowWindowCapturerChromeOS::CaptureNextFrame); } -void LameWindowCapturerChromeOS::Stop() { +void SlowWindowCapturerChromeOS::Stop() { // Stop the timer, cancel any in-flight frames, and clear the buffer pool. timer_.Stop(); weak_factory_.InvalidateWeakPtrs(); @@ -134,24 +135,24 @@ void LameWindowCapturerChromeOS::Stop() { } } -void LameWindowCapturerChromeOS::RequestRefreshFrame() { - // This is ignored because the LameWindowCapturerChromeOS captures frames +void SlowWindowCapturerChromeOS::RequestRefreshFrame() { + // This is ignored because the SlowWindowCapturerChromeOS captures frames // continuously. } -void LameWindowCapturerChromeOS::CreateOverlay( +void SlowWindowCapturerChromeOS::CreateOverlay( int32_t stacking_index, mojo::PendingReceiver<viz::mojom::FrameSinkVideoCaptureOverlay> receiver) { - // LameWindowCapturerChromeOS only supports one overlay at a time. If one + // SlowWindowCapturerChromeOS only supports one overlay at a time. If one // already exists, the following will cause it to be dropped. overlay_ = - std::make_unique<LameCaptureOverlayChromeOS>(this, std::move(receiver)); + std::make_unique<SlowCaptureOverlayChromeOS>(this, std::move(receiver)); } -class LameWindowCapturerChromeOS::InFlightFrame +class SlowWindowCapturerChromeOS::InFlightFrame : public viz::mojom::FrameSinkVideoConsumerFrameCallbacks { public: - InFlightFrame(base::WeakPtr<LameWindowCapturerChromeOS> capturer, + InFlightFrame(base::WeakPtr<SlowWindowCapturerChromeOS> capturer, base::MappedReadOnlyRegion buffer) : capturer_(std::move(capturer)), buffer_(std::move(buffer)) {} @@ -169,7 +170,7 @@ class LameWindowCapturerChromeOS::InFlightFrame const gfx::Rect& content_rect() const { return content_rect_; } void set_content_rect(const gfx::Rect& rect) { content_rect_ = rect; } - void set_overlay_renderer(LameCaptureOverlayChromeOS::OnceRenderer renderer) { + void set_overlay_renderer(SlowCaptureOverlayChromeOS::OnceRenderer renderer) { overlay_renderer_ = std::move(renderer); } void RenderOptionalOverlay() { @@ -199,23 +200,23 @@ class LameWindowCapturerChromeOS::InFlightFrame void ProvideFeedback(double utilization) final {} private: - base::WeakPtr<LameWindowCapturerChromeOS> capturer_; + base::WeakPtr<SlowWindowCapturerChromeOS> capturer_; base::MappedReadOnlyRegion buffer_; scoped_refptr<VideoFrame> video_frame_; gfx::Rect content_rect_; - LameCaptureOverlayChromeOS::OnceRenderer overlay_renderer_; + SlowCaptureOverlayChromeOS::OnceRenderer overlay_renderer_; DISALLOW_COPY_AND_ASSIGN(InFlightFrame); }; -void LameWindowCapturerChromeOS::OnOverlayConnectionLost( - LameCaptureOverlayChromeOS* overlay) { +void SlowWindowCapturerChromeOS::OnOverlayConnectionLost( + SlowCaptureOverlayChromeOS* overlay) { if (overlay_.get() == overlay) { overlay_.reset(); } } -void LameWindowCapturerChromeOS::CaptureNextFrame() { +void SlowWindowCapturerChromeOS::CaptureNextFrame() { // If the maximum frame in-flight count has been reached, skip this frame. if (in_flight_count_ >= kMaxFramesInFlight) { return; @@ -260,11 +261,10 @@ void LameWindowCapturerChromeOS::CaptureNextFrame() { auto* const frame = in_flight_frame->video_frame(); DCHECK(frame); VideoFrameMetadata* const metadata = frame->metadata(); - metadata->SetTimeTicks(VideoFrameMetadata::CAPTURE_BEGIN_TIME, begin_time); - metadata->SetTimeDelta(VideoFrameMetadata::FRAME_DURATION, capture_period_); - metadata->SetDouble(VideoFrameMetadata::FRAME_RATE, - 1.0 / capture_period_.InSecondsF()); - metadata->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, begin_time); + metadata->capture_begin_time = begin_time; + metadata->frame_duration = capture_period_; + metadata->frame_rate = 1.0 / capture_period_.InSecondsF(); + metadata->reference_time = begin_time; frame->set_color_space(gfx::ColorSpace::CreateREC709()); // Compute the region of the VideoFrame that will contain the content. If @@ -292,7 +292,7 @@ void LameWindowCapturerChromeOS::CaptureNextFrame() { auto request = std::make_unique<viz::CopyOutputRequest>( // Note: As of this writing, I420_PLANES is not supported external to VIZ. viz::CopyOutputRequest::ResultFormat::RGBA_BITMAP, - base::BindOnce(&LameWindowCapturerChromeOS::DidCopyFrame, + base::BindOnce(&SlowWindowCapturerChromeOS::DidCopyFrame, weak_factory_.GetWeakPtr(), std::move(in_flight_frame))); request->set_source(copy_request_source_); request->set_area(gfx::Rect(source_size)); @@ -300,10 +300,12 @@ void LameWindowCapturerChromeOS::CaptureNextFrame() { gfx::Vector2d(source_size.width(), source_size.height()), gfx::Vector2d(content_rect.width(), content_rect.height())); request->set_result_selection(gfx::Rect(content_rect.size())); + request->set_result_task_runner( + base::SequencedTaskRunnerHandle::Get()); target_->layer()->RequestCopyOfOutput(std::move(request)); } -void LameWindowCapturerChromeOS::DidCopyFrame( +void SlowWindowCapturerChromeOS::DidCopyFrame( std::unique_ptr<InFlightFrame> in_flight_frame, std::unique_ptr<viz::CopyOutputResult> result) { // Populate the VideoFrame from the CopyOutputResult. @@ -337,12 +339,11 @@ void LameWindowCapturerChromeOS::DidCopyFrame( DeliverFrame(std::move(in_flight_frame)); } -void LameWindowCapturerChromeOS::DeliverFrame( +void SlowWindowCapturerChromeOS::DeliverFrame( std::unique_ptr<InFlightFrame> in_flight_frame) { auto* const frame = in_flight_frame->video_frame(); DCHECK(frame); - frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_END_TIME, - base::TimeTicks::Now()); + frame->metadata()->capture_end_time = base::TimeTicks::Now(); // Clone the buffer handle for the consumer. base::ReadOnlySharedMemoryRegion handle = @@ -355,7 +356,7 @@ void LameWindowCapturerChromeOS::DeliverFrame( // the consumer. media::mojom::VideoFrameInfoPtr info = media::mojom::VideoFrameInfo::New(); info->timestamp = frame->timestamp(); - info->metadata = frame->metadata()->GetInternalValues().Clone(); + info->metadata = *(frame->metadata()); info->pixel_format = frame->format(); info->coded_size = frame->coded_size(); info->visible_rect = frame->visible_rect(); @@ -376,7 +377,7 @@ void LameWindowCapturerChromeOS::DeliverFrame( std::move(callbacks)); } -void LameWindowCapturerChromeOS::OnWindowDestroying(aura::Window* window) { +void SlowWindowCapturerChromeOS::OnWindowDestroying(aura::Window* window) { if (window == target_) { target_->RemoveObserver(this); target_ = nullptr; diff --git a/chromium/content/browser/media/capture/lame_window_capturer_chromeos.h b/chromium/content/browser/media/capture/slow_window_capturer_chromeos.h index 98b83068b47..ab68a779148 100644 --- a/chromium/content/browser/media/capture/lame_window_capturer_chromeos.h +++ b/chromium/content/browser/media/capture/slow_window_capturer_chromeos.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_BROWSER_MEDIA_CAPTURE_LAME_WINDOW_CAPTURER_CHROMEOS_H_ -#define CONTENT_BROWSER_MEDIA_CAPTURE_LAME_WINDOW_CAPTURER_CHROMEOS_H_ +#ifndef CONTENT_BROWSER_MEDIA_CAPTURE_SLOW_WINDOW_CAPTURER_CHROMEOS_H_ +#define CONTENT_BROWSER_MEDIA_CAPTURE_SLOW_WINDOW_CAPTURER_CHROMEOS_H_ #include <memory> #include <utility> @@ -15,7 +15,7 @@ #include "base/time/time.h" #include "base/timer/timer.h" #include "base/unguessable_token.h" -#include "content/browser/media/capture/lame_capture_overlay_chromeos.h" +#include "content/browser/media/capture/slow_capture_overlay_chromeos.h" #include "media/base/video_frame.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -50,12 +50,12 @@ namespace content { // running. // // TODO(crbug/806366): The goal is to remove this code by 2019. -class LameWindowCapturerChromeOS : public viz::mojom::FrameSinkVideoCapturer, - public LameCaptureOverlayChromeOS::Owner, +class SlowWindowCapturerChromeOS : public viz::mojom::FrameSinkVideoCapturer, + public SlowCaptureOverlayChromeOS::Owner, public aura::WindowObserver { public: - explicit LameWindowCapturerChromeOS(aura::Window* target); - ~LameWindowCapturerChromeOS() final; + explicit SlowWindowCapturerChromeOS(aura::Window* target); + ~SlowWindowCapturerChromeOS() final; // viz::mojom::FrameSinkVideoCapturer implementation. void SetFormat(media::VideoPixelFormat format, @@ -83,8 +83,8 @@ class LameWindowCapturerChromeOS : public viz::mojom::FrameSinkVideoCapturer, // returns the buffer back to the pool. class InFlightFrame; - // LameWindowCapturerChromeOS::Owner implementation. - void OnOverlayConnectionLost(LameCaptureOverlayChromeOS* overlay) final; + // SlowWindowCapturerChromeOS::Owner implementation. + void OnOverlayConnectionLost(SlowCaptureOverlayChromeOS* overlay) final; // Initiates capture of the next frame. This is called periodically by the // |timer_|. @@ -134,11 +134,11 @@ class LameWindowCapturerChromeOS : public viz::mojom::FrameSinkVideoCapturer, const base::UnguessableToken copy_request_source_; // An optional overlay to be rendered over each captured video frame. - std::unique_ptr<LameCaptureOverlayChromeOS> overlay_; + std::unique_ptr<SlowCaptureOverlayChromeOS> overlay_; // Used for cancelling any outstanding activities' results, once Stop() is // called and there is no longer a consumer to receive another frame. - base::WeakPtrFactory<LameWindowCapturerChromeOS> weak_factory_{this}; + base::WeakPtrFactory<SlowWindowCapturerChromeOS> weak_factory_{this}; // Enforce a very low maximum frame rate (5 FPS), due to the lack of // design optimizations. See top-level class comments. @@ -148,9 +148,9 @@ class LameWindowCapturerChromeOS : public viz::mojom::FrameSinkVideoCapturer, // The maximum number of frames in-flight at any one time. static constexpr int kMaxFramesInFlight = 3; - DISALLOW_COPY_AND_ASSIGN(LameWindowCapturerChromeOS); + DISALLOW_COPY_AND_ASSIGN(SlowWindowCapturerChromeOS); }; } // namespace content -#endif // CONTENT_BROWSER_MEDIA_CAPTURE_LAME_WINDOW_CAPTURER_CHROMEOS_H_ +#endif // CONTENT_BROWSER_MEDIA_CAPTURE_SLOW_WINDOW_CAPTURER_CHROMEOS_H_ diff --git a/chromium/content/browser/media/capture/web_contents_audio_muter.cc b/chromium/content/browser/media/capture/web_contents_audio_muter.cc index 9b6c5b702e8..fbf4b24f470 100644 --- a/chromium/content/browser/media/capture/web_contents_audio_muter.cc +++ b/chromium/content/browser/media/capture/web_contents_audio_muter.cc @@ -10,7 +10,6 @@ #include "base/bind.h" #include "base/bind_helpers.h" #include "base/macros.h" -#include "base/task/post_task.h" #include "base/time/time.h" #include "content/browser/media/capture/audio_mirroring_manager.h" #include "content/public/browser/browser_task_traits.h" @@ -93,8 +92,8 @@ class WebContentsAudioMuter::MuteDestination void QueryForMatches(const std::set<GlobalFrameRoutingId>& candidates, MatchesCallback results_callback) override { - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&MuteDestination::QueryForMatchesOnUIThread, this, candidates, media::BindToCurrentLoop(std::move(results_callback)))); @@ -148,8 +147,8 @@ void WebContentsAudioMuter::StartMuting() { if (is_muting_) return; is_muting_ = true; - base::PostTask( - FROM_HERE, {BrowserThread::IO}, + GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&AudioMirroringManager::StartMirroring, base::Unretained(AudioMirroringManager::GetInstance()), base::RetainedRef(destination_))); @@ -160,8 +159,8 @@ void WebContentsAudioMuter::StopMuting() { if (!is_muting_) return; is_muting_ = false; - base::PostTask( - FROM_HERE, {BrowserThread::IO}, + GetIOThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&AudioMirroringManager::StopMirroring, base::Unretained(AudioMirroringManager::GetInstance()), base::RetainedRef(destination_))); diff --git a/chromium/content/browser/media/capture/web_contents_tracker.cc b/chromium/content/browser/media/capture/web_contents_tracker.cc index 38247fcae46..f51484edbba 100644 --- a/chromium/content/browser/media/capture/web_contents_tracker.cc +++ b/chromium/content/browser/media/capture/web_contents_tracker.cc @@ -5,7 +5,6 @@ #include "content/browser/media/capture/web_contents_tracker.h" #include "base/bind.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -34,8 +33,8 @@ void WebContentsTracker::Start(int render_process_id, if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { StartObservingWebContents(render_process_id, main_render_frame_id); } else { - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&WebContentsTracker::StartObservingWebContents, this, render_process_id, main_render_frame_id)); } @@ -50,8 +49,8 @@ void WebContentsTracker::Stop() { if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { WebContentsObserver::Observe(nullptr); } else { - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&WebContentsTracker::Observe, this, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&WebContentsTracker::Observe, this, static_cast<WebContents*>(nullptr))); } } diff --git a/chromium/content/browser/media/capture/web_contents_video_capture_device.cc b/chromium/content/browser/media/capture/web_contents_video_capture_device.cc index 20db3e37aee..3224837a807 100644 --- a/chromium/content/browser/media/capture/web_contents_video_capture_device.cc +++ b/chromium/content/browser/media/capture/web_contents_video_capture_device.cc @@ -11,7 +11,6 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "content/browser/media/capture/mouse_cursor_overlay_controller.h" #include "content/browser/renderer_host/render_widget_host_view_base.h" @@ -45,8 +44,8 @@ class WebContentsVideoCaptureDevice::FrameTracker DCHECK(device_task_runner_); DCHECK(cursor_controller_); - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce( [](base::WeakPtr<FrameTracker> self, int process_id, int frame_id) { if (self) { @@ -236,16 +235,16 @@ WebContentsVideoCaptureDevice::Create(const std::string& device_id) { } void WebContentsVideoCaptureDevice::WillStart() { - base::PostTask( - FROM_HERE, {BrowserThread::UI}, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&FrameTracker::WillStartCapturingWebContents, tracker_->AsWeakPtr(), capture_params().SuggestConstraints().max_frame_size)); } void WebContentsVideoCaptureDevice::DidStop() { - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&FrameTracker::DidStopCapturingWebContents, + GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&FrameTracker::DidStopCapturingWebContents, tracker_->AsWeakPtr())); } diff --git a/chromium/content/browser/media/capture/web_contents_video_capture_device.h b/chromium/content/browser/media/capture/web_contents_video_capture_device.h index 4d6d1175c09..a90723e141a 100644 --- a/chromium/content/browser/media/capture/web_contents_video_capture_device.h +++ b/chromium/content/browser/media/capture/web_contents_video_capture_device.h @@ -8,7 +8,6 @@ #include <memory> #include <string> -#include "base/logging.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "content/browser/media/capture/frame_sink_video_capture_device.h" diff --git a/chromium/content/browser/media/capture/web_contents_video_capture_device_browsertest.cc b/chromium/content/browser/media/capture/web_contents_video_capture_device_browsertest.cc index 2c651c8b050..03310777203 100644 --- a/chromium/content/browser/media/capture/web_contents_video_capture_device_browsertest.cc +++ b/chromium/content/browser/media/capture/web_contents_video_capture_device_browsertest.cc @@ -8,7 +8,6 @@ #include "base/macros.h" #include "base/run_loop.h" -#include "base/task/post_task.h" #include "build/build_config.h" #include "cc/test/pixel_test_utils.h" #include "components/viz/common/features.h" @@ -145,8 +144,8 @@ class WebContentsVideoCaptureDeviceBrowserTest // Wait for at least the minimum capture period before checking for more // captured frames. base::RunLoop run_loop; - base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, - run_loop.QuitClosure(), GetMinCapturePeriod()); + GetUIThreadTaskRunner({})->PostDelayedTask( + FROM_HERE, run_loop.QuitClosure(), GetMinCapturePeriod()); run_loop.Run(); } } @@ -320,8 +319,8 @@ IN_PROC_BROWSER_TEST_F(WebContentsVideoCaptureDeviceBrowserTest, // frames were queued because the device should be suspended. ChangePageContentColor(SK_ColorGREEN); base::RunLoop run_loop; - base::PostDelayedTask(FROM_HERE, {BrowserThread::UI}, run_loop.QuitClosure(), - base::TimeDelta::FromSeconds(5)); + GetUIThreadTaskRunner({})->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), + base::TimeDelta::FromSeconds(5)); run_loop.Run(); EXPECT_FALSE(HasCapturedFramesInQueue()); |