Reviewed by Darin.
- test for http://bugzilla.opendarwin.org/show_bug.cgi?id=9905
REGRESSION (r15404-r15415): Repro crash when pressing delete in an empty editable div
* editing/deleting/delete-at-start-or-end-expected.checksum: Added.
* editing/deleting/delete-at-start-or-end-expected.png: Added.
* editing/deleting/delete-at-start-or-end-expected.txt: Added.
* editing/deleting/delete-at-start-or-end.html: Added.
WebCore:
Reviewed by Darin.
- fix http://bugzilla.opendarwin.org/show_bug.cgi?id=9905
REGRESSION (r15404-r15415): Repro crash when pressing delete in an empty editable div
Test: editing/deleting/delete-at-start-or-end.html
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::deleteKeyPressed): Added null check.
(WebCore::TypingCommand::forwardDeleteKeyPressed): Ditto.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15426
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2006-07-14 Mitz Pettel <opendarwin.org@mitzpettel.com>
+
+ Reviewed by Darin.
+
+ - test for http://bugzilla.opendarwin.org/show_bug.cgi?id=9905
+ REGRESSION (r15404-r15415): Repro crash when pressing delete in an empty editable div
+
+ * editing/deleting/delete-at-start-or-end-expected.checksum: Added.
+ * editing/deleting/delete-at-start-or-end-expected.png: Added.
+ * editing/deleting/delete-at-start-or-end-expected.txt: Added.
+ * editing/deleting/delete-at-start-or-end.html: Added.
+
2006-07-14 Mitz Pettel <opendarwin.org@mitzpettel.com>
Reviewed by Darin.
--- /dev/null
+8a9b3e46242b36500276135ba1c29d62
\ No newline at end of file
--- /dev/null
+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 1 of DIV > BODY > HTML > #document
+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document
+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE
+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (8,8) size 784x584
+ RenderBlock {DIV} at (0,0) size 784x18
+caret: position 0 of child 0 {DIV} of child 2 {BODY} of child 0 {HTML} of document
--- /dev/null
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+<script>
+function editingTest() {
+ var selection = window.getSelection();
+ var s = document.getElementById("test");
+ selection.setPosition(s, 0);
+ execDeleteCommand();
+ execForwardDeleteCommand();
+}
+</script>
+<div contenteditable="true" id="test">
+</div>
+<script>
+runEditingTest();
+</script>
+2006-07-14 Mitz Pettel <opendarwin.org@mitzpettel.com>
+
+ Reviewed by Darin.
+
+ - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=9905
+ REGRESSION (r15404-r15415): Repro crash when pressing delete in an empty editable div
+
+ Test: editing/deleting/delete-at-start-or-end.html
+
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::deleteKeyPressed): Added null check.
+ (WebCore::TypingCommand::forwardDeleteKeyPressed): Ditto.
+
2006-07-14 David Kilzer <ddkilzer@kilzer.net>
Reviewed by Geoffrey.
if (visibleStart == startOfParagraph(visibleStart))
upstreamStart = visibleStart.previous(true).deepEquivalent().upstream();
// When deleting tables: Select the table first, then perform the deletion
- if (upstreamStart.node()->renderer() && upstreamStart.node()->renderer()->isTable() && upstreamStart.offset() == maxDeepOffset(upstreamStart.node())) {
+ if (upstreamStart.node() && upstreamStart.node()->renderer() && upstreamStart.node()->renderer()->isTable() && upstreamStart.offset() == maxDeepOffset(upstreamStart.node())) {
setEndingSelection(Selection(Position(upstreamStart.node(), 0), endingSelection().start(), DOWNSTREAM));
typingAddedToOpenCommand();
return;
if (visibleEnd == endOfParagraph(visibleEnd))
downstreamEnd = visibleEnd.next(true).deepEquivalent().downstream();
// When deleting tables: Select the table first, then perform the deletion
- if (downstreamEnd.node()->renderer() && downstreamEnd.node()->renderer()->isTable() && downstreamEnd.offset() == 0) {
+ if (downstreamEnd.node() && downstreamEnd.node()->renderer() && downstreamEnd.node()->renderer()->isTable() && downstreamEnd.offset() == 0) {
setEndingSelection(Selection(endingSelection().end(), Position(downstreamEnd.node(), maxDeepOffset(downstreamEnd.node())), DOWNSTREAM));
typingAddedToOpenCommand();
return;