Re: [orca-list] Orca, Firefox/Gecko and the LONGDESC attribute



Just checking that you did install the longdesc plugin module?

At least in Fedora it's not there by default, and you have to go get it
via the FF plugins/addons mechanism.

Janina

Jason White writes:
In response to a discussion on another mailing list, I tested Orca 2.30.2 and
Firefox 3.6.10 (Debian Iceweasel package from Experimental) with the following
test page (thanks to Leif Halvard Silli):
http://malform.no/testing/longdesc/img longdesc html

Orca didn't seem to recognize the LONGDESC attribute. To find out whether the
presence of the attribute was actually being disclosed in the accessibility
API events, I obtained debug logs. While not being an expert in reading these,
I didn't find anything that seemed to correspond to the LONGDESC attribute. On
the other hand, the logs tend to be lengthy.

Sample logs are attached. This could well be a Mozilla issue rather tahn an
Orca one.


vvvvv PROCESS OBJECT EVENT object:property-change:accessible-name vvvvv
OBJECT EVENT: object:property-change:accessible-name   detail=(0,0)
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
sensitive' relations=''
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-name ^^^^^

DEQUEUED EVENT object:state-changed:busy <----------

vvvvv PROCESS OBJECT EVENT object:state-changed:busy vvvvv
OBJECT EVENT: object:state-changed:busy                detail=(0,0)
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
sensitive' relations=''
BRAILLE LINE:  'Finished loading   Longdesc   attribute test..'
     VISIBLE:  'Finished loading   Longdesc   attribute ', cursor=0
SPEECH OUTPUT: 'Finished loading   Longdesc   attribute test..'
---------> QUEUEING EVENT object:property-change:accessible-name
^^^^^ PROCESS OBJECT EVENT object:state-changed:busy ^^^^^

DEQUEUED EVENT document:load-complete <----------

vvvvv PROCESS OBJECT EVENT document:load-complete vvvvv
OBJECT EVENT: document:load-complete                   detail=(0,0)
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
sensitive' relations=''
^^^^^ PROCESS OBJECT EVENT document:load-complete ^^^^^

DEQUEUED EVENT object:property-change:accessible-name <----------

vvvvv PROCESS OBJECT EVENT object:property-change:accessible-name vvvvv
OBJECT EVENT: object:property-change:accessible-name   detail=(0,0)
    app.name='Iceweasel' name='  Longdesc   attribute test. - Iceweasel' role='frame' state='active enabled 
horizontal opaque resizable sensitive showing visible' relations='node child of'
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-name ^^^^^

---------> QUEUEING EVENT object:property-change:accessible-value
DEQUEUED EVENT object:property-change:accessible-value <----------

vvvvv PROCESS OBJECT EVENT object:property-change:accessible-value vvvvv
OBJECT EVENT: object:property-change:accessible-value  detail=(0,0)
    app.name='Iceweasel' name='None' role='progress bar' state='enabled horizontal opaque sensitive showing 
visible' relations=''
generate speech for app.name='Iceweasel' name='None' role='progress bar' state='enabled horizontal opaque 
sensitive showing visible' relations='' (args={'formatType': 'focused', 'useDefaultFormatting': False, 
'role': ROLE_PROGRESS_BAR, 'mode': 'speech', 'alreadyFocused': True, 'recursing': True}) using '[] + 
percentage + []'
percentage=['50 percent']
generate speech results:
  50 percent
SPEECH OUTPUT: '50 percent'
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-value ^^^^^

---------> QUEUEING EVENT object:property-change:accessible-value
DEQUEUED EVENT object:property-change:accessible-value <----------

vvvvv PROCESS OBJECT EVENT object:property-change:accessible-value vvvvv
OBJECT EVENT: object:property-change:accessible-value  detail=(0,0)
    app.name='Iceweasel' name='None' role='progress bar' state='enabled horizontal opaque sensitive showing 
visible' relations=''
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-value ^^^^^

---------> QUEUEING EVENT focus:
DEQUEUED EVENT focus: <----------

vvvvv PROCESS OBJECT EVENT focus: vvvvv
OBJECT EVENT: focus:                                   detail=(0,0)
---------> QUEUEING EVENT object:state-changed:focused
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
focused horizontal opaque sensitive showing visible' relations='node child of'
LOCUS OF FOCUS: app='Iceweasel' name='' role='paragraph'
                event='focus:'
Object deemed to be useless: [paragraph | ]
BRAILLE LINE:  'A quote about use of longdesc:'
     VISIBLE:  'A quote about use of longdesc:', cursor=1
generate speech for app.name='Iceweasel' name='None' role='paragraph' state='enabled horizontal opaque 
sensitive showing visible' relations='' (args={'formatType': 'unfocused', 'useDefaultFormatting': False, 
'priorObj': <CORBA.Object 'IDL:Accessibility/Accessible:1.0' at 0x1d509e0>, 'role': ROLE_PARAGRAPH, 'mode': 
'speech', 'recursing': True}) using 'newAncestors + newRowHeader + newColumnHeader + newRadioButtonGroup + 
labelOrName + readOnly + textRole + currentLineText + allTextSelection + (mnemonic and (pause + mnemonic + 
lineBreak) or []) + newNodeLevel + unselectedCell + (tutorial and (pause + tutorial) or [])'
default.findCommonAncestor...
...default.findCommonAncestor
newAncestors=[]
newRowHeader=[]
newColumnHeader=[]
newRadioButtonGroup=[]
labelOrName=[]
Gecko.script.py:isReadOnlyTextArea=False for app.name='Iceweasel' name='None' role='paragraph' 
state='enabled horizontal opaque sensitive showing visible' relations=''
readOnly=[]
textRole=[]
currentLineText=['A quote about use of longdesc: \n']
allTextSelection=[]
mnemonic=[]
getNodeLevel - obj is defunct

  File "<string>", line 1, in <module>
  File "/usr/lib/pymodules/python2.6/orca/orca.py", line 1777, in main
    start(pyatspi.Registry) # waits until we stop the registry
  File "/usr/lib/pymodules/python2.6/orca/orca.py", line 1321, in start
    registry.start(gil=settings.useGILIdleHandler)
  File "/usr/lib/pymodules/python2.6/pyatspi/registry.py", line 364, in start
    bonobo.main()
  File "/usr/lib/pymodules/python2.6/orca/focus_tracking_presenter.py", line 931, in _dequeueEvent
    self._processObjectEvent(event)
  File "/usr/lib/pymodules/python2.6/orca/focus_tracking_presenter.py", line 709, in _processObjectEvent
    s.processObjectEvent(event)
  File "/usr/lib/pymodules/python2.6/orca/script.py", line 370, in processObjectEvent
    self.listeners[key](event)
  File "/usr/lib/pymodules/python2.6/orca/scripts/toolkits/Gecko/script.py", line 1819, in onFocus
    orca.setLocusOfFocus(event, obj)
  File "/usr/lib/pymodules/python2.6/orca/orca.py", line 263, in setLocusOfFocus
    orca_state.locusOfFocus)
  File "/usr/lib/pymodules/python2.6/orca/focus_tracking_presenter.py", line 1034, in locusOfFocusChanged
    newLocusOfFocus)
  File "/usr/lib/pymodules/python2.6/orca/scripts/toolkits/Gecko/script.py", line 2234, in 
locusOfFocusChanged
    newLocusOfFocus)
  File "/usr/lib/pymodules/python2.6/orca/default.py", line 3042, in locusOfFocusChanged
    priorObj=oldLocusOfFocus)
  File "/usr/lib/pymodules/python2.6/orca/scripts/toolkits/Gecko/speech_generator.py", line 510, in 
generateSpeech
    generateSpeech(self, obj, **args))
  File "/usr/lib/pymodules/python2.6/orca/speech_generator.py", line 101, in generateSpeech
    return self.generate(obj, **args)
  File "/usr/lib/pymodules/python2.6/orca/generator.py", line 247, in generate
    globalsDict[arg] = self._methodsDict[arg](obj, **args)
  File "/usr/lib/pymodules/python2.6/orca/speech_generator.py", line 906, in _generateNewNodeLevel
    oldLevel = self._script.getNodeLevel(args.get('priorObj', None))
  File "/usr/lib/pymodules/python2.6/orca/scripts/toolkits/Gecko/script.py", line 3852, in getNodeLevel
    debug.printStack(debug.LEVEL_WARNING)
  File "/usr/lib/pymodules/python2.6/orca/debug.py", line 136, in printStack
    traceback.print_stack(None, 100, debugFile)

newNodeLevel=[]
unselectedCell=[]
tutorial=[]
generate speech results:
  A quote about use of longdesc: 

SPEECH OUTPUT: 'A quote about use of longdesc: 
'
^^^^^ PROCESS OBJECT EVENT focus: ^^^^^

DEQUEUED EVENT object:state-changed:focused <----------

vvvvv PROCESS OBJECT EVENT object:state-changed:focused vvvvv
OBJECT EVENT: object:state-changed:focused             detail=(1,0)
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
focused horizontal opaque sensitive showing visible' relations='node child of'
Finding top-level object for source.name=  Longdesc   attribute test.
--> obj.name=
--> obj.name=
--> obj.name=
--> obj.name=  Longdesc   attribute test. - Iceweasel
^^^^^ PROCESS OBJECT EVENT object:state-changed:focused ^^^^^

---------> QUEUEING EVENT object:text-changed:delete:system
DEQUEUED EVENT object:text-changed:delete:system <----------

vvvvv PROCESS OBJECT EVENT object:text-changed:delete:system vvvvv
OBJECT EVENT: object:text-changed:delete:system        detail=(0,1)
---------> QUEUEING EVENT object:text-changed:insert:system
---------> QUEUEING EVENT object:children-changed:add:system
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
focused horizontal opaque sensitive showing visible' relations='node child of'
^^^^^ PROCESS OBJECT EVENT object:text-changed:delete:system ^^^^^

DEQUEUED EVENT object:text-changed:insert:system <----------

vvvvv PROCESS OBJECT EVENT object:text-changed:insert:system vvvvv
OBJECT EVENT: object:text-changed:insert:system        detail=(0,1)
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
focused horizontal opaque sensitive showing visible' relations='node child of'
^^^^^ PROCESS OBJECT EVENT object:text-changed:insert:system ^^^^^

DEQUEUED EVENT object:children-changed:add:system <----------

vvvvv PROCESS OBJECT EVENT object:children-changed:add:system vvvvv
OBJECT EVENT: object:children-changed:add:system       detail=(0,0)
    app.name='Iceweasel' name='  Longdesc   attribute test.' role='document frame' state='enabled focusable 
focused horizontal opaque sensitive showing visible' relations='node child of'
^^^^^ PROCESS OBJECT EVENT object:children-changed:add:system ^^^^^

---------> QUEUEING EVENT object:property-change:accessible-value
DEQUEUED EVENT object:property-change:accessible-value <----------

vvvvv PROCESS OBJECT EVENT object:property-change:accessible-value vvvvv
OBJECT EVENT: object:property-change:accessible-value  detail=(0,0)
    app.name='Iceweasel' name='None' role='progress bar' state='enabled horizontal opaque sensitive showing 
visible' relations=''
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-value ^^^^^

---------> QUEUEING EVENT object:property-change:accessible-value
DEQUEUED EVENT object:property-change:accessible-value <----------

vvvvv PROCESS OBJECT EVENT object:property-change:accessible-value vvvvv
OBJECT EVENT: object:property-change:accessible-value  detail=(0,0)
    app.name='Iceweasel' name='None' role='progress bar' state='enabled horizontal opaque sensitive showing 
visible' relations=''
generate speech for app.name='Iceweasel' name='None' role='progress bar' state='enabled horizontal opaque 
sensitive showing visible' relations='' (args={'formatType': 'focused', 'useDefaultFormatting': False, 
'role': ROLE_PROGRESS_BAR, 'mode': 'speech', 'alreadyFocused': True, 'recursing': True}) using '[] + 
percentage + []'
percentage=['100 percent']
generate speech results:
  100 percent
SPEECH OUTPUT: '100 percent'
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-value ^^^^^

KEYEVENT: type=0
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17104813
          time=1286935787.861030
orca.keyEcho: string to echo: Down
orca.isModifierKey: returning: False
----------> QUEUEING KEYPRESS 'Down' (116)
DEQUEUED KEYPRESS 'Down' (116) <----------

vvvvv PROCESS KEY PRESS EVENT Down vvvvv
---------> QUEUEING EVENT object:property-change:accessible-name
LOCUS OF FOCUS: app='Iceweasel' name='' role='paragraph'
                event=None
---------> QUEUEING EVENT object:text-caret-moved
SPEECH OUTPUT: 'A quote about use of longdesc: 
'
BRAILLE LINE:  'A quote about use of longdesc:'
     VISIBLE:  'A quote about use of longdesc:', cursor=1

^^^^^ PROCESS KEY PRESS EVENT Down ^^^^^
DEQUEUED EVENT object:property-change:accessible-name <----------

vvvvv PROCESS OBJECT EVENT object:property-change:accessible-name vvvvv
OBJECT EVENT: object:property-change:accessible-name   detail=(0,0)
    app.name='Iceweasel' name='Something to keep in mind for the examples is that charts and graphs are not 
usually interchangeable with data tables so they don't usually make good long descriptions.' role='image' 
state='enabled horizontal opaque sensitive showing visible' relations=''
^^^^^ PROCESS OBJECT EVENT object:property-change:accessible-name ^^^^^

DEQUEUED EVENT object:text-caret-moved <----------

vvvvv PROCESS OBJECT EVENT object:text-caret-moved vvvvv
OBJECT EVENT: object:text-caret-moved                  detail=(0,0)
    app.name='Iceweasel' name='None' role='paragraph' state='enabled horizontal opaque sensitive showing 
visible' relations=''
^^^^^ PROCESS OBJECT EVENT object:text-caret-moved ^^^^^

KEYEVENT: type=1
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17104893
          time=1286935787.940664
orca.isModifierKey: returning: False
----------> QUEUEING KEYRELEASE 'Down' (116)
DEQUEUED KEYRELEASE 'Down' (116) <----------

vvvvv PROCESS KEY RELEASE EVENT Down vvvvv

^^^^^ PROCESS KEY RELEASE EVENT Down ^^^^^
KEYEVENT: type=0
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17105693
          time=1286935788.740769
orca.keyEcho: string to echo: Down
orca.isModifierKey: returning: False
----------> QUEUEING KEYPRESS 'Down' (116)
DEQUEUED KEYPRESS 'Down' (116) <----------

vvvvv PROCESS KEY PRESS EVENT Down vvvvv
LOCUS OF FOCUS: app='Iceweasel' name='Something to keep in mind for the examples is that charts and graphs 
are not usually interchangeable with data tables so they don't usually make good long descriptions.' 
role='image'
                event=None
generate speech for app.name='Iceweasel' name='Something to keep in mind for the examples is that charts 
and graphs are not usually interchangeable with data tables so they don't usually make good long 
descriptions.' role='image' state='enabled horizontal opaque sensitive showing visible' relations='' 
(args={'useDefaultFormatting': False, 'formatType': 'unfocused', 'role': ROLE_IMAGE, 'mode': 'speech', 
'recursing': True}) using 'newAncestors + newRowHeader + newColumnHeader + newRadioButtonGroup + 
labelAndName + allTextSelection + roleName + availability + (mnemonic and (pause + mnemonic + lineBreak) or 
[]) + accelerator + newNodeLevel + unselectedCell + (tutorial and (pause + tutorial) or [])'
newAncestors=[]
newRowHeader=[]
newColumnHeader=[]
newRadioButtonGroup=[]
labelAndName=["Something to keep in mind for the examples is that charts and graphs are not usually 
interchangeable with data tables so they don't usually make good long descriptions."]
allTextSelection=[]
roleName=['image']
availability=[]
mnemonic=[]
default.getKeyBinding: [u'', u'', u'']
accelerator=[]
newNodeLevel=[]
unselectedCell=[]
tutorial=[]
generate speech results:
  Something to keep in mind for the examples is that charts and graphs are not usually interchangeable with 
data tables so they don't usually make good long descriptions.
  image
SPEECH OUTPUT: 'Something to keep in mind for the examples is that charts and graphs are not usually 
interchangeable with data tables so they don't usually make good long descriptions. image 
'
generate braille for app.name='Iceweasel' name='Something to keep in mind for the examples is that charts 
and graphs are not usually interchangeable with data tables so they don't usually make good long 
descriptions.' role='image' state='enabled horizontal opaque sensitive showing visible' relations='' 
(args={'formatType': 'focused', 'useDefaultFormatting': False, 'includeContext': False, 'role': ROLE_IMAGE, 
'mode': 'braille', 'recursing': True}) using '(imageLink                           and [Link(obj, 
(asString(label + displayedText)                                           or asString(name))               
                           + " " + asString(value + roleName))]                           or 
[Component(obj,                                        asString(label + displayedText + value + 
roleName))])'
imageLink=None
label=[]
displayedText=["Something to keep in mind for the examples is that charts and graphs are not usually 
interchangeable with data tables so they don't usually make good long descriptions."]
value=['']
roleName=['Image']
generate braille results:
  Component: 'Something to keep in mind for the examples is that charts and graphs are not usually 
interchangeable with data tables so they don't usually make good long descriptions. Image', 0
BRAILLE LINE:  'Something to keep in mind for the examples is that charts and graphs are not usually 
interchangeable with data tables so they don't usually make good long descriptions. Image'
     VISIBLE:  'Something to keep in mind for the exampl', cursor=1

^^^^^ PROCESS KEY PRESS EVENT Down ^^^^^
KEYEVENT: type=1
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17105757
          time=1286935788.804664
orca.isModifierKey: returning: False
----------> QUEUEING KEYRELEASE 'Down' (116)
DEQUEUED KEYRELEASE 'Down' (116) <----------

vvvvv PROCESS KEY RELEASE EVENT Down vvvvv

^^^^^ PROCESS KEY RELEASE EVENT Down ^^^^^
KEYEVENT: type=0
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17111805
          time=1286935794.852840
orca.keyEcho: string to echo: Down
orca.isModifierKey: returning: False
----------> QUEUEING KEYPRESS 'Down' (116)
DEQUEUED KEYPRESS 'Down' (116) <----------

vvvvv PROCESS KEY PRESS EVENT Down vvvvv

^^^^^ PROCESS KEY PRESS EVENT Down ^^^^^
KEYEVENT: type=1
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17111869
          time=1286935794.916538
orca.isModifierKey: returning: False
----------> QUEUEING KEYRELEASE 'Down' (116)
DEQUEUED KEYRELEASE 'Down' (116) <----------

vvvvv PROCESS KEY RELEASE EVENT Down vvvvv

^^^^^ PROCESS KEY RELEASE EVENT Down ^^^^^
KEYEVENT: type=0
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17112541
          time=1286935795.588740
orca.keyEcho: string to echo: Down
orca.isModifierKey: returning: False
----------> QUEUEING KEYPRESS 'Down' (116)
DEQUEUED KEYPRESS 'Down' (116) <----------

vvvvv PROCESS KEY PRESS EVENT Down vvvvv

^^^^^ PROCESS KEY PRESS EVENT Down ^^^^^
KEYEVENT: type=1
          hw_code=116
          modifiers=16400
          event_string=(Down)
          is_text=True
          timestamp=17112621
          time=1286935795.668493
orca.isModifierKey: returning: False
----------> QUEUEING KEYRELEASE 'Down' (116)
DEQUEUED KEYRELEASE 'Down' (116) <----------

vvvvv PROCESS KEY RELEASE EVENT Down vvvvv

^^^^^ PROCESS KEY RELEASE EVENT Down ^^^^^
KEYEVENT: type=0
          hw_code=111
          modifiers=16400
          event_string=(Up)
          is_text=True
          timestamp=17113293
          time=1286935796.340732
orca.keyEcho: string to echo: Up
orca.isModifierKey: returning: False
----------> QUEUEING KEYPRESS 'Up' (111)
DEQUEUED KEYPRESS 'Up' (111) <----------

vvvvv PROCESS KEY PRESS EVENT Up vvvvv
LOCUS OF FOCUS: app='Iceweasel' name='' role='paragraph'
                event=None
SPEECH OUTPUT: 'A quote about use of longdesc: 
'
BRAILLE LINE:  'A quote about use of longdesc:'
     VISIBLE:  'A quote about use of longdesc:', cursor=1

^^^^^ PROCESS KEY PRESS EVENT Up ^^^^^
KEYEVENT: type=1
          hw_code=111
          modifiers=16400
          event_string=(Up)
          is_text=True
          timestamp=17113357
          time=1286935796.404517
orca.isModifierKey: returning: False
----------> QUEUEING KEYRELEASE 'Up' (111)
DEQUEUED KEYRELEASE 'Up' (111) <----------

vvvvv PROCESS KEY RELEASE EVENT Up vvvvv

^^^^^ PROCESS KEY RELEASE EVENT Up ^^^^^
KEYEVENT: type=0
          hw_code=111
          modifiers=16400
          event_string=(Up)
          is_text=True
          timestamp=17114493
          time=1286935797.540647
orca.keyEcho: string to echo: Up
orca.isModifierKey: returning: False
----------> QUEUEING KEYPRESS 'Up' (111)
DEQUEUED KEYPRESS 'Up' (111) <----------

vvvvv PROCESS KEY PRESS EVENT Up vvvvv

^^^^^ PROCESS KEY PRESS EVENT Up ^^^^^
KEYEVENT: type=1
          hw_code=111
          modifiers=16400
          event_string=(Up)
          is_text=True
          timestamp=17114557
          time=1286935797.604595
orca.isModifierKey: returning: False
----------> QUEUEING KEYRELEASE 'Up' (111)


_______________________________________________
orca-list mailing list
orca-list gnome org
http://mail.gnome.org/mailman/listinfo/orca-list
Visit http://live.gnome.org/Orca for more information on Orca.
The manual is at http://library.gnome.org/users/gnome-access-guide/nightly/ats-2.html
The FAQ is at http://live.gnome.org/Orca/FrequentlyAskedQuestions
Netiquette Guidelines are at http://live.gnome.org/Orca/FrequentlyAskedQuestions/NetiquetteGuidelines
Log bugs and feature requests at http://bugzilla.gnome.org
Find out how to help at http://live.gnome.org/Orca/HowCanIHelp


-- 

Janina Sajka,   Phone:  +1.443.300.2200
                sip:janina asterisk rednote net

Chair, Open Accessibility       janina a11y org 
Linux Foundation                http://a11y.org

Chair, Protocols & Formats
Web Accessibility Initiative    http://www.w3.org/wai/pf
World Wide Web Consortium (W3C)




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]