Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2986)

Unified Diff: android_webview/browser/in_process_view_renderer.cc

Issue 16255010: Hookup android_webview scroll offset delegation to Java side. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/browser/in_process_view_renderer.cc
diff --git a/android_webview/browser/in_process_view_renderer.cc b/android_webview/browser/in_process_view_renderer.cc
index 0ad4a41f71ecdeeda6d4a4f40263fe207440b90d..3f2277a213136ef69549faad04ecf6367d5ea05c 100644
--- a/android_webview/browser/in_process_view_renderer.cc
+++ b/android_webview/browser/in_process_view_renderer.cc
@@ -354,9 +354,9 @@ void InProcessViewRenderer::WebContentsGone() {
bool InProcessViewRenderer::OnDraw(jobject java_canvas,
bool is_hardware_canvas,
- const gfx::Point& scroll,
+ const gfx::Vector2d& scroll_pix,
const gfx::Rect& clip) {
- scroll_at_start_of_frame_ = scroll;
+ scroll_at_start_of_frame_pix_ = scroll_pix;
if (is_hardware_canvas && attached_to_window_ && compositor_ &&
HardwareEnabled() && client_->RequestDrawGL(java_canvas)) {
// All set: we'll get a call on DrawGL when the time comes.
@@ -407,8 +407,8 @@ void InProcessViewRenderer::DrawGL(AwDrawGLInfo* draw_info) {
gfx::Transform transform;
transform.matrix().setColMajorf(draw_info->transform);
- transform.Translate(scroll_at_start_of_frame_.x(),
- scroll_at_start_of_frame_.y());
+ transform.Translate(scroll_at_start_of_frame_pix_.x(),
+ scroll_at_start_of_frame_pix_.y());
// TODO(joth): Check return value.
compositor_->DemandDrawHw(
gfx::Size(draw_info->width, draw_info->height),
@@ -448,10 +448,11 @@ bool InProcessViewRenderer::DrawSWInternal(jobject java_canvas,
}
if (!RasterizeIntoBitmap(env, jbitmap,
- clip.x() - scroll_at_start_of_frame_.x(),
- clip.y() - scroll_at_start_of_frame_.y(),
+ clip.x() - scroll_at_start_of_frame_pix_.x(),
+ clip.y() - scroll_at_start_of_frame_pix_.y(),
base::Bind(&InProcessViewRenderer::RenderSW,
base::Unretained(this)))) {
+
TRACE_EVENT_INSTANT0("android_webview", "Rasterize Fail",
TRACE_EVENT_SCOPE_THREAD);
return false;
@@ -487,8 +488,8 @@ bool InProcessViewRenderer::DrawSWInternal(jobject java_canvas,
} else {
canvas.clipRect(gfx::RectToSkRect(clip));
}
- canvas.translate(scroll_at_start_of_frame_.x(),
- scroll_at_start_of_frame_.y());
+ canvas.translate(scroll_at_start_of_frame_pix_.x(),
+ scroll_at_start_of_frame_pix_.y());
succeeded = RenderSW(&canvas);
}
@@ -578,7 +579,6 @@ bool InProcessViewRenderer::IsAttachedToWindow() {
bool InProcessViewRenderer::IsViewVisible() {
return view_visible_;
}
-
joth 2013/06/18 03:19:50 mistake?
mkosiba (inactive) 2013/06/18 18:09:25 yes
gfx::Rect InProcessViewRenderer::GetScreenRect() {
return gfx::Rect(client_->GetLocationOnScreen(), gfx::Size(width_, height_));
}
@@ -609,14 +609,29 @@ void InProcessViewRenderer::SetContinuousInvalidate(bool invalidate) {
EnsureContinuousInvalidation();
}
+void InProcessViewRenderer::ScrollTo(gfx::Vector2dF new_value_css) {
+ DCHECK(scroll_offset_css_ != new_value_css);
+
+ scroll_offset_css_ = new_value_css;
+
+ if (compositor_)
+ compositor_->DidChangeRootLayerScrollOffset();
+}
+
void InProcessViewRenderer::SetTotalRootLayerScrollOffset(
- gfx::Vector2dF new_value) {
- // TODO(mkosiba): Plumb this all the way through to the view.
- scroll_offset_ = new_value;
+ gfx::Vector2dF new_value_css) {
+ bool value_changed = scroll_offset_css_ != new_value_css;
+
+ if (!value_changed)
+ return;
+
+ scroll_offset_css_ = new_value_css;
+
+ client_->ScrollContainerViewTo(new_value_css);
}
gfx::Vector2dF InProcessViewRenderer::GetTotalRootLayerScrollOffset() {
- return scroll_offset_;
+ return scroll_offset_css_;
}
void InProcessViewRenderer::Invalidate() {

Powered by Google App Engine
This is Rietveld 408576698