| Index: content/child/npapi/webplugin_delegate_impl_win.cc | 
| diff --git a/content/child/npapi/webplugin_delegate_impl_win.cc b/content/child/npapi/webplugin_delegate_impl_win.cc | 
| index 5cd6e5c09ccbd49edc0d9780109a338fed89612b..f0213e372fe732025ddf6865d1a32f39c85cf209 100644 | 
| --- a/content/child/npapi/webplugin_delegate_impl_win.cc | 
| +++ b/content/child/npapi/webplugin_delegate_impl_win.cc | 
| @@ -58,12 +58,6 @@ const wchar_t kWebPluginDelegateProperty[] = L"WebPluginDelegateProperty"; | 
| // this seems to work well enough. | 
| const int kFlashWMUSERMessageThrottleDelayMs = 5; | 
|  | 
| -// Flash displays popups in response to user clicks by posting a WM_USER | 
| -// message to the plugin window. The handler for this message displays | 
| -// the popup. To ensure that the popups allowed state is sent correctly | 
| -// to the renderer we reset the popups allowed state in a timer. | 
| -const int kWindowedPluginPopupTimerMs = 50; | 
| - | 
| // The current instance of the plugin which entered the modal loop. | 
| WebPluginDelegateImpl* g_current_plugin_instance = NULL; | 
|  | 
| @@ -212,35 +206,16 @@ LRESULT CALLBACK WebPluginDelegateImpl::HandleEventMessageFilterHook( | 
| return CallNextHookEx(NULL, code, wParam, lParam); | 
| } | 
|  | 
| -LRESULT CALLBACK WebPluginDelegateImpl::MouseHookProc( | 
| -    int code, WPARAM wParam, LPARAM lParam) { | 
| -  if (code == HC_ACTION) { | 
| -    MOUSEHOOKSTRUCT* hook_struct = reinterpret_cast<MOUSEHOOKSTRUCT*>(lParam); | 
| -    if (hook_struct) | 
| -      HandleCaptureForMessage(hook_struct->hwnd, wParam); | 
| -  } | 
| - | 
| -  return CallNextHookEx(NULL, code, wParam, lParam); | 
| -} | 
| - | 
| WebPluginDelegateImpl::WebPluginDelegateImpl(WebPlugin* plugin, | 
| PluginInstance* instance) | 
| -    : windowed_handle_(NULL), | 
| -      windowed_did_set_window_(false), | 
| -      windowless_(false), | 
| -      plugin_(plugin), | 
| +    : plugin_(plugin), | 
| instance_(instance), | 
| -      plugin_wnd_proc_(NULL), | 
| -      last_message_(0), | 
| -      is_calling_wndproc(false), | 
| quirks_(0), | 
| dummy_window_for_activation_(NULL), | 
| dummy_window_parent_(NULL), | 
| old_dummy_window_proc_(NULL), | 
| handle_event_message_filter_hook_(NULL), | 
| handle_event_pump_messages_event_(NULL), | 
| -      user_gesture_message_posted_(false), | 
| -      mouse_hook_(NULL), | 
| handle_event_depth_(0), | 
| first_set_window_call_(true), | 
| plugin_has_focus_(false), | 
| @@ -333,24 +308,17 @@ WebPluginDelegateImpl::~WebPluginDelegateImpl() { | 
|  | 
| DestroyInstance(); | 
|  | 
| -  if (!windowless_) | 
| -    WindowedDestroyWindow(); | 
| - | 
| if (handle_event_pump_messages_event_) { | 
| CloseHandle(handle_event_pump_messages_event_); | 
| } | 
| } | 
|  | 
| bool WebPluginDelegateImpl::PlatformInitialize() { | 
| -  plugin_->SetWindow(windowed_handle_); | 
| - | 
| -  if (windowless_) { | 
| -    CreateDummyWindowForActivation(); | 
| -    handle_event_pump_messages_event_ = CreateEvent(NULL, TRUE, FALSE, NULL); | 
| -    plugin_->SetWindowlessData( | 
| -        handle_event_pump_messages_event_, | 
| -        reinterpret_cast<gfx::NativeViewId>(dummy_window_for_activation_)); | 
| -  } | 
| +  CreateDummyWindowForActivation(); | 
| +  handle_event_pump_messages_event_ = CreateEvent(NULL, TRUE, FALSE, NULL); | 
| +  plugin_->SetWindowlessData( | 
| +      handle_event_pump_messages_event_, | 
| +      reinterpret_cast<gfx::NativeViewId>(dummy_window_for_activation_)); | 
|  | 
| // Windowless plugins call the WindowFromPoint API and passes the result of | 
| // that to the TrackPopupMenu API call as the owner window. This causes the | 
| @@ -358,7 +326,7 @@ bool WebPluginDelegateImpl::PlatformInitialize() { | 
| // thread as the caller. It works in the other browsers as the plugin lives | 
| // on the browser thread. Our workaround is to intercept the TrackPopupMenu | 
| // API and replace the window handle with the dummy activation window. | 
| -  if (windowless_ && !g_iat_patch_track_popup_menu.Pointer()->is_patched()) { | 
| +  if (!g_iat_patch_track_popup_menu.Pointer()->is_patched()) { | 
| g_iat_patch_track_popup_menu.Pointer()->Patch( | 
| GetPluginPath().value().c_str(), "user32.dll", "TrackPopupMenu", | 
| WebPluginDelegateImpl::TrackPopupMenuPatch); | 
| @@ -371,28 +339,13 @@ bool WebPluginDelegateImpl::PlatformInitialize() { | 
| // browser in the HandleEvent call, which ensures that the cursor does not | 
| // change when a windowless plugin instance changes the cursor | 
| // in a background tab. | 
| -  if (windowless_ && !g_iat_patch_set_cursor.Pointer()->is_patched() && | 
| +  if (!g_iat_patch_set_cursor.Pointer()->is_patched() && | 
| (quirks_ & PLUGIN_QUIRK_PATCH_SETCURSOR)) { | 
| g_iat_patch_set_cursor.Pointer()->Patch( | 
| GetPluginPath().value().c_str(), "user32.dll", "SetCursor", | 
| WebPluginDelegateImpl::SetCursorPatch); | 
| } | 
|  | 
| -  // The windowed flash plugin has a bug which occurs when the plugin enters | 
| -  // fullscreen mode. It basically captures the mouse on WM_LBUTTONDOWN and | 
| -  // does not release capture correctly causing it to stop receiving | 
| -  // subsequent mouse events. This problem is also seen in Safari where there | 
| -  // is code to handle this in the wndproc. However the plugin subclasses the | 
| -  // window again in WM_LBUTTONDOWN before entering full screen. As a result | 
| -  // Safari does not receive the WM_LBUTTONUP message. To workaround this | 
| -  // issue we use a per thread mouse hook. This bug does not occur in Firefox | 
| -  // and opera. Firefox has code similar to Safari. It could well be a bug in | 
| -  // the flash plugin, which only occurs in webkit based browsers. | 
| -  if (quirks_ & PLUGIN_QUIRK_HANDLE_MOUSE_CAPTURE) { | 
| -    mouse_hook_ = SetWindowsHookEx(WH_MOUSE, MouseHookProc, NULL, | 
| -                                    GetCurrentThreadId()); | 
| -  } | 
| - | 
| // On XP, WMP will use its old UI unless a registry key under HKLM has the | 
| // name of the current process.  We do it in the installer for admin users, | 
| // for the rest patch this function. | 
| @@ -418,7 +371,7 @@ bool WebPluginDelegateImpl::PlatformInitialize() { | 
| GetProcAddressPatch); | 
| } | 
|  | 
| -  if (windowless_ && !g_iat_patch_window_from_point.Pointer()->is_patched() && | 
| +  if (!g_iat_patch_window_from_point.Pointer()->is_patched() && | 
| (quirks_ & PLUGIN_QUIRK_FAKE_WINDOW_FROM_POINT)) { | 
| g_iat_patch_window_from_point.Pointer()->Patch( | 
| GetPluginPath().value().c_str(), "user32.dll", "WindowFromPoint", | 
| @@ -447,86 +400,16 @@ void WebPluginDelegateImpl::PlatformDestroyInstance() { | 
|  | 
| if (g_iat_patch_window_from_point.Pointer()->is_patched()) | 
| g_iat_patch_window_from_point.Pointer()->Unpatch(); | 
| - | 
| -  if (mouse_hook_) { | 
| -    UnhookWindowsHookEx(mouse_hook_); | 
| -    mouse_hook_ = NULL; | 
| -  } | 
| } | 
|  | 
| void WebPluginDelegateImpl::Paint(SkCanvas* canvas, const gfx::Rect& rect) { | 
| -  if (windowless_ && skia::SupportsPlatformPaint(canvas)) { | 
| +  if (skia::SupportsPlatformPaint(canvas)) { | 
| skia::ScopedPlatformPaint scoped_platform_paint(canvas); | 
| HDC hdc = scoped_platform_paint.GetPlatformSurface(); | 
| WindowlessPaint(hdc, rect); | 
| } | 
| } | 
|  | 
| -bool WebPluginDelegateImpl::WindowedCreatePlugin() { | 
| -  DCHECK(!windowed_handle_); | 
| - | 
| -  RegisterNativeWindowClass(); | 
| - | 
| -  // The window will be sized and shown later. | 
| -  windowed_handle_ = CreateWindowEx( | 
| -      WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR, | 
| -      kNativeWindowClassName, | 
| -      0, | 
| -      WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, | 
| -      0, | 
| -      0, | 
| -      0, | 
| -      0, | 
| -      GetDesktopWindow(), | 
| -      0, | 
| -      GetModuleHandle(NULL), | 
| -      0); | 
| -  if (windowed_handle_ == 0) | 
| -    return false; | 
| - | 
| -    // This is a tricky workaround for Issue 2673 in chromium "Flash: IME not | 
| -    // available". To use IMEs in this window, we have to make Windows attach | 
| -  // IMEs to this window (i.e. load IME DLLs, attach them to this process, and | 
| -  // add their message hooks to this window). Windows attaches IMEs while this | 
| -  // process creates a top-level window. On the other hand, to layout this | 
| -  // window correctly in the given parent window (RenderWidgetHostViewWin or | 
| -  // RenderWidgetHostViewAura), this window should be a child window of the | 
| -  // parent window. To satisfy both of the above conditions, this code once | 
| -  // creates a top-level window and change it to a child window of the parent | 
| -  // window (in the browser process). | 
| -    SetWindowLongPtr(windowed_handle_, GWL_STYLE, | 
| -                     WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS); | 
| - | 
| -  BOOL result = SetProp(windowed_handle_, kWebPluginDelegateProperty, this); | 
| -  DCHECK(result == TRUE) << "SetProp failed, last error = " << GetLastError(); | 
| - | 
| -  // Calling SetWindowLongPtrA here makes the window proc ASCII, which is | 
| -  // required by at least the Shockwave Director plugin. | 
| -  SetWindowLongPtrA(windowed_handle_, | 
| -                    GWLP_WNDPROC, | 
| -                    reinterpret_cast<LONG_PTR>(DefWindowProcA)); | 
| - | 
| -  return true; | 
| -} | 
| - | 
| -void WebPluginDelegateImpl::WindowedDestroyWindow() { | 
| -  if (windowed_handle_ != NULL) { | 
| -    // Unsubclass the window. | 
| -    WNDPROC current_wnd_proc = reinterpret_cast<WNDPROC>( | 
| -        GetWindowLongPtr(windowed_handle_, GWLP_WNDPROC)); | 
| -    if (current_wnd_proc == NativeWndProc) { | 
| -      SetWindowLongPtr(windowed_handle_, | 
| -                       GWLP_WNDPROC, | 
| -                       reinterpret_cast<LONG_PTR>(plugin_wnd_proc_)); | 
| -    } | 
| - | 
| -    plugin_->WillDestroyWindow(windowed_handle_); | 
| - | 
| -    DestroyWindow(windowed_handle_); | 
| -    windowed_handle_ = 0; | 
| -  } | 
| -} | 
| - | 
| // Erase all messages in the queue destined for a particular window. | 
| // When windows are closing, callers should use this function to clear | 
| // the queue. | 
| @@ -755,129 +638,6 @@ bool WebPluginDelegateImpl::CreateDummyWindowForActivation() { | 
| return true; | 
| } | 
|  | 
| -bool WebPluginDelegateImpl::WindowedReposition( | 
| -    const gfx::Rect& window_rect_in_dip, | 
| -    const gfx::Rect& clip_rect_in_dip) { | 
| -  if (!windowed_handle_) { | 
| -    NOTREACHED(); | 
| -    return false; | 
| -  } | 
| - | 
| -  gfx::Rect window_rect = gfx::win::DIPToScreenRect(window_rect_in_dip); | 
| -  gfx::Rect clip_rect = gfx::win::DIPToScreenRect(clip_rect_in_dip); | 
| -  if (window_rect_ == window_rect && clip_rect_ == clip_rect) | 
| -    return false; | 
| - | 
| -  // We only set the plugin's size here.  Its position is moved elsewhere, which | 
| -  // allows the window moves/scrolling/clipping to be synchronized with the page | 
| -  // and other windows. | 
| -  // If the plugin window has no parent, then don't focus it because it isn't | 
| -  // being displayed anywhere. See: | 
| -  // http://code.google.com/p/chromium/issues/detail?id=32658 | 
| -  if (window_rect.size() != window_rect_.size()) { | 
| -    UINT flags = SWP_NOMOVE | SWP_NOZORDER; | 
| -    if (!GetParent(windowed_handle_)) | 
| -      flags |= SWP_NOACTIVATE; | 
| -    ::SetWindowPos(windowed_handle_, | 
| -                   NULL, | 
| -                   0, | 
| -                   0, | 
| -                   window_rect.width(), | 
| -                   window_rect.height(), | 
| -                   flags); | 
| -  } | 
| - | 
| -  window_rect_ = window_rect; | 
| -  clip_rect_ = clip_rect; | 
| - | 
| -  // Ensure that the entire window gets repainted. | 
| -  ::InvalidateRect(windowed_handle_, NULL, FALSE); | 
| - | 
| -  return true; | 
| -} | 
| - | 
| -void WebPluginDelegateImpl::WindowedSetWindow() { | 
| -  if (!instance_.get()) | 
| -    return; | 
| - | 
| -  if (!windowed_handle_) { | 
| -    NOTREACHED(); | 
| -    return; | 
| -  } | 
| - | 
| -  instance()->set_window_handle(windowed_handle_); | 
| - | 
| -  DCHECK(!instance()->windowless()); | 
| - | 
| -  window_.clipRect.top = std::max(0, clip_rect_.y()); | 
| -  window_.clipRect.left = std::max(0, clip_rect_.x()); | 
| -  window_.clipRect.bottom = std::max(0, clip_rect_.y() + clip_rect_.height()); | 
| -  window_.clipRect.right = std::max(0, clip_rect_.x() + clip_rect_.width()); | 
| -  window_.height = window_rect_.height(); | 
| -  window_.width = window_rect_.width(); | 
| -  window_.x = 0; | 
| -  window_.y = 0; | 
| - | 
| -  window_.window = windowed_handle_; | 
| -  window_.type = NPWindowTypeWindow; | 
| - | 
| -  // Reset this flag before entering the instance in case of side-effects. | 
| -  windowed_did_set_window_ = true; | 
| - | 
| -  instance()->NPP_SetWindow(&window_); | 
| -  if (quirks_ & PLUGIN_QUIRK_SETWINDOW_TWICE) | 
| -    instance()->NPP_SetWindow(&window_); | 
| - | 
| -  WNDPROC current_wnd_proc = reinterpret_cast<WNDPROC>( | 
| -        GetWindowLongPtr(windowed_handle_, GWLP_WNDPROC)); | 
| -  if (current_wnd_proc != NativeWndProc) { | 
| -    plugin_wnd_proc_ = reinterpret_cast<WNDPROC>( | 
| -        SetWindowLongPtr(windowed_handle_, | 
| -                         GWLP_WNDPROC, | 
| -                         reinterpret_cast<LONG_PTR>(NativeWndProc))); | 
| -  } | 
| -} | 
| - | 
| -ATOM WebPluginDelegateImpl::RegisterNativeWindowClass() { | 
| -  static bool have_registered_window_class = false; | 
| -  if (have_registered_window_class == true) | 
| -    return true; | 
| - | 
| -  have_registered_window_class = true; | 
| - | 
| -  WNDCLASSEX wcex; | 
| -  wcex.cbSize         = sizeof(WNDCLASSEX); | 
| -  wcex.style          = CS_DBLCLKS; | 
| -  wcex.lpfnWndProc    = WrapperWindowProc; | 
| -  wcex.cbClsExtra     = 0; | 
| -  wcex.cbWndExtra     = 0; | 
| -  wcex.hInstance      = GetModuleHandle(NULL); | 
| -  wcex.hIcon          = 0; | 
| -  wcex.hCursor        = 0; | 
| -  // Some plugins like windows media player 11 create child windows parented | 
| -  // by our plugin window, where the media content is rendered. These plugins | 
| -  // dont implement WM_ERASEBKGND, which causes painting issues, when the | 
| -  // window where the media is rendered is moved around. DefWindowProc does | 
| -  // implement WM_ERASEBKGND correctly if we have a valid background brush. | 
| -  wcex.hbrBackground  = reinterpret_cast<HBRUSH>(COLOR_WINDOW+1); | 
| -  wcex.lpszMenuName   = 0; | 
| -  wcex.lpszClassName  = kNativeWindowClassName; | 
| -  wcex.hIconSm        = 0; | 
| - | 
| -  return RegisterClassEx(&wcex); | 
| -} | 
| - | 
| -LRESULT CALLBACK WebPluginDelegateImpl::WrapperWindowProc( | 
| -    HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { | 
| -  // This is another workaround for Issue 2673 in chromium "Flash: IME not | 
| -  // available". Somehow, the CallWindowProc() function does not dispatch | 
| -  // window messages when its first parameter is a handle representing the | 
| -  // DefWindowProc() function. To avoid this problem, this code creates a | 
| -  // wrapper function which just encapsulates the DefWindowProc() function | 
| -  // and set it as the window procedure of a windowed plugin. | 
| -  return DefWindowProc(hWnd, message, wParam, lParam); | 
| -} | 
| - | 
| // Returns true if the message passed in corresponds to a user gesture. | 
| static bool IsUserGestureMessage(unsigned int message) { | 
| switch (message) { | 
| @@ -898,115 +658,6 @@ static bool IsUserGestureMessage(unsigned int message) { | 
| return false; | 
| } | 
|  | 
| -LRESULT CALLBACK WebPluginDelegateImpl::NativeWndProc( | 
| -    HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { | 
| -  WebPluginDelegateImpl* delegate = reinterpret_cast<WebPluginDelegateImpl*>( | 
| -      GetProp(hwnd, kWebPluginDelegateProperty)); | 
| -  if (!delegate) { | 
| -    NOTREACHED(); | 
| -    return 0; | 
| -  } | 
| - | 
| -  if (message == delegate->last_message_ && | 
| -      delegate->GetQuirks() & PLUGIN_QUIRK_DONT_CALL_WND_PROC_RECURSIVELY && | 
| -      delegate->is_calling_wndproc) { | 
| -    // Real may go into a state where it recursively dispatches the same event | 
| -    // when subclassed.  See https://bugzilla.mozilla.org/show_bug.cgi?id=192914 | 
| -    // We only do the recursive check for Real because it's possible and valid | 
| -    // for a plugin to synchronously dispatch a message to itself such that it | 
| -    // looks like it's in recursion. | 
| -    return TRUE; | 
| -  } | 
| - | 
| -  // Flash may flood the message queue with WM_USER+1 message causing 100% CPU | 
| -  // usage.  See https://bugzilla.mozilla.org/show_bug.cgi?id=132759.  We | 
| -  // prevent this by throttling the messages. | 
| -  if (message == WM_USER + 1 && | 
| -      delegate->GetQuirks() & PLUGIN_QUIRK_THROTTLE_WM_USER_PLUS_ONE) { | 
| -    WebPluginDelegateImpl::ThrottleMessage(delegate->plugin_wnd_proc_, hwnd, | 
| -                                           message, wparam, lparam); | 
| -    return FALSE; | 
| -  } | 
| - | 
| -  LRESULT result; | 
| -  uint32_t old_message = delegate->last_message_; | 
| -  delegate->last_message_ = message; | 
| - | 
| -  static UINT custom_msg = RegisterWindowMessage(kPaintMessageName); | 
| -  if (message == custom_msg) { | 
| -    // Get the invalid rect which is in screen coordinates and convert to | 
| -    // window coordinates. | 
| -    gfx::Rect invalid_rect; | 
| -    invalid_rect.set_x(static_cast<short>(LOWORD(wparam))); | 
| -    invalid_rect.set_y(static_cast<short>(HIWORD(wparam))); | 
| -    invalid_rect.set_width(static_cast<short>(LOWORD(lparam))); | 
| -    invalid_rect.set_height(static_cast<short>(HIWORD(lparam))); | 
| - | 
| -    RECT window_rect; | 
| -    GetWindowRect(hwnd, &window_rect); | 
| -    invalid_rect.Offset(-window_rect.left, -window_rect.top); | 
| - | 
| -    // The plugin window might have non-client area.   If we don't pass in | 
| -    // RDW_FRAME then the children don't receive WM_NCPAINT messages while | 
| -    // scrolling, which causes painting problems (http://b/issue?id=923945). | 
| -    uint32_t flags = RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_FRAME; | 
| - | 
| -    // If a plugin (like Google Earth or Java) has child windows that are hosted | 
| -    // in a different process, then RedrawWindow with UPDATENOW will | 
| -    // synchronously wait for this call to complete.  Some messages are pumped | 
| -    // but not others, which could lead to a deadlock.  So avoid reentrancy by | 
| -    // only synchronously calling RedrawWindow once at a time. | 
| -    if (old_message != custom_msg) | 
| -      flags |= RDW_UPDATENOW; | 
| -    RECT rect = invalid_rect.ToRECT(); | 
| -    RedrawWindow(hwnd, &rect, NULL, flags); | 
| -    result = FALSE; | 
| -  } else { | 
| -    delegate->is_calling_wndproc = true; | 
| - | 
| -    if (!delegate->user_gesture_message_posted_ && | 
| -        IsUserGestureMessage(message)) { | 
| -      delegate->user_gesture_message_posted_ = true; | 
| - | 
| -      delegate->instance()->PushPopupsEnabledState(true); | 
| - | 
| -      base::MessageLoop::current()->PostDelayedTask( | 
| -          FROM_HERE, | 
| -          base::Bind(&WebPluginDelegateImpl::OnUserGestureEnd, | 
| -                     delegate->user_gesture_msg_factory_.GetWeakPtr()), | 
| -          base::TimeDelta::FromMilliseconds(kWindowedPluginPopupTimerMs)); | 
| -    } | 
| - | 
| -    HandleCaptureForMessage(hwnd, message); | 
| - | 
| -    // Maintain a local/global stack for the g_current_plugin_instance variable | 
| -    // as this may be a nested invocation. | 
| -    WebPluginDelegateImpl* last_plugin_instance = g_current_plugin_instance; | 
| - | 
| -    g_current_plugin_instance = delegate; | 
| - | 
| -    result = CallWindowProc( | 
| -        delegate->plugin_wnd_proc_, hwnd, message, wparam, lparam); | 
| - | 
| -    // The plugin instance may have been destroyed in the CallWindowProc call | 
| -    // above. This will also destroy the plugin window. Before attempting to | 
| -    // access the WebPluginDelegateImpl instance we validate if the window is | 
| -    // still valid. | 
| -    if (::IsWindow(hwnd)) | 
| -      delegate->is_calling_wndproc = false; | 
| - | 
| -    g_current_plugin_instance = last_plugin_instance; | 
| - | 
| -    if (message == WM_NCDESTROY) { | 
| -      RemoveProp(hwnd, kWebPluginDelegateProperty); | 
| -      ClearThrottleQueueForWindow(hwnd); | 
| -    } | 
| -  } | 
| -  if (::IsWindow(hwnd)) | 
| -    delegate->last_message_ = old_message; | 
| -  return result; | 
| -} | 
| - | 
| void WebPluginDelegateImpl::WindowlessUpdateGeometry( | 
| const gfx::Rect& window_rect, | 
| const gfx::Rect& clip_rect) { | 
| @@ -1065,8 +716,6 @@ void WebPluginDelegateImpl::WindowlessSetWindow() { | 
| if (window_rect_.IsEmpty())  // wait for geometry to be set. | 
| return; | 
|  | 
| -  DCHECK(instance()->windowless()); | 
| - | 
| window_.clipRect.top = clip_rect_.y(); | 
| window_.clipRect.left = clip_rect_.x(); | 
| window_.clipRect.bottom = clip_rect_.y() + clip_rect_.height(); | 
| @@ -1083,8 +732,6 @@ void WebPluginDelegateImpl::WindowlessSetWindow() { | 
| } | 
|  | 
| bool WebPluginDelegateImpl::PlatformSetPluginHasFocus(bool focused) { | 
| -  DCHECK(instance()->windowless()); | 
| - | 
| NPEvent focus_event; | 
| focus_event.event = focused ? WM_SETFOCUS : WM_KILLFOCUS; | 
| focus_event.wParam = 0; | 
| @@ -1353,11 +1000,6 @@ bool WebPluginDelegateImpl::ShouldTrackEventForModalLoops(NPEvent* event) { | 
| return false; | 
| } | 
|  | 
| -void WebPluginDelegateImpl::OnUserGestureEnd() { | 
| -  user_gesture_message_posted_ = false; | 
| -  instance()->PopPopupsEnabledState(); | 
| -} | 
| - | 
| BOOL WINAPI WebPluginDelegateImpl::TrackPopupMenuPatch( | 
| HMENU menu, unsigned int flags, int x, int y, int reserved, | 
| HWND window, const RECT* rect) { | 
| @@ -1464,33 +1106,4 @@ HWND WINAPI WebPluginDelegateImpl::WindowFromPointPatch(POINT point) { | 
| return window; | 
| } | 
|  | 
| -void WebPluginDelegateImpl::HandleCaptureForMessage(HWND window, | 
| -                                                    UINT message) { | 
| -  if (gfx::GetClassName(window) != base::string16(kNativeWindowClassName)) | 
| -    return; | 
| - | 
| -  switch (message) { | 
| -    case WM_LBUTTONDOWN: | 
| -    case WM_MBUTTONDOWN: | 
| -    case WM_RBUTTONDOWN: | 
| -      ::SetCapture(window); | 
| -      // As per documentation the WM_PARENTNOTIFY message is sent to the parent | 
| -      // window chain if mouse input is received by the child window. However | 
| -      // the parent receives the WM_PARENTNOTIFY message only if we doubleclick | 
| -      // on the window. We send the WM_PARENTNOTIFY message for mouse input | 
| -      // messages to the parent to indicate that user action is expected. | 
| -      ::SendMessage(::GetParent(window), WM_PARENTNOTIFY, message, 0); | 
| -      break; | 
| - | 
| -    case WM_LBUTTONUP: | 
| -    case WM_MBUTTONUP: | 
| -    case WM_RBUTTONUP: | 
| -      ::ReleaseCapture(); | 
| -      break; | 
| - | 
| -    default: | 
| -      break; | 
| -  } | 
| -} | 
| - | 
| }  // namespace content | 
|  |