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

Side by Side Diff: third_party/WebKit/Source/core/page/DragController.cpp

Issue 2558643003: [InputEvent] Move 'beforeinput' logic into |CompositeEditCommand::willApplyEditing()| (3/3) (Closed)
Patch Set: Rebase on EditCommandSource and willApply() CLs Created 4 years 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) 2007, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Google Inc. 3 * Copyright (C) 2008 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 const DeleteMode deleteMode = 598 const DeleteMode deleteMode =
599 innerFrame->editor().smartInsertDeleteEnabled() ? DeleteMode::Smart 599 innerFrame->editor().smartInsertDeleteEnabled() ? DeleteMode::Smart
600 : DeleteMode::Simple; 600 : DeleteMode::Simple;
601 const InsertMode insertMode = 601 const InsertMode insertMode =
602 (deleteMode == DeleteMode::Smart && 602 (deleteMode == DeleteMode::Smart &&
603 innerFrame->selection().granularity() == WordGranularity && 603 innerFrame->selection().granularity() == WordGranularity &&
604 dragData->canSmartReplace()) 604 dragData->canSmartReplace())
605 ? InsertMode::Smart 605 ? InsertMode::Smart
606 : InsertMode::Simple; 606 : InsertMode::Simple;
607 607
608 if (!innerFrame->editor().deleteSelectionAfterDraggingWithEvents( 608 innerFrame->editor().deleteSelectionWithSmartDelete(
609 innerFrame->editor().findEventTargetFromSelection(), deleteMode, 609 EditCommandSource::kMenuOrKeyBinding, deleteMode,
610 dragCaret.base())) 610 InputEvent::InputType::DeleteByDrag, dragCaret.base());
611
612 // 'beforeinput' event handler may destroy drop frame.
613 if (innerFrame->document()->frame() != innerFrame ||
614 !element->isConnected())
611 return false; 615 return false;
612 616
613 innerFrame->selection().setSelection( 617 innerFrame->selection().setSelection(
614 SelectionInDOMTree::Builder() 618 SelectionInDOMTree::Builder()
615 .setBaseAndExtent(EphemeralRange(range)) 619 .setBaseAndExtent(EphemeralRange(range))
616 .build()); 620 .build());
617 if (innerFrame->selection().isAvailable()) { 621 if (innerFrame->selection().isAvailable()) {
618 DCHECK(m_documentUnderMouse); 622 DCHECK(m_documentUnderMouse);
619 if (!innerFrame->editor().replaceSelectionAfterDraggingWithEvents( 623 innerFrame->editor().replaceSelectionAfterDragging(fragment, insertMode,
620 element, dragData, fragment, range, insertMode, dragSourceType)) 624 dragSourceType);
621 return false;
622 } 625 }
623 } else { 626 } else {
624 if (setSelectionToDragCaret(innerFrame, dragCaret, range, point)) { 627 if (setSelectionToDragCaret(innerFrame, dragCaret, range, point)) {
625 DCHECK(m_documentUnderMouse); 628 DCHECK(m_documentUnderMouse);
626 if (!innerFrame->editor().replaceSelectionAfterDraggingWithEvents( 629 innerFrame->editor().replaceSelectionAfterDragging(
627 element, dragData, fragment, range, 630 fragment, dragData->canSmartReplace() ? InsertMode::Smart
628 dragData->canSmartReplace() ? InsertMode::Smart 631 : InsertMode::Simple,
629 : InsertMode::Simple, 632 dragSourceType);
630 dragSourceType))
631 return false;
632 } 633 }
633 } 634 }
634 } else { 635 } else {
635 String text = dragData->asPlainText(); 636 String text = dragData->asPlainText();
636 if (text.isEmpty()) 637 if (text.isEmpty())
637 return false; 638 return false;
638 639
639 if (setSelectionToDragCaret(innerFrame, dragCaret, range, point)) { 640 if (setSelectionToDragCaret(innerFrame, dragCaret, range, point)) {
640 DCHECK(m_documentUnderMouse); 641 DCHECK(m_documentUnderMouse);
641 if (!innerFrame->editor().replaceSelectionAfterDraggingWithEvents( 642 innerFrame->editor().replaceSelectionAfterDragging(
642 element, dragData, 643 createFragmentFromText(EphemeralRange(range), text),
643 createFragmentFromText(EphemeralRange(range), text), range, 644 InsertMode::Simple, DragSourceType::PlainTextSource);
644 InsertMode::Simple, DragSourceType::PlainTextSource))
645 return false;
646 } 645 }
647 } 646 }
648 647
649 if (rootEditableElement) { 648 if (rootEditableElement) {
650 if (LocalFrame* frame = rootEditableElement->document().frame()) { 649 if (LocalFrame* frame = rootEditableElement->document().frame()) {
651 frame->eventHandler().updateDragStateAfterEditDragIfNeeded( 650 frame->eventHandler().updateDragStateAfterEditDragIfNeeded(
652 rootEditableElement); 651 rootEditableElement);
653 } 652 }
654 } 653 }
655 654
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 } 1230 }
1232 1231
1233 DEFINE_TRACE(DragController) { 1232 DEFINE_TRACE(DragController) {
1234 visitor->trace(m_page); 1233 visitor->trace(m_page);
1235 visitor->trace(m_documentUnderMouse); 1234 visitor->trace(m_documentUnderMouse);
1236 visitor->trace(m_dragInitiator); 1235 visitor->trace(m_dragInitiator);
1237 visitor->trace(m_fileInputElementUnderMouse); 1236 visitor->trace(m_fileInputElementUnderMouse);
1238 } 1237 }
1239 1238
1240 } // namespace blink 1239 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698