| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" | 
| 6 | 6 | 
| 7 #import <objc/runtime.h> | 7 #import <objc/runtime.h> | 
| 8 #include <OpenGL/gl.h> | 8 #include <OpenGL/gl.h> | 
| 9 #include <QuartzCore/QuartzCore.h> | 9 #include <QuartzCore/QuartzCore.h> | 
| 10 | 10 | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 32 #import "content/browser/cocoa/system_hotkey_helper_mac.h" | 32 #import "content/browser/cocoa/system_hotkey_helper_mac.h" | 
| 33 #import "content/browser/cocoa/system_hotkey_map.h" | 33 #import "content/browser/cocoa/system_hotkey_map.h" | 
| 34 #include "content/browser/compositor/resize_lock.h" | 34 #include "content/browser/compositor/resize_lock.h" | 
| 35 #include "content/browser/frame_host/frame_tree.h" | 35 #include "content/browser/frame_host/frame_tree.h" | 
| 36 #include "content/browser/frame_host/frame_tree_node.h" | 36 #include "content/browser/frame_host/frame_tree_node.h" | 
| 37 #include "content/browser/frame_host/render_frame_host_impl.h" | 37 #include "content/browser/frame_host/render_frame_host_impl.h" | 
| 38 #include "content/browser/gpu/compositor_util.h" | 38 #include "content/browser/gpu/compositor_util.h" | 
| 39 #include "content/browser/renderer_host/render_view_host_impl.h" | 39 #include "content/browser/renderer_host/render_view_host_impl.h" | 
| 40 #include "content/browser/renderer_host/render_widget_helper.h" | 40 #include "content/browser/renderer_host/render_widget_helper.h" | 
| 41 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 41 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 
|  | 42 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" | 
| 42 #import "content/browser/renderer_host/render_widget_host_view_mac_dictionary_he
      lper.h" | 43 #import "content/browser/renderer_host/render_widget_host_view_mac_dictionary_he
      lper.h" | 
| 43 #import "content/browser/renderer_host/render_widget_host_view_mac_editcommand_h
      elper.h" | 44 #import "content/browser/renderer_host/render_widget_host_view_mac_editcommand_h
      elper.h" | 
| 44 #include "content/browser/renderer_host/render_widget_resize_helper.h" | 45 #include "content/browser/renderer_host/render_widget_resize_helper.h" | 
| 45 #import "content/browser/renderer_host/text_input_client_mac.h" | 46 #import "content/browser/renderer_host/text_input_client_mac.h" | 
| 46 #include "content/common/accessibility_messages.h" | 47 #include "content/common/accessibility_messages.h" | 
| 47 #include "content/common/edit_command.h" | 48 #include "content/common/edit_command.h" | 
| 48 #include "content/common/gpu/gpu_messages.h" | 49 #include "content/common/gpu/gpu_messages.h" | 
| 49 #include "content/common/input_messages.h" | 50 #include "content/common/input_messages.h" | 
| 50 #include "content/common/view_messages.h" | 51 #include "content/common/view_messages.h" | 
| 51 #include "content/common/webplugin_geometry.h" | 52 #include "content/common/webplugin_geometry.h" | 
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 591 | 592 | 
| 592   if (IsDelegatedRendererEnabled()) { | 593   if (IsDelegatedRendererEnabled()) { | 
| 593     root_layer_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR)); | 594     root_layer_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR)); | 
| 594     delegated_frame_host_.reset(new DelegatedFrameHost(this)); | 595     delegated_frame_host_.reset(new DelegatedFrameHost(this)); | 
| 595   } | 596   } | 
| 596 | 597 | 
| 597   gfx::Screen::GetScreenFor(cocoa_view_)->AddObserver(this); | 598   gfx::Screen::GetScreenFor(cocoa_view_)->AddObserver(this); | 
| 598 | 599 | 
| 599   if (!is_guest_view_hack_) | 600   if (!is_guest_view_hack_) | 
| 600     render_widget_host_->SetView(this); | 601     render_widget_host_->SetView(this); | 
|  | 602 | 
|  | 603   // Let the page-level input event router know about our surface ID | 
|  | 604   // namespace for surface-based hit testing. | 
|  | 605   if (UseSurfacesEnabled() && render_widget_host_->delegate() && | 
|  | 606       render_widget_host_->delegate()->GetInputEventRouter()) { | 
|  | 607     render_widget_host_->delegate() | 
|  | 608         ->GetInputEventRouter() | 
|  | 609         ->AddSurfaceIdNamespaceOwner(GetSurfaceIdNamespace(), this); | 
|  | 610   } | 
| 601 } | 611 } | 
| 602 | 612 | 
| 603 RenderWidgetHostViewMac::~RenderWidgetHostViewMac() { | 613 RenderWidgetHostViewMac::~RenderWidgetHostViewMac() { | 
| 604   gfx::Screen::GetScreenFor(cocoa_view_)->RemoveObserver(this); | 614   gfx::Screen::GetScreenFor(cocoa_view_)->RemoveObserver(this); | 
| 605 | 615 | 
| 606   // This is being called from |cocoa_view_|'s destructor, so invalidate the | 616   // This is being called from |cocoa_view_|'s destructor, so invalidate the | 
| 607   // pointer. | 617   // pointer. | 
| 608   cocoa_view_ = nil; | 618   cocoa_view_ = nil; | 
| 609 | 619 | 
| 610   UnlockMouse(); | 620   UnlockMouse(); | 
| 611 | 621 | 
|  | 622   if (UseSurfacesEnabled() && render_widget_host_ && | 
|  | 623       render_widget_host_->delegate() && | 
|  | 624       render_widget_host_->delegate()->GetInputEventRouter()) { | 
|  | 625     render_widget_host_->delegate() | 
|  | 626         ->GetInputEventRouter() | 
|  | 627         ->RemoveSurfaceIdNamespaceOwner(GetSurfaceIdNamespace()); | 
|  | 628   } | 
|  | 629 | 
| 612   // Ensure that the browser compositor is destroyed in a safe order. | 630   // Ensure that the browser compositor is destroyed in a safe order. | 
| 613   ShutdownBrowserCompositor(); | 631   ShutdownBrowserCompositor(); | 
| 614 | 632 | 
| 615   // We are owned by RenderWidgetHostViewCocoa, so if we go away before the | 633   // We are owned by RenderWidgetHostViewCocoa, so if we go away before the | 
| 616   // RenderWidgetHost does we need to tell it not to hold a stale pointer to | 634   // RenderWidgetHost does we need to tell it not to hold a stale pointer to | 
| 617   // us. | 635   // us. | 
| 618   if (render_widget_host_) { | 636   if (render_widget_host_) { | 
| 619     // If this is a RenderWidgetHostViewGuest's platform_view_, we're not the | 637     // If this is a RenderWidgetHostViewGuest's platform_view_, we're not the | 
| 620     // RWH's view, the RenderWidgetHostViewGuest is. So don't reset the RWH's | 638     // RWH's view, the RenderWidgetHostViewGuest is. So don't reset the RWH's | 
| 621     // view, the RenderWidgetHostViewGuest will do it. | 639     // view, the RenderWidgetHostViewGuest will do it. | 
| (...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1090   composition_range_ = range; | 1108   composition_range_ = range; | 
| 1091   composition_bounds_ = character_bounds; | 1109   composition_bounds_ = character_bounds; | 
| 1092 } | 1110 } | 
| 1093 | 1111 | 
| 1094 void RenderWidgetHostViewMac::RenderProcessGone(base::TerminationStatus status, | 1112 void RenderWidgetHostViewMac::RenderProcessGone(base::TerminationStatus status, | 
| 1095                                                 int error_code) { | 1113                                                 int error_code) { | 
| 1096   Destroy(); | 1114   Destroy(); | 
| 1097 } | 1115 } | 
| 1098 | 1116 | 
| 1099 void RenderWidgetHostViewMac::RenderWidgetHostGone() { | 1117 void RenderWidgetHostViewMac::RenderWidgetHostGone() { | 
|  | 1118   // Clear SurfaceID namespace ownership before we shutdown the | 
|  | 1119   // compositor. | 
|  | 1120   if (UseSurfacesEnabled() && render_widget_host_ && | 
|  | 1121       render_widget_host_->delegate() && | 
|  | 1122       render_widget_host_->delegate()->GetInputEventRouter()) { | 
|  | 1123     render_widget_host_->delegate() | 
|  | 1124         ->GetInputEventRouter() | 
|  | 1125         ->RemoveSurfaceIdNamespaceOwner(GetSurfaceIdNamespace()); | 
|  | 1126   } | 
|  | 1127 | 
| 1100   // Destroy the DelegatedFrameHost, to prevent crashes when Destroy is never | 1128   // Destroy the DelegatedFrameHost, to prevent crashes when Destroy is never | 
| 1101   // called on the view. | 1129   // called on the view. | 
| 1102   // http://crbug.com/404828 | 1130   // http://crbug.com/404828 | 
| 1103   ShutdownBrowserCompositor(); | 1131   ShutdownBrowserCompositor(); | 
| 1104 } | 1132 } | 
| 1105 | 1133 | 
| 1106 void RenderWidgetHostViewMac::Destroy() { | 1134 void RenderWidgetHostViewMac::Destroy() { | 
| 1107   [[NSNotificationCenter defaultCenter] | 1135   [[NSNotificationCenter defaultCenter] | 
| 1108       removeObserver:cocoa_view_ | 1136       removeObserver:cocoa_view_ | 
| 1109                 name:NSWindowWillCloseNotification | 1137                 name:NSWindowWillCloseNotification | 
| 1110               object:popup_window_]; | 1138               object:popup_window_]; | 
| 1111 | 1139 | 
| 1112   // We've been told to destroy. | 1140   // We've been told to destroy. | 
| 1113   [cocoa_view_ retain]; | 1141   [cocoa_view_ retain]; | 
| 1114   [cocoa_view_ removeFromSuperview]; | 1142   [cocoa_view_ removeFromSuperview]; | 
| 1115   [cocoa_view_ autorelease]; | 1143   [cocoa_view_ autorelease]; | 
| 1116 | 1144 | 
| 1117   [popup_window_ close]; | 1145   [popup_window_ close]; | 
| 1118   popup_window_.autorelease(); | 1146   popup_window_.autorelease(); | 
| 1119 | 1147 | 
| 1120   [fullscreen_window_manager_ exitFullscreenMode]; | 1148   [fullscreen_window_manager_ exitFullscreenMode]; | 
| 1121   fullscreen_window_manager_.reset(); | 1149   fullscreen_window_manager_.reset(); | 
| 1122   [pepper_fullscreen_window_ close]; | 1150   [pepper_fullscreen_window_ close]; | 
| 1123 | 1151 | 
| 1124   // This can be called as part of processing the window's responder | 1152   // This can be called as part of processing the window's responder | 
| 1125   // chain, for instance |-performKeyEquivalent:|.  In that case the | 1153   // chain, for instance |-performKeyEquivalent:|.  In that case the | 
| 1126   // object needs to survive until the stack unwinds. | 1154   // object needs to survive until the stack unwinds. | 
| 1127   pepper_fullscreen_window_.autorelease(); | 1155   pepper_fullscreen_window_.autorelease(); | 
| 1128 | 1156 | 
|  | 1157   // Clear SurfaceID namespace ownership before we shutdown the | 
|  | 1158   // compositor. | 
|  | 1159   if (UseSurfacesEnabled() && render_widget_host_ && | 
|  | 1160       render_widget_host_->delegate() && | 
|  | 1161       render_widget_host_->delegate()->GetInputEventRouter()) { | 
|  | 1162     render_widget_host_->delegate() | 
|  | 1163         ->GetInputEventRouter() | 
|  | 1164         ->RemoveSurfaceIdNamespaceOwner(GetSurfaceIdNamespace()); | 
|  | 1165   } | 
|  | 1166 | 
| 1129   // Delete the delegated frame state, which will reach back into | 1167   // Delete the delegated frame state, which will reach back into | 
| 1130   // render_widget_host_. | 1168   // render_widget_host_. | 
| 1131   ShutdownBrowserCompositor(); | 1169   ShutdownBrowserCompositor(); | 
| 1132 | 1170 | 
| 1133   // We get this call just before |render_widget_host_| deletes | 1171   // We get this call just before |render_widget_host_| deletes | 
| 1134   // itself.  But we are owned by |cocoa_view_|, which may be retained | 1172   // itself.  But we are owned by |cocoa_view_|, which may be retained | 
| 1135   // by some other code.  Examples are WebContentsViewMac's | 1173   // by some other code.  Examples are WebContentsViewMac's | 
| 1136   // |latent_focus_view_| and TabWindowController's | 1174   // |latent_focus_view_| and TabWindowController's | 
| 1137   // |cachedContentView_|. | 1175   // |cachedContentView_|. | 
| 1138   render_widget_host_ = NULL; | 1176   render_widget_host_ = NULL; | 
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1594     [cocoa_view_ processedWheelEvent:event consumed:consumed]; | 1632     [cocoa_view_ processedWheelEvent:event consumed:consumed]; | 
| 1595 } | 1633 } | 
| 1596 | 1634 | 
| 1597 uint32_t RenderWidgetHostViewMac::GetSurfaceIdNamespace() { | 1635 uint32_t RenderWidgetHostViewMac::GetSurfaceIdNamespace() { | 
| 1598   if (delegated_frame_host_) | 1636   if (delegated_frame_host_) | 
| 1599     return delegated_frame_host_->GetSurfaceIdNamespace(); | 1637     return delegated_frame_host_->GetSurfaceIdNamespace(); | 
| 1600 | 1638 | 
| 1601   return 0; | 1639   return 0; | 
| 1602 } | 1640 } | 
| 1603 | 1641 | 
|  | 1642 uint32_t RenderWidgetHostViewMac::SurfaceIdNamespaceAtPoint( | 
|  | 1643     const gfx::Point& point, | 
|  | 1644     gfx::Point* transformed_point) { | 
|  | 1645   cc::SurfaceId id = | 
|  | 1646       delegated_frame_host_->SurfaceIdAtPoint(point, transformed_point); | 
|  | 1647   // It is possible that the renderer has not yet produced a surface, in which | 
|  | 1648   // case we return our current namespace. | 
|  | 1649   if (id.is_null()) | 
|  | 1650     return GetSurfaceIdNamespace(); | 
|  | 1651   return cc::SurfaceIdAllocator::NamespaceForId(id); | 
|  | 1652 } | 
|  | 1653 | 
|  | 1654 void RenderWidgetHostViewMac::ProcessMouseEvent( | 
|  | 1655     const blink::WebMouseEvent& event) { | 
|  | 1656   render_widget_host_->ForwardMouseEvent(event); | 
|  | 1657 } | 
|  | 1658 void RenderWidgetHostViewMac::ProcessMouseWheelEvent( | 
|  | 1659     const blink::WebMouseWheelEvent& event) { | 
|  | 1660   render_widget_host_->ForwardWheelEvent(event); | 
|  | 1661 } | 
|  | 1662 | 
| 1604 bool RenderWidgetHostViewMac::Send(IPC::Message* message) { | 1663 bool RenderWidgetHostViewMac::Send(IPC::Message* message) { | 
| 1605   if (render_widget_host_) | 1664   if (render_widget_host_) | 
| 1606     return render_widget_host_->Send(message); | 1665     return render_widget_host_->Send(message); | 
| 1607   delete message; | 1666   delete message; | 
| 1608   return false; | 1667   return false; | 
| 1609 } | 1668 } | 
| 1610 | 1669 | 
| 1611 void RenderWidgetHostViewMac::ShutdownHost() { | 1670 void RenderWidgetHostViewMac::ShutdownHost() { | 
| 1612   weak_factory_.InvalidateWeakPtrs(); | 1671   weak_factory_.InvalidateWeakPtrs(); | 
| 1613   render_widget_host_->Shutdown(); | 1672   render_widget_host_->Shutdown(); | 
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1929   } | 1988   } | 
| 1930 | 1989 | 
| 1931   if (mouseEventWasIgnored_) { | 1990   if (mouseEventWasIgnored_) { | 
| 1932     // If this is the first mouse event after a previous event that was ignored | 1991     // If this is the first mouse event after a previous event that was ignored | 
| 1933     // due to the hitTest, send a mouse enter event to the host view. | 1992     // due to the hitTest, send a mouse enter event to the host view. | 
| 1934     if (renderWidgetHostView_->render_widget_host_) { | 1993     if (renderWidgetHostView_->render_widget_host_) { | 
| 1935       WebMouseEvent enterEvent = | 1994       WebMouseEvent enterEvent = | 
| 1936           WebInputEventFactory::mouseEvent(theEvent, self); | 1995           WebInputEventFactory::mouseEvent(theEvent, self); | 
| 1937       enterEvent.type = WebInputEvent::MouseMove; | 1996       enterEvent.type = WebInputEvent::MouseMove; | 
| 1938       enterEvent.button = WebMouseEvent::ButtonNone; | 1997       enterEvent.button = WebMouseEvent::ButtonNone; | 
| 1939       renderWidgetHostView_->ForwardMouseEvent(enterEvent); | 1998       if (renderWidgetHostView_->render_widget_host_->delegate() && | 
|  | 1999           renderWidgetHostView_->render_widget_host_->delegate() | 
|  | 2000               ->GetInputEventRouter()) { | 
|  | 2001         renderWidgetHostView_->render_widget_host_->delegate() | 
|  | 2002             ->GetInputEventRouter() | 
|  | 2003             ->RouteMouseEvent(renderWidgetHostView_.get(), &enterEvent); | 
|  | 2004       } else { | 
|  | 2005         renderWidgetHostView_->ForwardMouseEvent(enterEvent); | 
|  | 2006       } | 
| 1940     } | 2007     } | 
| 1941   } | 2008   } | 
| 1942   mouseEventWasIgnored_ = NO; | 2009   mouseEventWasIgnored_ = NO; | 
| 1943 | 2010 | 
| 1944   // Don't cancel child popups; killing them on a mouse click would prevent the | 2011   // Don't cancel child popups; killing them on a mouse click would prevent the | 
| 1945   // user from positioning the insertion point in the text field spawning the | 2012   // user from positioning the insertion point in the text field spawning the | 
| 1946   // popup. A click outside the text field would cause the text field to drop | 2013   // popup. A click outside the text field would cause the text field to drop | 
| 1947   // the focus, and then EditorClientImpl::textFieldDidEndEditing() would cancel | 2014   // the focus, and then EditorClientImpl::textFieldDidEndEditing() would cancel | 
| 1948   // the popup anyway, so we're OK. | 2015   // the popup anyway, so we're OK. | 
| 1949 | 2016 | 
| 1950   NSEventType type = [theEvent type]; | 2017   NSEventType type = [theEvent type]; | 
| 1951   if (type == NSLeftMouseDown) | 2018   if (type == NSLeftMouseDown) | 
| 1952     hasOpenMouseDown_ = YES; | 2019     hasOpenMouseDown_ = YES; | 
| 1953   else if (type == NSLeftMouseUp) | 2020   else if (type == NSLeftMouseUp) | 
| 1954     hasOpenMouseDown_ = NO; | 2021     hasOpenMouseDown_ = NO; | 
| 1955 | 2022 | 
| 1956   // TODO(suzhe): We should send mouse events to the input method first if it | 2023   // TODO(suzhe): We should send mouse events to the input method first if it | 
| 1957   // wants to handle them. But it won't work without implementing method | 2024   // wants to handle them. But it won't work without implementing method | 
| 1958   // - (NSUInteger)characterIndexForPoint:. | 2025   // - (NSUInteger)characterIndexForPoint:. | 
| 1959   // See: http://code.google.com/p/chromium/issues/detail?id=47141 | 2026   // See: http://code.google.com/p/chromium/issues/detail?id=47141 | 
| 1960   // Instead of sending mouse events to the input method first, we now just | 2027   // Instead of sending mouse events to the input method first, we now just | 
| 1961   // simply confirm all ongoing composition here. | 2028   // simply confirm all ongoing composition here. | 
| 1962   if (type == NSLeftMouseDown || type == NSRightMouseDown || | 2029   if (type == NSLeftMouseDown || type == NSRightMouseDown || | 
| 1963       type == NSOtherMouseDown) { | 2030       type == NSOtherMouseDown) { | 
| 1964     [self confirmComposition]; | 2031     [self confirmComposition]; | 
| 1965   } | 2032   } | 
| 1966 | 2033 | 
| 1967   const WebMouseEvent event = | 2034   WebMouseEvent event = WebInputEventFactory::mouseEvent(theEvent, self); | 
| 1968       WebInputEventFactory::mouseEvent(theEvent, self); | 2035   if (renderWidgetHostView_->render_widget_host_->delegate() && | 
| 1969   renderWidgetHostView_->ForwardMouseEvent(event); | 2036       renderWidgetHostView_->render_widget_host_->delegate() | 
|  | 2037           ->GetInputEventRouter()) { | 
|  | 2038     renderWidgetHostView_->render_widget_host_->delegate() | 
|  | 2039         ->GetInputEventRouter() | 
|  | 2040         ->RouteMouseEvent(renderWidgetHostView_.get(), &event); | 
|  | 2041   } else { | 
|  | 2042     renderWidgetHostView_->ForwardMouseEvent(event); | 
|  | 2043   } | 
| 1970 } | 2044 } | 
| 1971 | 2045 | 
| 1972 - (BOOL)performKeyEquivalent:(NSEvent*)theEvent { | 2046 - (BOOL)performKeyEquivalent:(NSEvent*)theEvent { | 
| 1973   // |performKeyEquivalent:| is sent to all views of a window, not only down the | 2047   // |performKeyEquivalent:| is sent to all views of a window, not only down the | 
| 1974   // responder chain (cf. "Handling Key Equivalents" in | 2048   // responder chain (cf. "Handling Key Equivalents" in | 
| 1975   // http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Event
      Overview/HandlingKeyEvents/HandlingKeyEvents.html | 2049   // http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Event
      Overview/HandlingKeyEvents/HandlingKeyEvents.html | 
| 1976   // ). We only want to handle key equivalents if we're first responder. | 2050   // ). We only want to handle key equivalents if we're first responder. | 
| 1977   if ([[self window] firstResponder] != self) | 2051   if ([[self window] firstResponder] != self) | 
| 1978     return NO; | 2052     return NO; | 
| 1979 | 2053 | 
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2417       }]; | 2491       }]; | 
| 2418   } | 2492   } | 
| 2419 | 2493 | 
| 2420   // This is responsible for content scrolling! | 2494   // This is responsible for content scrolling! | 
| 2421   if (renderWidgetHostView_->render_widget_host_) { | 2495   if (renderWidgetHostView_->render_widget_host_) { | 
| 2422     BOOL canRubberbandLeft = [responderDelegate_ canRubberbandLeft:self]; | 2496     BOOL canRubberbandLeft = [responderDelegate_ canRubberbandLeft:self]; | 
| 2423     BOOL canRubberbandRight = [responderDelegate_ canRubberbandRight:self]; | 2497     BOOL canRubberbandRight = [responderDelegate_ canRubberbandRight:self]; | 
| 2424     WebMouseWheelEvent webEvent = WebInputEventFactory::mouseWheelEvent( | 2498     WebMouseWheelEvent webEvent = WebInputEventFactory::mouseWheelEvent( | 
| 2425         event, self, canRubberbandLeft, canRubberbandRight); | 2499         event, self, canRubberbandLeft, canRubberbandRight); | 
| 2426     webEvent.railsMode = mouseWheelFilter_.UpdateRailsMode(webEvent); | 2500     webEvent.railsMode = mouseWheelFilter_.UpdateRailsMode(webEvent); | 
| 2427     renderWidgetHostView_->render_widget_host_->ForwardWheelEvent(webEvent); | 2501     if (renderWidgetHostView_->render_widget_host_->delegate() && | 
|  | 2502         renderWidgetHostView_->render_widget_host_->delegate() | 
|  | 2503             ->GetInputEventRouter()) { | 
|  | 2504       renderWidgetHostView_->render_widget_host_->delegate() | 
|  | 2505           ->GetInputEventRouter() | 
|  | 2506           ->RouteMouseWheelEvent(renderWidgetHostView_.get(), &webEvent); | 
|  | 2507     } else { | 
|  | 2508       renderWidgetHostView_->render_widget_host_->ForwardWheelEvent(webEvent); | 
|  | 2509     } | 
| 2428   } | 2510   } | 
| 2429 } | 2511 } | 
| 2430 | 2512 | 
| 2431 // Called repeatedly during a pinch gesture, with incremental change values. | 2513 // Called repeatedly during a pinch gesture, with incremental change values. | 
| 2432 - (void)magnifyWithEvent:(NSEvent*)event { | 2514 - (void)magnifyWithEvent:(NSEvent*)event { | 
| 2433   if (!renderWidgetHostView_->render_widget_host_) | 2515   if (!renderWidgetHostView_->render_widget_host_) | 
| 2434     return; | 2516     return; | 
| 2435 | 2517 | 
| 2436   // If, due to nesting of multiple gestures (e.g, from multiple touch | 2518   // If, due to nesting of multiple gestures (e.g, from multiple touch | 
| 2437   // devices), the beginning of the gesture has been lost, skip the remainder | 2519   // devices), the beginning of the gesture has been lost, skip the remainder | 
| (...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3323 | 3405 | 
| 3324 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding | 3406 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding | 
| 3325 // regions that are not draggable. (See ControlRegionView in | 3407 // regions that are not draggable. (See ControlRegionView in | 
| 3326 // native_app_window_cocoa.mm). This requires the render host view to be | 3408 // native_app_window_cocoa.mm). This requires the render host view to be | 
| 3327 // draggable by default. | 3409 // draggable by default. | 
| 3328 - (BOOL)mouseDownCanMoveWindow { | 3410 - (BOOL)mouseDownCanMoveWindow { | 
| 3329   return YES; | 3411   return YES; | 
| 3330 } | 3412 } | 
| 3331 | 3413 | 
| 3332 @end | 3414 @end | 
| OLD | NEW | 
|---|