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

Unified Diff: webkit/plugins/webview_plugin.cc

Issue 11359200: Upstream the pagescalefactor fix for plugin placeholder on android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix the order of #include Created 8 years, 1 month 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 | « webkit/plugins/webview_plugin.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/webview_plugin.cc
diff --git a/webkit/plugins/webview_plugin.cc b/webkit/plugins/webview_plugin.cc
index 4e5c8c40157c849f341e6cdbd931a02ca8d61ea4..bd5cb14e24566ae9ae9e915e311503d5f1e9d989 100644
--- a/webkit/plugins/webview_plugin.cc
+++ b/webkit/plugins/webview_plugin.cc
@@ -8,15 +8,16 @@
#include "base/metrics/histogram.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLRequest.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLResponse.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
#include "webkit/glue/webpreferences.h"
using WebKit::WebCanvas;
@@ -120,17 +121,24 @@ bool WebViewPlugin::getFormValue(WebString& value) {
}
void WebViewPlugin::paint(WebCanvas* canvas, const WebRect& rect) {
- gfx::Rect paintRect = gfx::IntersectRects(rect_, rect);
- if (paintRect.IsEmpty())
+ gfx::Rect paint_rect = gfx::IntersectRects(rect_, rect);
+ if (paint_rect.IsEmpty())
return;
- paintRect.Offset(-rect_.x(), -rect_.y());
+ paint_rect.Offset(-rect_.x(), -rect_.y());
+
+ float content_scale = 1.0f / GetPageScaleFactor();
+ paint_rect.SetRect(
+ ceil(content_scale * paint_rect.x()),
+ ceil(content_scale * paint_rect.y()),
+ ceil(content_scale * paint_rect.width()),
+ ceil(content_scale * paint_rect.height()));
canvas->translate(SkIntToScalar(rect_.x()), SkIntToScalar(rect_.y()));
canvas->save();
web_view_->layout();
- web_view_->paint(canvas, paintRect);
+ web_view_->paint(canvas, paint_rect);
canvas->restore();
}
@@ -141,7 +149,10 @@ void WebViewPlugin::updateGeometry(
const WebVector<WebRect>& cut_out_rects, bool is_visible) {
if (static_cast<gfx::Rect>(frame_rect) != rect_) {
rect_ = frame_rect;
- web_view_->resize(WebSize(frame_rect.width, frame_rect.height));
+
+ float content_scale = 1.0f / GetPageScaleFactor();
+ web_view_->resize(WebSize(content_scale * frame_rect.width,
+ content_scale * frame_rect.height));
}
}
@@ -239,4 +250,13 @@ void WebViewPlugin::didReceiveResponse(WebFrame* frame,
WebFrameClient::didReceiveResponse(frame, identifier, response);
}
+float WebViewPlugin::GetPageScaleFactor() {
+ if (container_) {
+ WebFrame* frame = container_->element().document().frame();
+ WebView* top_view = frame->top()->view();
+ return top_view->pageScaleFactor();
+ }
+ return 1.0f;
+}
+
} // namespace webkit
« no previous file with comments | « webkit/plugins/webview_plugin.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698