Changeset 181600 in webkit


Ignore:
Timestamp:
Mar 16, 2015 5:12:06 PM (9 years ago)
Author:
jdiggs@igalia.com
Message:

AX: Crash viewing http://www.last.fm/
https://bugs.webkit.org/show_bug.cgi?id=142309

Reviewed by Chris Fleizach.

Source/WebCore:

The crash occurs when a not-yet-rendered object emits a children-changed
signal. If an assistive technology is listening, AT-SPI2 will attempt to
create and cache the state set for the child being added and the creation
of the state set assumes a rendered object.

Test: platform/gtk/accessibility/no-notification-for-unrendered-iframe-children.html

  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::attachWrapper):

LayoutTests:

This test doesn't verify the absence of the crash because the crash seems
to require that an assistive technology is listening for events, and that
AT-SPI2 is caching the tree for that assistive technology -- something we
cannot count on being the case on our bots. (I suspect that the reason non-
assistive technology users of Epiphany were getting hit by this is because
Caribou was listening for events in the background, thus they were AT users
without realizing it. That Caribou issue is in theory now resolved.) What
this test does verify is the absence of children-changed:add accessibility
signals for non-rendered objects, which is the source of the crash given
the aforementioned environment.

  • platform/gtk/accessibility/no-notification-for-unrendered-iframe-children-expected.txt: Added.
  • platform/gtk/accessibility/no-notification-for-unrendered-iframe-children.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r181593 r181600  
     12015-03-16  Joanmarie Diggs  <jdiggs@igalia.com>
     2
     3        AX: Crash viewing http://www.last.fm/
     4        https://bugs.webkit.org/show_bug.cgi?id=142309
     5
     6        Reviewed by Chris Fleizach.
     7
     8        This test doesn't verify the absence of the crash because the crash seems
     9        to require that an assistive technology is listening for events, and that
     10        AT-SPI2 is caching the tree for that assistive technology -- something we
     11        cannot count on being the case on our bots. (I suspect that the reason non-
     12        assistive technology users of Epiphany were getting hit by this is because
     13        Caribou was listening for events in the background, thus they were AT users
     14        without realizing it. That Caribou issue is in theory now resolved.) What
     15        this test does verify is the absence of children-changed:add accessibility
     16        signals for non-rendered objects, which is the source of the crash given
     17        the aforementioned environment.
     18
     19        * platform/gtk/accessibility/no-notification-for-unrendered-iframe-children-expected.txt: Added.
     20        * platform/gtk/accessibility/no-notification-for-unrendered-iframe-children.html: Added.
     21
    1222015-03-16  Commit Queue  <commit-queue@webkit.org>
    223
  • trunk/Source/WebCore/ChangeLog

    r181597 r181600  
     12015-03-16  Joanmarie Diggs  <jdiggs@igalia.com>
     2
     3        AX: Crash viewing http://www.last.fm/
     4        https://bugs.webkit.org/show_bug.cgi?id=142309
     5
     6        Reviewed by Chris Fleizach.
     7
     8        The crash occurs when a not-yet-rendered object emits a children-changed
     9        signal. If an assistive technology is listening, AT-SPI2 will attempt to
     10        create and cache the state set for the child being added and the creation
     11        of the state set assumes a rendered object.
     12
     13        Test: platform/gtk/accessibility/no-notification-for-unrendered-iframe-children.html
     14
     15        * accessibility/atk/AXObjectCacheAtk.cpp:
     16        (WebCore::AXObjectCache::attachWrapper):
     17
    1182015-03-16  Commit Queue  <commit-queue@webkit.org>
    219
  • trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp

    r180600 r181600  
    8181        return;
    8282
     83    // Don't emit the signal if the object being added is not -- or not yet -- rendered,
     84    // which can occur in nested iframes. In these instances we don't want to ignore the
     85    // child. But if an assistive technology is listening, AT-SPI2 will attempt to create
     86    // and cache the state set for the child upon emission of the signal. If the object
     87    // has not yet been rendered, this will result in a crash.
     88    if (!obj->renderer())
     89        return;
     90
    8391    // Don't emit the signal for objects whose parents won't be exposed directly.
    8492    AccessibilityObject* coreParent = obj->parentObjectUnignored();
Note: See TracChangeset for help on using the changeset viewer.