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

Side by Side Diff: third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp

Issue 2848513002: Introduce the abstract class WebViewBase, to decouple WebViewImpl. (Closed)
Patch Set: Fix typo. Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 780
781 void WebFrameWidgetImpl::HandleMouseLeave(LocalFrame& main_frame, 781 void WebFrameWidgetImpl::HandleMouseLeave(LocalFrame& main_frame,
782 const WebMouseEvent& event) { 782 const WebMouseEvent& event) {
783 // FIXME: WebWidget doesn't have the method below. 783 // FIXME: WebWidget doesn't have the method below.
784 // m_client->setMouseOverURL(WebURL()); 784 // m_client->setMouseOverURL(WebURL());
785 PageWidgetEventHandler::HandleMouseLeave(main_frame, event); 785 PageWidgetEventHandler::HandleMouseLeave(main_frame, event);
786 } 786 }
787 787
788 void WebFrameWidgetImpl::HandleMouseDown(LocalFrame& main_frame, 788 void WebFrameWidgetImpl::HandleMouseDown(LocalFrame& main_frame,
789 const WebMouseEvent& event) { 789 const WebMouseEvent& event) {
790 // TODO(slangley): Remove this downcast to WebViewImpl once we lift this
791 // code into core.
792 WebViewImpl* view_impl = ToWebViewImpl(View());
790 // If there is a popup open, close it as the user is clicking on the page 793 // If there is a popup open, close it as the user is clicking on the page
791 // (outside of the popup). We also save it so we can prevent a click on an 794 // (outside of the popup). We also save it so we can prevent a click on an
792 // element from immediately reopening the same popup. 795 // element from immediately reopening the same popup.
793 RefPtr<WebPagePopupImpl> page_popup; 796 RefPtr<WebPagePopupImpl> page_popup;
794 if (event.button == WebMouseEvent::Button::kLeft) { 797 if (event.button == WebMouseEvent::Button::kLeft) {
795 page_popup = View()->GetPagePopup(); 798 page_popup = view_impl->GetPagePopup();
796 View()->HidePopups(); 799 view_impl->HidePopups();
797 } 800 }
798 801
799 // Take capture on a mouse down on a plugin so we can send it mouse events. 802 // Take capture on a mouse down on a plugin so we can send it mouse events.
800 // If the hit node is a plugin but a scrollbar is over it don't start mouse 803 // If the hit node is a plugin but a scrollbar is over it don't start mouse
801 // capture because it will interfere with the scrollbar receiving events. 804 // capture because it will interfere with the scrollbar receiving events.
802 IntPoint point(event.PositionInWidget().x, event.PositionInWidget().y); 805 IntPoint point(event.PositionInWidget().x, event.PositionInWidget().y);
803 if (event.button == WebMouseEvent::Button::kLeft) { 806 if (event.button == WebMouseEvent::Button::kLeft) {
804 point = local_root_->GetFrameView()->RootFrameToContents(point); 807 point = local_root_->GetFrameView()->RootFrameToContents(point);
805 HitTestResult result( 808 HitTestResult result(
806 local_root_->GetFrame()->GetEventHandler().HitTestResultAtPoint(point)); 809 local_root_->GetFrame()->GetEventHandler().HitTestResultAtPoint(point));
807 result.SetToShadowHostIfInRestrictedShadowRoot(); 810 result.SetToShadowHostIfInRestrictedShadowRoot();
808 Node* hit_node = result.InnerNode(); 811 Node* hit_node = result.InnerNode();
809 812
810 if (!result.GetScrollbar() && hit_node && hit_node->GetLayoutObject() && 813 if (!result.GetScrollbar() && hit_node && hit_node->GetLayoutObject() &&
811 hit_node->GetLayoutObject()->IsEmbeddedObject()) { 814 hit_node->GetLayoutObject()->IsEmbeddedObject()) {
812 mouse_capture_node_ = hit_node; 815 mouse_capture_node_ = hit_node;
813 TRACE_EVENT_ASYNC_BEGIN0("input", "capturing mouse", this); 816 TRACE_EVENT_ASYNC_BEGIN0("input", "capturing mouse", this);
814 } 817 }
815 } 818 }
816 819
817 PageWidgetEventHandler::HandleMouseDown(main_frame, event); 820 PageWidgetEventHandler::HandleMouseDown(main_frame, event);
818 821
819 if (event.button == WebMouseEvent::Button::kLeft && mouse_capture_node_) 822 if (event.button == WebMouseEvent::Button::kLeft && mouse_capture_node_)
820 mouse_capture_gesture_token_ = 823 mouse_capture_gesture_token_ =
821 main_frame.GetEventHandler().TakeLastMouseDownGestureToken(); 824 main_frame.GetEventHandler().TakeLastMouseDownGestureToken();
822 825
823 if (View()->GetPagePopup() && page_popup && 826 if (view_impl->GetPagePopup() && page_popup &&
824 View()->GetPagePopup()->HasSamePopupClient(page_popup.Get())) { 827 view_impl->GetPagePopup()->HasSamePopupClient(page_popup.Get())) {
825 // That click triggered a page popup that is the same as the one we just 828 // That click triggered a page popup that is the same as the one we just
826 // closed. It needs to be closed. 829 // closed. It needs to be closed.
827 View()->HidePopups(); 830 view_impl->HidePopups();
828 } 831 }
829 832
830 // Dispatch the contextmenu event regardless of if the click was swallowed. 833 // Dispatch the contextmenu event regardless of if the click was swallowed.
831 if (!GetPage()->GetSettings().GetShowContextMenuOnMouseUp()) { 834 if (!GetPage()->GetSettings().GetShowContextMenuOnMouseUp()) {
832 #if OS(MACOSX) 835 #if OS(MACOSX)
833 if (event.button == WebMouseEvent::Button::kRight || 836 if (event.button == WebMouseEvent::Button::kRight ||
834 (event.button == WebMouseEvent::Button::kLeft && 837 (event.button == WebMouseEvent::Button::kLeft &&
835 event.GetModifiers() & WebMouseEvent::kControlKey)) 838 event.GetModifiers() & WebMouseEvent::kControlKey))
836 MouseContextMenu(event); 839 MouseContextMenu(event);
837 #else 840 #else
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 const WebMouseWheelEvent& event) { 895 const WebMouseWheelEvent& event) {
893 View()->HidePopups(); 896 View()->HidePopups();
894 return PageWidgetEventHandler::HandleMouseWheel(main_frame, event); 897 return PageWidgetEventHandler::HandleMouseWheel(main_frame, event);
895 } 898 }
896 899
897 WebInputEventResult WebFrameWidgetImpl::HandleGestureEvent( 900 WebInputEventResult WebFrameWidgetImpl::HandleGestureEvent(
898 const WebGestureEvent& event) { 901 const WebGestureEvent& event) {
899 DCHECK(client_); 902 DCHECK(client_);
900 WebInputEventResult event_result = WebInputEventResult::kNotHandled; 903 WebInputEventResult event_result = WebInputEventResult::kNotHandled;
901 bool event_cancelled = false; 904 bool event_cancelled = false;
905 // TODO(slangley): Remove this downcast to WebViewImpl once we lift this
906 // code into core.
907 WebViewImpl* view_impl = ToWebViewImpl(View());
902 switch (event.GetType()) { 908 switch (event.GetType()) {
903 case WebInputEvent::kGestureScrollBegin: 909 case WebInputEvent::kGestureScrollBegin:
904 case WebInputEvent::kGestureScrollEnd: 910 case WebInputEvent::kGestureScrollEnd:
905 case WebInputEvent::kGestureScrollUpdate: 911 case WebInputEvent::kGestureScrollUpdate:
906 case WebInputEvent::kGestureTap: 912 case WebInputEvent::kGestureTap:
907 case WebInputEvent::kGestureTapUnconfirmed: 913 case WebInputEvent::kGestureTapUnconfirmed:
908 case WebInputEvent::kGestureTapDown: 914 case WebInputEvent::kGestureTapDown:
909 // Touch pinch zoom and scroll on the page (outside of a popup) must hide 915 // Touch pinch zoom and scroll on the page (outside of a popup) must hide
910 // the popup. In case of a touch scroll or pinch zoom, this function is 916 // the popup. In case of a touch scroll or pinch zoom, this function is
911 // called with GestureTapDown rather than a GSB/GSU/GSE or GPB/GPU/GPE. 917 // called with GestureTapDown rather than a GSB/GSU/GSE or GPB/GPU/GPE.
912 // When we close a popup because of a GestureTapDown, we also save it so 918 // When we close a popup because of a GestureTapDown, we also save it so
913 // we can prevent the following GestureTap from immediately reopening the 919 // we can prevent the following GestureTap from immediately reopening the
914 // same popup. 920 // same popup.
915 View()->SetLastHiddenPagePopup(View()->GetPagePopup()); 921 view_impl->SetLastHiddenPagePopup(view_impl->GetPagePopup());
916 View()->HidePopups(); 922 View()->HidePopups();
917 case WebInputEvent::kGestureTapCancel: 923 case WebInputEvent::kGestureTapCancel:
918 View()->SetLastHiddenPagePopup(nullptr); 924 View()->SetLastHiddenPagePopup(nullptr);
919 case WebInputEvent::kGestureShowPress: 925 case WebInputEvent::kGestureShowPress:
920 case WebInputEvent::kGestureDoubleTap: 926 case WebInputEvent::kGestureDoubleTap:
921 case WebInputEvent::kGestureTwoFingerTap: 927 case WebInputEvent::kGestureTwoFingerTap:
922 case WebInputEvent::kGestureLongPress: 928 case WebInputEvent::kGestureLongPress:
923 case WebInputEvent::kGestureLongTap: 929 case WebInputEvent::kGestureLongTap:
924 break; 930 break;
925 case WebInputEvent::kGestureFlingStart: 931 case WebInputEvent::kGestureFlingStart:
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 return nullptr; 1219 return nullptr;
1214 } 1220 }
1215 1221
1216 LocalFrame* WebFrameWidgetImpl::FocusedLocalFrameAvailableForIme() const { 1222 LocalFrame* WebFrameWidgetImpl::FocusedLocalFrameAvailableForIme() const {
1217 if (!ime_accept_events_) 1223 if (!ime_accept_events_)
1218 return nullptr; 1224 return nullptr;
1219 return FocusedLocalFrameInWidget(); 1225 return FocusedLocalFrameInWidget();
1220 } 1226 }
1221 1227
1222 } // namespace blink 1228 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebFrameWidgetImpl.h ('k') | third_party/WebKit/Source/web/WebLocalFrameImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698