Title: [99770] trunk
Revision
99770
Author
dmazz...@google.com
Date
2011-11-09 15:28:12 -0800 (Wed, 09 Nov 2011)

Log Message

Source/WebKit/chromium: Fix crash by handling case when AccessibilityObject::lineForPosition
returns -1.
https://bugs.webkit.org/show_bug.cgi?id=71561

Adds layout test: platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html

Reviewed by Dimitri Glazkov.

* src/WebAccessibilityObject.cpp:
(WebKit::WebAccessibilityObject::lineBreaks):

Tools: [Chromium] Implement AccessibilityUIElement::insertionPointLineNumberGetterCallback
https://bugs.webkit.org/show_bug.cgi?id=71561

Reviewed by Dimitri Glazkov.

* DumpRenderTree/chromium/AccessibilityUIElement.cpp:
(AccessibilityUIElement::insertionPointLineNumberGetterCallback):

LayoutTests: [Chromium] Add new test for crash in WebAccessibilityObject::lineBreaks
https://bugs.webkit.org/show_bug.cgi?id=71561

Reviewed by Dimitri Glazkov.

* platform/chromium/accessibility/insertion-point-line-number-on-password-crashes-expected.txt: Added.
* platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (99769 => 99770)


--- trunk/LayoutTests/ChangeLog	2011-11-09 23:27:51 UTC (rev 99769)
+++ trunk/LayoutTests/ChangeLog	2011-11-09 23:28:12 UTC (rev 99770)
@@ -1,3 +1,13 @@
+2011-11-09  Dominic Mazzoni  <dmazz...@google.com>
+
+        [Chromium] Add new test for crash in WebAccessibilityObject::lineBreaks
+        https://bugs.webkit.org/show_bug.cgi?id=71561
+
+        Reviewed by Dimitri Glazkov.
+
+        * platform/chromium/accessibility/insertion-point-line-number-on-password-crashes-expected.txt: Added.
+        * platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html: Added.
+
 2011-11-09  Benjamin Poulain  <bpoul...@apple.com>
 
         Implement dumpProgressFinishedCallback() for Mac layoutTestController

Added: trunk/LayoutTests/platform/chromium/accessibility/insertion-point-line-number-on-password-crashes-expected.txt (0 => 99770)


--- trunk/LayoutTests/platform/chromium/accessibility/insertion-point-line-number-on-password-crashes-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/chromium/accessibility/insertion-point-line-number-on-password-crashes-expected.txt	2011-11-09 23:28:12 UTC (rev 99770)
@@ -0,0 +1,2 @@
+Line number for password element: 0
+

Added: trunk/LayoutTests/platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html (0 => 99770)


--- trunk/LayoutTests/platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html	                        (rev 0)
+++ trunk/LayoutTests/platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html	2011-11-09 23:28:12 UTC (rev 99770)
@@ -0,0 +1,25 @@
+<html>
+<script>
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+</script>
+<body>
+
+    <div id="result"></div>
+
+    <input type="password" id="password">
+
+    <script>
+        if (window.accessibilityController) {
+            var result = document.getElementById("result");
+
+            var password = document.getElementById("password");
+            password.focus();
+
+            // Make sure this doesn't crash.
+            lineNumber = accessibilityController.focusedElement.insertionPointLineNumber;
+            result.innerText += "Line number for password element: " + lineNumber + "\n";
+        }
+    </script>
+</body>
+</html>

Modified: trunk/Source/WebKit/chromium/ChangeLog (99769 => 99770)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-11-09 23:27:51 UTC (rev 99769)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-11-09 23:28:12 UTC (rev 99770)
@@ -1,3 +1,16 @@
+2011-11-09  Dominic Mazzoni  <dmazz...@google.com>
+
+        Fix crash by handling case when AccessibilityObject::lineForPosition
+        returns -1.
+        https://bugs.webkit.org/show_bug.cgi?id=71561
+
+        Adds layout test: platform/chromium/accessibility/insertion-point-line-number-on-password-crashes.html
+
+        Reviewed by Dimitri Glazkov.
+
+        * src/WebAccessibilityObject.cpp:
+        (WebKit::WebAccessibilityObject::lineBreaks):
+
 2011-11-09  Jay Civelli  <jcive...@chromium.org>
 
         Fix MHTML generation to use the QuotedPrintable encoding for text resources.

Modified: trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp (99769 => 99770)


--- trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp	2011-11-09 23:27:51 UTC (rev 99769)
+++ trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp	2011-11-09 23:28:12 UTC (rev 99770)
@@ -771,7 +771,7 @@
 
     VisiblePosition pos = m_private->visiblePositionForIndex(textLength);
     int lineBreakCount = m_private->lineForPosition(pos);
-    if (!lineBreakCount)
+    if (lineBreakCount <= 0)
         return false;
 
     WebVector<int> lineBreaks(static_cast<size_t>(lineBreakCount));

Modified: trunk/Tools/ChangeLog (99769 => 99770)


--- trunk/Tools/ChangeLog	2011-11-09 23:27:51 UTC (rev 99769)
+++ trunk/Tools/ChangeLog	2011-11-09 23:28:12 UTC (rev 99770)
@@ -1,3 +1,13 @@
+2011-11-09  Dominic Mazzoni  <dmazz...@google.com>
+
+        [Chromium] Implement AccessibilityUIElement::insertionPointLineNumberGetterCallback
+        https://bugs.webkit.org/show_bug.cgi?id=71561
+
+        Reviewed by Dimitri Glazkov.
+
+        * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
+        (AccessibilityUIElement::insertionPointLineNumberGetterCallback):
+
 2011-11-09  Benjamin Poulain  <bpoul...@apple.com>
 
         Implement dumpProgressFinishedCallback() for Mac layoutTestController

Modified: trunk/Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp (99769 => 99770)


--- trunk/Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp	2011-11-09 23:27:51 UTC (rev 99769)
+++ trunk/Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp	2011-11-09 23:28:12 UTC (rev 99770)
@@ -453,8 +453,13 @@
 
 void AccessibilityUIElement::insertionPointLineNumberGetterCallback(CppVariant* result)
 {
-    // FIXME: Implement this.
-    result->set(0);
+    WebVector<int> lineBreaks;
+    accessibilityObject().lineBreaks(lineBreaks);
+    int cursor = accessibilityObject().selectionEnd();
+    int line = 0;
+    while (line < static_cast<int>(lineBreaks.size()) && lineBreaks[line] <= cursor)
+        line++;
+    result->set(line);
 }
 
 void AccessibilityUIElement::selectedTextRangeGetterCallback(CppVariant* result)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to