[Chromium] Layout test does not return correct misspelling positions if there are...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Nov 2011 06:28:06 +0000 (06:28 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Nov 2011 06:28:06 +0000 (06:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=72655

Patch by Shinya Kawanaka <shinyak@google.com> on 2011-11-20
Reviewed by Hajime Morita.

Tools:

Fixed the calculation of offset.

* DumpRenderTree/chromium/WebViewHost.cpp:
(WebViewHost::finishLastTextCheck):

LayoutTests:

Fixed the calculation of offset, and added test cases having multiple misspelled words.

* editing/spelling/script-tests/spellcheck-paste.js:
  Added test cases having multiple misspelled words.
(verifyMarker):
(tests):
* editing/spelling/spellcheck-paste-expected.txt: Recreated.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@100887 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/editing/spelling/script-tests/spellcheck-paste.js
LayoutTests/editing/spelling/spellcheck-paste-expected.txt
Tools/ChangeLog
Tools/DumpRenderTree/chromium/WebViewHost.cpp

index b28b7a7c4ce0efcd4d966c72fae0b47b9404f71a..69a860b13bc988958e759c2f8860f5273c31bf44 100644 (file)
@@ -1,3 +1,18 @@
+2011-11-20  Shinya Kawanaka  <shinyak@google.com>
+
+        [Chromium] Layout test does not return correct misspelling positions if there are multiple misspelled words.
+        https://bugs.webkit.org/show_bug.cgi?id=72655
+
+        Reviewed by Hajime Morita.
+
+        Fixed the calculation of offset, and added test cases having multiple misspelled words.
+
+        * editing/spelling/script-tests/spellcheck-paste.js:
+          Added test cases having multiple misspelled words.
+        (verifyMarker):
+        (tests):
+        * editing/spelling/spellcheck-paste-expected.txt: Recreated.
+
 2011-11-20  Kenichi Ishibashi  <bashi@chromium.org>
 
         [Chromium] Remove old getFontFamilyForCharacters() and familyForChars() APIs.
index 013d2b0946c11c363009be8d37815fac17157a0b..797fe9b8c4d40ee709522dd0b7954659be6f3782 100644 (file)
@@ -25,6 +25,10 @@ var testSourceDecorated = document.createElement("div");
 testSourceDecorated.innerHTML = "fo<b>o ba</b>r";
 testRoot.appendChild(testSourceDecorated);
 
+var testSourceMulti = document.createElement("div");
+testSourceMulti.innerHTML = "zz zz zz";
+testRoot.appendChild(testSourceMulti);
+
 var sel = window.getSelection();
 
 var tests = [];
@@ -45,7 +49,11 @@ function verifyMarker(node, expectedMarked)
     } else {
         sel.selectAllChildren(node);
     }
-    return layoutTestController.hasSpellingMarker(expectedMarked[0], expectedMarked[1]);
+
+    var ok = true;
+    for (var i = 0; ok && i < expectedMarked.length; ++i)
+        ok = layoutTestController.hasSpellingMarker(expectedMarked[i][0], expectedMarked[i][1]);
+    return ok;
 }
 
 function pasteAndVerify(source, dest, expectedMarked)
@@ -87,12 +95,15 @@ function pasteAndVerify(source, dest, expectedMarked)
 if (window.layoutTestController)
     layoutTestController.setAsynchronousSpellCheckingEnabled(true);
 
-tests.push(function() { pasteAndVerify(testSourcePlain, testInput, [0, 3]); });
-tests.push(function() { pasteAndVerify(testSourceDecorated, testInput, [0, 3]); });
-tests.push(function() { pasteAndVerify(testSourcePlain, testTextArea, [0, 3]); });
-tests.push(function() { pasteAndVerify(testSourceDecorated, testTextArea, [0, 3]); });
-tests.push(function() { pasteAndVerify(testSourcePlain, testEditable, [0, 3]); });
-tests.push(function() { pasteAndVerify(testSourceDecorated, testEditable, [0, 2]); }); // To check "fo" part of foo.
+tests.push(function() { pasteAndVerify(testSourcePlain, testInput, [[0, 3]]); });
+tests.push(function() { pasteAndVerify(testSourceDecorated, testInput, [[0, 3]]); });
+tests.push(function() { pasteAndVerify(testSourceMulti, testInput, [[0, 2], [3, 2]]); });
+tests.push(function() { pasteAndVerify(testSourcePlain, testTextArea, [[0, 3]]); });
+tests.push(function() { pasteAndVerify(testSourceDecorated, testTextArea, [[0, 3]]); });
+tests.push(function() { pasteAndVerify(testSourceMulti, testTextArea, [[0, 2], [3, 2]]); });
+tests.push(function() { pasteAndVerify(testSourcePlain, testEditable, [[0, 3]]); });
+tests.push(function() { pasteAndVerify(testSourceDecorated, testEditable, [[0, 2]]); }); // To check "fo" part of foo.
+tests.push(function() { pasteAndVerify(testSourceMulti, testEditable, [[0, 2], [3, 2]]); });
 done();
 
 var successfullyParsed = true;
index ee3a8730b52f24ec445bbeea4235f4fd588a1bb6..591f09217b085f8ea858a5adc0952f763b3897bb 100644 (file)
@@ -8,8 +8,11 @@ PASS successfullyParsed is true
 TEST COMPLETE
 PASS INPUT has a marker on 'foo bar'
 PASS INPUT has a marker on 'fo<b>o ba</b>r'
+PASS INPUT has a marker on 'zz zz zz'
 PASS TEXTAREA has a marker on 'foo bar'
 PASS TEXTAREA has a marker on 'fo<b>o ba</b>r'
+PASS TEXTAREA has a marker on 'zz zz zz'
 PASS DIV has a marker on 'foo bar'
 PASS DIV has a marker on 'fo<b>o ba</b>r'
+PASS DIV has a marker on 'zz zz zz'
 
index 0cf692f6796d1eb712860018ee68f3a84abdb970..a7f97d7a1f7180d7d9ba529774abd5f80742de28 100644 (file)
@@ -1,3 +1,15 @@
+2011-11-20  Shinya Kawanaka  <shinyak@google.com>
+
+        [Chromium] Layout test does not return correct misspelling positions if there are multiple misspelled words.
+        https://bugs.webkit.org/show_bug.cgi?id=72655
+
+        Reviewed by Hajime Morita.
+
+        Fixed the calculation of offset.
+
+        * DumpRenderTree/chromium/WebViewHost.cpp:
+        (WebViewHost::finishLastTextCheck):
+
 2011-11-20  Ojan Vafai  <ojan@chromium.org>
 
         Change the final place where we use version 3 of the results json output
index 75b79cefc7fda954f0f80bdd671a11cf82603ae1..70bbdd5324eec452f826c0692447ef411988a2f0 100644 (file)
@@ -458,7 +458,7 @@ void WebViewHost::finishLastTextCheck()
             break;
         results.append(WebTextCheckingResult(WebTextCheckingResult::ErrorSpelling, offset + misspelledPosition, misspelledLength));
         text = text.substring(misspelledPosition + misspelledLength);
-        offset += misspelledPosition;
+        offset += misspelledPosition + misspelledLength;
     }
 
     m_lastRequestedTextCheckingCompletion->didFinishCheckingText(results);