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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 10905122: Initial NPAPI plugin support in Win Aura. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync Created 8 years, 3 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: content/browser/renderer_host/render_widget_host_view_aura.cc
===================================================================
--- content/browser/renderer_host/render_widget_host_view_aura.cc (revision 156019)
+++ content/browser/renderer_host/render_widget_host_view_aura.cc (working copy)
@@ -338,7 +338,12 @@
}
gfx::NativeViewId RenderWidgetHostViewAura::GetNativeViewId() const {
+#if defined(OS_WIN)
+ HWND window = window_->GetRootWindow()->GetAcceleratedWidget();
+ return reinterpret_cast<gfx::NativeViewId>(window);
+#else
return static_cast<gfx::NativeViewId>(NULL);
+#endif
}
gfx::NativeViewAccessible RenderWidgetHostViewAura::GetNativeViewAccessible() {
@@ -347,8 +352,29 @@
}
void RenderWidgetHostViewAura::MovePluginWindows(
- const std::vector<webkit::npapi::WebPluginGeometry>& moves) {
- // We don't support windowed plugins.
+ const gfx::Point& scroll_offset,
+ const std::vector<webkit::npapi::WebPluginGeometry>& plugin_window_moves) {
+#if defined(OS_WIN)
+ HWND parent = window_->GetRootWindow()->GetAcceleratedWidget();
+ gfx::Rect view_bounds = window_->GetBoundsInRootWindow();
+ std::vector<webkit::npapi::WebPluginGeometry> moves = plugin_window_moves;
+
+ gfx::Rect view_port(scroll_offset.x(), scroll_offset.y(), view_bounds.width(),
+ view_bounds.height());
+
+ for (size_t i = 0; i < moves.size(); ++i) {
+ gfx::Rect clip = moves[i].clip_rect;
+ clip.Offset(moves[i].window_rect.origin());
+ clip.Offset(scroll_offset);
+ clip = clip.Intersect(view_port);
+ clip.Offset(-moves[i].window_rect.x(), -moves[i].window_rect.y());
+ clip.Offset(-scroll_offset.x(), -scroll_offset.y());
+ moves[i].clip_rect = clip;
+
+ moves[i].window_rect.Offset(view_bounds.origin());
+ }
+ MovePluginWindowsHelper(parent, moves);
+#endif // defined(OS_WIN)
}
void RenderWidgetHostViewAura::Focus() {
@@ -453,6 +479,15 @@
continue;
SchedulePaintIfNotInClip(rect, clip_rect);
+
+#if defined(OS_WIN)
+ // Send the invalid rect in screen coordinates.
+ gfx::Rect screen_rect = GetViewBounds();
+ gfx::Rect invalid_screen_rect(rect);
+ invalid_screen_rect.Offset(screen_rect.x(), screen_rect.y());
+ HWND hwnd = window_->GetRootWindow()->GetAcceleratedWidget();
+ PaintPluginWindowsHelper(hwnd, invalid_screen_rect);
+#endif // defined(OS_WIN)
}
}

Powered by Google App Engine
This is Rietveld 408576698