| Index: ui/views/win/hwnd_message_handler.cc
 | 
| diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
 | 
| index b035fd32716f75454a44aa5dd02b652a0c6dceba..561e05323a991805f56b3b07fcd8871a6ce71709 100644
 | 
| --- a/ui/views/win/hwnd_message_handler.cc
 | 
| +++ b/ui/views/win/hwnd_message_handler.cc
 | 
| @@ -221,14 +221,6 @@ bool IsTopLevelWindow(HWND window) {
 | 
|    return !parent || (parent == ::GetDesktopWindow());
 | 
|  }
 | 
|  
 | 
| -void AddScrollStylesToWindow(HWND window) {
 | 
| -  if (::IsWindow(window)) {
 | 
| -    long current_style = ::GetWindowLong(window, GWL_STYLE);
 | 
| -    ::SetWindowLong(window, GWL_STYLE,
 | 
| -                    current_style | WS_VSCROLL | WS_HSCROLL);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  const int kTouchDownContextResetTimeout = 500;
 | 
|  
 | 
|  // Windows does not flag synthesized mouse messages from touch in all cases.
 | 
| @@ -330,7 +322,6 @@ HWNDMessageHandler::HWNDMessageHandler(HWNDMessageHandlerDelegate* delegate)
 | 
|        is_first_nccalc_(true),
 | 
|        menu_depth_(0),
 | 
|        id_generator_(0),
 | 
| -      needs_scroll_styles_(false),
 | 
|        in_size_loop_(false),
 | 
|        touch_down_contexts_(0),
 | 
|        last_mouse_hwheel_time_(0),
 | 
| @@ -355,28 +346,6 @@ void HWNDMessageHandler::Init(HWND parent, const gfx::Rect& bounds) {
 | 
|  
 | 
|    // Create the window.
 | 
|    WindowImpl::Init(parent, bounds);
 | 
| -  // TODO(ananta)
 | 
| -  // Remove the scrolling hack code once we have scrolling working well.
 | 
| -#if defined(ENABLE_SCROLL_HACK)
 | 
| -  // Certain trackpad drivers on Windows have bugs where in they don't generate
 | 
| -  // WM_MOUSEWHEEL messages for the trackpoint and trackpad scrolling gestures
 | 
| -  // unless there is an entry for Chrome with the class name of the Window.
 | 
| -  // These drivers check if the window under the trackpoint has the WS_VSCROLL/
 | 
| -  // WS_HSCROLL style and if yes they generate the legacy WM_VSCROLL/WM_HSCROLL
 | 
| -  // messages. We add these styles to ensure that trackpad/trackpoint scrolling
 | 
| -  // work.
 | 
| -  // TODO(ananta)
 | 
| -  // Look into moving the WS_VSCROLL and WS_HSCROLL style setting logic to the
 | 
| -  // CalculateWindowStylesFromInitParams function. Doing it there seems to
 | 
| -  // cause some interactive tests to fail. Investigation needed.
 | 
| -  if (IsTopLevelWindow(hwnd())) {
 | 
| -    long current_style = ::GetWindowLong(hwnd(), GWL_STYLE);
 | 
| -    if (!(current_style & WS_POPUP)) {
 | 
| -      AddScrollStylesToWindow(hwnd());
 | 
| -      needs_scroll_styles_ = true;
 | 
| -    }
 | 
| -  }
 | 
| -#endif
 | 
|  
 | 
|    prop_window_target_.reset(new ui::ViewProp(hwnd(),
 | 
|                              ui::WindowEventTarget::kWin32InputEventTarget,
 | 
| @@ -1424,13 +1393,6 @@ void HWNDMessageHandler::OnEnterMenuLoop(BOOL from_track_popup_menu) {
 | 
|  }
 | 
|  
 | 
|  void HWNDMessageHandler::OnEnterSizeMove() {
 | 
| -  // Please refer to the comments in the OnSize function about the scrollbar
 | 
| -  // hack.
 | 
| -  // Hide the Windows scrollbar if the scroll styles are present to ensure
 | 
| -  // that a paint flicker does not occur while sizing.
 | 
| -  if (in_size_loop_ && needs_scroll_styles_)
 | 
| -    ShowScrollBar(hwnd(), SB_BOTH, FALSE);
 | 
| -
 | 
|    delegate_->HandleBeginWMSizeMove();
 | 
|    SetMsgHandled(FALSE);
 | 
|  }
 | 
| @@ -1449,13 +1411,6 @@ void HWNDMessageHandler::OnExitMenuLoop(BOOL is_shortcut_menu) {
 | 
|  void HWNDMessageHandler::OnExitSizeMove() {
 | 
|    delegate_->HandleEndWMSizeMove();
 | 
|    SetMsgHandled(FALSE);
 | 
| -  // Please refer to the notes in the OnSize function for information about
 | 
| -  // the scrolling hack.
 | 
| -  // We hide the Windows scrollbar in the OnEnterSizeMove function. We need
 | 
| -  // to add the scroll styles back to ensure that scrolling works in legacy
 | 
| -  // trackpoint drivers.
 | 
| -  if (in_size_loop_ && needs_scroll_styles_)
 | 
| -    AddScrollStylesToWindow(hwnd());
 | 
|    // If the window was moved to a monitor which has a fullscreen window active,
 | 
|    // we need to reduce the size of the fullscreen window by 1px.
 | 
|    CheckAndHandleBackgroundFullscreenOnMonitor(hwnd());
 | 
| @@ -1839,49 +1794,6 @@ LRESULT HWNDMessageHandler::OnNCHitTest(const gfx::Point& point) {
 | 
|    // us.
 | 
|    LRESULT hit_test_code = DefWindowProc(hwnd(), WM_NCHITTEST, 0,
 | 
|                                          MAKELPARAM(point.x(), point.y()));
 | 
| -  if (needs_scroll_styles_) {
 | 
| -    switch (hit_test_code) {
 | 
| -      // If we faked the WS_VSCROLL and WS_HSCROLL styles for this window, then
 | 
| -      // Windows returns the HTVSCROLL or HTHSCROLL hit test codes if we hover
 | 
| -      // or click on the non client portions of the window where the OS
 | 
| -      // scrollbars would be drawn. These hittest codes are returned even when
 | 
| -      // the scrollbars are hidden, which is the case in Aura. We fake the
 | 
| -      // hittest code as HTCLIENT in this case to ensure that we receive client
 | 
| -      // mouse messages as opposed to non client mouse messages.
 | 
| -      case HTVSCROLL:
 | 
| -      case HTHSCROLL:
 | 
| -        hit_test_code = HTCLIENT;
 | 
| -        break;
 | 
| -
 | 
| -      case HTBOTTOMRIGHT: {
 | 
| -        // Normally the HTBOTTOMRIGHT hittest code is received when we hover
 | 
| -        // near the bottom right of the window. However due to our fake scroll
 | 
| -        // styles, we get this code even when we hover around the area where
 | 
| -        // the vertical scrollar down arrow would be drawn.
 | 
| -        // We check if the hittest coordinates lie in this region and if yes
 | 
| -        // we return HTCLIENT.
 | 
| -        int border_width = ::GetSystemMetrics(SM_CXSIZEFRAME);
 | 
| -        int border_height = ::GetSystemMetrics(SM_CYSIZEFRAME);
 | 
| -        int scroll_width = ::GetSystemMetrics(SM_CXVSCROLL);
 | 
| -        int scroll_height = ::GetSystemMetrics(SM_CYVSCROLL);
 | 
| -        RECT window_rect;
 | 
| -        ::GetWindowRect(hwnd(), &window_rect);
 | 
| -        window_rect.bottom -= border_height;
 | 
| -        window_rect.right -= border_width;
 | 
| -        window_rect.left = window_rect.right - scroll_width;
 | 
| -        window_rect.top = window_rect.bottom - scroll_height;
 | 
| -        POINT pt;
 | 
| -        pt.x = point.x();
 | 
| -        pt.y = point.y();
 | 
| -        if (::PtInRect(&window_rect, pt))
 | 
| -          hit_test_code = HTCLIENT;
 | 
| -        break;
 | 
| -      }
 | 
| -
 | 
| -      default:
 | 
| -        break;
 | 
| -    }
 | 
| -  }
 | 
|    return hit_test_code;
 | 
|  }
 | 
|  
 | 
| @@ -2129,19 +2041,6 @@ void HWNDMessageHandler::OnSize(UINT param, const gfx::Size& size) {
 | 
|    // ResetWindowRegion is going to trigger WM_NCPAINT. By doing it after we've
 | 
|    // invoked OnSize we ensure the RootView has been laid out.
 | 
|    ResetWindowRegion(false, true);
 | 
| -
 | 
| -  // We add the WS_VSCROLL and WS_HSCROLL styles to top level windows to ensure
 | 
| -  // that legacy trackpad/trackpoint drivers generate the WM_VSCROLL and
 | 
| -  // WM_HSCROLL messages and scrolling works.
 | 
| -  // We want the scroll styles to be present on the window. However we don't
 | 
| -  // want Windows to draw the scrollbars. To achieve this we hide the scroll
 | 
| -  // bars and readd them to the window style in a posted task to ensure that we
 | 
| -  // don't get nested WM_SIZE messages.
 | 
| -  if (needs_scroll_styles_ && !in_size_loop_) {
 | 
| -    ShowScrollBar(hwnd(), SB_BOTH, FALSE);
 | 
| -    base::ThreadTaskRunnerHandle::Get()->PostTask(
 | 
| -        FROM_HERE, base::Bind(&AddScrollStylesToWindow, hwnd()));
 | 
| -  }
 | 
|  }
 | 
|  
 | 
|  void HWNDMessageHandler::OnSysCommand(UINT notification_code,
 | 
| @@ -2430,15 +2329,15 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
 | 
|    // TODO(ananta)
 | 
|    // Windows does not reliably set the touch flag on mouse messages. Look into
 | 
|    // a better way of identifying mouse messages originating from touch.
 | 
| -  if (ui::IsMouseEventFromTouch(message)) {
 | 
| +  if ((message != WM_MOUSEWHEEL && message != WM_MOUSEHWHEEL) &&
 | 
| +      (ui::IsMouseEventFromTouch(message))) {
 | 
|      LPARAM l_param_ht = l_param;
 | 
|      // For mouse events (except wheel events), location is in window coordinates
 | 
|      // and should be converted to screen coordinates for WM_NCHITTEST.
 | 
| -    if (message != WM_MOUSEWHEEL && message != WM_MOUSEHWHEEL) {
 | 
| -      POINT screen_point = CR_POINT_INITIALIZER_FROM_LPARAM(l_param_ht);
 | 
| -      MapWindowPoints(hwnd(), HWND_DESKTOP, &screen_point, 1);
 | 
| -      l_param_ht = MAKELPARAM(screen_point.x, screen_point.y);
 | 
| -    }
 | 
| +    POINT screen_point = CR_POINT_INITIALIZER_FROM_LPARAM(l_param_ht);
 | 
| +    MapWindowPoints(hwnd(), HWND_DESKTOP, &screen_point, 1);
 | 
| +    l_param_ht = MAKELPARAM(screen_point.x, screen_point.y);
 | 
| +
 | 
|      LRESULT hittest = SendMessage(hwnd(), WM_NCHITTEST, 0, l_param_ht);
 | 
|      if (hittest == HTCLIENT || hittest == HTNOWHERE)
 | 
|        return 0;
 | 
| 
 |