| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |     2  * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 
|     3  * reserved. |     3  * reserved. | 
|     4  * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |     4  * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 
|     5  * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |     5  * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 
|     6  * |     6  * | 
|     7  * Redistribution and use in source and binary forms, with or without |     7  * Redistribution and use in source and binary forms, with or without | 
|     8  * modification, are permitted provided that the following conditions |     8  * modification, are permitted provided that the following conditions | 
|     9  * are met: |     9  * are met: | 
|    10  * 1. Redistributions of source code must retain the above copyright |    10  * 1. Redistributions of source code must retain the above copyright | 
| (...skipping 1053 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1064             event, data_transfer); |  1064             event, data_transfer); | 
|  1065     } else if (new_target) { |  1065     } else if (new_target) { | 
|  1066       // As per section 7.9.4 of the HTML 5 spec., we must always fire a drag |  1066       // As per section 7.9.4 of the HTML 5 spec., we must always fire a drag | 
|  1067       // event before firing a dragenter, dragleave, or dragover event. |  1067       // event before firing a dragenter, dragleave, or dragover event. | 
|  1068       if (mouse_event_manager_->GetDragState().drag_src_) { |  1068       if (mouse_event_manager_->GetDragState().drag_src_) { | 
|  1069         // For now we don't care if event handler cancels default behavior, |  1069         // For now we don't care if event handler cancels default behavior, | 
|  1070         // since there is none. |  1070         // since there is none. | 
|  1071         mouse_event_manager_->DispatchDragSrcEvent(EventTypeNames::drag, event); |  1071         mouse_event_manager_->DispatchDragSrcEvent(EventTypeNames::drag, event); | 
|  1072       } |  1072       } | 
|  1073       event_result = mouse_event_manager_->DispatchDragEvent( |  1073       event_result = mouse_event_manager_->DispatchDragEvent( | 
|  1074           EventTypeNames::dragenter, new_target, event, data_transfer); |  1074           EventTypeNames::dragenter, new_target, drag_target_, event, | 
 |  1075           data_transfer); | 
|  1075     } |  1076     } | 
|  1076  |  1077  | 
|  1077     if (TargetIsFrame(drag_target_.Get(), target_frame)) { |  1078     if (TargetIsFrame(drag_target_.Get(), target_frame)) { | 
|  1078       if (target_frame) |  1079       if (target_frame) | 
|  1079         event_result = target_frame->GetEventHandler().UpdateDragAndDrop( |  1080         event_result = target_frame->GetEventHandler().UpdateDragAndDrop( | 
|  1080             event, data_transfer); |  1081             event, data_transfer); | 
|  1081     } else if (drag_target_) { |  1082     } else if (drag_target_) { | 
|  1082       mouse_event_manager_->DispatchDragEvent( |  1083       mouse_event_manager_->DispatchDragEvent(EventTypeNames::dragleave, | 
|  1083           EventTypeNames::dragleave, drag_target_.Get(), event, data_transfer); |  1084                                               drag_target_.Get(), new_target, | 
 |  1085                                               event, data_transfer); | 
|  1084     } |  1086     } | 
|  1085  |  1087  | 
|  1086     if (new_target) { |  1088     if (new_target) { | 
|  1087       // We do not explicitly call m_mouseEventManager->dispatchDragEvent here |  1089       // We do not explicitly call m_mouseEventManager->dispatchDragEvent here | 
|  1088       // because it could ultimately result in the appearance that two dragover |  1090       // because it could ultimately result in the appearance that two dragover | 
|  1089       // events fired. So, we mark that we should only fire a dragover event on |  1091       // events fired. So, we mark that we should only fire a dragover event on | 
|  1090       // the next call to this function. |  1092       // the next call to this function. | 
|  1091       should_only_fire_drag_over_event_ = true; |  1093       should_only_fire_drag_over_event_ = true; | 
|  1092     } |  1094     } | 
|  1093   } else { |  1095   } else { | 
|  1094     LocalFrame* target_frame; |  1096     LocalFrame* target_frame; | 
|  1095     if (TargetIsFrame(new_target, target_frame)) { |  1097     if (TargetIsFrame(new_target, target_frame)) { | 
|  1096       if (target_frame) |  1098       if (target_frame) | 
|  1097         event_result = target_frame->GetEventHandler().UpdateDragAndDrop( |  1099         event_result = target_frame->GetEventHandler().UpdateDragAndDrop( | 
|  1098             event, data_transfer); |  1100             event, data_transfer); | 
|  1099     } else if (new_target) { |  1101     } else if (new_target) { | 
|  1100       // Note, when dealing with sub-frames, we may need to fire only a dragover |  1102       // Note, when dealing with sub-frames, we may need to fire only a dragover | 
|  1101       // event as a drag event may have been fired earlier. |  1103       // event as a drag event may have been fired earlier. | 
|  1102       if (!should_only_fire_drag_over_event_ && |  1104       if (!should_only_fire_drag_over_event_ && | 
|  1103           mouse_event_manager_->GetDragState().drag_src_) { |  1105           mouse_event_manager_->GetDragState().drag_src_) { | 
|  1104         // For now we don't care if event handler cancels default behavior, |  1106         // For now we don't care if event handler cancels default behavior, | 
|  1105         // since there is none. |  1107         // since there is none. | 
|  1106         mouse_event_manager_->DispatchDragSrcEvent(EventTypeNames::drag, event); |  1108         mouse_event_manager_->DispatchDragSrcEvent(EventTypeNames::drag, event); | 
|  1107       } |  1109       } | 
|  1108       event_result = mouse_event_manager_->DispatchDragEvent( |  1110       event_result = mouse_event_manager_->DispatchDragEvent( | 
|  1109           EventTypeNames::dragover, new_target, event, data_transfer); |  1111           EventTypeNames::dragover, new_target, nullptr, event, data_transfer); | 
|  1110       should_only_fire_drag_over_event_ = false; |  1112       should_only_fire_drag_over_event_ = false; | 
|  1111     } |  1113     } | 
|  1112   } |  1114   } | 
|  1113   drag_target_ = new_target; |  1115   drag_target_ = new_target; | 
|  1114  |  1116  | 
|  1115   return event_result; |  1117   return event_result; | 
|  1116 } |  1118 } | 
|  1117  |  1119  | 
|  1118 void EventHandler::CancelDragAndDrop(const WebMouseEvent& event, |  1120 void EventHandler::CancelDragAndDrop(const WebMouseEvent& event, | 
|  1119                                      DataTransfer* data_transfer) { |  1121                                      DataTransfer* data_transfer) { | 
|  1120   LocalFrame* target_frame; |  1122   LocalFrame* target_frame; | 
|  1121   if (TargetIsFrame(drag_target_.Get(), target_frame)) { |  1123   if (TargetIsFrame(drag_target_.Get(), target_frame)) { | 
|  1122     if (target_frame) |  1124     if (target_frame) | 
|  1123       target_frame->GetEventHandler().CancelDragAndDrop(event, data_transfer); |  1125       target_frame->GetEventHandler().CancelDragAndDrop(event, data_transfer); | 
|  1124   } else if (drag_target_.Get()) { |  1126   } else if (drag_target_.Get()) { | 
|  1125     if (mouse_event_manager_->GetDragState().drag_src_) |  1127     if (mouse_event_manager_->GetDragState().drag_src_) | 
|  1126       mouse_event_manager_->DispatchDragSrcEvent(EventTypeNames::drag, event); |  1128       mouse_event_manager_->DispatchDragSrcEvent(EventTypeNames::drag, event); | 
|  1127     mouse_event_manager_->DispatchDragEvent( |  1129     mouse_event_manager_->DispatchDragEvent(EventTypeNames::dragleave, | 
|  1128         EventTypeNames::dragleave, drag_target_.Get(), event, data_transfer); |  1130                                             drag_target_.Get(), nullptr, event, | 
 |  1131                                             data_transfer); | 
|  1129   } |  1132   } | 
|  1130   ClearDragState(); |  1133   ClearDragState(); | 
|  1131 } |  1134 } | 
|  1132  |  1135  | 
|  1133 WebInputEventResult EventHandler::PerformDragAndDrop( |  1136 WebInputEventResult EventHandler::PerformDragAndDrop( | 
|  1134     const WebMouseEvent& event, |  1137     const WebMouseEvent& event, | 
|  1135     DataTransfer* data_transfer) { |  1138     DataTransfer* data_transfer) { | 
|  1136   LocalFrame* target_frame; |  1139   LocalFrame* target_frame; | 
|  1137   WebInputEventResult result = WebInputEventResult::kNotHandled; |  1140   WebInputEventResult result = WebInputEventResult::kNotHandled; | 
|  1138   if (TargetIsFrame(drag_target_.Get(), target_frame)) { |  1141   if (TargetIsFrame(drag_target_.Get(), target_frame)) { | 
|  1139     if (target_frame) |  1142     if (target_frame) | 
|  1140       result = target_frame->GetEventHandler().PerformDragAndDrop( |  1143       result = target_frame->GetEventHandler().PerformDragAndDrop( | 
|  1141           event, data_transfer); |  1144           event, data_transfer); | 
|  1142   } else if (drag_target_.Get()) { |  1145   } else if (drag_target_.Get()) { | 
|  1143     result = mouse_event_manager_->DispatchDragEvent( |  1146     result = mouse_event_manager_->DispatchDragEvent( | 
|  1144         EventTypeNames::drop, drag_target_.Get(), event, data_transfer); |  1147         EventTypeNames::drop, drag_target_.Get(), nullptr, event, | 
 |  1148         data_transfer); | 
|  1145   } |  1149   } | 
|  1146   ClearDragState(); |  1150   ClearDragState(); | 
|  1147   return result; |  1151   return result; | 
|  1148 } |  1152 } | 
|  1149  |  1153  | 
|  1150 void EventHandler::ClearDragState() { |  1154 void EventHandler::ClearDragState() { | 
|  1151   scroll_manager_->StopAutoscroll(); |  1155   scroll_manager_->StopAutoscroll(); | 
|  1152   drag_target_ = nullptr; |  1156   drag_target_ = nullptr; | 
|  1153   capturing_mouse_events_node_ = nullptr; |  1157   capturing_mouse_events_node_ = nullptr; | 
|  1154   should_only_fire_drag_over_event_ = false; |  1158   should_only_fire_drag_over_event_ = false; | 
| (...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2117     MouseEventWithHitTestResults& mev, |  2121     MouseEventWithHitTestResults& mev, | 
|  2118     LocalFrame* subframe) { |  2122     LocalFrame* subframe) { | 
|  2119   WebInputEventResult result = |  2123   WebInputEventResult result = | 
|  2120       subframe->GetEventHandler().HandleMouseReleaseEvent(mev.Event()); |  2124       subframe->GetEventHandler().HandleMouseReleaseEvent(mev.Event()); | 
|  2121   if (result != WebInputEventResult::kNotHandled) |  2125   if (result != WebInputEventResult::kNotHandled) | 
|  2122     return result; |  2126     return result; | 
|  2123   return WebInputEventResult::kHandledSystem; |  2127   return WebInputEventResult::kHandledSystem; | 
|  2124 } |  2128 } | 
|  2125  |  2129  | 
|  2126 }  // namespace blink |  2130 }  // namespace blink | 
| OLD | NEW |