1. 13 May, 2011 2 commits
    • dcheng@chromium.org's avatar
      2011-05-13 Daniel Cheng <dcheng@chromium.org> · 0eb6dc60
      dcheng@chromium.org authored
              Reviewed by Tony Chang.
      
              Improve drag start logic
              https://bugs.webkit.org/show_bug.cgi?id=59409
      
              Add a new test to test drag start edge cases on Mac (because of a non-zero text drag delay)
              as well as rebase an existing test.
      
              * fast/css/user-drag-none.html: Text nodes are no longer draggable.
              * platform/mac/editing/pasteboard/drag-selections-to-contenteditable-expected.txt: Added.
              * platform/mac/editing/pasteboard/drag-selections-to-contenteditable.html: Added.
      2011-05-13  Daniel Cheng  <dcheng@chromium.org>
      
              Reviewed by Tony Chang.
      
              Improve drag start logic
              https://bugs.webkit.org/show_bug.cgi?id=59409
      
              Rewrite and simplify the dragging logic to better match IE, Firefox, and the behavior
              defined in the spec. Among other things:
              - draggableNode() no longer returns text nodes when dragging anchors.
              - When starting a drag over an image in a selection, prefer to drag the selection.
              - Several redundant hit tests have been removed.
              - Minor refactoring to make the logic easier to follow.
      
              Test: platform/mac/editing/pasteboard/drag-selections-to-contenteditable.html
      
              * WebCore.xcodeproj/project.pbxproj:
              * page/DragController.cpp:
              (WebCore::DragController::draggableNode):
              (WebCore::DragController::startDrag):
              * page/DragController.h:
              * page/DragState.h:
              (WebCore::DragState::shouldDispatchEvents):
              * page/EventHandler.cpp:
              (WebCore::EventHandler::EventHandler):
              (WebCore::EventHandler::eventMayStartDrag):
              (WebCore::EventHandler::updateDragSourceActionsAllowed):
              (WebCore::EventHandler::updateDragAndDrop):
              (WebCore::EventHandler::cancelDragAndDrop):
              (WebCore::EventHandler::dragHysteresisExceeded):
              (WebCore::EventHandler::dragSourceEndedAt):
              (WebCore::ExactlyOneBitSet):
              (WebCore::EventHandler::handleDrag):
              * page/EventHandler.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@86472 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0eb6dc60
    • rniwa@webkit.org's avatar
      2011-05-13 Ryosuke Niwa <rniwa@webkit.org> · 91cc070e
      rniwa@webkit.org authored
              Reviewed by Darin Adler.
      
              click event shouldn't fire when the target is ever removed in mouseup
              https://bugs.webkit.org/show_bug.cgi?id=60600
      
              Added tests to ensure WebKit does not fire click event when the target node
              is removed in mouseup event.
      
              * fast/events/remove-target-in-mouseup-deep-expected.txt: Added.
              * fast/events/remove-target-in-mouseup-deep.html: Added.
              * fast/events/remove-target-in-mouseup-expected.txt: Added.
              * fast/events/remove-target-in-mouseup-insertback-expected.txt: Added.
              * fast/events/remove-target-in-mouseup-insertback.html: Added.
              * fast/events/remove-target-in-mouseup-twice-expected.txt: Added.
              * fast/events/remove-target-in-mouseup-twice.html: Added.
              * fast/events/remove-target-in-mouseup.html: Added.
      2011-05-13  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Darin Adler.
      
              click event shouldn't fire when the target is ever removed in mouseup
              https://bugs.webkit.org/show_bug.cgi?id=60600
      
              Fixed the bug by invalidating m_clickNode when it or one of its ancestors has been removed
              from the document. New behavior matches Internet Explorer and Firefox.
      
              Tests: fast/events/remove-target-in-mouseup-deep.html
                     fast/events/remove-target-in-mouseup-insertback.html
                     fast/events/remove-target-in-mouseup-twice.html
                     fast/events/remove-target-in-mouseup.html
      
              * dom/Document.cpp:
              (WebCore::Document::nodeChildrenWillBeRemoved): Calls EventHandler::nodeWillBeRemoved.
              (WebCore::Document::nodeWillBeRemoved): Calls EventHandler::nodeWillBeRemoved.
              * page/EventHandler.cpp:
              (WebCore::EventHandler::nodeWillBeRemoved): Added; invalidates m_clickNode when m_clickNode
              or one of its ancestor is removed from the document.
              * page/EventHandler.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@86461 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      91cc070e
  2. 09 May, 2011 2 commits
    • mitz@apple.com's avatar
      Try to fix the LLVM Compiler build. · 2846bccf
      mitz@apple.com authored
      * page/EventHandler.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@86131 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2846bccf
    • dcheng@chromium.org's avatar
      2011-05-09 Daniel Cheng <dcheng@chromium.org> · 252dcbe7
      dcheng@chromium.org authored
              Reviewed by Tony Chang.
      
              Refactor RenderObject::draggableNode.
              https://bugs.webkit.org/show_bug.cgi?id=60503
      
              This patch lays the ground for refactoring the drag start logic. It moves draggableNode to
              DragController to avoid the awkward plumbing of calling DragController from RenderObject and
              also moves EventHandlerDragState out from EventHandler so it can be shared between
              EventHandler and DragController where appropriate.
      
              No new tests since there should be no behavior change.
      
              * GNUmakefile.list.am:
              * WebCore.gypi:
              * WebCore.pro:
              * WebCore.vcproj/WebCore.vcproj:
              * WebCore.xcodeproj/project.pbxproj:
              * page/DragController.cpp:
              (WebCore::DragController::draggableNode):
              (WebCore::DragController::mayStartDragAtEventLocation):
              * page/DragController.h:
              * page/DragState.h: Added.
              (WebCore::DragState::DragState):
              * page/EventHandler.cpp:
              (WebCore::EventHandler::dragState):
              (WebCore::EventHandler::eventMayStartDrag):
              (WebCore::EventHandler::handleDrag):
              * page/EventHandler.h:
              * rendering/RenderObject.cpp:
              * rendering/RenderObject.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@86128 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      252dcbe7
  3. 05 May, 2011 1 commit
    • rniwa@webkit.org's avatar
      2011-05-05 Ryosuke Niwa <rniwa@webkit.org> · 78bbc94c
      rniwa@webkit.org authored
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * src/WebFrameImpl.cpp:
              (WebKit::WebFrameImpl::selectWordAroundCaret):
              * src/WebViewImpl.cpp:
              (WebKit::WebViewImpl::textInputType):
              (WebKit::WebViewImpl::caretOrSelectionBounds):
              (WebKit::WebViewImpl::caretOrSelectionRange):
              (WebKit::WebViewImpl::clearFocusedNode):
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * Api/qwebframe.cpp:
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * webkit/webkitwebview.cpp:
              (getLocationForKeyboardGeneratedContextMenu):
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * WebView.cpp:
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * WebDOMSelection.cpp:
              * WebDOMSelection.h:
              * WebKitSupport/EditorClientWx.cpp:
              * WebView.cpp:
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * WebView/WebFrame.mm:
              (-[WebFrame _rangeByAlteringCurrentSelection:FrameSelection::direction:granularity:]):
              * WebView/WebFrameInternal.h:
              * WebView/WebHTMLView.mm:
              * WebView/WebTextCompletionController.mm:
              (-[WebTextCompletionController doCompletion]):
              * WebView/WebView.mm:
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * WebCoreSupport/EditorClientHaiku.cpp:
              (WebCore::EditorClientHaiku::handleKeyboardEvent):
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * WebCoreSupport/EditorClientWinCE.cpp:
              (WebKit::EditorClientWinCE::handleEditingKeyboardEvent):
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * WebCoreSupport/EditorClientEfl.cpp:
              (WebCore::EditorClientEfl::handleEditingKeyboardEvent):
      2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>
      
              Reviewed by Eric Seidel.
      
              Rename SelectionController to FrameSelection
              https://bugs.webkit.org/show_bug.cgi?id=60234
      
              * CMakeLists.txt:
              * GNUmakefile.list.am:
              * WebCore.exp.in:
              * WebCore.gypi:
              * WebCore.pro:
              * WebCore.vcproj/WebCore.vcproj:
              * WebCore.xcodeproj/project.pbxproj:
              * accessibility/AccessibilityObject.cpp:
              * accessibility/AccessibilityRenderObject.cpp:
              (WebCore::AccessibilityRenderObject::visiblePositionRangeForLine):
              * accessibility/mac/AccessibilityObjectWrapper.mm:
              * bindings/objc/ExceptionHandlers.h:
              * css/CSSStyleSelector.cpp:
              * dom/ContainerNode.cpp:
              (WebCore::ContainerNode::cloneChildNodes):
              * dom/Document.cpp:
              * dom/InputElement.cpp:
              * editing/DeleteButtonController.cpp:
              * editing/EditCommand.cpp:
              * editing/EditingAllInOne.cpp:
              * editing/EditingStyle.cpp:
              * editing/Editor.cpp:
              (WebCore::Editor::canCopy):
              (WebCore::Editor::canDelete):
              (WebCore::Editor::markMisspellingsAfterTypingToWord):
              (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
              (WebCore::Editor::changeSelectionAfterCommand):
              (WebCore::Editor::respondToChangedSelection):
              * editing/Editor.h:
              * editing/EditorCommand.cpp:
              (WebCore::executeDeleteToMark):
              (WebCore::executeMoveBackward):
              (WebCore::executeMoveBackwardAndModifySelection):
              (WebCore::executeMoveDown):
              (WebCore::executeMoveDownAndModifySelection):
              (WebCore::executeMoveForward):
              (WebCore::executeMoveForwardAndModifySelection):
              (WebCore::executeMoveLeft):
              (WebCore::executeMoveLeftAndModifySelection):
              (WebCore::executeMovePageDown):
              (WebCore::executeMovePageDownAndModifySelection):
              (WebCore::executeMovePageUp):
              (WebCore::executeMovePageUpAndModifySelection):
              (WebCore::executeMoveRight):
              (WebCore::executeMoveRightAndModifySelection):
              (WebCore::executeMoveToBeginningOfDocument):
              (WebCore::executeMoveToBeginningOfDocumentAndModifySelection):
              (WebCore::executeMoveToBeginningOfLine):
              (WebCore::executeMoveToBeginningOfLineAndModifySelection):
              (WebCore::executeMoveToBeginningOfParagraph):
              (WebCore::executeMoveToBeginningOfParagraphAndModifySelection):
              (WebCore::executeMoveToBeginningOfSentence):
              (WebCore::executeMoveToBeginningOfSentenceAndModifySelection):
              (WebCore::executeMoveToEndOfDocument):
              (WebCore::executeMoveToEndOfDocumentAndModifySelection):
              (WebCore::executeMoveToEndOfSentence):
              (WebCore::executeMoveToEndOfSentenceAndModifySelection):
              (WebCore::executeMoveToEndOfLine):
              (WebCore::executeMoveToEndOfLineAndModifySelection):
              (WebCore::executeMoveToEndOfParagraph):
              (WebCore::executeMoveToEndOfParagraphAndModifySelection):
              (WebCore::executeMoveParagraphBackwardAndModifySelection):
              (WebCore::executeMoveParagraphForwardAndModifySelection):
              (WebCore::executeMoveUp):
              (WebCore::executeMoveUpAndModifySelection):
              (WebCore::executeMoveWordBackward):
              (WebCore::executeMoveWordBackwardAndModifySelection):
              (WebCore::executeMoveWordForward):
              (WebCore::executeMoveWordForwardAndModifySelection):
              (WebCore::executeMoveWordLeft):
              (WebCore::executeMoveWordLeftAndModifySelection):
              (WebCore::executeMoveWordRight):
              (WebCore::executeMoveWordRightAndModifySelection):
              (WebCore::executeMoveToLeftEndOfLine):
              (WebCore::executeMoveToLeftEndOfLineAndModifySelection):
              (WebCore::executeMoveToRightEndOfLine):
              (WebCore::executeMoveToRightEndOfLineAndModifySelection):
              * editing/FrameSelection.cpp: Copied from Source/WebCore/editing/SelectionController.cpp.
              (WebCore::FrameSelection::FrameSelection):
              (WebCore::FrameSelection::moveTo):
              (WebCore::FrameSelection::setSelection):
              (WebCore::FrameSelection::nodeWillBeRemoved):
              (WebCore::FrameSelection::respondToNodeModification):
              (WebCore::FrameSelection::textWillBeReplaced):
              (WebCore::FrameSelection::setIsDirectional):
              (WebCore::FrameSelection::directionOfEnclosingBlock):
              (WebCore::FrameSelection::willBeModified):
              (WebCore::FrameSelection::positionForPlatform):
              (WebCore::FrameSelection::startForPlatform):
              (WebCore::FrameSelection::endForPlatform):
              (WebCore::FrameSelection::modifyExtendingRight):
              (WebCore::FrameSelection::modifyExtendingForward):
              (WebCore::FrameSelection::modifyMovingRight):
              (WebCore::FrameSelection::modifyMovingForward):
              (WebCore::FrameSelection::modifyExtendingLeft):
              (WebCore::FrameSelection::modifyExtendingBackward):
              (WebCore::FrameSelection::modifyMovingLeft):
              (WebCore::FrameSelection::modifyMovingBackward):
              (WebCore::FrameSelection::modify):
              (WebCore::FrameSelection::xPosForVerticalArrowNavigation):
              (WebCore::FrameSelection::clear):
              (WebCore::FrameSelection::setStart):
              (WebCore::FrameSelection::setEnd):
              (WebCore::FrameSelection::setBase):
              (WebCore::FrameSelection::setExtent):
              (WebCore::FrameSelection::setCaretRectNeedsUpdate):
              (WebCore::FrameSelection::updateCaretRect):
              (WebCore::FrameSelection::caretRenderer):
              (WebCore::FrameSelection::localCaretRect):
              (WebCore::FrameSelection::absoluteBoundsForLocalRect):
              (WebCore::FrameSelection::absoluteCaretBounds):
              (WebCore::FrameSelection::caretRepaintRect):
              (WebCore::FrameSelection::recomputeCaretRect):
              (WebCore::FrameSelection::shouldRepaintCaret):
              (WebCore::FrameSelection::invalidateCaretRect):
              (WebCore::FrameSelection::paintCaret):
              (WebCore::FrameSelection::debugRenderer):
              (WebCore::FrameSelection::contains):
              (WebCore::FrameSelection::selectFrameElementInParentIfFullySelected):
              (WebCore::FrameSelection::selectAll):
              (WebCore::FrameSelection::setSelectedRange):
              (WebCore::FrameSelection::isInPasswordField):
              (WebCore::FrameSelection::caretRendersInsideNode):
              (WebCore::FrameSelection::focusedOrActiveStateChanged):
              (WebCore::FrameSelection::pageActivationChanged):
              (WebCore::FrameSelection::updateSecureKeyboardEntryIfActive):
              (WebCore::FrameSelection::setUseSecureKeyboardEntry):
              (WebCore::FrameSelection::setFocused):
              (WebCore::FrameSelection::isFocusedAndActive):
              (WebCore::FrameSelection::updateAppearance):
              (WebCore::FrameSelection::setCaretVisible):
              (WebCore::FrameSelection::clearCaretRectIfNeeded):
              (WebCore::FrameSelection::caretBlinkTimerFired):
              (WebCore::FrameSelection::notifyRendererOfSelectionChange):
              (WebCore::FrameSelection::setFocusedNodeIfNeeded):
              (WebCore::FrameSelection::paintDragCaret):
              (WebCore::FrameSelection::copyTypingStyle):
              (WebCore::FrameSelection::shouldDeleteSelection):
              (WebCore::FrameSelection::bounds):
              (WebCore::FrameSelection::getClippedVisibleTextRectangles):
              (WebCore::FrameSelection::currentForm):
              (WebCore::FrameSelection::revealSelection):
              (WebCore::FrameSelection::setSelectionFromNone):
              (WebCore::FrameSelection::shouldChangeSelection):
              (WebCore::FrameSelection::formatForDebugger):
              (WebCore::FrameSelection::showTreeForThis):
              (showTree):
              * editing/FrameSelection.h: Copied from Source/WebCore/editing/SelectionController.h.
              (WebCore::FrameSelection::typingStyle):
              (WebCore::FrameSelection::clearTypingStyle):
              (WebCore::FrameSelection::setTypingStyle):
              (WebCore::FrameSelection::notifyAccessibilityForSelectionChange):
              * editing/ModifySelectionListLevel.cpp:
              * editing/RemoveFormatCommand.cpp:
              * editing/ReplaceSelectionCommand.cpp:
              * editing/SelectionController.cpp: Removed.
              * editing/SelectionController.h: Removed.
              * editing/SetSelectionCommand.cpp:
              (WebCore::SetSelectionCommand::SetSelectionCommand):
              (WebCore::SetSelectionCommand::doApply):
              (WebCore::SetSelectionCommand::doUnapply):
              * editing/SetSelectionCommand.h:
              (WebCore::SetSelectionCommand::create):
              * editing/SpellingCorrectionCommand.cpp:
              (WebCore::SpellingCorrectionCommand::doApply):
              * editing/SpellingCorrectionController.cpp:
              (WebCore::SpellingCorrectionController::respondToUnappliedSpellCorrection):
              * editing/TypingCommand.cpp:
              (WebCore::TypingCommand::deleteKeyPressed):
              (WebCore::TypingCommand::forwardDeleteKeyPressed):
              * editing/chromium/FrameSelectionChromium.cpp: Copied from Source/WebCore/editing/chromium/SelectionControllerChromium.cpp.
              (WebCore::FrameSelection::notifyAccessibilityForSelectionChange):
              * editing/chromium/SelectionControllerChromium.cpp: Removed.
              * editing/gtk/FrameSelectionGtk.cpp: Copied from Source/WebCore/editing/gtk/SelectionControllerGtk.cpp.
              (WebCore::FrameSelection::notifyAccessibilityForSelectionChange):
              * editing/gtk/SelectionControllerGtk.cpp: Removed.
              * editing/mac/EditorMac.mm:
              (WebCore::Editor::canCopyExcludingStandaloneImages):
              * editing/mac/FrameSelectionMac.mm: Copied from Source/WebCore/editing/mac/SelectionControllerMac.mm.
              (WebCore::FrameSelection::notifyAccessibilityForSelectionChange):
              * editing/mac/SelectionControllerMac.mm: Removed.
              * editing/qt/EditorQt.cpp:
              * loader/archive/cf/LegacyWebArchive.cpp:
              * page/ContextMenuController.cpp:
              (WebCore::ContextMenuController::populate):
              * page/DOMSelection.cpp:
              (WebCore::DOMSelection::type):
              (WebCore::DOMSelection::modify):
              (WebCore::DOMSelection::addRange):
              (WebCore::DOMSelection::deleteFromDocument):
              (WebCore::DOMSelection::containsNode):
              * page/DragController.cpp:
              (WebCore::DragController::dragIsMove):
              * page/DragController.h:
              * page/EventHandler.cpp:
              (WebCore::setSelectionIfNeeded):
              (WebCore::setNonDirectionalSelectionIfNeeded):
              (WebCore::EventHandler::sendContextMenuEventForKey):
              (WebCore::EventHandler::handleKeyboardSelectionMovement):
              * page/EventHandler.h:
              * page/FocusController.cpp:
              (WebCore::clearSelectionIfNeeded):
              * page/Frame.cpp:
              (WebCore::Frame::Frame):
              * page/Frame.h:
              (WebCore::Frame::selection):
              * page/Page.cpp:
              (WebCore::Page::Page):
              * page/Page.h:
              (WebCore::Page::dragCaretController):
              * page/chromium/DragControllerChromium.cpp:
              * page/chromium/EventHandlerChromium.cpp:
              * page/win/DragControllerWin.cpp:
              * page/win/EventHandlerWin.cpp:
              * rendering/HitTestResult.cpp:
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::destroy):
              (WebCore::RenderBlock::paintCaret):
              * rendering/RenderImage.cpp:
              * rendering/RenderInline.cpp:
              (WebCore::RenderInline::destroy):
              * rendering/RenderLayer.cpp:
              * rendering/RenderListBox.cpp:
              * rendering/RenderObjectChildList.cpp:
              (WebCore::RenderObjectChildList::removeChildNode):
              * rendering/RenderTextControl.cpp:
              * rendering/RenderTextControlSingleLine.cpp:
              * rendering/RenderTheme.cpp:
              * rendering/RenderTreeAsText.cpp:
              * svg/SVGSVGElement.cpp:
              * svg/SVGTextContentElement.cpp:
              (WebCore::SVGTextContentElement::selectSubString):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@85864 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      78bbc94c
  4. 04 May, 2011 1 commit
    • rniwa@webkit.org's avatar
      2011-05-04 Ryosuke Niwa <rniwa@webkit.org> · 92959a51
      rniwa@webkit.org authored
              Reviewed by Eric Seidel.
      
              Make more member functions in EventHandler private
              https://bugs.webkit.org/show_bug.cgi?id=60200
      
              Reduced the number of public member functions in EventHandler.
      
              * WebCore.exp.in:
              * page/EventHandler.cpp:
              (WebCore::EventHandler::handleAutoscroll):
              (WebCore::EventHandler::autoscrollTimerFired):
              (WebCore::EventHandler::stopAutoscrollTimer):
              (WebCore::EventHandler::handleMousePressEvent):
              (WebCore::EventHandler::handleMouseMoveEvent):
              (WebCore::EventHandler::keyEvent):
              (WebCore::EventHandler::eventInvertsTabsToLinksClientCallResult):
              * page/EventHandler.h:
              (WebCore::EventHandler::mouseDownMayStartSelect):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@85826 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      92959a51
  5. 01 May, 2011 2 commits
  6. 11 Apr, 2011 1 commit
  7. 10 Apr, 2011 1 commit
  8. 07 Apr, 2011 1 commit
    • commit-queue@webkit.org's avatar
      2011-04-07 Alice Boxhall <aboxhall@chromium.org> · a892eb1c
      commit-queue@webkit.org authored
              Reviewed by Ryosuke Niwa.
      
              Move the MouseEventWithHitTestResults::targetNode() method on to EventHandler.
              https://bugs.webkit.org/show_bug.cgi?id=57921
      
              Moves the MouseEventWithHitTestResults::targetNode() method on to EventHandler, so
              that the same logic can be used for a HitTestResult.
      
              No visible changes, just cleanup, so no tests.
      
              * page/EventHandler.cpp:
              (WebCore::EventHandler::selectClosestWordFromMouseEvent):
              (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent):
              (WebCore::EventHandler::handleMousePressEventTripleClick):
              (WebCore::EventHandler::handleMousePressEventSingleClick):
              (WebCore::EventHandler::handleMousePressEvent):
              (WebCore::EventHandler::handleMouseDraggedEvent):
              (WebCore::EventHandler::handleMouseReleaseEvent):
              (WebCore::EventHandler::subframeForHitTestResult):
              Made public static member, so that it can access targetNode(), and be accessed by
              webkitwebview in gtk.
              (WebCore::EventHandler::selectCursor):
              (WebCore::EventHandler::targetNode):
              (WebCore::EventHandler::handleMouseDoubleClickEvent):
              (WebCore::EventHandler::handleMouseMoveEvent):
              (WebCore::EventHandler::updateDragAndDrop):
              (WebCore::EventHandler::sendContextMenuEvent):
              * page/EventHandler.h:
              * page/MouseEventWithHitTestResults.cpp:
              (WebCore::MouseEventWithHitTestResults::MouseEventWithHitTestResults):
              * page/MouseEventWithHitTestResults.h:
              * page/android/EventHandlerAndroid.cpp:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              * page/brew/EventHandlerBrew.cpp:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              * page/chromium/EventHandlerChromium.cpp:
              (WebCore::EventHandler::passMousePressEventToSubframe):
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              * page/efl/EventHandlerEfl.cpp:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              * page/gtk/EventHandlerGtk.cpp:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              * page/haiku/EventHandlerHaiku.cpp:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              * page/mac/EventHandlerMac.mm:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
              (WebCore::EventHandler::passSubframeEventToSubframe):
              * page/wx/EventHandlerWx.cpp:
              (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
      2011-04-07  Alice Boxhall  <aboxhall@chromium.org>
      
              Reviewed by Ryosuke Niwa.
      
              Move the MouseEventWithHitTestResults::targetNode() method on to EventHandler.
              https://bugs.webkit.org/show_bug.cgi?id=57921
      
              * webkit/webkitwebview.cpp:
              (webkit_web_view_forward_context_menu_event):
              Call subframeForHitTestResult rather than subframeForTargetNode as the targetNode()
              method has moved on to EventHandler.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@83153 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a892eb1c
  9. 23 Mar, 2011 1 commit
  10. 21 Mar, 2011 1 commit
    • commit-queue@webkit.org's avatar
      2011-03-21 Robert Kroeger <rjkroege@chromium.org> · 28faf6ec
      commit-queue@webkit.org authored
              Reviewed by Antonio Gomes.
      
              Flag to enable/disable a GestureReocognizer framework
      
              https://bugs.webkit.org/show_bug.cgi?id=49345
      
              * wtf/Platform.h:
      2011-03-21  Robert Kroeger  <rjkroege@chromium.org>
      
              Reviewed by Antonio Gomes.
      
              Add Support to WebCore to optionally call a platform-specific gesture recognizer
              https://bugs.webkit.org/show_bug.cgi?id=49345
      
              Added an ability for the EventHandler to invoke an optional platform
              specific gesture recognizer.
      
              No tests added because the change should be functionally invisible.
      
              * WebCore.gypi:
              * page/EventHandler.cpp:
              (WebCore::EventHandler::EventHandler):
              (WebCore::EventHandler::handleTouchEvent):
              * page/EventHandler.h:
              * platform/PlatformGestureRecognizer.cpp: Added.
              (WebCore::PlatformGestureRecognizer::PlatformGestureRecognizer):
              (WebCore::PlatformGestureRecognizer::~PlatformGestureRecognizer):
              (WebCore::PlatformGestureRecognizer::create):
              * platform/PlatformGestureRecognizer.h: Added.
      2011-03-21  Robert Kroeger  <rjkroege@chromium.org>
      
              Reviewed by Antonio Gomes.
      
              Flag to enable a platform specific GestureReocognizer framework in Chromium.
      
              https://bugs.webkit.org/show_bug.cgi?id=49345
      
              * features.gypi:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@81618 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      28faf6ec
  11. 02 Mar, 2011 1 commit
    • ap@apple.com's avatar
      Reviewed by John Sullivan. · 8d18f13c
      ap@apple.com authored
              Clean up WebCore tabsToLinks code a little
              https://bugs.webkit.org/show_bug.cgi?id=55606
      
              No change in behavior, so no tests.
      
              * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::isKeyboardFocusable):
              This is the only caller of tabsToAllControls(). Renamed this function to tabsToAllFormControls().
      
              * page/EventHandler.cpp:
              (WebCore::EventHandler::isKeyboardOptionTab): Moved from platform specific files. This
              function cannot be file static, because EventHandlerMac.mm uses it.
              (WebCore::eventInvertsTabsToLinksClientCallResult): Merged implementations from platform
              specific files. We can just as well have #if here. Renamed for clarity.
              (WebCore::EventHandler::tabsToLinks): Rewrote in a way that makes it clearer how "invert"
              works.
              
              * page/EventHandler.h: We no longer need invertSenseOfTabsToLinks() here, it's only used
              in EventHandler.cpp.
      
              * page/android/EventHandlerAndroid.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/brew/EventHandlerBrew.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/chromium/EventHandlerChromium.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/efl/EventHandlerEfl.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/gtk/EventHandlerGtk.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/haiku/EventHandlerHaiku.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/mac/EventHandlerMac.mm: (WebCore::EventHandler::tabsToAllFormControls):
              * page/qt/EventHandlerQt.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/win/EventHandlerWin.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              * page/wx/EventHandlerWx.cpp: (WebCore::EventHandler::tabsToAllFormControls):
              Updating all port files.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@80172 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8d18f13c
  12. 28 Jan, 2011 1 commit
  13. 27 Jan, 2011 2 commits
  14. 26 Jan, 2011 1 commit
    • weinig@apple.com's avatar
      Add events to represent the start/end of a gesture scroll · 99b7847a
      weinig@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=53215
      
      Reviewed by Maciej Stachowiak.
      
      Source/JavaScriptCore: 
      
      * wtf/Platform.h: Add ENABLE for gesture events. 
      
      Source/WebCore: 
      
      * WebCore.exp.in: 
      Add new file.
      
      * WebCore.xcodeproj/project.pbxproj:
      Add new file.
      
      * page/EventHandler.cpp:
      (WebCore::EventHandler::handleGestureEvent):
      * page/EventHandler.h:
      Add entry point for handling gesture events.
      
      * platform/PlatformGestureEvent.h: Added.
      (WebCore::PlatformGestureEvent::PlatformGestureEvent):
      (WebCore::PlatformGestureEvent::type):
      (WebCore::PlatformGestureEvent::position):
      (WebCore::PlatformGestureEvent::globalPosition):
      (WebCore::PlatformGestureEvent::timestamp):
      Add platform agnostic representation of a gesture event.
      
      Source/WebKit2: 
      
      * Scripts/webkit2/messages.py:
      * Shared/WebEvent.h:
      (WebKit::WebGestureEvent::WebGestureEvent):
      (WebKit::WebGestureEvent::position):
      (WebKit::WebGestureEvent::globalPosition):
      * Shared/WebEventConversion.cpp:
      (WebKit::WebKit2PlatformGestureEvent::WebKit2PlatformGestureEvent):
      (WebKit::platform):
      * Shared/WebEventConversion.h:
      * Shared/WebGestureEvent.cpp: Added.
      (WebKit::WebGestureEvent::WebGestureEvent):
      (WebKit::WebGestureEvent::encode):
      (WebKit::WebGestureEvent::decode):
      (WebKit::WebGestureEvent::isGestureEventType):
      * Shared/mac/WebEventFactory.h:
      * Shared/mac/WebEventFactory.mm:
      (WebKit::gestureEventTypeForEvent):
      (WebKit::WebEventFactory::createWebGestureEvent):
      * UIProcess/API/mac/WKView.mm:
      (-[WKView shortCircuitedEndGestureWithEvent:]):
      (-[WKView beginGestureWithEvent:]):
      (-[WKView viewDidMoveToWindow]):
      * UIProcess/WebPageProxy.cpp:
      (WebKit::WebPageProxy::handleGestureEvent):
      (WebKit::WebPageProxy::didReceiveEvent):
      * UIProcess/WebPageProxy.h:
      * WebKit2.xcodeproj/project.pbxproj:
      * WebProcess/WebPage/WebPage.cpp:
      (WebKit::handleGestureEvent):
      (WebKit::WebPage::gestureEvent):
      * WebProcess/WebPage/WebPage.h:
      * WebProcess/WebPage/WebPage.messages.in:
      Pipe gesture events down to WebCore.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76745 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      99b7847a
  15. 20 Jan, 2011 1 commit
    • ossy@webkit.org's avatar
      Refactoring of the custom allocation framework · 95c1bc42
      ossy@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=49897
      
      Patch by Zoltan Horvath <zoltan@webkit.org> on 2011-01-20
      Reviewed by Csaba Osztrogonác.
      
      Source/JavaScriptCore:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.
      
      Source/WebCore:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      Source/WebKit:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      Source/WebKit2:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      Tools:
      
      Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
      The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
      equivalent macro implementation at the necessary places.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76248 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      95c1bc42
  16. 18 Jan, 2011 1 commit
    • morrita@google.com's avatar
      2011-01-18 MORITA Hajime <morrita@google.com> · 84a352ad
      morrita@google.com authored
              Refactoring: EventHandler::handleTextInputEvent should accept an enum instead of bools.
              https://bugs.webkit.org/show_bug.cgi?id=52608
      
              No new tests. no behavioral change.
      
              * GNUmakefile.am:
              * WebCore.gypi:
              * WebCore.pro:
              * WebCore.vcproj/WebCore.vcproj:
              * WebCore.xcodeproj/project.pbxproj:
              * dom/TextEvent.cpp:
              (WebCore::TextEvent::create):
              (WebCore::TextEvent::createForDrop):
              (WebCore::TextEvent::TextEvent):
              * dom/TextEvent.h:
              (WebCore::TextEvent::isLineBreak):
              (WebCore::TextEvent::isBackTab):
              (WebCore::TextEvent::isPaste):
              (WebCore::TextEvent::isDrop):
              * dom/TextEventInputType.h: Added. Extracted from TextEvent::TextInputType.
              * editing/EditorCommand.cpp:
              (WebCore::executeInsertBacktab):
              (WebCore::executeInsertLineBreak):
              (WebCore::executeInsertNewline):
              (WebCore::executeInsertTab):
              * page/EventHandler.cpp:
              (WebCore::EventHandler::handleTextInputEvent):
              * page/EventHandler.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76098 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      84a352ad
  17. 08 Jan, 2011 1 commit
  18. 13 Dec, 2010 1 commit
    • hyatt@apple.com's avatar
      WebCore: https://bugs.webkit.org/show_bug.cgi?id=48545, Home/End,... · a60d0cea
      hyatt@apple.com authored
      WebCore: https://bugs.webkit.org/show_bug.cgi?id=48545, Home/End, PageUp/PageDwn should respect writing-mode. 
      
      Reviewed by Sam Weinig.
      
      Add logical scrolling to WebCore.  It basically mirrors physical scrolling but works in abstract logical
      directions and only converts to physical when it's time to attempt the scroll.
              
      Also fixed bugs in scrollRecursively and logicalScrollRecursively where overflow sections in containing
      frames got skipped over.
              
      Made the resetting of the inline axis scroll position on Home/End Mac-specific for overflow sections.
              
      * WebCore.exp.in:
      * page/EventHandler.cpp:
      (WebCore::EventHandler::logicalScrollOverflow):
      (WebCore::EventHandler::scrollRecursively):
      (WebCore::EventHandler::logicalScrollRecursively):
      * page/EventHandler.h:
      * page/FrameView.cpp:
      (WebCore::FrameView::isVerticalDocument):
      (WebCore::FrameView::isFlippedDocument):
      * page/FrameView.h:
      * platform/ScrollTypes.h:
      (WebCore::logicalToPhysical):
      * platform/ScrollView.cpp:
      (WebCore::ScrollView::scroll):
      (WebCore::ScrollView::logicalScroll):
      * platform/ScrollView.h:
      (WebCore::ScrollView::isVerticalDocument):
      (WebCore::ScrollView::isFlippedDocument):
      * rendering/RenderBox.cpp:
      (WebCore::RenderBox::logicalScroll):
      * rendering/RenderBox.h:
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::scroll):
      * rendering/RenderListBox.cpp:
      (WebCore::RenderListBox::logicalScroll):
      * rendering/RenderListBox.h:
      * rendering/RenderTextControlSingleLine.cpp:
      (WebCore::RenderTextControlSingleLine::logicalScroll):
      * rendering/RenderTextControlSingleLine.h:
      
      WebKit2: https://bugs.webkit.org/show_bug.cgi?id=48545, Home/End, PageUp/PageDwn should respect writing-mode.  Use
      logical scrolling instead of physical scrolling for those keys in WebKit2.
      
      Reviewed by Sam Weinig.
      
      * WebProcess/WebPage/mac/WebPageMac.mm:
      (WebKit::logicalScroll):
      (WebKit::WebPage::performDefaultBehaviorForKeyEvent):
      * WebProcess/WebPage/qt/WebPageQt.cpp:
      (WebKit::logicalScroll):
      (WebKit::WebPage::performDefaultBehaviorForKeyEvent):
      * WebProcess/WebPage/win/WebPageWin.cpp:
      (WebKit::logicalScroll):
      (WebKit::WebPage::performDefaultBehaviorForKeyEvent):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73941 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a60d0cea
  19. 09 Aug, 2010 1 commit
    • barraclough@apple.com's avatar
      Bug 43594 - Add string forwards to Forward.h · d218c2df
      barraclough@apple.com authored
      This allows us to remove forward declarations for these classes from
      WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
      
      Rubber stamped by Sam Weinig
      
      JavaScriptCore: 
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * wtf/Forward.h:
      
      WebCore: 
      
      * WebCore.xcodeproj/project.pbxproj:
      * accessibility/AXObjectCache.h:
      * accessibility/AccessibilityARIAGrid.h:
      * accessibility/AccessibilityListBoxOption.h:
      * accessibility/AccessibilityObject.h:
      * accessibility/AccessibilityRenderObject.h:
      * accessibility/AccessibilityTable.h:
      * bindings/cpp/WebDOMCString.h:
      * bindings/cpp/WebDOMString.h:
      * bindings/gobject/ConvertToUTF8String.h:
      * bindings/js/DOMWrapperWorld.h:
      * bindings/js/JSDOMBinding.h:
      * bindings/js/JSDOMWindowBase.h:
      * bindings/js/JSMessagePortCustom.h:
      * bindings/js/JavaScriptCallFrame.h:
      * bindings/js/ScriptController.h:
      * bindings/js/ScriptProfile.h:
      * bindings/js/ScriptSourceProvider.h:
      * bindings/js/ScriptString.h:
      * bindings/js/WorkerScriptController.h:
      * bindings/objc/DOMImplementationFront.h:
      * bindings/v8/ScheduledAction.h:
      * bindings/v8/ScriptController.h:
      * bindings/v8/V8DOMWindowShell.h:
      * bindings/v8/V8Proxy.h:
      * bindings/v8/V8Utilities.h:
      * bindings/v8/custom/V8CustomXPathNSResolver.h:
      * bridge/c/c_utility.h:
      * css/CSSFontSelector.h:
      * css/CSSHelper.h:
      * css/CSSOMUtils.h:
      * css/CSSPrimitiveValue.h:
      * css/MediaList.h:
      * css/StyleBase.h:
      * css/StyleSheetList.h:
      * css/WebKitCSSKeyframesRule.h:
      * dom/CheckedRadioButtons.h:
      * dom/DOMImplementation.h:
      * dom/DocumentMarker.h:
      * dom/DynamicNodeList.h:
      * dom/EventTarget.h:
      * dom/MessagePort.h:
      * dom/MessagePortChannel.h:
      * dom/NameNodeList.h:
      * dom/Node.h:
      * dom/NodeList.h:
      * dom/OptionGroupElement.h:
      * dom/ScriptExecutionContext.h:
      * dom/SelectElement.h:
      * dom/ViewportArguments.h:
      * dom/make_names.pl:
      * editing/HTMLInterchange.h:
      * editing/htmlediting.h:
      * editing/markup.h:
      * html/CollectionCache.h:
      * html/DOMFormData.h:
      * html/DataGridColumnList.h:
      * html/DateComponents.h:
      * html/FileStream.h:
      * html/FileStreamProxy.h:
      * html/FormDataList.h:
      (WebCore::FormDataList::appendData):
      * html/HTMLCollection.h:
      * html/HTMLElementStack.h:
      * html/HTMLFormattingElementList.h:
      * html/HTMLParserQuirks.h:
      * html/HTMLQuoteElement.h:
      * html/HTMLScriptRunnerHost.h:
      * html/StepRange.h:
      * html/canvas/CanvasGradient.h:
      * html/canvas/CanvasNumberArray.h:
      * html/canvas/CanvasPattern.h:
      * inspector/InjectedScript.h:
      * inspector/InspectorCSSStore.h:
      * inspector/InspectorClient.h:
      * inspector/InspectorFrontendClient.h:
      * inspector/InspectorValues.h:
      * inspector/ScriptDebugListener.h:
      * loader/CachedResourceClient.h:
      * loader/CrossOriginAccessControl.h:
      * loader/DocumentThreadableLoader.h:
      * loader/FrameLoaderClient.h:
      * loader/RedirectScheduler.h:
      * loader/SubframeLoader.h:
      * loader/appcache/DOMApplicationCache.h:
      * loader/archive/ArchiveFactory.h:
      * loader/icon/IconDatabaseClient.h:
      * notifications/NotificationPresenter.h:
      * page/Chrome.h:
      * page/ChromeClient.h:
      * page/Console.h:
      * page/ContextMenuClient.h:
      * page/DOMSelection.h:
      * page/EditorClient.h:
      * page/EventHandler.h:
      * page/FrameView.h:
      * page/GeolocationPositionCache.h:
      * page/History.h:
      * page/Location.h:
      * page/Navigator.h:
      * page/NavigatorBase.h:
      * page/PluginHalterClient.h:
      * page/PrintContext.h:
      * page/SpeechInput.h:
      * page/SpeechInputListener.h:
      * page/animation/AnimationController.h:
      * platform/CookieJar.h:
      * platform/CrossThreadCopier.h:
      * platform/DragImage.h:
      * platform/FileSystem.h:
      * platform/Language.h:
      * platform/Length.h:
      * platform/LinkHash.h:
      * platform/LocalizationStrategy.h:
      * platform/LocalizedStrings.h:
      * platform/Logging.h:
      * platform/Pasteboard.h:
      * platform/PopupMenuClient.h:
      * platform/SearchPopupMenu.h:
      * platform/Widget.h:
      * platform/cf/BinaryPropertyList.h:
      * platform/chromium/ChromiumBridge.h:
      * platform/chromium/ClipboardUtilitiesChromium.h:
      * platform/cocoa/KeyEventCocoa.h:
      * platform/graphics/Color.h:
      * platform/graphics/FontCache.h:
      * platform/graphics/FontData.h:
      * platform/graphics/FontSelector.h:
      * platform/graphics/GraphicsTypes.h:
      * platform/graphics/Icon.h:
      * platform/graphics/ImageBuffer.h:
      * platform/graphics/ImageSource.h:
      * platform/graphics/MediaPlayer.h:
      * platform/graphics/MediaPlayerPrivate.h:
      * platform/graphics/Path.h:
      * platform/graphics/StringTruncator.h:
      * platform/graphics/cairo/FontCustomPlatformData.h:
      * platform/graphics/cairo/FontPlatformData.h:
      * platform/graphics/cg/FontPlatformData.h:
      * platform/graphics/cg/ImageSourceCG.h:
      * platform/graphics/chromium/FontCustomPlatformData.h:
      * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
      * platform/graphics/chromium/FontPlatformDataLinux.h:
      * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
      * platform/graphics/haiku/FontCustomPlatformData.h:
      * platform/graphics/mac/FontCustomPlatformData.h:
      * platform/graphics/mac/FontPlatformData.h:
      * platform/graphics/qt/FontCustomPlatformData.h:
      * platform/graphics/qt/FontPlatformData.h:
      * platform/graphics/win/FontCustomPlatformData.h:
      * platform/graphics/win/FontCustomPlatformDataCairo.h:
      * platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h:
      * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
      * platform/graphics/wince/FontPlatformData.h:
      * platform/graphics/wince/MediaPlayerPrivateWince.h:
      * platform/graphics/wince/MediaPlayerProxy.h:
      * platform/graphics/wx/FontCustomPlatformData.h:
      * platform/graphics/wx/FontPlatformData.h:
      * platform/mac/PasteboardHelper.h:
      * platform/network/DNS.h:
      * platform/network/FormData.h:
      * platform/network/FormDataBuilder.h:
      * platform/network/HTTPParsers.h:
      * platform/text/Hyphenation.h:
      * platform/text/LineEnding.h:
      * platform/text/TextCodec.h:
      * platform/text/TextEncoding.h:
      * platform/text/TextStream.h:
      * platform/win/BString.h:
      * platform/win/ClipboardUtilitiesWin.h:
      * platform/win/WCDataObject.h:
      * platform/win/WebCoreTextRenderer.h:
      * plugins/DOMMimeType.h:
      * plugins/DOMMimeTypeArray.h:
      * plugins/DOMPlugin.h:
      * plugins/DOMPluginArray.h:
      * rendering/CounterNode.h:
      * rendering/HitTestResult.h:
      * rendering/RenderObjectChildList.h:
      * rendering/RenderText.h:
      * rendering/RenderTreeAsText.h:
      * rendering/TextControlInnerElements.h:
      * rendering/style/ContentData.h:
      * rendering/style/RenderStyle.h:
      * storage/DatabaseAuthorizer.h:
      * storage/DatabaseTrackerClient.h:
      * storage/SQLTransaction.h:
      * storage/SQLTransactionSync.h:
      * storage/Storage.h:
      * storage/chromium/DatabaseObserver.h:
      * svg/SVGAnimatedTemplate.h:
      * svg/SVGDocumentExtensions.h:
      * svg/SVGGlyphElement.h:
      * svg/SVGHKernElement.h:
      * svg/SVGNumberList.h:
      * svg/SVGPointList.h:
      * svg/SVGPreserveAspectRatio.h:
      * svg/SVGStylable.h:
      * svg/SVGTests.h:
      * svg/SVGTransformList.h:
      * svg/SVGTransformable.h:
      * svg/SVGVKernElement.h:
      * websockets/ThreadableWebSocketChannel.h:
      * websockets/ThreadableWebSocketChannelClientWrapper.h:
      * websockets/WebSocket.h:
      * websockets/WebSocketChannel.h:
      * websockets/WebSocketHandshakeResponse.h:
      * wml/WMLErrorHandling.h:
      * wml/WMLPageState.h:
      * wml/WMLVariables.h:
      * workers/DefaultSharedWorkerRepository.h:
      * workers/SharedWorkerRepository.h:
      * workers/Worker.h:
      * workers/WorkerContextProxy.h:
      * workers/WorkerLoaderProxy.h:
      * workers/WorkerLocation.h:
      * workers/WorkerMessagingProxy.h:
      * workers/WorkerReportingProxy.h:
      * workers/WorkerThread.h:
      * xml/DOMParser.h:
      * xml/XMLHttpRequestUpload.h:
      * xml/XPathEvaluator.h:
      * xml/XPathExpression.h:
      * xml/XPathNSResolver.h:
      * xml/XPathResult.h:
      * xml/XPathUtil.h:
      
      WebKit: 
      
      * WebKit.xcodeproj/project.pbxproj:
      
      WebKit/chromium: 
      
      * public/WebCString.h:
      * public/WebString.h:
      * src/DOMUtilitiesPrivate.h:
      * src/DebuggerAgentImpl.h:
      * src/DebuggerAgentManager.h:
      * src/WebDevToolsAgentImpl.h:
      * src/WebDevToolsFrontendImpl.h:
      * src/WebPageSerializerImpl.h:
      
      WebKit/efl: 
      
      * WebCoreSupport/InspectorClientEfl.h:
      
      WebKit/gtk: 
      
      * WebCoreSupport/InspectorClientGtk.h:
      
      WebKit/haiku: 
      
      * WebCoreSupport/FrameLoaderClientHaiku.h:
      * WebCoreSupport/InspectorClientHaiku.h:
      
      WebKit/mac: 
      
      * Plugins/Hosted/NetscapePluginInstanceProxy.h:
      * Plugins/WebBaseNetscapePluginView.h:
      * WebCoreSupport/WebFrameLoaderClient.h:
      * WebCoreSupport/WebIconDatabaseClient.h:
      * WebCoreSupport/WebPluginHalterClient.h:
      * WebView/WebViewInternal.h:
      
      WebKit/qt: 
      
      * WebCoreSupport/FrameLoaderClientQt.h:
      * WebCoreSupport/InspectorClientQt.h:
      
      WebKit/win: 
      
      * COMVariantSetter.h:
      * MarshallingHelpers.h:
      * WebCoreSupport/WebContextMenuClient.h:
      * WebCoreSupport/WebPluginHalterClient.h:
      * WebHistory.h:
      
      WebKit/wx: 
      
      * WebKitSupport/FrameLoaderClientWx.h:
      * WebKitSupport/InspectorClientWx.h:
      
      WebKit2: 
      
      * UIProcess/PageClient.h:
      * UIProcess/VisitedLinkProvider.h:
      * UIProcess/WebContextInjectedBundleClient.h:
      * UIProcess/WebFrameProxy.h:
      * UIProcess/WebHistoryClient.h:
      * UIProcess/WebLoaderClient.h:
      * UIProcess/WebPolicyClient.h:
      * UIProcess/WebProcessProxy.h:
      * UIProcess/WebUIClient.h:
      * UIProcess/win/WebView.h:
      * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
      * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
      * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
      * WebProcess/Plugins/NPRuntimeObjectMap.h:
      * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
      * WebProcess/Plugins/PluginController.h:
      * WebProcess/WebPage/WebFrame.h:
      * WebProcess/WebPage/WebPage.h:
      * WebProcess/WebProcess.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65021 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d218c2df
  20. 06 Aug, 2010 1 commit
  21. 05 Aug, 2010 1 commit
    • barraclough@apple.com's avatar
      Bug 43594 - Add string forwards to Forward.h · eead80ac
      barraclough@apple.com authored
      This allows us to remove forward declarations for these classes from
      WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
      
      Rubber stamped by Sam Weinig
      
      JavaScriptCore: 
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * wtf/Forward.h:
      
      WebCore: 
      
      * WebCore.xcodeproj/project.pbxproj:
      * accessibility/AXObjectCache.h:
      * accessibility/AccessibilityARIAGrid.h:
      * accessibility/AccessibilityListBoxOption.h:
      * accessibility/AccessibilityObject.h:
      * accessibility/AccessibilityRenderObject.h:
      * accessibility/AccessibilityTable.h:
      * bindings/cpp/WebDOMCString.h:
      * bindings/cpp/WebDOMString.h:
      * bindings/gobject/ConvertToUTF8String.h:
      * bindings/js/DOMWrapperWorld.h:
      * bindings/js/JSDOMBinding.h:
      * bindings/js/JSDOMWindowBase.h:
      * bindings/js/JSMessagePortCustom.h:
      * bindings/js/JavaScriptCallFrame.h:
      * bindings/js/ScriptController.h:
      * bindings/js/ScriptProfile.h:
      * bindings/js/ScriptSourceProvider.h:
      * bindings/js/ScriptString.h:
      * bindings/js/WorkerScriptController.h:
      * bindings/objc/DOMImplementationFront.h:
      * bindings/v8/ScheduledAction.h:
      * bindings/v8/ScriptController.h:
      * bindings/v8/V8DOMWindowShell.h:
      * bindings/v8/V8Proxy.h:
      * bindings/v8/V8Utilities.h:
      * bindings/v8/custom/V8CustomXPathNSResolver.h:
      * bridge/c/c_utility.h:
      * css/CSSFontSelector.h:
      * css/CSSHelper.h:
      * css/CSSOMUtils.h:
      * css/CSSPrimitiveValue.h:
      * css/MediaList.h:
      * css/StyleBase.h:
      * css/StyleSheetList.h:
      * css/WebKitCSSKeyframesRule.h:
      * dom/CheckedRadioButtons.h:
      * dom/DOMImplementation.h:
      * dom/DocumentMarker.h:
      * dom/DynamicNodeList.h:
      * dom/EventTarget.h:
      * dom/MessagePort.h:
      * dom/MessagePortChannel.h:
      * dom/NameNodeList.h:
      * dom/Node.h:
      * dom/NodeList.h:
      * dom/OptionGroupElement.h:
      * dom/ScriptExecutionContext.h:
      * dom/SelectElement.h:
      * dom/ViewportArguments.h:
      * dom/make_names.pl:
      * editing/HTMLInterchange.h:
      * editing/htmlediting.h:
      * editing/markup.h:
      * html/CollectionCache.h:
      * html/DOMFormData.h:
      * html/DataGridColumnList.h:
      * html/DateComponents.h:
      * html/FileStream.h:
      * html/FileStreamProxy.h:
      * html/FormDataList.h:
      (WebCore::FormDataList::appendData):
      * html/HTMLCollection.h:
      * html/HTMLElementStack.h:
      * html/HTMLFormattingElementList.h:
      * html/HTMLParserQuirks.h:
      * html/HTMLQuoteElement.h:
      * html/HTMLScriptRunnerHost.h:
      * html/StepRange.h:
      * html/canvas/CanvasGradient.h:
      * html/canvas/CanvasNumberArray.h:
      * html/canvas/CanvasPattern.h:
      * inspector/InjectedScript.h:
      * inspector/InspectorCSSStore.h:
      * inspector/InspectorClient.h:
      * inspector/InspectorFrontendClient.h:
      * inspector/InspectorValues.h:
      * inspector/ScriptDebugListener.h:
      * loader/CachedResourceClient.h:
      * loader/CrossOriginAccessControl.h:
      * loader/DocumentThreadableLoader.h:
      * loader/FrameLoaderClient.h:
      * loader/RedirectScheduler.h:
      * loader/SubframeLoader.h:
      * loader/appcache/DOMApplicationCache.h:
      * loader/archive/ArchiveFactory.h:
      * loader/icon/IconDatabaseClient.h:
      * notifications/NotificationPresenter.h:
      * page/Chrome.h:
      * page/ChromeClient.h:
      * page/Console.h:
      * page/ContextMenuClient.h:
      * page/DOMSelection.h:
      * page/EditorClient.h:
      * page/EventHandler.h:
      * page/FrameView.h:
      * page/GeolocationPositionCache.h:
      * page/History.h:
      * page/Location.h:
      * page/Navigator.h:
      * page/NavigatorBase.h:
      * page/PluginHalterClient.h:
      * page/PrintContext.h:
      * page/SpeechInput.h:
      * page/SpeechInputListener.h:
      * page/animation/AnimationController.h:
      * platform/CookieJar.h:
      * platform/CrossThreadCopier.h:
      * platform/DragImage.h:
      * platform/FileSystem.h:
      * platform/Language.h:
      * platform/Length.h:
      * platform/LinkHash.h:
      * platform/LocalizationStrategy.h:
      * platform/LocalizedStrings.h:
      * platform/Logging.h:
      * platform/Pasteboard.h:
      * platform/PopupMenuClient.h:
      * platform/SearchPopupMenu.h:
      * platform/Widget.h:
      * platform/cf/BinaryPropertyList.h:
      * platform/chromium/ChromiumBridge.h:
      * platform/chromium/ClipboardUtilitiesChromium.h:
      * platform/cocoa/KeyEventCocoa.h:
      * platform/graphics/Color.h:
      * platform/graphics/FontCache.h:
      * platform/graphics/FontData.h:
      * platform/graphics/FontSelector.h:
      * platform/graphics/GraphicsTypes.h:
      * platform/graphics/Icon.h:
      * platform/graphics/ImageBuffer.h:
      * platform/graphics/ImageSource.h:
      * platform/graphics/MediaPlayer.h:
      * platform/graphics/MediaPlayerPrivate.h:
      * platform/graphics/Path.h:
      * platform/graphics/StringTruncator.h:
      * platform/graphics/cairo/FontCustomPlatformData.h:
      * platform/graphics/cairo/FontPlatformData.h:
      * platform/graphics/cg/FontPlatformData.h:
      * platform/graphics/cg/ImageSourceCG.h:
      * platform/graphics/chromium/FontCustomPlatformData.h:
      * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
      * platform/graphics/chromium/FontPlatformDataLinux.h:
      * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
      * platform/graphics/haiku/FontCustomPlatformData.h:
      * platform/graphics/mac/FontCustomPlatformData.h:
      * platform/graphics/mac/FontPlatformData.h:
      * platform/graphics/qt/FontCustomPlatformData.h:
      * platform/graphics/qt/FontPlatformData.h:
      * platform/graphics/win/FontCustomPlatformData.h:
      * platform/graphics/win/FontCustomPlatformDataCairo.h:
      * platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h:
      * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
      * platform/graphics/wince/FontPlatformData.h:
      * platform/graphics/wince/MediaPlayerPrivateWince.h:
      * platform/graphics/wince/MediaPlayerProxy.h:
      * platform/graphics/wx/FontCustomPlatformData.h:
      * platform/graphics/wx/FontPlatformData.h:
      * platform/mac/PasteboardHelper.h:
      * platform/network/DNS.h:
      * platform/network/FormData.h:
      * platform/network/FormDataBuilder.h:
      * platform/network/HTTPParsers.h:
      * platform/text/Hyphenation.h:
      * platform/text/LineEnding.h:
      * platform/text/TextCodec.h:
      * platform/text/TextEncoding.h:
      * platform/text/TextStream.h:
      * platform/win/BString.h:
      * platform/win/ClipboardUtilitiesWin.h:
      * platform/win/WCDataObject.h:
      * platform/win/WebCoreTextRenderer.h:
      * plugins/DOMMimeType.h:
      * plugins/DOMMimeTypeArray.h:
      * plugins/DOMPlugin.h:
      * plugins/DOMPluginArray.h:
      * rendering/CounterNode.h:
      * rendering/HitTestResult.h:
      * rendering/RenderObjectChildList.h:
      * rendering/RenderText.h:
      * rendering/RenderTreeAsText.h:
      * rendering/TextControlInnerElements.h:
      * rendering/style/ContentData.h:
      * rendering/style/RenderStyle.h:
      * storage/DatabaseAuthorizer.h:
      * storage/DatabaseTrackerClient.h:
      * storage/SQLTransaction.h:
      * storage/SQLTransactionSync.h:
      * storage/Storage.h:
      * storage/chromium/DatabaseObserver.h:
      * svg/SVGAnimatedTemplate.h:
      * svg/SVGDocumentExtensions.h:
      * svg/SVGGlyphElement.h:
      * svg/SVGHKernElement.h:
      * svg/SVGNumberList.h:
      * svg/SVGPointList.h:
      * svg/SVGPreserveAspectRatio.h:
      * svg/SVGStylable.h:
      * svg/SVGTests.h:
      * svg/SVGTransformList.h:
      * svg/SVGTransformable.h:
      * svg/SVGVKernElement.h:
      * websockets/ThreadableWebSocketChannel.h:
      * websockets/ThreadableWebSocketChannelClientWrapper.h:
      * websockets/WebSocket.h:
      * websockets/WebSocketChannel.h:
      * websockets/WebSocketHandshakeResponse.h:
      * wml/WMLErrorHandling.h:
      * wml/WMLPageState.h:
      * wml/WMLVariables.h:
      * workers/DefaultSharedWorkerRepository.h:
      * workers/SharedWorkerRepository.h:
      * workers/Worker.h:
      * workers/WorkerContextProxy.h:
      * workers/WorkerLoaderProxy.h:
      * workers/WorkerLocation.h:
      * workers/WorkerMessagingProxy.h:
      * workers/WorkerReportingProxy.h:
      * workers/WorkerThread.h:
      * xml/DOMParser.h:
      * xml/XMLHttpRequestUpload.h:
      * xml/XPathEvaluator.h:
      * xml/XPathExpression.h:
      * xml/XPathNSResolver.h:
      * xml/XPathResult.h:
      * xml/XPathUtil.h:
      
      WebKit: 
      
      * WebKit.xcodeproj/project.pbxproj:
      
      WebKit/chromium: 
      
      * public/WebCString.h:
      * public/WebString.h:
      * src/DOMUtilitiesPrivate.h:
      * src/DebuggerAgentImpl.h:
      * src/DebuggerAgentManager.h:
      * src/WebDevToolsAgentImpl.h:
      * src/WebDevToolsFrontendImpl.h:
      * src/WebPageSerializerImpl.h:
      
      WebKit/efl: 
      
      * WebCoreSupport/InspectorClientEfl.h:
      
      WebKit/gtk: 
      
      * WebCoreSupport/InspectorClientGtk.h:
      
      WebKit/haiku: 
      
      * WebCoreSupport/FrameLoaderClientHaiku.h:
      * WebCoreSupport/InspectorClientHaiku.h:
      
      WebKit/mac: 
      
      * Plugins/Hosted/NetscapePluginInstanceProxy.h:
      * Plugins/WebBaseNetscapePluginView.h:
      * WebCoreSupport/WebFrameLoaderClient.h:
      * WebCoreSupport/WebIconDatabaseClient.h:
      * WebCoreSupport/WebPluginHalterClient.h:
      * WebView/WebViewInternal.h:
      
      WebKit/qt: 
      
      * WebCoreSupport/FrameLoaderClientQt.h:
      * WebCoreSupport/InspectorClientQt.h:
      
      WebKit/win: 
      
      * COMVariantSetter.h:
      * MarshallingHelpers.h:
      * WebCoreSupport/WebContextMenuClient.h:
      * WebCoreSupport/WebPluginHalterClient.h:
      * WebHistory.h:
      
      WebKit/wx: 
      
      * WebKitSupport/FrameLoaderClientWx.h:
      * WebKitSupport/InspectorClientWx.h:
      
      WebKit2: 
      
      * UIProcess/PageClient.h:
      * UIProcess/VisitedLinkProvider.h:
      * UIProcess/WebContextInjectedBundleClient.h:
      * UIProcess/WebFrameProxy.h:
      * UIProcess/WebHistoryClient.h:
      * UIProcess/WebLoaderClient.h:
      * UIProcess/WebPolicyClient.h:
      * UIProcess/WebProcessProxy.h:
      * UIProcess/WebUIClient.h:
      * UIProcess/win/WebView.h:
      * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
      * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
      * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
      * WebProcess/Plugins/NPRuntimeObjectMap.h:
      * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
      * WebProcess/Plugins/PluginController.h:
      * WebProcess/WebPage/WebFrame.h:
      * WebProcess/WebPage/WebPage.h:
      * WebProcess/WebProcess.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64801 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      eead80ac
  22. 29 Jul, 2010 1 commit
    • tonikitoo@webkit.org's avatar
      2010-07-21 Grace Kloba <klobag@gmail.com> , Antonio Gomes <tonikitoo@webkit.org> · 81c027d5
      tonikitoo@webkit.org authored
              Reviewed by David Hyatt.
      
              Enhance the hit testing to take a rectangle instead of a point
              https://bugs.webkit.org/show_bug.cgi?id=40197
      
              The primary goal of this change is to provide mechanisms for more precise tap
              actions by the users on mobile devices.
      
              Patch extends the hit testing system to work considering a rectangular area
              as input instead of a point, when applicable. For that, the HitTestResult class
              was modified to take a padding (IntSize). The padding specifies a fuzzy range for
              accepting input events in pixels coordinates for both vertical and horizontal
              orientations. In other words, it tells how much to expand the search rect
              around a supposed touch point.
      
              If it non-positive, hit testing will behavior as the current point based hit testing,
              and methods are no-op'ed to not regress this common behavior performance-wise.
              When positive IntSize is provided, the hit test result will keep record of all
              nodes that intersect the built up test area. The logic will continue searching when it
              finds a candidate until the rectangle is fully enclosed by the boundaries of a candidate.
              The result will be a list of nodes in the z-order they are hit-tested.
              Caller will decide how to process them.
      
              In order to expose the functionality, the patch:
      
              - Adds a nodesFromRect method to the Document class, exposing the funcionality
              to the DOM. Method returns a NodeList with all nodes that intersect the given
              hit-tested area.
              - Extends hitTestResultAtPoint method of the EventHandler with an extra 'padding'
              parameter, defaulting to IntSize(0, 0). The rect-based hit test is performed when a
              positive padding is passed in.
      
              Test: fast/dom/nodesFromRect-basic.html
      
              * WebCore.base.exp:
              * dom/Document.cpp:
              (WebCore::Document::nodesFromRect): This method exposes the rect based funcionality to
              the DOM. It works similarly to elementFromPoint, however receiving a rectangular area
              as input instead of a point, and returning a z-index ordered list of nodes (not elements)
              whose area intersect the hit test rect.
              * dom/Document.h: Ditto.
              * dom/Document.idl: Ditto.
              * page/EventHandler.cpp:
              (WebCore::EventHandler::hitTestResultAtPoint): The funcionality is also exposed through this
              method. Patch adds a additional IntSize parameter to work as the padding area, building up
              the hit test rect.
              * page/EventHandler.h: Ditto.
              * rendering/HitTestResult.cpp:
              (WebCore::HitTestResult::HitTestResult): Rect based hit test constructor. Receives a
              padding IntSize as parameter. It can be (0,0).
              (WebCore::HitTestResult::operator=): Modified to assign the m_rectBasedTestResult as well.
              (WebCore::HitTestResult::append): Merge to HitTestResult objects in a way that the
              list node's of both objects get amended.
              (WebCore::HitTestResult::addNodeToRectBasedTestResult): Adds a given Node to the list of
              hit nodes.
              * rendering/HitTestResult.h:
              (WebCore::HitTestResult::padding): Returns the padding as an IntSize.
              (WebCore::HitTestResult::isRectBasedTest): Returns if the HitTestResult is rect based or not.
              (WebCore::HitTestResult::.rectBasedTestResult): Returns the list nodes hit.
              (WebCore::HitTestResult::rectFromPoint): Returns the hit test rect given the hit test point
              and padding.
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::hitTestLayer):
              (WebCore::RenderLayer::hitTestList):
              (WebCore::RenderLayer::hitTestChildLayerColumns):
              * rendering/EllipsisBox.cpp:
              (WebCore::EllipsisBox::nodeAtPoint): Method is modified to support rect based hit test extension.
              Now it not just checks if the boundary of the node being hit-tested contains a hit test point, but
              instead it checks if the boundary of the node intersects a hit test rect. It is implemented so
              that the common case (point based hit test) works as previously.
              * rendering/InlineFlowBox.cpp:
              (WebCore::InlineFlowBox::nodeAtPoint): Ditto.
              * rendering/InlineTextBox.cpp:
              (WebCore::InlineTextBox::nodeAtPoint): Ditto.
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::nodeAtPoint): Ditto.
              (WebCore::RenderBlock::hitTestColumns): Ditto.
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::nodeAtPoint): Ditto.
              * rendering/RenderImage.cpp:
              (WebCore::RenderImage::nodeAtPoint): Ditto.
              * rendering/RenderLineBoxList.cpp:
              (WebCore::RenderLineBoxList::hitTest):
              * rendering/RenderSVGRoot.cpp:
              (WebCore::RenderSVGRoot::nodeAtPoint): Ditto.
              * rendering/RenderTable.cpp:
              (WebCore::RenderTable::nodeAtPoint): Ditto.
              * rendering/RenderTableSection.cpp:
              (WebCore::RenderTableSection::nodeAtPoint): Ditto.
              * rendering/RenderWidget.cpp:
              (WebCore::RenderWidget::nodeAtPoint): Ditto.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64272 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      81c027d5
  23. 22 Jul, 2010 1 commit
  24. 21 Jul, 2010 1 commit
    • benm@google.com's avatar
      Touch events do not affect the :active CSS state · c90e5dc6
      benm@google.com authored
      https://bugs.webkit.org/show_bug.cgi?id=39493
      
      Reviewed by Steve Block.
      
      WebCore: 
      
      Test: fast/events/touch/touch-active-state.html
      
      * WebCore.exp.in: Update exports for new signature of
          hitTestResultAtPoint.
      * WebCore.order: ditto.
      * page/EventHandler.cpp:
      (WebCore::EventHandler::EventHandler):
      (WebCore::EventHandler::hitTestResultAtPoint): Pass the type
          of the hit test to perform as a parameter with a default
          value rather than harcoding it in the function body.
      (WebCore::EventHandler::handleMouseMoveEvent): Do not modiify
          the active element during a mouse move if the user is
          touching the screen.
      (WebCore::EventHandler::handleTouchEvent): Set the correct
          type of hit test to perform depending on the type of the
          touch event we are handling.
      * page/EventHandler.h: Update the signature of hitTestResultAtPoint.
      
      LayoutTests: 
      
      * fast/events/touch/touch-active-state-expected.txt: Added.
      * fast/events/touch/touch-active-state.html: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63807 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c90e5dc6
  25. 03 Jul, 2010 1 commit
    • arv@chromium.org's avatar
      2010-07-03 Erik Arvidsson <arv@chromium.org> · f436efe5
      arv@chromium.org authored
              Reviewed by Ojan Vafai.
      
              Fix issue where a contextmenu event was reporting the wrong target if
              the context menu was shown due to pressing the context menu key
              (or Shift+F10).
      
              Split sendContextMenuForEvent into one case for keyboard events and use
              that when the contextmenu event should be dispatched due to a keypress.
      
              For the keboard case we now use the focused node as the target for the
              event and use the clipped rect to determine the position of the menu.
      
              https://bugs.webkit.org/show_bug.cgi?id=38129
      
              Use manual test since DRT does not handle context menu keys.
      
              * manual-tests/win/contextmenu-key.html: Added.
              * page/EventHandler.cpp:
              (WebCore::EventHandler::sendContextMenuEvent):
              (WebCore::EventHandler::sendContextMenuEventForKey):
              * page/EventHandler.h:
      2010-07-03  Erik Arvidsson  <arv@chromium.org>
      
              Reviewed by Ojan Vafai.
      
              Fix issue where a contextmenu event was reporting the wrong target
              if the context menu was shown due to pressing the context menu key
              (or Shift+F10).
      
              https://bugs.webkit.org/show_bug.cgi?id=38129
      
              * src/WebViewImpl.cpp:
              (WebKit::WebViewImpl::sendContextMenuEvent):
      2010-07-03  Erik Arvidsson  <arv@chromium.org>
      
              Reviewed by Ojan Vafai.
      
              Fix issue where a contextmenu event was reporting the wrong target
              if the context menu was shown due to pressing the context menu key
              (or Shift+F10).
      
              * WebView.cpp:
              (WebView::handleContextMenuEvent):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@62447 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f436efe5
  26. 25 May, 2010 4 commits
    • ap@apple.com's avatar
      Reviewed by Darin Adler. · 42dc54d5
      ap@apple.com authored
              https://bugs.webkit.org/show_bug.cgi?id=18595
              REGRESSION (r20766): Setting display:none on an iframe causes the ownerDocument to freeze
      
              Test: fast/events/frame-detached-in-mousedown.html
      
              * page/EventHandler.h: Added a boolean tracking whether EventHandler needs to reset capturing
              node on mouse up. It's only done for nodes that hold subframes - elements that capture events
              are responsible for resetting the state.
      
              * page/EventHandler.cpp:
              (WebCore::EventHandler::EventHandler): Don't initialize m_capturingMouseEventsNode, it's a
              RefPtr and is initialized automatically.
              (WebCore::EventHandler::handleMousePressEvent): Remember that EventHandler should reset
              capturing node on its own.
              (WebCore::EventHandler::handleMouseDoubleClickEvent): The code here looked like it was copied
              from the below in r21156. Copied correct code instead.
              (WebCore::EventHandler::handleMouseReleaseEvent): We only clear the capturing node when it
              holds a subframe, but the frame may be already detached by the time mouse up is handled, so the
              check was wrong - and return code of passMouseReleaseEventToSubframe() is obviously irrelevant.
              (WebCore::EventHandler::setCapturingMouseEventsNode): Remember that EventHandler should not
              reset capturing node on its own.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60186 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      42dc54d5
    • tonikitoo@webkit.org's avatar
      Re-laning r60159. · 14716c91
      tonikitoo@webkit.org authored
      Reviewed by Darin Adler.
      
      Mac build failures fixed by updating WebCore/WebCore.base.exp
      
      * page/EventHandler.cpp:
      (WebCore::EventHandler::scrollOverflow):
      (WebCore::EventHandler::scrollRecursively):
      * page/EventHandler.h:
      * WebCore.base.exp:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60164 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      14716c91
    • tonikitoo@webkit.org's avatar
      Revert "Add an optional "starting node' parameter to scrollRecursively and... · eed60597
      tonikitoo@webkit.org authored
      Revert "Add an optional "starting node' parameter to scrollRecursively and scrollOverflow of EventHandler"
      
      Mac builders broken. WebCore.base.exp needs update.
      
      This reverts commit f3cbfc2e.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60160 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      eed60597
    • tonikitoo@webkit.org's avatar
      Add an optional "starting node' parameter to scrollRecursively and scrollOverflow of EventHandler · f3cbfc2e
      tonikitoo@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=39217
      
      Reviewed by Darin Adler.
      Patch by Antonio Gomes <tonikitoo@webkit.org>
      
      It would be usefull if scrollOverflow and scrollRecursively methods of EventHandler
      could receive a parameter to specify where to start scrolling from. Currently they
      start scrolling from either the current focused node or the node where mouse last
      pressed on. Patch proposes an aditional starting point as an optional parameter.
      Since it is optional, all call sites can remain as are, and if a Null node is passed
      in, both methods work as previously.
      
      * page/EventHandler.cpp:
      (WebCore::EventHandler::scrollOverflow):
      (WebCore::EventHandler::scrollRecursively):
      * page/EventHandler.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60159 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f3cbfc2e
  27. 30 Apr, 2010 1 commit
    • jhoneycutt@apple.com's avatar
      Caret may fail to blink if a focus handler brings up a modal dialog · c902204b
      jhoneycutt@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=38372
      
      Reviewed by Darin Adler.
      
      WebCore:
      
      * manual-tests/onfocus-alert-blinking-caret.html: Added.
      
      * page/EventHandler.cpp:
      (WebCore::EventHandler::handleMousePressEvent):
      Moved the call to setCaretBlinkingSuspended() from here...
      (WebCore::EventHandler::handleMousePressEvent):
      ... to here. This makes us suspend caret blinking before dispatching the
      mouse down event. If dispatching the mouse down event allows the message
      loop to run, we want mouse up events received in that message loop to be
      able to resume caret blinking.
      (WebCore::EventHandler::lostMouseCapture):
      We've lost mouse capture and won't be notified of mouse up events;
      resume caret blinking.
      
      * page/EventHandler.h:
      Declare lostMouseCapture().
      
      WebKit/win:
      
      * WebView.cpp:
      (WebView::handleMouseEvent):
      If the message is WM_CANCELMODE, which indicates that we our capturing
      of mouse events has been cancelled, tell the EventHandler.
      It's possible to re-enter this function if handling a mouse event allows
      the message loop to run; moved up the call to setMouseActivated(), so
      that if we do re-enter this function, the later mouse event will not be
      considered as activating the window.
      (WebView::WebViewWndProc):
      Handle WM_CANCELMODE by calling handleMouseEvent().
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@58625 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c902204b
  28. 27 Apr, 2010 1 commit
  29. 12 Mar, 2010 1 commit
    • mitz@apple.com's avatar
      <rdar://problem/7694674> Hover states not updated when overflow section... · b5a56888
      mitz@apple.com authored
      <rdar://problem/7694674> Hover states not updated when overflow section scrolls under stationary mouse pointer
      https://bugs.webkit.org/show_bug.cgi?id=35949
      
      Reviewed by Darin Adler.
      
      WebCore: 
      
      Test: fast/events/overflow-scroll-fake-mouse-move.html
      
      Soon after an overflow section scrolls under the mouse pointer, dispatch
      a fake mouse move event. This is similar to how frame scrolling is handled
      in WebKit, and has the effect of updating hover state, dispatching DOM mouse
      events, and updating the tool tip.
      
      * page/EventHandler.cpp:
      (WebCore::EventHandler::EventHandler): Initialize m_fakeMouseMoveEventTimer.
      (WebCore::EventHandler::~EventHandler): Assert that the timer is not active.
      (WebCore::EventHandler::clear): Stop the timer.
      (WebCore::EventHandler::handleMousePressEvent): Cancel pending fake mouse
      move events.
      (WebCore::EventHandler::handleMouseMoveEvent): Ditto.
      (WebCore::EventHandler::dispatchFakeMouseMoveEventSoonInQuad): If the mouse
      is in the passed-in quad, ensure that a fake mouse move event is scheduled
      to fire soon.
      (WebCore::EventHandler::cancelFakeMouseMoveEvent): Does what the name says.
      (WebCore::EventHandler::fakeMouseMoveEventTimerFired): Constructs a
      PlatformMouseEvent with the current mouse location, modifier key state and
      time stamp and calls mouseMoved().
      * page/EventHandler.h:
      * platform/PlatformKeyboardEvent.h: Declared getCurrentModifierState().
      * platform/android/KeyEventAndroid.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Stubbed out.
      * platform/brew/PlatformKeyboardEventBrew.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * platform/chromium/PlatformKeyboardEventChromium.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Added.
      * platform/efl/PlatformKeyboardEventEfl.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Stubbed out.
      * platform/gtk/KeyEventGtk.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * platform/haiku/PlatformKeyboardEventHaiku.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Added.
      * platform/mac/KeyEventMac.mm:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * platform/qt/PlatformKeyboardEventQt.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Stubbed out.
      * platform/win/KeyEventWin.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Added.
      * platform/wx/KeyboardEventWx.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::scrollToOffset): Call
      EventHandler::dispatchFakeMouseMoveEventSoonInQuad(). Moved things around
      a little to avoid computing the repaint rect twice.
      
      LayoutTests: 
      
      * fast/events/overflow-scroll-fake-mouse-move-expected.txt: Added.
      * fast/events/overflow-scroll-fake-mouse-move.html: Added.
      * fast/events/touch/basic-multi-touch-events.html:
      * fast/events/touch/basic-single-touch-events.html:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55909 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b5a56888
  30. 04 Mar, 2010 1 commit
    • tonikitoo@webkit.org's avatar
      Extend keyboard navigation to allow directional navigation · 660f8ffe
      tonikitoo@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=18662
      
      Reviewed by Simon Fraser, Eric Seidel and Darin Adler.
      Patch by Antonio Gomes <tonikitoo@webkit.org>
      Based on the initial work of Marco Barisione <marco.barisione@collabora.co.uk>
      
      This patch implements the core logic of the 'Spatial Navigation' feature [1].
      It improves the accessibility support of WebCore by extending the basic keyboard
      navigation currently available (based on Tab forward and backward) with the
      addition of a two-dimensional directional navigation by using Left, Right, Up and
      Down arrow keys to move to the "nearest" element in the corresponding direction.
      
      Highlights:
      * Feature is turned off by default in Settings. Port specific APIs need to be added
        for toggling it on/off.
      * Only elements viewed in the current viewport can have focus move to it. If the
        "nearest" is not in viewport dimensions, then a scroll-in-direction action is
        performed.
      * The layout tests added run on Qt's DRT only for now (skipped for Mac, Win and Gtk).
      
      Known issues (to be covered in follow-up bugs):
      * Add port specific hooks to each DRT to enable/disable Spatial Navigation.
      * Support for spatial navigation through form elements (<input>, <select>, etc)
        is be added.
      * Make navigation keys customizable. It currently works with arrows keys only
        (up, down, right and left).
      * Make it support modifiers (Alt, Ctrl and Shift).
      
      [1] http://en.wikipedia.org/wiki/Spatial_navigation
      
      * Android.mk:
      * GNUmakefile.am:
      * WebCore.gypi:
      * WebCore.pro:
      * WebCore.vcproj/WebCore.vcproj:
      * page/EventHandler.cpp:
      (WebCore::EventHandler::defaultKeyboardEventHandler):
      (WebCore::EventHandler::focusDirectionForKey):
      (WebCore::EventHandler::defaultArrowEventHandler):
      * page/EventHandler.h:
      * page/FocusController.cpp:
      (WebCore::FocusController::advanceFocus):
      (WebCore::FocusController::advanceFocusInDocumentOrder):
      (WebCore::FocusController::advanceFocusDirectionally):
      (WebCore::updateFocusCandidateIfCloser):
      (WebCore::FocusController::findFocusableNodeInDirection):
      (WebCore::FocusController::deepFindFocusableNodeInDirection):
      * page/FocusController.h:
      * page/FocusDirection.h:
      (WebCore::):
      * page/Settings.cpp:
      (WebCore::Settings::Settings):
      (WebCore::Settings::setSpatialNavigationEnabled):
      * page/Settings.h:
      (WebCore::Settings::isSpatialNavigationEnabled):
      * page/SpatialNavigation.cpp: Added.
      (WebCore::distanceInDirection):
      (WebCore::renderRectRelativeToRootDocument):
      (WebCore::alignmentForRects):
      (WebCore::isHorizontalMove):
      (WebCore::areRectsFullyAligned):
      (WebCore::areRectsPartiallyAligned):
      (WebCore::spatialDistance):
      (WebCore::isRectInDirection):
      (WebCore::hasOffscreenRect):
      (WebCore::scrollInDirection):
      (WebCore::isInRootDocument):
      (WebCore::deflateIfOverlapped):
      * page/SpatialNavigation.h: Added.
      (WebCore::):
      (WebCore::FocusCandidate::FocusCandidate):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55543 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      660f8ffe
  31. 02 Mar, 2010 1 commit
    • mrowe@apple.com's avatar
      WebCore: Add the capability to create and dispatch a WheelEvent in JavaScript. · 95c4eac6
      mrowe@apple.com authored
      Ensure the event's default handler is triggered in the same way as it is
      during a PlatformWheelEvent.
      
      Patch by Andy Estes <aestes@apple.com> on 2010-03-02
      Reviewed by Maciej Stachowiak.
      
      https://bugs.webkit.org/show_bug.cgi?id=35566
      
      Test: fast/events/wheelevent-in-scrolling-div.html
      
      * dom/Node.cpp: Ensure that the default behavior (scrolling) occurs for
      wheel events originating both from the platform and from
      JavaScript/ObjC.
      (WebCore::Node::dispatchWheelEvent): Instantiate new WheelEvent with
      the graunularity of the PlatformWheelEvent.
      (WebCore::Node::defaultEventHandler): Add support for mousewheel events.
      * dom/WheelEvent.cpp: Add three new member variables: m_deltaX, m_deltaY
      and m_granularity.  m_deltaX and m_deltaY differ from m_wheelDeltaX and
      m_wheelDeltaY, which are the number of wheel ticks multiplied by 120 for
      IE compatibility.
      (WebCore::WheelEvent::WheelEvent): Initialize new member variables.
      (WebCore::WheelEvent::initWheelEvent): Same.
      (WebCore::WheelEvent::initWebKitWheelEvent): Same.
      * dom/WheelEvent.h: See WheelEvent.cpp.
      (WebCore::WheelEvent::): Add Granularity enum (Pixel, Line, Page).
      (WebCore::WheelEvent::create): Add new arguments.
      (WebCore::WheelEvent::deltaX): Amount of scroll in x direction.
      (WebCore::WheelEvent::deltaY): Amount of scroll in y direction.
      (WebCore::WheelEvent::granularity): Units of deltaX and deltaY.
      * dom/WheelEvent.idl: Add initWebKitWheelEvent() to JavaScript.  This is
      the same as the initWheelEvent ObjC method.  As the DOM Level 3 Events
      specification is still a working draft and subject to change, prefix
      'WebKit' to the method signature to indicate experimental support.
      * page/EventHandler.cpp: Move the scroll handling from
      handleWheelEvent() to defaultWheelEventHandler(), which is executed on
      both PlatformWheelEvents and JavaScript WheelEvents.
      (WebCore::scrollNode): Renamed from scrollAndAcceptEvent().  Remove
      the PlatformWheelEvent from the argument list and instead return a
      boolean indicating if the scroll event was accepted.
      (WebCore::EventHandler::handleWheelEvent): Move scrolling code from here
      (WebCore::EventHandler::defaultWheelEventHandler): ...to here.
      * page/EventHandler.h: Add function signature.
      
      LayoutTests: Add a test for the patch to https://bugs.webkit.org/show_bug.cgi?id=35566.
      These can be run manually or from DRT.
      
      Patch by Andy Estes <aestes@apple.com> on 2010-03-02
      Reviewed by Maciej Stachowiak.
      
      * fast/events/wheelevent-in-scrolling-div-expected.txt: Added.
      * fast/events/wheelevent-in-scrolling-div.html: Added.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55436 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      95c4eac6
  32. 26 Feb, 2010 1 commit
    • benm@google.com's avatar
      The element that a touchevent is dispatched to isn't always right · c0a9ed6b
      benm@google.com authored
      https://bugs.webkit.org/show_bug.cgi?id=35431
      
      Reviewed by Kenneth Rohde Christiansen.
      
      WebCore: 
      
      The element that touch events are dispatched on is not always the
      correct one, as the cached m_touchEventTarget member is only updated
      when the first element of the PlatformTouchEvent touch list is in the
      TouchPressed state.
      
      This patch changes this behavior to dispatch the event to the target
      of the touch that caused the event to be generated and eliminates the
      m_touchEventTarget in favour of using the touch target hashmap. It also
      simplifies the way in which the touchTargets list is generated as we
      no longer have m_touchEventTarget (which was used previously to build
      the list). The new behavior matches the observed behavior of the
      iPhone and Android.
      
      * page/EventHandler.cpp:
      (WebCore::assembleTargetTouches): Added. new function to build the
          targetTouches list. Filters a list of touches (passed) about
          another given touch.
      (WebCore::EventHandler::handleTouchEvent): Remove the
          m_touchEventTarget member, and simplify the generation of the
          TouchLists that are bundled with the TouchEVent object. Dispatch
          the event to the target of the touch that caused the event to be
          fired.
      * page/EventHandler.h: Remove m_touchEventTarget.
      
      LayoutTests: 
      
      * fast/events/touch/basic-single-touch-events-expected.txt: Updated
          the targetTouches list expections.
      * fast/events/touch/script-tests/basic-single-touch-events.js: ditto.
      (verifyTouch):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55287 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c0a9ed6b
  33. 25 Feb, 2010 1 commit
    • eric@webkit.org's avatar
      2010-02-25 Ben Murdoch <benm@google.com> · d72a19c1
      eric@webkit.org authored
              Reviewed by Kenneth Rohde Christiansen.
      
              The target element of a Touch should be the target where that touch originated, not where it is now.
              https://bugs.webkit.org/show_bug.cgi?id=34585
      
              * fast/events/touch/basic-single-touch-events-expected.txt: Update expected target element.
              * fast/events/touch/script-tests/basic-single-touch-events.js: ditto.
              * fast/events/touch/script-tests/touch-target.js: Added.
              * fast/events/touch/touch-target-expected.txt: Added.
              * fast/events/touch/touch-target.html: Added.
      2010-02-25  Ben Murdoch  <benm@google.com>
      
              Reviewed by Kenneth Rohde Christiansen.
      
              The target element of a Touch should be the target where that touch originated, not where it is now.
              https://bugs.webkit.org/show_bug.cgi?id=34585
      
              Currently the target of a touch is set to the resulting node of the hit test where the touch currently
              is. This does not match the behavior of iPhone or Android. This patch uses a hashmap on the EventHandler
              to keep track of the target element when a touch is first started. This target is then used as the target
              for subsequent touches with the same id. This matches observed behavior on iPhone and Android.
      
              Tests:
              fast/events/touch/touch-target.html: Added.
              fast/events/touch/basic-single-touch-events.html: Updated.
      
              * page/EventHandler.cpp:
              (WebCore::EventHandler::handleTouchEvent): Store the originating target element of a touch in a hashmap
                  so that we can reuse that target for future events caused by that touch. This matches observed behavior
                  on iPhone and Android.
              * page/EventHandler.h: Add hashmap as a member.
              * platform/PlatformTouchPoint.h:
              (WebCore::PlatformTouchPoint::id): Store the touch point id as unsigned.
              * platform/qt/PlatformTouchPointQt.cpp:
              (WebCore::PlatformTouchPoint::PlatformTouchPoint): Cast platform touch id from signed to unsigned. Qt API
                  docs state that it will always be >= 0.
      2010-02-25  Ben Murdoch  <benm@google.com>
      
              Reviewed by Kenneth Rohde Christiansen.
      
              The target element of a Touch should be the target where that touch originated, not where it is now.
              https://bugs.webkit.org/show_bug.cgi?id=34585
      
              * DumpRenderTree/qt/EventSenderQt.cpp:
              (EventSender::addTouchPoint): Fix a bug where touch points were not being given unique ids.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55230 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d72a19c1