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

Unified Diff: sky/viewer/document_view.cc

Issue 851533002: Scale Sky contents by the device pixel ratio (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « sky/viewer/document_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/viewer/document_view.cc
diff --git a/sky/viewer/document_view.cc b/sky/viewer/document_view.cc
index b8a9a22ac3ec6691e291856180f42a357b268a7a..83011748a556922fe88576742704660ae8dc51ea 100644
--- a/sky/viewer/document_view.cc
+++ b/sky/viewer/document_view.cc
@@ -22,6 +22,7 @@
#include "sky/compositor/layer_host.h"
#include "sky/engine/public/platform/Platform.h"
#include "sky/engine/public/platform/WebHTTPHeaderVisitor.h"
+#include "sky/engine/public/platform/WebScreenInfo.h"
#include "sky/engine/public/web/Sky.h"
#include "sky/engine/public/web/WebConsoleMessage.h"
#include "sky/engine/public/web/WebDocument.h"
@@ -109,8 +110,11 @@ void DocumentView::OnEmbed(
Load(response_.Pass());
- gfx::Size size = root_->bounds().To<gfx::Rect>().size();
- web_view_->resize(size);
+ auto& bounds = root_->bounds();
+ float device_pixel_ratio = GetDevicePixelRatio();
+ web_view_->resize(blink::WebSize(bounds.width / device_pixel_ratio,
+ bounds.height / device_pixel_ratio));
+
// TODO(abarth): We should ask the view whether it is focused instead of
// assuming that we're focused.
web_view_->setFocus(true);
@@ -151,7 +155,9 @@ void DocumentView::BeginFrame(base::TimeTicks frame_time) {
web_view_->beginFrame(web_begin_frame_args);
web_view_->layout();
blink::WebSize size = web_view_->size();
- root_layer_->SetSize(gfx::Size(size.width, size.height));
+ float device_pixel_ratio = GetDevicePixelRatio();
+ root_layer_->SetSize(gfx::Size(size.width * device_pixel_ratio,
+ size.height * device_pixel_ratio));
}
void DocumentView::OnSurfaceIdAvailable(mojo::SurfaceIdPtr surface_id) {
@@ -169,6 +175,16 @@ void DocumentView::scheduleAnimation() {
layer_host_->SetNeedsAnimate();
}
+blink::WebScreenInfo DocumentView::screenInfo() {
+ DCHECK(root_);
+ auto& metrics = root_->viewport_metrics();
+ blink::WebScreenInfo screen;
+ screen.rect = blink::WebRect(0, 0, metrics.size->width, metrics.size->height);
+ screen.availableRect = screen.rect;
+ screen.deviceScaleFactor = metrics.device_pixel_ratio;
+ return screen;
+}
+
mojo::View* DocumentView::createChildFrame(const blink::WebURL& url) {
if (!root_)
return nullptr;
@@ -186,6 +202,12 @@ void DocumentView::frameDetached(blink::WebFrame* frame) {
frame->close();
}
+float DocumentView::GetDevicePixelRatio() const {
+ if (root_)
+ return root_->viewport_metrics().device_pixel_ratio;
+ return 1.f;
+}
+
blink::WebNavigationPolicy DocumentView::decidePolicyForNavigation(
const blink::WebFrameClient::NavigationPolicyInfo& info) {
« no previous file with comments | « sky/viewer/document_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698