| Index: android_webview/browser/browser_view_renderer.cc
|
| diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
|
| index e091edc93f872a6291b6314d0e4a87b566292c7a..13c03636c7050bccda417e21dc52ff77c6ebd207 100644
|
| --- a/android_webview/browser/browser_view_renderer.cc
|
| +++ b/android_webview/browser/browser_view_renderer.cc
|
| @@ -239,6 +239,7 @@ bool BrowserViewRenderer::OnDrawHardware() {
|
| viewport_rect_for_tile_priority = last_on_draw_global_visible_rect_;
|
| }
|
|
|
| + /* Nullptr will be received as this is now async */
|
| content::SynchronousCompositor::Frame frame =
|
| compositor_->DemandDrawHw(surface_size,
|
| gfx::Transform(),
|
| @@ -263,6 +264,31 @@ bool BrowserViewRenderer::OnDrawHardware() {
|
| return true;
|
| }
|
|
|
| +void BrowserViewRenderer::OnDrawHardwareProcessFrame(
|
| + content::SynchronousCompositor::Frame frame) {
|
| + gfx::Transform transform_for_tile_priority =
|
| + external_draw_constraints_.transform;
|
| +
|
| + // If the WebView is on a layer, WebView does not know what transform is
|
| + // applied onto the layer so global visible rect does not make sense here.
|
| + // In this case, just use the surface rect for tiling.
|
| + gfx::Rect viewport_rect_for_tile_priority;
|
| +
|
| + // Leave viewport_rect_for_tile_priority empty if offscreen_pre_raster_ is on.
|
| + if (!offscreen_pre_raster_ && !external_draw_constraints_.is_layer) {
|
| + viewport_rect_for_tile_priority = last_on_draw_global_visible_rect_;
|
| + }
|
| +
|
| + std::unique_ptr<ChildFrame> child_frame = base::WrapUnique(new ChildFrame(
|
| + frame.output_surface_id, std::move(frame.frame), compositor_id_,
|
| + viewport_rect_for_tile_priority.IsEmpty(), transform_for_tile_priority,
|
| + offscreen_pre_raster_, external_draw_constraints_.is_layer));
|
| +
|
| + ReturnUnusedResource(
|
| + current_compositor_frame_consumer_->PassUncommittedFrameOnUI());
|
| + current_compositor_frame_consumer_->SetFrameOnUI(std::move(child_frame));
|
| +}
|
| +
|
| void BrowserViewRenderer::OnParentDrawConstraintsUpdated(
|
| CompositorFrameConsumer* compositor_frame_consumer) {
|
| DCHECK(compositor_frame_consumer);
|
|
|