summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authorleandrogracia@chromium.org <leandrogracia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-05 22:28:25 +0000
committerleandrogracia@chromium.org <leandrogracia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-05 22:28:25 +0000
commit15810c8ad4222ce8bcc37cb1df49b14fab87c2b4 (patch)
tree72d1b717d0af0ff473f936a010b8f522354ce820 /android_webview
parentb9f7cee1bd22249e4637371906d52cd52a6233b3 (diff)
downloadchromium_src-15810c8ad4222ce8bcc37cb1df49b14fab87c2b4.zip
chromium_src-15810c8ad4222ce8bcc37cb1df49b14fab87c2b4.tar.gz
chromium_src-15810c8ad4222ce8bcc37cb1df49b14fab87c2b4.tar.bz2
Correct device scale for Android WebView SW rendering.
After disabling --enable-css-transform-pinch the Software Rendering feature of Android WebView (not enabled yet) started failing as a consequence of a change in the device scale factor. Correct this in the SkCanvas used for drawing. BUG=167913,173036 Review URL: https://chromiumcodereview.appspot.com/12226010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180800 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
-rw-r--r--android_webview/native/aw_contents.cc6
-rw-r--r--android_webview/native/aw_contents.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
index 28f6f18..ff8483c 100644
--- a/android_webview/native/aw_contents.cc
+++ b/android_webview/native/aw_contents.cc
@@ -170,6 +170,7 @@ AwContents::AwContents(JNIEnv* env,
view_visible_(false),
compositor_visible_(false),
is_composite_pending_(false),
+ dpi_scale_(1.0f),
on_new_picture_mode_(kOnNewPictureDisabled),
last_frame_context_(NULL) {
RendererPictureMap::CreateInstance();
@@ -507,6 +508,8 @@ void AwContents::DidInitializeContentViewCore(JNIEnv* env, jobject obj,
ContentViewCore* core = reinterpret_cast<ContentViewCore*>(content_view_core);
DCHECK(core == ContentViewCore::FromWebContents(web_contents_.get()));
+ dpi_scale_ = core->GetDpiScale();
+
// Ensures content keeps clipped within the view during transformations.
view_clip_layer_ = cc::Layer::create();
view_clip_layer_->setBounds(view_size_);
@@ -1018,6 +1021,9 @@ bool AwContents::RenderPicture(SkCanvas* canvas) {
if (!picture)
return false;
+ // Correct device scale.
+ canvas->scale(dpi_scale_, dpi_scale_);
+
picture->draw(canvas);
return true;
}
diff --git a/android_webview/native/aw_contents.h b/android_webview/native/aw_contents.h
index 6747ac7..c2b7e49 100644
--- a/android_webview/native/aw_contents.h
+++ b/android_webview/native/aw_contents.h
@@ -193,6 +193,7 @@ class AwContents : public FindHelper::Listener,
bool view_visible_;
bool compositor_visible_;
bool is_composite_pending_;
+ float dpi_scale_;
OnNewPictureMode on_new_picture_mode_;
// Used only for detecting Android View System context changes.