Issue 111032

Summary: sc/qa/unoapi sc.ScAccessibleCell::com::sun::star::accessibility::XAccessibleText getCharacterBounds() failure
Product: Calc Reporter: Stephan Bergmann <stephan.bergmann.secondary>
Component: codeAssignee: AOO issues mailing list <issues>
Status: CONFIRMED --- QA Contact:
Severity: Trivial    
Priority: P3 CC: issues
Version: DEV300m76   
Target Milestone: ---   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description Stephan Bergmann 2010-04-21 09:32:41 UTC
Executing sc/qa/unoapi on DEV300_m76-based CWS sb120 (mainly making changes to
the testing framework) on one machine (Hamburg macmini-dev) always fails with
the below log, while that specific test does not fail for me on any other
machines (even other Macs; maybe it is a problem of installed fonts).  (On that
machine, I initially used a small 800x600 display, but the problem persisted for
a much larger display of 1680x1050.)

The problem appears to be that the Y=-1 of all the character bounding rectangles
is outside the bounds of the component (only starting at Y=0).  The relevant
code at editeng/source/accessibility/AccessibleStaticTextBase.cxx in
AccessibleStaticTextBase::getCharacterBounds obtains aParaBounds of
(X=0,Y=-1,W=74,H=12) with the problematic Y=-1.  (Whether the unoapi test code
is at all correct in checking that the character bounds are completely within
the component bounds is not known to me.)

 checking: [sc.ScAccessibleCell::com::sun::star::accessibility::XAccessibleText]
is iface: [com.sun.star.accessibility.XAccessibleText] testcode:
[ifc.accessibility._XAccessibleText]
 [...]
 LOG> Execute: getCharacterBounds()
 LOG> starting required method: getCharacterCount()
 LOG> getCharacterBounds(-1)
 LOG> Expected exception
 LOG> getCharacterBounds(16)
 LOG> Expected exception
 LOG> getCharacterBounds(0)
 LOG> Text at this place: X
 LOG> Character bounds outside component
 LOG> Character rect: 0, -1, 8, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(1)
 LOG> Text at this place: A
 LOG> Character bounds outside component
 LOG> Character rect: 7, -1, 7, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(2)
 LOG> Text at this place: c
 LOG> Character bounds outside component
 LOG> Character rect: 13, -1, 6, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(3)
 LOG> Text at this place: c
 LOG> Character bounds outside component
 LOG> Character rect: 18, -1, 6, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(4)
 LOG> Text at this place: e
 LOG> Character bounds outside component
 LOG> Character rect: 23, -1, 7, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(5)
 LOG> Text at this place: s
 LOG> Character bounds outside component
 LOG> Character rect: 29, -1, 6, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(6)
 LOG> Text at this place: s
 LOG> Character bounds outside component
 LOG> Character rect: 34, -1, 6, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(7)
 LOG> Text at this place: i
 LOG> Character bounds outside component
 LOG> Character rect: 39, -1, 3, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(8)
 LOG> Text at this place: b
 LOG> Character bounds outside component
 LOG> Character rect: 41, -1, 7, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(9)
 LOG> Text at this place: l
 LOG> Character bounds outside component
 LOG> Character rect: 47, -1, 3, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(10)
 LOG> Text at this place: e
 LOG> Character bounds outside component
 LOG> Character rect: 49, -1, 7, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(11)
 LOG> Text at this place: T
 LOG> Character bounds outside component
 LOG> Character rect: 55, -1, 5, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(12)
 LOG> Text at this place: e
 LOG> Character bounds outside component
 LOG> Character rect: 59, -1, 7, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(13)
 LOG> Text at this place: x
 LOG> Character bounds outside component
 LOG> Character rect: 65, -1, 6, 12
 LOG> Component rect: 64, 0, 80, 11
 LOG> getCharacterBounds(14)
 LOG> Text at this place: t
 LOG> Character bounds outside component
 LOG> Character rect: 70, -1, 4, 12
 LOG> Component rect: 64, 0, 80, 11
 Method getCharacterBounds() finished with state FAILED
 LOG> getCharacterBounds(): PASSED.FAILED
Comment 1 Stephan Bergmann 2010-04-21 11:13:59 UTC
worked around for now by disabling the affected test in
sc/qa/unoapi/knownissues.xcl, see
<http://hg.services.openoffice.org/cws/sb120/rev/1852a17b4092>; please revert
when fixing this issue