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

Side by Side Diff: third_party/WebKit/Source/core/input/EventHandler.cpp

Issue 2729353002: Remove webkitdropzone. (Closed)
Patch Set: Created 3 years, 9 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) 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 988 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 999
1000 // Cross-process drag and drop is not yet supported. 1000 // Cross-process drag and drop is not yet supported.
1001 if (toHTMLFrameElementBase(target)->contentFrame() && 1001 if (toHTMLFrameElementBase(target)->contentFrame() &&
1002 !toHTMLFrameElementBase(target)->contentFrame()->isLocalFrame()) 1002 !toHTMLFrameElementBase(target)->contentFrame()->isLocalFrame())
1003 return false; 1003 return false;
1004 1004
1005 frame = toLocalFrame(toHTMLFrameElementBase(target)->contentFrame()); 1005 frame = toLocalFrame(toHTMLFrameElementBase(target)->contentFrame());
1006 return true; 1006 return true;
1007 } 1007 }
1008 1008
1009 static bool findDropZone(Node* target, DataTransfer* dataTransfer) {
1010 Element* element =
1011 target->isElementNode() ? toElement(target) : target->parentElement();
1012 for (; element; element = element->parentElement()) {
1013 bool matched = false;
1014 AtomicString dropZoneStr = element->fastGetAttribute(webkitdropzoneAttr);
1015
1016 if (dropZoneStr.isEmpty())
1017 continue;
1018
1019 UseCounter::count(element->document(),
1020 UseCounter::PrefixedHTMLElementDropzone);
1021
1022 dropZoneStr = dropZoneStr.lower();
1023
1024 SpaceSplitString keywords(dropZoneStr, SpaceSplitString::ShouldNotFoldCase);
1025 if (keywords.isNull())
1026 continue;
1027
1028 DragOperation dragOperation = DragOperationNone;
1029 for (unsigned i = 0; i < keywords.size(); i++) {
1030 DragOperation op = convertDropZoneOperationToDragOperation(keywords[i]);
1031 if (op != DragOperationNone) {
1032 if (dragOperation == DragOperationNone)
1033 dragOperation = op;
1034 } else {
1035 matched =
1036 matched || dataTransfer->hasDropZoneType(keywords[i].getString());
1037 }
1038
1039 if (matched && dragOperation != DragOperationNone)
1040 break;
1041 }
1042 if (matched) {
1043 dataTransfer->setDropEffect(
1044 convertDragOperationToDropZoneOperation(dragOperation));
1045 return true;
1046 }
1047 }
1048 return false;
1049 }
1050
1051 WebInputEventResult EventHandler::updateDragAndDrop( 1009 WebInputEventResult EventHandler::updateDragAndDrop(
1052 const WebMouseEvent& event, 1010 const WebMouseEvent& event,
1053 DataTransfer* dataTransfer) { 1011 DataTransfer* dataTransfer) {
1054 WebInputEventResult eventResult = WebInputEventResult::NotHandled; 1012 WebInputEventResult eventResult = WebInputEventResult::NotHandled;
1055 1013
1056 if (!m_frame->view()) 1014 if (!m_frame->view())
1057 return eventResult; 1015 return eventResult;
1058 1016
1059 HitTestRequest request(HitTestRequest::ReadOnly); 1017 HitTestRequest request(HitTestRequest::ReadOnly);
1060 MouseEventWithHitTestResults mev = 1018 MouseEventWithHitTestResults mev =
(...skipping 27 matching lines...) Expand all
1088 } else if (newTarget) { 1046 } else if (newTarget) {
1089 // As per section 7.9.4 of the HTML 5 spec., we must always fire a drag 1047 // As per section 7.9.4 of the HTML 5 spec., we must always fire a drag
1090 // event before firing a dragenter, dragleave, or dragover event. 1048 // event before firing a dragenter, dragleave, or dragover event.
1091 if (m_mouseEventManager->dragState().m_dragSrc) { 1049 if (m_mouseEventManager->dragState().m_dragSrc) {
1092 // For now we don't care if event handler cancels default behavior, 1050 // For now we don't care if event handler cancels default behavior,
1093 // since there is none. 1051 // since there is none.
1094 m_mouseEventManager->dispatchDragSrcEvent(EventTypeNames::drag, event); 1052 m_mouseEventManager->dispatchDragSrcEvent(EventTypeNames::drag, event);
1095 } 1053 }
1096 eventResult = m_mouseEventManager->dispatchDragEvent( 1054 eventResult = m_mouseEventManager->dispatchDragEvent(
1097 EventTypeNames::dragenter, newTarget, event, dataTransfer); 1055 EventTypeNames::dragenter, newTarget, event, dataTransfer);
1098 if (eventResult == WebInputEventResult::NotHandled &&
1099 findDropZone(newTarget, dataTransfer))
1100 eventResult = WebInputEventResult::HandledSystem;
1101 } 1056 }
1102 1057
1103 if (targetIsFrame(m_dragTarget.get(), targetFrame)) { 1058 if (targetIsFrame(m_dragTarget.get(), targetFrame)) {
1104 if (targetFrame) 1059 if (targetFrame)
1105 eventResult = 1060 eventResult =
1106 targetFrame->eventHandler().updateDragAndDrop(event, dataTransfer); 1061 targetFrame->eventHandler().updateDragAndDrop(event, dataTransfer);
1107 } else if (m_dragTarget) { 1062 } else if (m_dragTarget) {
1108 m_mouseEventManager->dispatchDragEvent( 1063 m_mouseEventManager->dispatchDragEvent(
1109 EventTypeNames::dragleave, m_dragTarget.get(), event, dataTransfer); 1064 EventTypeNames::dragleave, m_dragTarget.get(), event, dataTransfer);
1110 } 1065 }
(...skipping 15 matching lines...) Expand all
1126 // Note, when dealing with sub-frames, we may need to fire only a dragover 1081 // Note, when dealing with sub-frames, we may need to fire only a dragover
1127 // event as a drag event may have been fired earlier. 1082 // event as a drag event may have been fired earlier.
1128 if (!m_shouldOnlyFireDragOverEvent && 1083 if (!m_shouldOnlyFireDragOverEvent &&
1129 m_mouseEventManager->dragState().m_dragSrc) { 1084 m_mouseEventManager->dragState().m_dragSrc) {
1130 // For now we don't care if event handler cancels default behavior, 1085 // For now we don't care if event handler cancels default behavior,
1131 // since there is none. 1086 // since there is none.
1132 m_mouseEventManager->dispatchDragSrcEvent(EventTypeNames::drag, event); 1087 m_mouseEventManager->dispatchDragSrcEvent(EventTypeNames::drag, event);
1133 } 1088 }
1134 eventResult = m_mouseEventManager->dispatchDragEvent( 1089 eventResult = m_mouseEventManager->dispatchDragEvent(
1135 EventTypeNames::dragover, newTarget, event, dataTransfer); 1090 EventTypeNames::dragover, newTarget, event, dataTransfer);
1136 if (eventResult == WebInputEventResult::NotHandled &&
1137 findDropZone(newTarget, dataTransfer))
1138 eventResult = WebInputEventResult::HandledSystem;
1139 m_shouldOnlyFireDragOverEvent = false; 1091 m_shouldOnlyFireDragOverEvent = false;
1140 } 1092 }
1141 } 1093 }
1142 m_dragTarget = newTarget; 1094 m_dragTarget = newTarget;
1143 1095
1144 return eventResult; 1096 return eventResult;
1145 } 1097 }
1146 1098
1147 void EventHandler::cancelDragAndDrop(const WebMouseEvent& event, 1099 void EventHandler::cancelDragAndDrop(const WebMouseEvent& event,
1148 DataTransfer* dataTransfer) { 1100 DataTransfer* dataTransfer) {
(...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after
2142 } 2094 }
2143 2095
2144 FrameHost* EventHandler::frameHost() const { 2096 FrameHost* EventHandler::frameHost() const {
2145 if (!m_frame->page()) 2097 if (!m_frame->page())
2146 return nullptr; 2098 return nullptr;
2147 2099
2148 return &m_frame->page()->frameHost(); 2100 return &m_frame->page()->frameHost();
2149 } 2101 }
2150 2102
2151 } // namespace blink 2103 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/html/HTMLElement.idl ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698