Index: mojo/services/html_viewer/html_document.cc |
diff --git a/mojo/services/html_viewer/html_document.cc b/mojo/services/html_viewer/html_document.cc |
index 0f35b8d7d94de8895b479d2d41d3ae1839d70cea..5db9763c26d1a9a310517a2a43edc601a205a5ad 100644 |
--- a/mojo/services/html_viewer/html_document.cc |
+++ b/mojo/services/html_viewer/html_document.cc |
@@ -41,6 +41,7 @@ |
#include "third_party/skia/include/core/SkCanvas.h" |
#include "third_party/skia/include/core/SkColor.h" |
#include "third_party/skia/include/core/SkDevice.h" |
+#include "ui/gfx/geometry/dip_util.h" |
using mojo::AxProvider; |
using mojo::Rect; |
@@ -135,10 +136,7 @@ void HTMLDocument::OnEmbed( |
root_ = root; |
embedder_service_provider_ = exposed_services.Pass(); |
navigator_host_.set_service_provider(embedder_service_provider_.get()); |
- |
- blink::WebSize root_size(root_->bounds().width, root_->bounds().height); |
- web_view_->resize(root_size); |
- web_layer_tree_view_impl_->setViewportSize(root_size); |
+ UpdateWebviewSizeFromViewSize(); |
web_layer_tree_view_impl_->set_view(root_); |
root_->AddObserver(this); |
} |
@@ -174,6 +172,16 @@ void HTMLDocument::Load(URLResponsePtr response) { |
web_view_->mainFrame()->loadRequest(web_request); |
} |
+void HTMLDocument::UpdateWebviewSizeFromViewSize() { |
+ web_view_->setDeviceScaleFactor(root_->viewport_metrics().device_pixel_ratio); |
+ const gfx::Size size_in_pixels(root_->bounds().width, root_->bounds().height); |
+ const gfx::Size size_in_dips = gfx::ConvertSizeToDIP( |
+ root_->viewport_metrics().device_pixel_ratio, size_in_pixels); |
+ web_view_->resize( |
+ blink::WebSize(size_in_dips.width(), size_in_dips.height())); |
+ web_layer_tree_view_impl_->setViewportSize(size_in_pixels); |
+} |
+ |
blink::WebStorageNamespace* HTMLDocument::createSessionStorageNamespace() { |
return new WebStorageNamespaceImpl(); |
} |
@@ -301,8 +309,7 @@ void HTMLDocument::OnViewBoundsChanged(View* view, |
const Rect& old_bounds, |
const Rect& new_bounds) { |
DCHECK_EQ(view, root_); |
- web_view_->resize( |
- blink::WebSize(view->bounds().width, view->bounds().height)); |
+ UpdateWebviewSizeFromViewSize(); |
} |
void HTMLDocument::OnViewDestroyed(View* view) { |