| Index: webkit/glue/plugins/webplugin_delegate_impl.cc
|
| ===================================================================
|
| --- webkit/glue/plugins/webplugin_delegate_impl.cc (revision 8043)
|
| +++ webkit/glue/plugins/webplugin_delegate_impl.cc (working copy)
|
| @@ -9,8 +9,6 @@
|
|
|
| #include "base/file_util.h"
|
| #include "base/message_loop.h"
|
| -#include "base/gfx/gdi_util.h"
|
| -#include "base/gfx/point.h"
|
| #include "base/stats_counters.h"
|
| #include "base/string_util.h"
|
| #include "webkit/default_plugin/plugin_impl.h"
|
| @@ -133,7 +131,6 @@
|
| plugin_wnd_proc_(NULL),
|
| last_message_(0),
|
| is_calling_wndproc(false),
|
| - initial_plugin_resize_done_(false),
|
| dummy_window_for_activation_(NULL),
|
| handle_event_message_filter_hook_(NULL),
|
| handle_event_pump_messages_event_(NULL),
|
| @@ -321,13 +318,11 @@
|
|
|
| void WebPluginDelegateImpl::UpdateGeometry(
|
| const gfx::Rect& window_rect,
|
| - const gfx::Rect& clip_rect,
|
| - const std::vector<gfx::Rect>& cutout_rects,
|
| - bool visible) {
|
| + const gfx::Rect& clip_rect) {
|
| if (windowless_) {
|
| WindowlessUpdateGeometry(window_rect, clip_rect);
|
| } else {
|
| - WindowedUpdateGeometry(window_rect, clip_rect, cutout_rects, visible);
|
| + WindowedUpdateGeometry(window_rect, clip_rect);
|
| }
|
| }
|
|
|
| @@ -376,6 +371,12 @@
|
| void WebPluginDelegateImpl::DidReceiveManualResponse(
|
| const std::string& url, const std::string& mime_type,
|
| const std::string& headers, uint32 expected_length, uint32 last_modified) {
|
| + if (!windowless_) {
|
| + // Calling NPP_WriteReady before NPP_SetWindow causes movies to not load in
|
| + // Flash. See http://b/issue?id=892174.
|
| + DCHECK(windowed_did_set_window_);
|
| + }
|
| +
|
| instance()->DidReceiveManualResponse(url, mime_type, headers,
|
| expected_length, last_modified);
|
| }
|
| @@ -407,10 +408,8 @@
|
|
|
| void WebPluginDelegateImpl::WindowedUpdateGeometry(
|
| const gfx::Rect& window_rect,
|
| - const gfx::Rect& clip_rect,
|
| - const std::vector<gfx::Rect>& cutout_rects,
|
| - bool visible) {
|
| - if (WindowedReposition(window_rect, clip_rect, cutout_rects, visible) ||
|
| + const gfx::Rect& clip_rect) {
|
| + if (WindowedReposition(window_rect, clip_rect) ||
|
| !windowed_did_set_window_) {
|
| // Let the plugin know that it has been moved
|
| WindowedSetWindow();
|
| @@ -662,69 +661,33 @@
|
| return true;
|
| }
|
|
|
| -void WebPluginDelegateImpl::MoveWindow(
|
| - HWND window,
|
| - const gfx::Rect& window_rect,
|
| - const gfx::Rect& clip_rect,
|
| - const std::vector<gfx::Rect>& cutout_rects,
|
| - bool visible) {
|
| - HRGN hrgn = ::CreateRectRgn(clip_rect.x(),
|
| - clip_rect.y(),
|
| - clip_rect.right(),
|
| - clip_rect.bottom());
|
| - gfx::SubtractRectanglesFromRegion(hrgn, cutout_rects);
|
| -
|
| - // Note: System will own the hrgn after we call SetWindowRgn,
|
| - // so we don't need to call DeleteObject(hrgn)
|
| - ::SetWindowRgn(window, hrgn, FALSE);
|
| -
|
| - unsigned long flags = 0;
|
| - if (visible)
|
| - flags |= SWP_SHOWWINDOW;
|
| - else
|
| - flags |= SWP_HIDEWINDOW;
|
| -
|
| - ::SetWindowPos(window,
|
| - NULL,
|
| - window_rect.x(),
|
| - window_rect.y(),
|
| - window_rect.width(),
|
| - window_rect.height(),
|
| - flags);
|
| -}
|
| -
|
| bool WebPluginDelegateImpl::WindowedReposition(
|
| const gfx::Rect& window_rect,
|
| - const gfx::Rect& clip_rect,
|
| - const std::vector<gfx::Rect>& cutout_rects,
|
| - bool visible) {
|
| + const gfx::Rect& clip_rect) {
|
| if (!windowed_handle_) {
|
| NOTREACHED();
|
| return false;
|
| }
|
|
|
| - if (window_rect_ == window_rect && clip_rect_ == clip_rect &&
|
| - cutout_rects == cutout_rects_ &&
|
| - initial_plugin_resize_done_)
|
| + if (window_rect_ == window_rect && clip_rect_ == clip_rect)
|
| return false;
|
|
|
| + // Clipping is handled by WebPlugin.
|
| + if (window_rect.size() != window_rect_.size()) {
|
| + ::SetWindowPos(windowed_handle_,
|
| + NULL,
|
| + 0,
|
| + 0,
|
| + window_rect.width(),
|
| + window_rect.height(),
|
| + SWP_SHOWWINDOW);
|
| + }
|
| +
|
| window_rect_ = window_rect;
|
| clip_rect_ = clip_rect;
|
| - cutout_rects_ = cutout_rects;
|
|
|
| - if (!initial_plugin_resize_done_) {
|
| - // We need to ensure that the plugin process continues to reposition
|
| - // the plugin window until we receive an indication that it is now visible.
|
| - // Subsequent repositions will be done by the browser.
|
| - if (visible)
|
| - initial_plugin_resize_done_ = true;
|
| - // We created the window with 0 width and height since we didn't know it
|
| - // at the time. Now that we know the geometry, we we can update its size
|
| - // since the browser only calls SetWindowPos when scrolling occurs.
|
| - MoveWindow(windowed_handle_, window_rect, clip_rect, cutout_rects, visible);
|
| - // Ensure that the entire window gets repainted.
|
| - ::InvalidateRect(windowed_handle_, NULL, FALSE);
|
| - }
|
| + // Ensure that the entire window gets repainted.
|
| + ::InvalidateRect(windowed_handle_, NULL, FALSE);
|
|
|
| return true;
|
| }
|
|
|