| 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 fd00b6be6b701a1c054c305d7ccadf9ae3f1890b..77bd2f9948e4cee4ee26811c6011b108df1974b6 100644
|
| --- a/android_webview/browser/browser_view_renderer.cc
|
| +++ b/android_webview/browser/browser_view_renderer.cc
|
| @@ -5,6 +5,7 @@
|
| #include "android_webview/browser/browser_view_renderer.h"
|
|
|
| #include "android_webview/browser/browser_view_renderer_client.h"
|
| +#include "android_webview/browser/parent_compositor_draw_constraints.h"
|
| #include "android_webview/browser/shared_renderer_state.h"
|
| #include "android_webview/common/aw_switches.h"
|
| #include "android_webview/public/browser/draw_gl.h"
|
| @@ -258,14 +259,29 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) {
|
| draw_gl_input->width = width_;
|
| draw_gl_input->height = height_;
|
|
|
| - gfx::Transform transform;
|
| gfx::Size surface_size(width_, height_);
|
| gfx::Rect viewport(surface_size);
|
| - // TODO(boliu): Should really be |last_on_draw_global_visible_rect_|.
|
| - // See crbug.com/372073.
|
| gfx::Rect clip = viewport;
|
| - scoped_ptr<cc::CompositorFrame> frame = compositor_->DemandDrawHw(
|
| - surface_size, transform, viewport, clip);
|
| + gfx::Rect external_tiling_rect;
|
| + gfx::Transform external_tiling_transform = parent_draw_constraints_.transform;
|
| +
|
| + parent_draw_constraints_ = shared_renderer_state_->ParentDrawConstraints();
|
| +
|
| + // If the WebView is on a layer, the parent transform is just an identity
|
| + // matrix and WebView does not know what transform is applied onto the layer.
|
| + // In this case, just use the surface rect for tiling.
|
| + if (parent_draw_constraints_.is_layer)
|
| + external_tiling_rect = parent_draw_constraints_.surface_rect;
|
| + else
|
| + external_tiling_rect = last_on_draw_global_visible_rect_;
|
| +
|
| + scoped_ptr<cc::CompositorFrame> frame =
|
| + compositor_->DemandDrawHw(surface_size,
|
| + gfx::Transform(),
|
| + viewport,
|
| + clip,
|
| + external_tiling_rect,
|
| + external_tiling_transform);
|
| if (!frame.get())
|
| return false;
|
|
|
|
|