WebKit Bugzilla
Attachment 362116 Details for
Bug 194320
: Turn On Smart Delete
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-194320-20190215084129.patch (text/plain), 211.79 KB, created by
Megan Gardner
on 2019-02-15 08:41:30 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Megan Gardner
Created:
2019-02-15 08:41:30 PST
Size:
211.79 KB
patch
obsolete
>Subversion Revision: 241448 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index b5ddee82cdaa63f91b895c07870d23e0aae2d73c..bfffd958b0da9994a9708f2f2f2fe0a40270a940 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,35 @@ >+2019-02-12 Megan Gardner <megan_gardner@apple.com> >+ >+ Turn On Smart Delete >+ https://bugs.webkit.org/show_bug.cgi?id=194320 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Updated the following tests to work with iOS: >+ * editing/deleting/smart-delete-001.html: >+ * editing/deleting/smart-delete-002.html: >+ * editing/deleting/smart-delete-003.html: >+ * editing/deleting/smart-delete-004.html: >+ * editing/deleting/smart-delete-across-editable-boundaries-2.html: >+ * editing/selection/delete-word-granularity-text-control.html: >+ >+ Turn on Smart delete for iOS at all times. Modify checks to allow Mac and iOS and other >+ platforms to turn on smart delete when desired. >+ >+ * editing/Editor.cpp: >+ (WebCore::Editor::shouldSmartDelete): >+ Allow platfroms to determine if smart delete should be on. >+ On mac, this is via word granularity, on iOS this is just on all the time. >+ (WebCore::Editor::canSmartCopyOrDelete): >+ (WebCore::Editor::performCutOrCopy): >+ * editing/Editor.h: >+ * editing/EditorCommand.cpp: >+ (WebCore::executeDelete): >+ * editing/ios/EditorIOS.mm: >+ (WebCore::Editor::shouldSmartDelete): >+ * editing/mac/EditorMac.mm: >+ (WebCore::Editor::shouldSmartDelete): >+ > 2019-02-13 Alex Christensen <achristensen@webkit.org> > > Stop using setDefersLoading from WebCore >diff --git a/Source/WebCore/editing/Editor.cpp b/Source/WebCore/editing/Editor.cpp >index df190e5d396cb9677c9c4d3087aacc3827ea32bb..d6923f33170163b17ea1104ca51ee67ee9cc7c3c 100644 >--- a/Source/WebCore/editing/Editor.cpp >+++ b/Source/WebCore/editing/Editor.cpp >@@ -512,6 +512,15 @@ bool Editor::canDeleteRange(Range* range) const > return true; > } > >+bool Editor::shouldSmartDelete() >+{ >+#if PLATFORM(IOS) >+ return true; >+#else >+ return m_frame.selection().granularity() == WordGranularity; >+#endif >+} >+ > bool Editor::smartInsertDeleteEnabled() > { > return client() && client()->smartInsertDeleteEnabled(); >@@ -519,7 +528,7 @@ bool Editor::smartInsertDeleteEnabled() > > bool Editor::canSmartCopyOrDelete() > { >- return client() && client()->smartInsertDeleteEnabled() && m_frame.selection().granularity() == WordGranularity; >+ return client() && client()->smartInsertDeleteEnabled() && shouldSmartDelete(); > } > > bool Editor::isSelectTrailingWhitespaceEnabled() const >diff --git a/Source/WebCore/editing/Editor.h b/Source/WebCore/editing/Editor.h >index 4547d4715f9833a867ce7f6a833378c5363d03bb..3b4a6d2c17fddbd04c725d88e7ed475c664c35f9 100644 >--- a/Source/WebCore/editing/Editor.h >+++ b/Source/WebCore/editing/Editor.h >@@ -165,7 +165,8 @@ public: > WEBCORE_EXPORT bool canCopy() const; > WEBCORE_EXPORT bool canPaste() const; > WEBCORE_EXPORT bool canDelete() const; >- bool canSmartCopyOrDelete(); >+ WEBCORE_EXPORT bool canSmartCopyOrDelete(); >+ bool shouldSmartDelete(); > > WEBCORE_EXPORT void cut(); > WEBCORE_EXPORT void copy(); >diff --git a/Source/WebCore/editing/EditorCommand.cpp b/Source/WebCore/editing/EditorCommand.cpp >index 9494709dc6f159c08172b6bfcb22873165d46525..b460b94be6ef06c6e557309616921d80654f1515 100644 >--- a/Source/WebCore/editing/EditorCommand.cpp >+++ b/Source/WebCore/editing/EditorCommand.cpp >@@ -297,7 +297,7 @@ static bool executeDelete(Frame& frame, Event*, EditorCommandSource source, cons > case CommandFromDOMWithUserInterface: > // If the current selection is a caret, delete the preceding character. IE performs forwardDelete, but we currently side with Firefox. > // Doesn't scroll to make the selection visible, or modify the kill ring (this time, siding with IE, not Firefox). >- TypingCommand::deleteKeyPressed(*frame.document(), frame.selection().granularity() == WordGranularity ? TypingCommand::SmartDelete : 0); >+ TypingCommand::deleteKeyPressed(*frame.document(), frame.editor().shouldSmartDelete() ? TypingCommand::SmartDelete : 0); > return true; > } > ASSERT_NOT_REACHED(); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 52e92b4e5bf8611a60d023d08d5e4f24add1acf0..32385c8a66779bc71bc1a247089017d081d9ed3a 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,61 @@ >+2019-02-12 Megan Gardner <megan_gardner@apple.com> >+ >+ Turn On Smart Delete >+ https://bugs.webkit.org/show_bug.cgi?id=194320 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update smart-delete-* tests, and rebase many other tests to work with the new smart delete setting. >+ >+ * editing/deleting/smart-delete-001-expected.txt: Added. >+ * editing/deleting/smart-delete-001.html: >+ * editing/deleting/smart-delete-002-expected.txt: >+ * editing/deleting/smart-delete-002.html: >+ * editing/deleting/smart-delete-003-expected.txt: Copied from LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.txt. >+ * editing/deleting/smart-delete-003.html: >+ * editing/deleting/smart-delete-004-expected.txt: Renamed from LayoutTests/platform/mac/editing/deleting/smart-delete-004-expected.txt. >+ * editing/deleting/smart-delete-004.html: >+ * editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt: >+ * editing/deleting/smart-delete-across-editable-boundaries-2.html: >+ * editing/selection/delete-word-granularity-text-control.html: >+ * platform/ios-wk1/editing/deleting/smart-delete-003-expected.txt: Removed. >+ * platform/ios-wk1/editing/deleting/smart-delete-004-expected.txt: Removed. >+ * platform/ios-wk2/editing/deleting/smart-delete-003-expected.txt: Removed. >+ * platform/ios-wk2/editing/pasteboard/cut-text-001-expected.png: Removed. >+ * platform/ios/TestExpectations: >+ * platform/ios/editing/deleting/5206311-1-expected.txt: >+ * platform/ios/editing/deleting/delete-across-editable-content-boundaries-2-expected.txt: Added. >+ * platform/ios/editing/deleting/delete-across-editable-content-boundaries-3-expected.txt: Added. >+ * platform/ios/editing/deleting/delete-and-undo-expected.txt: >+ * platform/ios/editing/deleting/delete-block-merge-contents-012-expected.txt: >+ * platform/ios/editing/deleting/delete-block-merge-contents-017-expected.txt: >+ * platform/ios/editing/deleting/delete-contiguous-ws-001-expected.txt: >+ * platform/ios/editing/deleting/delete-image-003-expected.txt: >+ * platform/ios/editing/deleting/delete-leading-ws-001-expected.txt: >+ * platform/ios/editing/deleting/delete-selection-001-expected.txt: >+ * platform/ios/editing/deleting/delete-trailing-ws-001-expected.txt: >+ * platform/ios/editing/deleting/delete-ws-fixup-002-expected.txt: >+ * platform/ios/editing/deleting/delete-ws-fixup-003-expected.txt: >+ * platform/ios/editing/deleting/delete-ws-fixup-004-expected.txt: >+ * platform/ios/editing/deleting/smart-delete-001-expected.txt: >+ * platform/ios/editing/deleting/smart-delete-002-expected.txt: Added. >+ * platform/ios/editing/deleting/smart-delete-003-expected.txt: Copied from LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.txt. >+ * platform/ios/editing/deleting/smart-delete-004-expected.txt: Renamed from LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.txt. >+ * platform/ios/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt: Added. >+ * platform/ios/editing/deleting/table-cells-expected.txt: >+ * platform/ios/editing/execCommand/delete-line-and-insert-text-in-font-inside-blockquote-expected.txt: Added. >+ * platform/ios/editing/pasteboard/cut-text-001-expected.txt: Renamed from LayoutTests/platform/ios-wk2/editing/pasteboard/cut-text-001-expected.txt. >+ * platform/ios/editing/pasteboard/paste-2-expected.txt: >+ * platform/mac/editing/deleting/smart-delete-001-expected.png: Removed. >+ * platform/mac/editing/deleting/smart-delete-001-expected.txt: Removed. >+ * platform/mac/editing/deleting/smart-delete-002-expected.png: Removed. >+ * platform/mac/editing/deleting/smart-delete-003-expected.png: Removed. >+ * platform/mac/editing/deleting/smart-delete-004-expected.png: Removed. >+ * resources/ui-helper.js: >+ (window.UIHelper.async.doubleActivateAt): >+ (window.UIHelper.async.doubleActivateAtSelectionStart): >+ (window.UIHelper.async.selectWordByDoubleTapOrClick): >+ > 2019-02-13 Sihui Liu <sihui_liu@apple.com> > > Add two regression tests for reference cycle in IndexedDB >diff --git a/LayoutTests/editing/deleting/smart-delete-001-expected.txt b/LayoutTests/editing/deleting/smart-delete-001-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..0ddff383729d307a2cfd070bcfb5c96a18108e87 >--- /dev/null >+++ b/LayoutTests/editing/deleting/smart-delete-001-expected.txt >@@ -0,0 +1,16 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+Tests: >+Smart delete when deleting the first word on a line. >+Expected Results: >+The first word and the space following the first word should be deleted. It should like this this: >+bar baz >+bar baz >+execDeleteCommand: <div id="test" class="editing">bar baz </div> >diff --git a/LayoutTests/editing/deleting/smart-delete-001.html b/LayoutTests/editing/deleting/smart-delete-001.html >index 9b8adc1057617537a1dd111321e1224cfe4ac311..146ed5e92160e150c2bd3ced5eaf82cf8f6a19cc 100644 >--- a/LayoutTests/editing/deleting/smart-delete-001.html >+++ b/LayoutTests/editing/deleting/smart-delete-001.html >@@ -17,11 +17,12 @@ > .expected-results:first-line { font-weight: bold } > </style> > <script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> >+<script src="../../resources/ui-helper.js"></script> > > <script> > >-function editingTest() { >- doubleClickAtSelectionStart(); >+async function editingTest() { >+ await UIHelper.selectWordByDoubleTapOrClick(document.getElementById('test')); > deleteCommand(); > } > >@@ -53,7 +54,7 @@ foo bar baz > </div> > > <script> >-runEditingTest(); >+runDumpAsTextEditingTest(true); > </script> > > </body> >diff --git a/LayoutTests/editing/deleting/smart-delete-002-expected.txt b/LayoutTests/editing/deleting/smart-delete-002-expected.txt >index e39d5917a2439ce52565e26bacbca7afb610e1ca..1b752f8487c1504271857a25cf8a20349874846b 100644 >--- a/LayoutTests/editing/deleting/smart-delete-002-expected.txt >+++ b/LayoutTests/editing/deleting/smart-delete-002-expected.txt >@@ -9,30 +9,10 @@ EDITING DELEGATE: shouldDeleteDOMRange:range from 5 of #text > DIV > DIV > BODY > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > 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 784x212 [border: (2px solid #0000FF)] >- RenderBlock {DIV} at (14,14) size 756x56 >- RenderText {#text} at (0,0) size 66x28 >- text run at (0,0) width 66: "Tests: " >- RenderBR {BR} at (0,0) size 0x0 >- RenderText {#text} at (0,28) size 516x28 >- text run at (0,28) width 516: "Smart delete when deleting the second word of a line." >- RenderBlock {DIV} at (14,86) size 756x112 >- RenderText {#text} at (0,0) size 190x28 >- text run at (0,0) width 190: "Expected Results: " >- RenderBR {BR} at (189,22) size 1x0 >- RenderText {#text} at (0,28) size 732x56 >- text run at (0,28) width 732: "The second word and the space before the second word should be deleted. It" >- text run at (0,56) width 201: "should like this this: " >- RenderBR {BR} at (200,78) size 1x0 >- RenderText {#text} at (0,84) size 72x28 >- text run at (0,84) width 72: "foo baz" >- RenderBlock {DIV} at (0,236) size 784x32 >- RenderBlock {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] >- RenderText {#text} at (2,2) size 72x28 >- text run at (2,2) width 72: "foo baz" >-caret: position 4 of child 0 {#text} of child 1 {DIV} of child 3 {DIV} of body >+Tests: >+Smart delete when deleting the second word of a line. >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo baz >+execDeleteCommand: <div id="test" class="editing"> foo baz </div> >diff --git a/LayoutTests/editing/deleting/smart-delete-002.html b/LayoutTests/editing/deleting/smart-delete-002.html >index 9430ee2f0a062c37a8a2079d1a65821444670164..55b3a59e657beba1ca8bdc84866b4be5c32c65d2 100644 >--- a/LayoutTests/editing/deleting/smart-delete-002.html >+++ b/LayoutTests/editing/deleting/smart-delete-002.html >@@ -17,15 +17,15 @@ > .expected-results:first-line { font-weight: bold } > </style> > <script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> >- >+<script src="../../resources/ui-helper.js"></script> > <script> > >-function editingTest() { >+async function editingTest() { > if (window.internals) > internals.settings.setEditingBehavior('mac'); > moveSelectionForwardByWordCommand(); > moveSelectionForwardByCharacterCommand(); >- doubleClickAtSelectionStart(); >+ await UIHelper.doubleActivateAtSelectionStart(); > deleteCommand(); > } > >@@ -57,7 +57,7 @@ foo bar baz > </div> > > <script> >-runEditingTest(); >+runDumpAsTextEditingTest(true); > </script> > > </body> >diff --git a/LayoutTests/editing/deleting/smart-delete-003-expected.txt b/LayoutTests/editing/deleting/smart-delete-003-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..e93e8e2bb24cc567555db888d80cf0d89bf94cfa >--- /dev/null >+++ b/LayoutTests/editing/deleting/smart-delete-003-expected.txt >@@ -0,0 +1,20 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit delete. You should see 'foo baz'. >+ >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo baz >+ >diff --git a/LayoutTests/editing/deleting/smart-delete-003.html b/LayoutTests/editing/deleting/smart-delete-003.html >index 82ca37371fac968cda2a826fb65dc821849b92ad..7d7089642a42917cb4cda2f0e71353a7a94c9b44 100644 >--- a/LayoutTests/editing/deleting/smart-delete-003.html >+++ b/LayoutTests/editing/deleting/smart-delete-003.html >@@ -1,15 +1,42 @@ >-<script> >-if (window.testRunner) >- testRunner.dumpEditingCallbacks(); >-</script> >+<html> >+<head> >+ >+<style> >+.editing { >+ border: 2px solid red; >+ font-size: 24px; >+} >+.explanation { >+ border: 2px solid blue; >+ padding: 12px; >+ font-size: 24px; >+ margin-bottom: 24px; >+} >+.scenario { margin-bottom: 16px;} >+.scenario:first-line { font-weight: bold; margin-bottom: 16px;} >+.expected-results:first-line { font-weight: bold } >+</style> > <script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> >+<script src="../../resources/ui-helper.js"></script> >+<div class="scenario"> > <p>This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit delete. You should see 'foo baz'.</p> >-<div id="div" contenteditable="true">foo b<span id="target">a</span>r baz</div> >+</div> >+<div class="expected-results"> >+Expected Results: >+<br> >+The second word and the space before the second word should be deleted. It should like this this: >+<BR> >+foo baz >+</div> >+<div id="test" class="editing" contenteditable="true">foo b<span id="target">a</span>r baz</div> > > <script> >-if (window.testRunner) { >+async function editingTest() { > var target = document.getElementById("target"); >- doubleClick(target.offsetLeft, target.offsetTop); >+ await UIHelper.selectWordByDoubleTapOrClick(target); > testRunner.execCommand("DeleteBackward"); > } >+ >+runDumpAsTextEditingTest(true); >+ > </script> >diff --git a/LayoutTests/editing/deleting/smart-delete-004-expected.txt b/LayoutTests/editing/deleting/smart-delete-004-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..4f739fe71f721fd9dcecfb73e99c1d15d3542775 >--- /dev/null >+++ b/LayoutTests/editing/deleting/smart-delete-004-expected.txt >@@ -0,0 +1,20 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit forward delete. You should see 'foo baz'. >+ >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo baz >+ >diff --git a/LayoutTests/editing/deleting/smart-delete-004.html b/LayoutTests/editing/deleting/smart-delete-004.html >index 117e5b8e4f298eb1f963692d4e47086b2339251a..ec8c0b424bf295f94e4223588bba31e73485126c 100644 >--- a/LayoutTests/editing/deleting/smart-delete-004.html >+++ b/LayoutTests/editing/deleting/smart-delete-004.html >@@ -1,15 +1,42 @@ >-<script> >-if (window.testRunner) >- testRunner.dumpEditingCallbacks(); >-</script> >+<html> >+<head> >+ >+<style> >+.editing { >+ border: 2px solid red; >+ font-size: 24px; >+} >+.explanation { >+ border: 2px solid blue; >+ padding: 12px; >+ font-size: 24px; >+ margin-bottom: 24px; >+} >+.scenario { margin-bottom: 16px;} >+.scenario:first-line { font-weight: bold; margin-bottom: 16px;} >+.expected-results:first-line { font-weight: bold } >+</style> > <script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> >+<script src="../../resources/ui-helper.js"></script> >+<div class="scenario"> > <p>This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit forward delete. You should see 'foo baz'.</p> >-<div id="div" contenteditable="true">foo b<span id="target">a</span>r baz</div> >+</div> >+<div class="expected-results"> >+Expected Results: >+<br> >+The second word and the space before the second word should be deleted. It should like this this: >+<BR> >+foo baz >+</div> >+<div id="test" class="editing" contenteditable="true">foo b<span id="target">a</span>r baz</div> > > <script> >-if (window.testRunner) { >+async function editingTest() { > var target = document.getElementById("target"); >- doubleClick(target.offsetLeft, target.offsetTop + target.offsetHeight / 2); >+ await UIHelper.selectWordByDoubleTapOrClick(target); > testRunner.execCommand("DeleteForward"); > } >-</script> >+ >+runDumpAsTextEditingTest(true); >+ >+</script> >\ No newline at end of file >diff --git a/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt b/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt >index c7452a7cdd4c77b7b17aa16b4f0332fd690275ee..1ceb41649dee1bdcd2281403045fe8d30d408f29 100644 >--- a/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt >+++ b/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt >@@ -1,5 +1,15 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document toDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > This tests for a bug where expansion for smart delete would not consider editable boundaries. Only 'foo' should be deleted. You should see ' bar'. <radr://problem/5390681> >-| <#selection-caret> >-| <span> >-| contenteditable="false" >-| " bar" >+ >+bar >+ >diff --git a/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2.html b/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2.html >index bdf6130e7dfc2050b6c3b16091c25f9a1986c87a..fbc1e5f4307a1d325d9489b0021733aaf1aa0a60 100644 >--- a/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2.html >+++ b/LayoutTests/editing/deleting/smart-delete-across-editable-boundaries-2.html >@@ -2,22 +2,19 @@ > <html> > <body> > <p id="description">This tests for a bug where expansion for smart delete would not consider editable boundaries. Only 'foo' should be deleted. You should see ' bar'. <radr://problem/5390681></p> >-<div contenteditable="true" id="div">foo >+<div contenteditable="true" id="test">foo > <span contenteditable="false"> bar</span></div> > >-<script src="../../resources/dump-as-markup.js"></script> >+<script src="../editing.js"></script> >+<script src="../../resources/ui-helper.js"></script> > <script> >-var div = document.getElementById("div"); >-var x = div.offsetLeft; >-var y = div.offsetTop; >-eventSender.mouseMoveTo(x, y); >-eventSender.mouseDown(); >-eventSender.mouseUp(); >-eventSender.mouseDown(); >-eventSender.mouseUp(); >-document.execCommand("Delete"); >-Markup.description(description.textContent); >-Markup.dump(div); >+ >+async function editingTest() { >+ await UIHelper.selectWordByDoubleTapOrClick(document.getElementById('test')); >+ document.execCommand("Delete"); >+} >+ >+runDumpAsTextEditingTest(true); > </script> > </body> > </html> >diff --git a/LayoutTests/editing/selection/delete-word-granularity-text-control.html b/LayoutTests/editing/selection/delete-word-granularity-text-control.html >index 88c48fbe2a17e5c7e2666358538fca11deeee52b..6ac6603112e6568f2bd747a5f8d4cfcb6921d38e 100644 >--- a/LayoutTests/editing/selection/delete-word-granularity-text-control.html >+++ b/LayoutTests/editing/selection/delete-word-granularity-text-control.html >@@ -3,6 +3,7 @@ > <head> > <script src="../../resources/js-test-pre.js"></script> > <script src="resources/js-test-selection-shared.js"></script> >+<script src="../../resources/ui-helper.js"></script> > </head> > <body> > <p id="description"></p> >@@ -30,10 +31,19 @@ document.execCommand('delete'); > > // Calling setSelectionRange should reset the granularity to CharacterGranularity, which means > // execCommand('delete') should *not* do a smart delete. >-if (textarea.value == " bar baz") >+if (!UIHelper.isIOS()) { >+ if (textarea.value == " bar baz") >+ testPassed("PASSED"); >+ else >+ testFailed("FAILED. textarea value should be \" bar baz\" and was \"" + textarea.value + "\""); >+} >+// However, on iOS, we have turned on smart delete in all cases, so it should delete the space >+else { >+ if (textarea.value == "bar baz") > testPassed("PASSED"); > else >- testFailed("FAILED. textarea value should be \" bar baz\" and was \"" + textarea.value + "\""); >+ testFailed("FAILED. textarea value should be \"bar baz\" and was \"" + textarea.value + "\""); >+} > > var successfullyParsed = true; > </script> >diff --git a/LayoutTests/platform/ios-wk1/editing/deleting/smart-delete-003-expected.txt b/LayoutTests/platform/ios-wk1/editing/deleting/smart-delete-003-expected.txt >deleted file mode 100644 >index ddb0abb5571b4a1c3db07fd1418c14a7872024f5..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/ios-wk1/editing/deleting/smart-delete-003-expected.txt >+++ /dev/null >@@ -1,28 +0,0 @@ >-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 {P} at (0,0) size 784x40 >- RenderText {#text} at (0,0) size 779x39 >- text run at (0,0) width 401: "This tests deleting a selection created with a word granularity. " >- text run at (400,0) width 353: "To run it manually, double click on 'bar' and hit delete. " >- text run at (752,0) width 27: "You" >- text run at (0,20) width 129: "should see 'foo baz'." >- RenderBlock {DIV} at (0,56) size 784x20 >- RenderText {#text} at (0,0) size 26x19 >- text run at (0,0) width 26: "foo " >- RenderInline {SPAN} at (0,0) size 8x19 >- RenderText {#text} at (25,0) size 8x19 >- text run at (25,0) width 8: "a" >- RenderText {#text} at (32,0) size 32x19 >- text run at (32,0) width 32: "r baz" >-caret: position 4 of child 0 {#text} of child 2 {DIV} of body >diff --git a/LayoutTests/platform/ios-wk1/editing/deleting/smart-delete-004-expected.txt b/LayoutTests/platform/ios-wk1/editing/deleting/smart-delete-004-expected.txt >deleted file mode 100644 >index 79bec2f311a4d92f54cee0478bdca6339e27b1a9..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/ios-wk1/editing/deleting/smart-delete-004-expected.txt >+++ /dev/null >@@ -1,24 +0,0 @@ >-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 {P} at (0,0) size 784x40 >- RenderText {#text} at (0,0) size 758x39 >- text run at (0,0) width 401: "This tests deleting a selection created with a word granularity. " >- text run at (400,0) width 358: "To run it manually, double click on 'bar' and hit forward" >- text run at (0,20) width 47: "delete. " >- text run at (46,20) width 159: "You should see 'foo baz'." >- RenderBlock {DIV} at (0,56) size 784x20 >- RenderText {#text} at (0,0) size 34x19 >- text run at (0,0) width 34: "foo b" >- RenderText {#text} at (33,0) size 32x19 >- text run at (33,0) width 32: "r baz" >-caret: position 5 of child 0 {#text} of child 2 {DIV} of body >diff --git a/LayoutTests/platform/ios-wk2/editing/deleting/smart-delete-003-expected.txt b/LayoutTests/platform/ios-wk2/editing/deleting/smart-delete-003-expected.txt >deleted file mode 100644 >index dc8194606490964b19c1fc6f25a3c10a34ccd714..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/ios-wk2/editing/deleting/smart-delete-003-expected.txt >+++ /dev/null >@@ -1,19 +0,0 @@ >-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 {P} at (0,0) size 784x40 >- RenderText {#text} at (0,0) size 779x39 >- text run at (0,0) width 401: "This tests deleting a selection created with a word granularity. " >- text run at (400,0) width 353: "To run it manually, double click on 'bar' and hit delete. " >- text run at (752,0) width 27: "You" >- text run at (0,20) width 129: "should see 'foo baz'." >- RenderBlock {DIV} at (0,56) size 784x20 >- RenderText {#text} at (0,0) size 34x19 >- text run at (0,0) width 34: "foo b" >- RenderInline {SPAN} at (0,0) size 8x19 >- RenderText {#text} at (33,0) size 8x19 >- text run at (33,0) width 8: "a" >- RenderText {#text} at (40,0) size 32x19 >- text run at (40,0) width 32: "r baz" >diff --git a/LayoutTests/platform/ios-wk2/editing/pasteboard/cut-text-001-expected.png b/LayoutTests/platform/ios-wk2/editing/pasteboard/cut-text-001-expected.png >deleted file mode 100644 >index f3927aa7f73b1b528d22b34f26ee4a7d7097e6eb..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 41217 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 >N4_cZP?05P3zX2#3k4pdm > >diff --git a/LayoutTests/platform/ios-wk2/editing/pasteboard/cut-text-001-expected.txt b/LayoutTests/platform/ios-wk2/editing/pasteboard/cut-text-001-expected.txt >deleted file mode 100644 >index b9d7249ed88e08c9d4f9f33a07f014eab49ad8d8..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/ios-wk2/editing/pasteboard/cut-text-001-expected.txt >+++ /dev/null >@@ -1,26 +0,0 @@ >-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 78x28 >- RenderText {#text} at (14,15) size 78x28 >- text run at (14,15) width 78: "foo baz" >- RenderText {#text} at (0,0) size 0x0 >-caret: position 4 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/TestExpectations b/LayoutTests/platform/ios/TestExpectations >index fce871bc54edfa0cbc750ba7d80f0658a10c5027..db52d67b416ea761f6dbd8753962bd94d165aada 100644 >--- a/LayoutTests/platform/ios/TestExpectations >+++ b/LayoutTests/platform/ios/TestExpectations >@@ -1340,7 +1340,6 @@ webkit.org/b/178963 fast/css/sticky/sticky-writing-mode-vertical-rl.html [ Image > # editing/deleting tests to triage > editing/deleting/delete-all-text-in-text-field-assertion.html [ Failure ] > editing/deleting/delete-cell-contents.html [ Failure ] >-editing/deleting/smart-delete-002.html [ Failure ] > editing/deleting/smart-delete-across-editable-boundaries.html [ Failure ] > editing/deleting/smart-editing-disabled-mac.html [ Failure ] > >diff --git a/LayoutTests/platform/ios/editing/deleting/5206311-1-expected.txt b/LayoutTests/platform/ios/editing/deleting/5206311-1-expected.txt >index b6936f51ce6a572bb86e5ad717ce582f7fa664c5..581efeea2544722ad63ebbc5587f2e187fdf21e2 100644 >--- a/LayoutTests/platform/ios/editing/deleting/5206311-1-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/5206311-1-expected.txt >@@ -63,9 +63,8 @@ layer at (0,0) size 800x600 > text run at (0,0) width 311: "This empties the first row, it should be removed." > RenderBlock {DIV} at (0,298) size 784x76 > RenderBlock {DIV} at (0,0) size 784x20 >- RenderText {#text} at (0,0) size 40x19 >+ RenderText {#text} at (0,0) size 36x19 > text run at (0,0) width 36: "Hello" >- text run at (35,0) width 5: " " > RenderTable {TABLE} at (0,20) size 46x56 [border: (1px outset #808080)] > RenderTableSection {TBODY} at (1,1) size 44x54 > RenderTableRow {TR} at (0,2) size 44x24 >@@ -84,4 +83,4 @@ layer at (0,0) size 800x600 > RenderTableCell {TD} at (30,28) size 12x24 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1] > RenderText {#text} at (2,2) size 8x19 > text run at (2,2) width 8: "9" >-caret: position 6 of child 0 {#text} of child 1 {DIV} of child 14 {DIV} of body >+caret: position 5 of child 0 {#text} of child 1 {DIV} of child 14 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-across-editable-content-boundaries-2-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-across-editable-content-boundaries-2-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..f1a0e7b16ee259618e465f7f8761fec50305261d >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/deleting/delete-across-editable-content-boundaries-2-expected.txt >@@ -0,0 +1,26 @@ >+This tests to see that selected non-editable nodes that are not in both the start and end editable root are preserved during a deletion. You should see two 'Non-editable' pieces on either side of the editable piece below. <radr://problem/5026848> >+| " >+" >+| <table> >+| contenteditable="false" >+| " >+ " >+| <tbody> >+| <tr> >+| " >+ " >+| <td> >+| "Non-editable" >+| " >+ " >+| <td> >+| contenteditable="true" >+| "Editable<#selection-caret>content" >+| " >+ " >+| <td> >+| "Non-editable" >+| " >+ " >+| " >+" >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-across-editable-content-boundaries-3-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-across-editable-content-boundaries-3-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..06e56d3958ab6f0163d4ca3e4d15406e3b7a518b >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/deleting/delete-across-editable-content-boundaries-3-expected.txt >@@ -0,0 +1,34 @@ >+This tests to see that selected editable nodes that are not in both the start and end editable roots are cleared. You should see one non-editable piece and an editable one and then two empty table cells. The table cells are editable but are preserved and not removed because they are in a non-editable region. They should be completely cleared out, even the second one that contains a non-editable piece. <radr://problem/5026848> >+| " >+" >+| <table> >+| border="1" >+| contenteditable="false" >+| " >+ " >+| <tbody> >+| <tr> >+| " >+ " >+| <td> >+| "Non-editable" >+| " >+ " >+| <td> >+| contenteditable="true" >+| "Editable<#selection-caret>content" >+| " >+ " >+| <!-- The following cell should be removed, even though it contains non-editable pieces. --> >+| " >+ " >+| <td> >+| contenteditable="true" >+| " >+ " >+| <td> >+| contenteditable="true" >+| " >+ " >+| " >+" >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-and-undo-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-and-undo-expected.txt >index 6405ab81e7d9aac78f133bb96025beed7b49caa5..17dd25b57287c95d2994f9460f271e672d894c82 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-and-undo-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-and-undo-expected.txt >@@ -12,11 +12,6 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 9 of #text > DIV > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > DIV > BODY > HTML > #document to 3 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-012-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-012-expected.txt >index 92301a21675f1419d4a1f80b0114f779489aabc0..016425275d0fe69cfac7551465541814fd577e80 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-012-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-012-expected.txt >@@ -30,7 +30,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: shouldDeleteDOMRange:range from 8 of #text > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -41,6 +41,6 @@ layer at (0,0) size 800x600 > RenderBlock {DIV} at (0,0) size 784x58 [border: (2px solid #FF0000)] > RenderBlock {DIV} at (14,14) size 756x30 > RenderBlock {DIV} at (0,0) size 756x30 >- RenderText {#text} at (0,1) size 176x28 >- text run at (0,1) width 176: "This is some text." >-caret: position 8 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of body >+ RenderText {#text} at (0,1) size 170x28 >+ text run at (0,1) width 170: "This is some text." >+caret: position 7 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-017-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-017-expected.txt >index a0e01db9de1fa9e5d4bb2f02715165be6d33a95c..82351e96126f24d12d18720d93992d71492ef29f 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-017-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-block-merge-contents-017-expected.txt >@@ -30,8 +30,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: shouldDeleteDOMRange:range from 15 of #text > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 8 of #text > DIV > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > DIV > DIV > DIV > BODY > HTML > #document to 2 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > DIV > DIV > DIV > BODY > HTML > #document to 7 of #text > DIV > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -42,6 +41,6 @@ layer at (0,0) size 800x600 > RenderBlock {DIV} at (0,0) size 784x58 [border: (2px solid #FF0000)] > RenderBlock {DIV} at (14,14) size 756x30 > RenderBlock {DIV} at (0,0) size 756x30 >- RenderText {#text} at (0,1) size 176x28 >- text run at (0,1) width 176: "This is some text." >-caret: position 8 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of body >+ RenderText {#text} at (0,1) size 170x28 >+ text run at (0,1) width 170: "This is some text." >+caret: position 7 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-contiguous-ws-001-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-contiguous-ws-001-expected.txt >index bdb81fc80728c6ca90bd0e8e422bb9d73dc84b7d..d0e658d6c019b737c4bec97ca31dc9fde2dd0afe 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-contiguous-ws-001-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-contiguous-ws-001-expected.txt >@@ -10,7 +10,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 7 of #text > SPAN > DIV > BODY > HTML > #document to 10 of #text > SPAN > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -19,8 +19,8 @@ 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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 78x28 >- RenderText {#text} at (14,15) size 78x28 >- text run at (14,15) width 78: "foo baz" >+ RenderInline {SPAN} at (0,0) size 72x28 >+ RenderText {#text} at (14,15) size 72x28 >+ text run at (14,15) width 72: "foo baz" > RenderText {#text} at (0,0) size 0x0 >-caret: position 4 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >+caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-image-003-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-image-003-expected.txt >index efe2370bb7f064fd218f4799fc8ac671f0e9a30d..a7889c89b127679a174912ac47659c9e25e66198 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-image-003-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-image-003-expected.txt >@@ -5,7 +5,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 1 of SPAN > DIV > BODY > HTML > #document to 3 of SPAN > DIV > BODY > HTML > #document >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > SPAN > DIV > BODY > HTML > #document to 8 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -14,10 +14,10 @@ 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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 84x28 >+ RenderInline {SPAN} at (0,0) size 78x28 > RenderText {#text} at (14,15) size 11x28 > text run at (14,15) width 11: "a" >- RenderText {#text} at (24,15) size 74x28 >- text run at (24,15) width 74: " lincoln" >+ RenderText {#text} at (24,15) size 68x28 >+ text run at (24,15) width 68: "lincoln" > RenderText {#text} at (0,0) size 0x0 > caret: position 1 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-leading-ws-001-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-leading-ws-001-expected.txt >index 265f63ce3966280c831131db54a3bc51f22940d9..ce8bb7c4c82aa80149a99086445c020a68d7c4cb 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-leading-ws-001-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-leading-ws-001-expected.txt >@@ -6,20 +6,16 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > SPAN > DIV > BODY > HTML > #document to 2 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 14x28 >- RenderText {#text} at (14,15) size 14x28 >- text run at (14,15) width 8: "f" >- text run at (21,15) width 7: " " >-caret: position 2 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >+ RenderInline {SPAN} at (0,0) size 48x28 >+ RenderText {#text} at (14,15) size 48x28 >+ text run at (14,15) width 14: "f " >+ text run at (27,15) width 35: "baz" >+ RenderText {#text} at (0,0) size 0x0 >+selection start: position 4 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >+selection end: position 7 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-selection-001-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-selection-001-expected.txt >index 84880dba396020b646dedb5d2e5039d4f541bd98..760b0fdbe43c9cfdd20eda6b1399a3dcfcff1eda 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-selection-001-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-selection-001-expected.txt >@@ -15,9 +15,9 @@ 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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 76x28 >- RenderText {#text} at (14,15) size 76x28 >- text run at (14,15) width 43: " bar " >- text run at (56,15) width 34: "baz" >+ RenderInline {SPAN} at (0,0) size 70x28 >+ RenderText {#text} at (14,15) size 70x28 >+ text run at (14,15) width 37: "bar " >+ text run at (50,15) width 34: "baz" > RenderText {#text} at (0,0) size 0x0 > caret: position 0 of child 0 {#text} of child 0 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-trailing-ws-001-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-trailing-ws-001-expected.txt >index 84880dba396020b646dedb5d2e5039d4f541bd98..760b0fdbe43c9cfdd20eda6b1399a3dcfcff1eda 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-trailing-ws-001-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-trailing-ws-001-expected.txt >@@ -15,9 +15,9 @@ 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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 76x28 >- RenderText {#text} at (14,15) size 76x28 >- text run at (14,15) width 43: " bar " >- text run at (56,15) width 34: "baz" >+ RenderInline {SPAN} at (0,0) size 70x28 >+ RenderText {#text} at (14,15) size 70x28 >+ text run at (14,15) width 37: "bar " >+ text run at (50,15) width 34: "baz" > RenderText {#text} at (0,0) size 0x0 > caret: position 0 of child 0 {#text} of child 0 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-002-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-002-expected.txt >index 8391b69e826e2a84fabb9d725aac87ac7ecd5fbb..cd10f5e66c12daec0e05ff70f1dad4ebe5a15971 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-002-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-002-expected.txt >@@ -33,7 +33,8 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 2 of #text > B > SPAN > DIV > BODY > HTML > #document to 4 of #text > B > SPAN > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > SPAN > DIV > BODY > HTML > #document to 0 of #text > B > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 7 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > SPAN > DIV > BODY > HTML > #document to 0 of #text > B > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 6 of #text > SPAN > DIV > BODY > HTML > #document to 6 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -48,23 +49,23 @@ layer at (0,0) size 800x600 > text run at (718,0) width 48: "Editing" > text run at (0,20) width 543: "produces a tree that should result in two spaces, but for some reason it isn't rendered." > RenderBlock {DIV} at (0,56) size 784x88 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 734x58 >+ RenderInline {SPAN} at (0,0) size 728x58 > RenderText {#text} at (14,15) size 96x28 > text run at (14,15) width 96: "in Liberty" > RenderInline {I} at (0,0) size 117x28 > RenderText {#text} at (109,15) size 117x28 > text run at (109,15) width 21: "F " > text run at (129,15) width 97: "and seven" >- RenderText {#text} at (225,15) size 63x28 >- text run at (225,15) width 63: " years " >+ RenderText {#text} at (225,15) size 57x28 >+ text run at (225,15) width 57: " years" > RenderInline {B} at (0,0) size 7x28 >- RenderText {#text} at (287,15) size 7x28 >- text run at (287,15) width 7: " " >- RenderText {#text} at (293,15) size 734x58 >- text run at (293,15) width 111: "our fathers " >- text run at (403,15) width 339: "f upon this continent, a new nation," >- text run at (741,15) width 7: " " >+ RenderText {#text} at (281,15) size 7x28 >+ text run at (281,15) width 7: " " >+ RenderText {#text} at (287,15) size 728x58 >+ text run at (287,15) width 111: "our fathers " >+ text run at (397,15) width 339: "f upon this continent, a new nation," >+ text run at (735,15) width 7: " " > text run at (14,45) width 228: "conceived in Liberty, " > text run at (241,45) width 380: "and dedicated to the proposition that all" > RenderText {#text} at (0,0) size 0x0 >-caret: position 7 of child 2 {#text} of child 1 {SPAN} of child 3 {DIV} of body >+caret: position 6 of child 2 {#text} of child 1 {SPAN} of child 3 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-003-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-003-expected.txt >index 8bbd979db6efde72bc1f737251a4311b6f0b3f9f..6514261805f6d68cb04e08a4a4d320c933f76821 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-003-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-003-expected.txt >@@ -10,7 +10,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -19,13 +19,13 @@ 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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 75x28 >- RenderText {#text} at (14,15) size 37x28 >- text run at (14,15) width 37: "bar " >+ RenderInline {SPAN} at (0,0) size 69x28 >+ RenderText {#text} at (14,15) size 31x28 >+ text run at (14,15) width 31: "bar" > RenderInline {SPAN} at (0,0) size 7x28 >- RenderText {#text} at (50,15) size 7x28 >- text run at (50,15) width 7: " " >- RenderText {#text} at (56,15) size 33x28 >- text run at (56,15) width 33: "foo" >+ RenderText {#text} at (44,15) size 7x28 >+ text run at (44,15) width 7: " " >+ RenderText {#text} at (50,15) size 33x28 >+ text run at (50,15) width 33: "foo" > RenderText {#text} at (0,0) size 0x0 >-caret: position 4 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >+caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-004-expected.txt b/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-004-expected.txt >index 17faa71b318952e8617029388ed54b9e50c86172..2be6d9ac0e442b9109460304eca23fdca18526eb 100644 >--- a/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-004-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/delete-ws-fixup-004-expected.txt >@@ -10,7 +10,7 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 4 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >@@ -19,13 +19,13 @@ 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 784x58 [border: (2px solid #FF0000)] >- RenderInline {SPAN} at (0,0) size 87x28 >- RenderText {#text} at (14,15) size 37x28 >- text run at (14,15) width 37: "bar " >+ RenderInline {SPAN} at (0,0) size 81x28 >+ RenderText {#text} at (14,15) size 31x28 >+ text run at (14,15) width 31: "bar" > RenderInline {SPAN} at (0,0) size 19x28 >- RenderText {#text} at (50,15) size 19x28 >- text run at (50,15) width 19: " " >- RenderText {#text} at (68,15) size 33x28 >- text run at (68,15) width 33: "foo" >+ RenderText {#text} at (44,15) size 19x28 >+ text run at (44,15) width 19: " " >+ RenderText {#text} at (62,15) size 33x28 >+ text run at (62,15) width 33: "foo" > RenderText {#text} at (0,0) size 0x0 >-caret: position 4 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >+caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/deleting/smart-delete-001-expected.txt b/LayoutTests/platform/ios/editing/deleting/smart-delete-001-expected.txt >index ea874c79ab52c84ba8284e2c88112ba8c88447f5..2b4c9e2f9998c4faa7fc7d8716c9f5b7218b3250 100644 >--- a/LayoutTests/platform/ios/editing/deleting/smart-delete-001-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/smart-delete-001-expected.txt >@@ -1,30 +1,17 @@ > EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 784x224 [border: (2px solid #0000FF)] >- RenderBlock {DIV} at (14,14) size 756x60 >- RenderText {#text} at (0,1) size 66x28 >- text run at (0,1) width 66: "Tests: " >- RenderBR {BR} at (0,0) size 0x0 >- RenderText {#text} at (0,31) size 492x28 >- text run at (0,31) width 492: "Smart delete when deleting the first word on a line." >- RenderBlock {DIV} at (14,90) size 756x120 >- RenderText {#text} at (0,1) size 190x28 >- text run at (0,1) width 190: "Expected Results: " >- RenderBR {BR} at (189,23) size 1x0 >- RenderText {#text} at (0,31) size 708x58 >- text run at (0,31) width 708: "The first word and the space following the first word should be deleted. It" >- text run at (0,61) width 201: "should like this this: " >- RenderBR {BR} at (200,83) size 1x0 >- RenderText {#text} at (0,91) size 70x28 >- text run at (0,91) width 70: "bar baz" >- RenderBlock {DIV} at (0,248) size 784x34 >- RenderBlock {DIV} at (0,0) size 784x34 [border: (2px solid #FF0000)] >- RenderText {#text} at (2,3) size 108x28 >- text run at (2,3) width 108: "foo bar baz" >-caret: position 1 of child 0 {#text} of child 1 {DIV} of child 3 {DIV} of body >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+Tests: >+Smart delete when deleting the first word on a line. >+Expected Results: >+The first word and the space following the first word should be deleted. It should like this this: >+bar baz >+bar baz >+execDeleteCommand: <div id="test" class="editing">bar baz </div> >diff --git a/LayoutTests/platform/ios/editing/deleting/smart-delete-002-expected.txt b/LayoutTests/platform/ios/editing/deleting/smart-delete-002-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..d0d8aaf7a6e8cca0b17cba2e90320010e5e4d93b >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/deleting/smart-delete-002-expected.txt >@@ -0,0 +1,20 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of #text > DIV > DIV > BODY > HTML > #document to 6 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 5 of #text > DIV > DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 5 of #text > DIV > DIV > BODY > HTML > #document to 8 of #text > DIV > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+Tests: >+Smart delete when deleting the second word of a line. >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo baz >+execDeleteCommand: <div id="test" class="editing"> foo baz </div> >diff --git a/LayoutTests/platform/ios/editing/deleting/smart-delete-003-expected.txt b/LayoutTests/platform/ios/editing/deleting/smart-delete-003-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..d02e43197e07dc179bd64c1b2696edf46c6b9f57 >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/deleting/smart-delete-003-expected.txt >@@ -0,0 +1,20 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 4 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 4 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit delete. You should see 'foo baz'. >+ >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo baz >+ >diff --git a/LayoutTests/platform/ios/editing/deleting/smart-delete-004-expected.txt b/LayoutTests/platform/ios/editing/deleting/smart-delete-004-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..ec810ab3528953d1417b20f32585da1f83511b4d >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/deleting/smart-delete-004-expected.txt >@@ -0,0 +1,19 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 4 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 4 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 4 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit forward delete. You should see 'foo baz'. >+ >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo  baz >+ >diff --git a/LayoutTests/platform/ios/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt b/LayoutTests/platform/ios/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..d88e5bfe06c9fe528a620c2d07d2ef42322b10e7 >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/deleting/smart-delete-across-editable-boundaries-2-expected.txt >@@ -0,0 +1,14 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 2 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+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: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 0 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >+This tests for a bug where expansion for smart delete would not consider editable boundaries. Only 'foo' should be deleted. You should see ' bar'. <radr://problem/5390681> >+ >+bar >+ >diff --git a/LayoutTests/platform/ios/editing/deleting/table-cells-expected.txt b/LayoutTests/platform/ios/editing/deleting/table-cells-expected.txt >index 4d84c06f3efe6fcdbf3d8b9a89e637b727b3caa3..b3431c30479c5f638cdd2fb106e21ded14bd3ac9 100644 >--- a/LayoutTests/platform/ios/editing/deleting/table-cells-expected.txt >+++ b/LayoutTests/platform/ios/editing/deleting/table-cells-expected.txt >@@ -15,15 +15,15 @@ layer at (0,0) size 800x600 > text run at (0,0) width 372: "This tests deletion of a selection that spans multiple cells. " > text run at (371,0) width 366: "Just table content should be removed, not table structure." > RenderBlock {DIV} at (0,36) size 784x30 >- RenderTable {TABLE} at (0,0) size 350x30 [border: (1px outset #808080)] >- RenderTableSection {TBODY} at (1,1) size 348x28 >- RenderTableRow {TR} at (0,2) size 348x24 >+ RenderTable {TABLE} at (0,0) size 346x30 [border: (1px outset #808080)] >+ RenderTableSection {TBODY} at (1,1) size 344x28 >+ RenderTableRow {TR} at (0,2) size 344x24 > RenderTableCell {TD} at (2,2) size 160x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1] > RenderBlock {DIV} at (2,2) size 156x20 > RenderText {#text} at (0,0) size 156x19 > text run at (0,0) width 156: "These two pieces of text" >- RenderTableCell {TD} at (163,2) size 183x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] >- RenderBlock {DIV} at (2,2) size 179x20 >- RenderText {#text} at (0,0) size 179x19 >- text run at (0,0) width 179: " should be in different cells." >+ RenderTableCell {TD} at (163,2) size 179x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1] >+ RenderBlock {DIV} at (2,2) size 175x20 >+ RenderText {#text} at (0,0) size 175x19 >+ text run at (0,0) width 175: "should be in different cells." > caret: position 24 of child 0 {#text} of child 0 {DIV} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/execCommand/delete-line-and-insert-text-in-font-inside-blockquote-expected.txt b/LayoutTests/platform/ios/editing/execCommand/delete-line-and-insert-text-in-font-inside-blockquote-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..5782ec09f4ba1a3063cc076ebe70a0785ec998d7 >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/execCommand/delete-line-and-insert-text-in-font-inside-blockquote-expected.txt >@@ -0,0 +1,14 @@ >+This tests deleting a line inside a font element inside a blockquote. >+ >+There should be exactly one blockquote and you should see "hello world" below: >+| " >+" >+| <blockquote> >+| style="background-color:yellow" >+| <br> >+| <font> >+| style="color:blue" >+| "hello<#selection-caret>world >+" >+| " >+" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/cut-text-001-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/cut-text-001-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..04be1c5696e0669d43b4c8aa9bdf0b777f305833 >--- /dev/null >+++ b/LayoutTests/platform/ios/editing/pasteboard/cut-text-001-expected.txt >@@ -0,0 +1,26 @@ >+EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > SPAN > DIV > BODY > HTML > #document to 7 of #text > SPAN > DIV > BODY > HTML > #document >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+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 784x58 [border: (2px solid #FF0000)] >+ RenderInline {SPAN} at (0,0) size 72x28 >+ RenderText {#text} at (14,15) size 72x28 >+ text run at (14,15) width 72: "foo baz" >+ RenderText {#text} at (0,0) size 0x0 >+caret: position 3 of child 0 {#text} of child 1 {SPAN} of child 1 {DIV} of body >diff --git a/LayoutTests/platform/ios/editing/pasteboard/paste-2-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/paste-2-expected.txt >index e7e198fb1fc7f1a2447e1904278cd67382c5e4d7..b436b46debb3ac7a644d5791f43dcca467b9c897 100644 >--- a/LayoutTests/platform/ios/editing/pasteboard/paste-2-expected.txt >+++ b/LayoutTests/platform/ios/editing/pasteboard/paste-2-expected.txt >@@ -5,12 +5,11 @@ EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldDeleteDOMRange:range from 8 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification >-EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document givenAction:WebViewInsertActionPasted >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 8 of #text > BODY > HTML > #document to 8 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: shouldInsertNode:#document-fragment replacingDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document givenAction:WebViewInsertActionPasted >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 7 of #text > BODY > HTML > #document to 7 of #text > BODY > HTML > #document toDOMRange:range from 11 of #text > BODY > HTML > #document to 11 of #text > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-001-expected.png b/LayoutTests/platform/mac/editing/deleting/smart-delete-001-expected.png >deleted file mode 100644 >index 1a6a68fa846c72c601997101819f99d4e3ffdebb..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 33947 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 >C(fwEe > >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-001-expected.txt b/LayoutTests/platform/mac/editing/deleting/smart-delete-001-expected.txt >deleted file mode 100644 >index 7b3e9f18e17c4e11ff98a7d7df97b625d9f4a246..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/mac/editing/deleting/smart-delete-001-expected.txt >+++ /dev/null >@@ -1,36 +0,0 @@ >-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 4 of #text > DIV > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 784x212 [border: (2px solid #0000FF)] >- RenderBlock {DIV} at (14,14) size 756x56 >- RenderText {#text} at (0,0) size 66x28 >- text run at (0,0) width 66: "Tests: " >- RenderBR {BR} at (0,0) size 0x0 >- RenderText {#text} at (0,28) size 491x28 >- text run at (0,28) width 491: "Smart delete when deleting the first word on a line." >- RenderBlock {DIV} at (14,86) size 756x112 >- RenderText {#text} at (0,0) size 190x28 >- text run at (0,0) width 190: "Expected Results: " >- RenderBR {BR} at (189,22) size 1x0 >- RenderText {#text} at (0,28) size 706x56 >- text run at (0,28) width 706: "The first word and the space following the first word should be deleted. It" >- text run at (0,56) width 201: "should like this this: " >- RenderBR {BR} at (200,78) size 1x0 >- RenderText {#text} at (0,84) size 70x28 >- text run at (0,84) width 70: "bar baz" >- RenderBlock {DIV} at (0,236) size 784x32 >- RenderBlock {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] >- RenderText {#text} at (2,2) size 70x28 >- text run at (2,2) width 70: "bar baz" >-caret: position 0 of child 0 {#text} of child 1 {DIV} of child 3 {DIV} of body >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-002-expected.png b/LayoutTests/platform/mac/editing/deleting/smart-delete-002-expected.png >deleted file mode 100644 >index d3bbcbf4c58f5cba605116146398b296d172c74d..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 34121 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ⅈ3`Om2dJt&}I&CeW8%Dyo0 >zj1@8u&#eM08@d?QoUXj<sEq`RJP*NG*ZQCr8<*V@cSP*zFGN^uhn^DDjo-Luz_J)$ >zmkwNJy66DGG;#grH|zdtsquEgOCXMtVudCFHhIbprf?)+i}<7AJQU-rM)CoXVE8;y >zLcX$J2Z$w7Mk�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 >F@*hsU#8&_S > >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.png b/LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.png >deleted file mode 100644 >index 6f021102e69d6bad82955a0584c1d41f0848ee57..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 21649 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 > >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.txt b/LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.txt >deleted file mode 100644 >index 1293a17e3616a5b97ee12d35b97c49d047a21556..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/mac/editing/deleting/smart-delete-003-expected.txt >+++ /dev/null >@@ -1,29 +0,0 @@ >-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 {P} at (0,0) size 784x36 >- RenderText {#text} at (0,0) size 779x36 >- text run at (0,0) width 401: "This tests deleting a selection created with a word granularity. " >- text run at (400,0) width 353: "To run it manually, double click on 'bar' and hit delete. " >- text run at (752,0) width 27: "You" >- text run at (0,18) width 129: "should see 'foo baz'." >- RenderBlock {DIV} at (0,52) size 784x18 >- RenderText {#text} at (0,0) size 22x18 >- text run at (0,0) width 22: "foo" >- RenderText {#text} at (21,0) size 27x18 >- text run at (21,0) width 27: " baz" >-caret: position 3 of child 0 {#text} of child 2 {DIV} of body >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-004-expected.png b/LayoutTests/platform/mac/editing/deleting/smart-delete-004-expected.png >deleted file mode 100644 >index 48476df5b02ee4ce4892ed4ead561ba43589f33e..0000000000000000000000000000000000000000 >GIT binary patch >literal 0 >HcmV?d00001 > >literal 21908 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 > >diff --git a/LayoutTests/platform/mac/editing/deleting/smart-delete-004-expected.txt b/LayoutTests/platform/mac/editing/deleting/smart-delete-004-expected.txt >deleted file mode 100644 >index aba216322b438f95a4d73ad5ec7627cac8463532..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/mac/editing/deleting/smart-delete-004-expected.txt >+++ /dev/null >@@ -1,29 +0,0 @@ >-EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldDeleteDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >-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 {P} at (0,0) size 784x36 >- RenderText {#text} at (0,0) size 758x36 >- text run at (0,0) width 401: "This tests deleting a selection created with a word granularity. " >- text run at (400,0) width 358: "To run it manually, double click on 'bar' and hit forward" >- text run at (0,18) width 47: "delete. " >- text run at (46,18) width 159: "You should see 'foo baz'." >- RenderBlock {DIV} at (0,52) size 784x18 >- RenderText {#text} at (0,0) size 22x18 >- text run at (0,0) width 22: "foo" >- RenderText {#text} at (21,0) size 27x18 >- text run at (21,0) width 27: " baz" >-caret: position 3 of child 0 {#text} of child 2 {DIV} of body >diff --git a/LayoutTests/platform/win/editing/deleting/smart-delete-001-expected.txt b/LayoutTests/platform/win/editing/deleting/smart-delete-001-expected.txt >index c7204bf02934ee7a0f646630fef2201121b8de62..0ddff383729d307a2cfd070bcfb5c96a18108e87 100644 >--- a/LayoutTests/platform/win/editing/deleting/smart-delete-001-expected.txt >+++ b/LayoutTests/platform/win/editing/deleting/smart-delete-001-expected.txt >@@ -7,30 +7,10 @@ EDITING DELEGATE: shouldDeleteDOMRange:range from 1 of #text > DIV > DIV > BODY > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > 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 784x212 [border: (2px solid #0000FF)] >- RenderBlock {DIV} at (14,14) size 756x56 >- RenderText {#text} at (0,0) size 67x28 >- text run at (0,0) width 67: "Tests: " >- RenderBR {BR} at (0,0) size 0x0 >- RenderText {#text} at (0,28) size 498x28 >- text run at (0,28) width 498: "Smart delete when deleting the first word on a line." >- RenderBlock {DIV} at (14,86) size 756x112 >- RenderText {#text} at (0,0) size 189x28 >- text run at (0,0) width 189: "Expected Results: " >- RenderBR {BR} at (189,22) size 0x0 >- RenderText {#text} at (0,28) size 714x56 >- text run at (0,28) width 714: "The first word and the space following the first word should be deleted. It" >- text run at (0,56) width 202: "should like this this: " >- RenderBR {BR} at (202,78) size 0x0 >- RenderText {#text} at (0,84) size 71x28 >- text run at (0,84) width 71: "bar baz" >- RenderBlock {DIV} at (0,236) size 784x32 >- RenderBlock {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] >- RenderText {#text} at (2,2) size 71x28 >- text run at (2,2) width 71: "bar baz" >-caret: position 0 of child 0 {#text} of child 1 {DIV} of child 3 {DIV} of body >+Tests: >+Smart delete when deleting the first word on a line. >+Expected Results: >+The first word and the space following the first word should be deleted. It should like this this: >+bar baz >+bar baz >+execDeleteCommand: <div id="test" class="editing">bar baz </div> >diff --git a/LayoutTests/platform/win/editing/deleting/smart-delete-002-expected.txt b/LayoutTests/platform/win/editing/deleting/smart-delete-002-expected.txt >index 6b5a94ed14e2646c5e7baf876c80f9be0a744434..1b752f8487c1504271857a25cf8a20349874846b 100644 >--- a/LayoutTests/platform/win/editing/deleting/smart-delete-002-expected.txt >+++ b/LayoutTests/platform/win/editing/deleting/smart-delete-002-expected.txt >@@ -9,30 +9,10 @@ EDITING DELEGATE: shouldDeleteDOMRange:range from 5 of #text > DIV > DIV > BODY > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > 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 784x212 [border: (2px solid #0000FF)] >- RenderBlock {DIV} at (14,14) size 756x56 >- RenderText {#text} at (0,0) size 67x28 >- text run at (0,0) width 67: "Tests: " >- RenderBR {BR} at (0,0) size 0x0 >- RenderText {#text} at (0,28) size 522x28 >- text run at (0,28) width 522: "Smart delete when deleting the second word of a line." >- RenderBlock {DIV} at (14,86) size 756x112 >- RenderText {#text} at (0,0) size 189x28 >- text run at (0,0) width 189: "Expected Results: " >- RenderBR {BR} at (189,22) size 0x0 >- RenderText {#text} at (0,28) size 738x56 >- text run at (0,28) width 738: "The second word and the space before the second word should be deleted. It" >- text run at (0,56) width 202: "should like this this: " >- RenderBR {BR} at (202,78) size 0x0 >- RenderText {#text} at (0,84) size 72x28 >- text run at (0,84) width 72: "foo baz" >- RenderBlock {DIV} at (0,236) size 784x32 >- RenderBlock {DIV} at (0,0) size 784x32 [border: (2px solid #FF0000)] >- RenderText {#text} at (2,2) size 72x28 >- text run at (2,2) width 72: "foo baz" >-caret: position 4 of child 0 {#text} of child 1 {DIV} of child 3 {DIV} of body >+Tests: >+Smart delete when deleting the second word of a line. >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+foo baz >+execDeleteCommand: <div id="test" class="editing"> foo baz </div> >diff --git a/LayoutTests/platform/win/editing/deleting/smart-delete-003-expected.txt b/LayoutTests/platform/win/editing/deleting/smart-delete-003-expected.txt >index ebe381d02aca660340baa0aab5718ef6532cdcb6..a463c9d06cbbbb565a2cd3476fb56de65e086ae9 100644 >--- a/LayoutTests/platform/win/editing/deleting/smart-delete-003-expected.txt >+++ b/LayoutTests/platform/win/editing/deleting/smart-delete-003-expected.txt >@@ -1,6 +1,7 @@ > EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >@@ -10,20 +11,9 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > 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 {P} at (0,0) size 784x36 >- RenderText {#text} at (0,0) size 768x36 >- text run at (0,0) width 392: "This tests deleting a selection created with a word granularity. " >- text run at (392,0) width 348: "To run it manually, double click on 'bar' and hit delete. " >- text run at (740,0) width 28: "You" >- text run at (0,18) width 127: "should see 'foo baz'." >- RenderBlock {DIV} at (0,52) size 784x18 >- RenderText {#text} at (0,0) size 21x18 >- text run at (0,0) width 21: "foo" >- RenderText {#text} at (21,0) size 26x18 >- text run at (21,0) width 26: " baz" >-caret: position 3 of child 0 {#text} of child 2 {DIV} of body >+This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit delete. You should see 'foo baz'. >+ >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+fooà baz >diff --git a/LayoutTests/platform/win/editing/deleting/smart-delete-004-expected.txt b/LayoutTests/platform/win/editing/deleting/smart-delete-004-expected.txt >index f99845127d4847e2fe8d98ed8645dd8f3a54688c..4cf97164caef04faf964ef7fea020e3319fa7d94 100644 >--- a/LayoutTests/platform/win/editing/deleting/smart-delete-004-expected.txt >+++ b/LayoutTests/platform/win/editing/deleting/smart-delete-004-expected.txt >@@ -1,6 +1,7 @@ > EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document > EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification >-EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE >+EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >+EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > DIV > BODY > HTML > #document to 5 of #text > DIV > BODY > HTML > #document toDOMRange:range from 4 of #text > DIV > BODY > HTML > #document to 1 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification >@@ -10,20 +11,9 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio > EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 0 of #text > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > DIV > BODY > HTML > #document to 3 of #text > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE > EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification > 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 {P} at (0,0) size 784x36 >- RenderText {#text} at (0,0) size 745x36 >- text run at (0,0) width 392: "This tests deleting a selection created with a word granularity. " >- text run at (392,0) width 353: "To run it manually, double click on 'bar' and hit forward" >- text run at (0,18) width 45: "delete. " >- text run at (45,18) width 159: "You should see 'foo baz'." >- RenderBlock {DIV} at (0,52) size 784x18 >- RenderText {#text} at (0,0) size 21x18 >- text run at (0,0) width 21: "foo" >- RenderText {#text} at (21,0) size 26x18 >- text run at (21,0) width 26: " baz" >-caret: position 3 of child 0 {#text} of child 2 {DIV} of body >+This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit forward delete. You should see 'foo baz'. >+ >+Expected Results: >+The second word and the space before the second word should be deleted. It should like this this: >+foo baz >+fooà baz >diff --git a/LayoutTests/resources/ui-helper.js b/LayoutTests/resources/ui-helper.js >index ef93f3cb48ade96490e3b78b646aef398873098c..f7b114e47449da95f990ebd391f6e68802691c5f 100644 >--- a/LayoutTests/resources/ui-helper.js >+++ b/LayoutTests/resources/ui-helper.js >@@ -124,13 +124,38 @@ window.UIHelper = class UIHelper { > return UIHelper.activateAt(x, y); > } > >+ static async doubleActivateAt(x, y) >+ { >+ if (this.isIOS()) { >+ await UIHelper.doubleTapAt(x, y); >+ } else { >+ await UIHelper.doubleClickAt(x, y); >+ } >+ } >+ >+ static async doubleActivateAtSelectionStart() >+ { >+ var rects = window.getSelection().getRangeAt(0).getClientRects(); >+ var x = rects[0].left; >+ var y = rects[0].top; >+ if (this.isIOS()) { >+ await UIHelper.activateAndWaitForInputSessionAt(x, y); >+ await UIHelper.doubleTapAt(x, y); >+ // This is only here to deal with async/sync copy/paste calls, so >+ // once <rdar://problem/16207002> is resolved, should be able to remove for faster tests. >+ await new Promise(resolve => testRunner.runUIScript("uiController.uiScriptComplete()", resolve)); >+ } else { >+ await UIHelper.doubleClickAt(x, y); >+ } >+ } >+ > static async selectWordByDoubleTapOrClick(element, relativeX = 5, relativeY = 5) > { > const boundingRect = element.getBoundingClientRect(); > const x = boundingRect.x + relativeX; > const y = boundingRect.y + relativeY; > if (this.isIOS()) { >- await UIHelper.tapAt(x, y); >+ await UIHelper.activateAndWaitForInputSessionAt(x, y); > await UIHelper.doubleTapAt(x, y); > // This is only here to deal with async/sync copy/paste calls, so > // once <rdar://problem/16207002> is resolved, should be able to remove for faster tests.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
ews-watchlist
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194320
:
361247
|
361269
|
361725
|
361728
|
361753
|
361816
|
361821
|
361823
|
361831
|
361834
|
361858
|
361867
|
361877
|
361887
|
361888
|
361949
|
361960
|
361968
|
361975
|
361977
|
362003
|
362018
|
362032
|
362035
|
362077
|
362082
|
362087
|
362088
|
362112
|
362116
|
362121
|
362125
|
362130
|
362131
|
362132
|
362142
|
362145
|
362150
|
362151
|
362183
|
362298