Commit 20aeb591 authored by Fady Samuel's avatar Fady Samuel Committed by Commit Bot

Surface Synchronization: Fix Mac regression

After Visual Properties ACK (Resize ACK) was moved to the
RenderFrameMetadataObserverClient interface, Mac web content no longer
stuck to the edge of the window. This happened because WindowResizeHelper
didn't see RenderFrameMetadata tasks and so did not schedule them until
AFTER the resize deadline hit.

This CL moves RenderFrameMetadataObserverClient tasks to the
WindowResizeHelper's task_runner thereby fixing resize on Mac.

Bug: 840197, 672962
Change-Id: If4f8a766a2322f1208b6ffccca89c5181f96bf8f
Reviewed-on: https://chromium-review.googlesource.com/1046003Reviewed-by: default avatarccameron <ccameron@chromium.org>
Commit-Queue: Fady Samuel <fsamuel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556432}
parent 1b89887a
......@@ -10,8 +10,10 @@
namespace content {
RenderFrameMetadataProviderImpl::RenderFrameMetadataProviderImpl(
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
FrameTokenMessageQueue* frame_token_message_queue)
: frame_token_message_queue_(frame_token_message_queue),
: task_runner_(task_runner),
frame_token_message_queue_(frame_token_message_queue),
render_frame_metadata_observer_client_binding_(this),
weak_factory_(this) {}
......@@ -30,8 +32,8 @@ void RenderFrameMetadataProviderImpl::Bind(
mojom::RenderFrameMetadataObserverPtr observer) {
render_frame_metadata_observer_ptr_ = std::move(observer);
render_frame_metadata_observer_client_binding_.Close();
render_frame_metadata_observer_client_binding_.Bind(
std::move(client_request));
render_frame_metadata_observer_client_binding_.Bind(std::move(client_request),
task_runner_);
}
void RenderFrameMetadataProviderImpl::ReportAllFrameSubmissionsForTesting(
......
......@@ -27,7 +27,8 @@ class CONTENT_EXPORT RenderFrameMetadataProviderImpl
: public RenderFrameMetadataProvider,
public mojom::RenderFrameMetadataObserverClient {
public:
explicit RenderFrameMetadataProviderImpl(
RenderFrameMetadataProviderImpl(
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
FrameTokenMessageQueue* frame_token_message_queue);
~RenderFrameMetadataProviderImpl() override;
......@@ -69,6 +70,8 @@ class CONTENT_EXPORT RenderFrameMetadataProviderImpl
base::Optional<viz::LocalSurfaceId> last_local_surface_id_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
// Not owned.
FrameTokenMessageQueue* const frame_token_message_queue_;
......
......@@ -369,7 +369,13 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
compositor_frame_sink_binding_(this),
frame_token_message_queue_(
std::make_unique<FrameTokenMessageQueue>(this)),
render_frame_metadata_provider_(frame_token_message_queue_.get()),
render_frame_metadata_provider_(
#if defined(OS_MACOSX)
ui::WindowResizeHelperMac::Get()->task_runner(),
#else
base::ThreadTaskRunnerHandle::Get(),
#endif
frame_token_message_queue_.get()),
frame_sink_id_(base::checked_cast<uint32_t>(process_->GetID()),
base::checked_cast<uint32_t>(routing_id_)),
weak_factory_(this) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment