<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[160485] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/160485">160485</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2013-12-12 04:04:20 -0800 (Thu, 12 Dec 2013)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/160417">r160417</a>.
http://trac.webkit.org/changeset/160417
https://bugs.webkit.org/show_bug.cgi?id=125629
The patch is causing crashes (Requested by zdobersek1 on
#webkit).
Source/WebCore:
* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::remove):
* accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::detachWrapper):
* accessibility/atk/AXObjectCacheAtk.cpp:
(WebCore::AXObjectCache::detachWrapper):
(WebCore::AXObjectCache::attachWrapper):
(WebCore::AXObjectCache::postPlatformNotification):
* accessibility/ios/AXObjectCacheIOS.mm:
(WebCore::AXObjectCache::detachWrapper):
* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::detachWrapper):
* accessibility/win/AXObjectCacheWin.cpp:
(WebCore::AXObjectCache::detachWrapper):
Tools:
* DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:
(axObjectEventListener):
* WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:
LayoutTests:
* accessibility/children-changed-sends-notification-expected.txt: Removed.
* accessibility/children-changed-sends-notification.html: Removed.
* accessibility/loading-iframe-sends-notification.html:
* platform/mac/TestExpectations:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsaccessibilityloadingiframesendsnotificationhtml">trunk/LayoutTests/accessibility/loading-iframe-sends-notification.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacTestExpectations">trunk/LayoutTests/platform/mac/TestExpectations</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAXObjectCachecpp">trunk/Source/WebCore/accessibility/AXObjectCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAXObjectCacheh">trunk/Source/WebCore/accessibility/AXObjectCache.h</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityatkAXObjectCacheAtkcpp">trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityiosAXObjectCacheIOSmm">trunk/Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreaccessibilitymacAXObjectCacheMacmm">trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm</a></li>
<li><a href="#trunkSourceWebCoreaccessibilitywinAXObjectCacheWincpp">trunk/Source/WebCore/accessibility/win/AXObjectCacheWin.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreeatkAccessibilityCallbacksAtkcpp">trunk/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerInjectedBundleatkAccessibilityNotificationHandlerAtkcpp">trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsaccessibilitychildrenchangedsendsnotificationexpectedtxt">trunk/LayoutTests/accessibility/children-changed-sends-notification-expected.txt</a></li>
<li><a href="#trunkLayoutTestsaccessibilitychildrenchangedsendsnotificationhtml">trunk/LayoutTests/accessibility/children-changed-sends-notification.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/LayoutTests/ChangeLog        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2013-12-12 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r160417.
+ http://trac.webkit.org/changeset/160417
+ https://bugs.webkit.org/show_bug.cgi?id=125629
+
+ The patch is causing crashes (Requested by zdobersek1 on
+ #webkit).
+
+ * accessibility/children-changed-sends-notification-expected.txt: Removed.
+ * accessibility/children-changed-sends-notification.html: Removed.
+ * accessibility/loading-iframe-sends-notification.html:
+ * platform/mac/TestExpectations:
+
</ins><span class="cx"> 2013-12-11 Darin Adler <darin@apple.com>
</span><span class="cx">
</span><span class="cx"> StylePendingImage needs to correctly manage the CSSValue pointer lifetime
</span></span></pre></div>
<a id="trunkLayoutTestsaccessibilitychildrenchangedsendsnotificationexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/accessibility/children-changed-sends-notification-expected.txt (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/accessibility/children-changed-sends-notification-expected.txt        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/LayoutTests/accessibility/children-changed-sends-notification-expected.txt        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-This test ensures that a notification is being emitted when children are added or removed for an accessibility object
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-Plain text paragraph
-
-End of test
-PARAGRAPH notification: AXChildrenAdded
-GLOBAL notification: AXChildrenAdded on element with role AXRole: AXParagraph
-PARAGRAPH notification: AXChildrenRemoved
-GLOBAL notification: AXChildrenRemoved on element with role AXRole: AXParagraph
-PASS paragraphNotificationCount is globalNotificationCount
-PASS globalNotificationCount is 2
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsaccessibilitychildrenchangedsendsnotificationhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/accessibility/children-changed-sends-notification.html (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/accessibility/children-changed-sends-notification.html        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/LayoutTests/accessibility/children-changed-sends-notification.html        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -1,84 +0,0 @@
</span><del>-<html>
-<head>
-<script src="../resources/js-test-pre.js"></script>
-</head>
-<body>
-
-<p id="description"></p>
-<p id="paragraph">Plain text paragraph <a id="testLink" href="#">with a link at the end</a></p>
-<div>End of test</div>
-
-<div id="console"></div>
-
-<script>
-window.jsTestIsAsync = true;
-
-description("This test ensures that a notification is being emitted when children are added or removed for an accessibility object");
-
-function touchAccessibilityTree(accessibilityObject) {
- if (accessibilityObject.stringValue.indexOf('End of test') >= 0)
- return false;
-
- var count = accessibilityObject.childrenCount;
- for (var i = 0; i < count; ++i) {
- if (!touchAccessibilityTree(accessibilityObject.childAtIndex(i)))
- return false;
- }
-
- return true;
-}
-
-function runTest() {
- window.paragraphNotificationCount = 0;
- window.globalNotificationCount = 0;
-
- if (window.accessibilityController) {
- var axWebArea = accessibilityController.rootElement.childAtIndex(0);
-
- // Ensure the accessibility hierarchy is generated.
- touchAccessibilityTree(axWebArea);
-
- window.paragraph = axWebArea.childAtIndex(1);
- paragraph.addNotificationListener(function(notification) {
- paragraphNotificationCount++;
- debug("PARAGRAPH notification: " + notification);
- });
-
- accessibilityController.addNotificationListener(function(element, notification) {
- if (!element.isEqual(paragraph))
- return;
-
- globalNotificationCount++;
- debug("GLOBAL notification: " + notification + " on element with role " + element.role);
- });
- }
-
- var par = document.getElementById('paragraph');
- window.newChild = document.createElement('button');
- par.appendChild(newChild);
-
- window.setTimeout(function() {
- var link = document.getElementById('testLink');
- link.style.display = 'none';
-
- // Ensure the accessibility hierarchy is regenerated.
- touchAccessibilityTree(axWebArea);
-
- shouldBe("paragraphNotificationCount", "globalNotificationCount");
- shouldBe("globalNotificationCount", "2");
-
- if (window.accessibilityController) {
- paragraph.removeNotificationListener();
- accessibilityController.removeNotificationListener();
- }
-
- finishJSTest();
- }, 0);
-}
-
-runTest();
-</script>
-
-<script src="../resources/js-test-post.js"></script>
-</body>
-</html>
</del></span></pre></div>
<a id="trunkLayoutTestsaccessibilityloadingiframesendsnotificationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/accessibility/loading-iframe-sends-notification.html (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/accessibility/loading-iframe-sends-notification.html        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/LayoutTests/accessibility/loading-iframe-sends-notification.html        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -53,9 +53,8 @@
</span><span class="cx"> shouldBeFalse("findByAccessibleTitleSubstring(root, 'InnerButton') != null");
</span><span class="cx">
</span><span class="cx"> window.accessibilityController.addNotificationListener(function (target, notification) {
</span><del>- // Ignore this notification if it's not on the iframe or not about the iframe being loaded.
- if (target.description.indexOf("InnerFrame") == -1
- || (notification != "AXLoadComplete" && notification != "AXLayoutComplete"))
</del><ins>+ // Ignore this notification if it's not on the iframe.
+ if (target.description.indexOf("InnerFrame") == -1)
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> debug("Got notification on iframe.");
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/TestExpectations (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/TestExpectations        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/LayoutTests/platform/mac/TestExpectations        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx">
</span><span class="cx"> # Accessibility tests for notifications that don't exist or aren't needed on Mac OS X.
</span><span class="cx"> accessibility/aria-checkbox-sends-notification.html
</span><del>-accessibility/children-changed-sends-notification.html
</del><span class="cx"> accessibility/menu-list-sends-change-notification.html
</span><span class="cx"> accessibility/multiselect-list-reports-active-option.html
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/ChangeLog        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2013-12-12 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r160417.
+ http://trac.webkit.org/changeset/160417
+ https://bugs.webkit.org/show_bug.cgi?id=125629
+
+ The patch is causing crashes (Requested by zdobersek1 on
+ #webkit).
+
+ * accessibility/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::~AXObjectCache):
+ (WebCore::AXObjectCache::remove):
+ * accessibility/AXObjectCache.h:
+ (WebCore::AXObjectCache::detachWrapper):
+ * accessibility/atk/AXObjectCacheAtk.cpp:
+ (WebCore::AXObjectCache::detachWrapper):
+ (WebCore::AXObjectCache::attachWrapper):
+ (WebCore::AXObjectCache::postPlatformNotification):
+ * accessibility/ios/AXObjectCacheIOS.mm:
+ (WebCore::AXObjectCache::detachWrapper):
+ * accessibility/mac/AXObjectCacheMac.mm:
+ (WebCore::AXObjectCache::detachWrapper):
+ * accessibility/win/AXObjectCacheWin.cpp:
+ (WebCore::AXObjectCache::detachWrapper):
+
</ins><span class="cx"> 2013-12-12 Martin Robinson <mrobinson@igalia.com>
</span><span class="cx">
</span><span class="cx"> Remove a few more guards mistakenly added in r160367
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAXObjectCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AXObjectCache.cpp (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AXObjectCache.cpp        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.cpp        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> HashMap<AXID, RefPtr<AccessibilityObject>>::iterator end = m_objects.end();
</span><span class="cx"> for (HashMap<AXID, RefPtr<AccessibilityObject>>::iterator it = m_objects.begin(); it != end; ++it) {
</span><span class="cx"> AccessibilityObject* obj = (*it).value.get();
</span><del>- detachWrapper(obj, CacheDestroyed);
</del><ins>+ detachWrapper(obj);
</ins><span class="cx"> obj->detach();
</span><span class="cx"> removeAXID(obj);
</span><span class="cx"> }
</span><span class="lines">@@ -493,7 +493,7 @@
</span><span class="cx"> if (!obj)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- detachWrapper(obj, ElementDestroyed);
</del><ins>+ detachWrapper(obj);
</ins><span class="cx"> obj->detach();
</span><span class="cx"> removeAXID(obj);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAXObjectCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AXObjectCache.h (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AXObjectCache.h        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.h        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -71,8 +71,6 @@
</span><span class="cx">
</span><span class="cx"> enum PostType { PostSynchronously, PostAsynchronously };
</span><span class="cx">
</span><del>-enum DetachmentType { CacheDestroyed, ElementDestroyed };
-
</del><span class="cx"> class AXObjectCache {
</span><span class="cx"> WTF_MAKE_NONCOPYABLE(AXObjectCache); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="lines">@@ -104,7 +102,7 @@
</span><span class="cx"> void remove(Widget*);
</span><span class="cx"> void remove(AXID);
</span><span class="cx">
</span><del>- void detachWrapper(AccessibilityObject*, DetachmentType);
</del><ins>+ void detachWrapper(AccessibilityObject*);
</ins><span class="cx"> void attachWrapper(AccessibilityObject*);
</span><span class="cx"> void childrenChanged(Node*);
</span><span class="cx"> void childrenChanged(RenderObject*);
</span><span class="lines">@@ -286,7 +284,7 @@
</span><span class="cx"> inline void AXObjectCache::textChanged(Node*) { }
</span><span class="cx"> inline void AXObjectCache::textChanged(AccessibilityObject*) { }
</span><span class="cx"> inline void AXObjectCache::updateCacheAfterNodeIsAttached(Node*) { }
</span><del>-inline void AXObjectCache::detachWrapper(AccessibilityObject*, DetachmentType) { }
</del><ins>+inline void AXObjectCache::detachWrapper(AccessibilityObject*) { }
</ins><span class="cx"> inline void AXObjectCache::frameLoadingEventNotification(Frame*, AXLoadingEvent) { }
</span><span class="cx"> inline void AXObjectCache::frameLoadingEventPlatformNotification(AccessibilityObject*, AXLoadingEvent) { }
</span><span class="cx"> inline void AXObjectCache::handleActiveDescendantChanged(Node*) { }
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityatkAXObjectCacheAtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -31,37 +31,13 @@
</span><span class="cx"> #include "TextIterator.h"
</span><span class="cx"> #include "WebKitAccessibleWrapperAtk.h"
</span><span class="cx"> #include <wtf/gobject/GOwnPtr.h>
</span><del>-#include <wtf/gobject/GRefPtr.h>
</del><span class="cx"> #include <wtf/text/CString.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-void AXObjectCache::detachWrapper(AccessibilityObject* obj, DetachmentType detachmentType)
</del><ins>+void AXObjectCache::detachWrapper(AccessibilityObject* obj)
</ins><span class="cx"> {
</span><del>- AtkObject* wrapper = obj->wrapper();
- ASSERT(wrapper);
-
- // If an object is being detached NOT because of the AXObjectCache being destroyed,
- // then it's being removed from the accessibility tree and we should emit a signal.
- if (detachmentType != CacheDestroyed) {
- if (obj->document()) {
- // Look for the right object to emit the signal from, but using the implementation
- // of atk_object_get_parent from AtkObject class (which uses a cached pointer if set)
- // since the accessibility hierarchy in WebCore will no longer be navigable.
- gpointer webkitAccessibleClass = g_type_class_peek_parent(WEBKIT_ACCESSIBLE_GET_CLASS(wrapper));
- gpointer atkObjectClass = g_type_class_peek_parent(webkitAccessibleClass);
- AtkObject* atkParent = ATK_OBJECT_CLASS(atkObjectClass)->get_parent(ATK_OBJECT(wrapper));
-
- // We don't want to emit any signal from an object outside WebKit's world.
- if (WEBKIT_IS_ACCESSIBLE(atkParent)) {
- // The accessibility hierarchy is already invalid, so the parent-children relationships
- // in the AccessibilityObject tree are not there anymore, so we can't know the offset.
- g_signal_emit_by_name(atkParent, "children-changed::remove", -1, wrapper);
- }
- }
- }
-
- webkitAccessibleDetach(WEBKIT_ACCESSIBLE(wrapper));
</del><ins>+ webkitAccessibleDetach(WEBKIT_ACCESSIBLE(obj->wrapper()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void AXObjectCache::attachWrapper(AccessibilityObject* obj)
</span><span class="lines">@@ -69,25 +45,6 @@
</span><span class="cx"> AtkObject* atkObj = ATK_OBJECT(webkitAccessibleNew(obj));
</span><span class="cx"> obj->setWrapper(atkObj);
</span><span class="cx"> g_object_unref(atkObj);
</span><del>-
- // If an object is being attached and we are not in the middle of a layout update, then
- // we should report ATs by emitting the children-changed::add signal from the parent.
- Document* document = obj->document();
- if (!document || document->childNeedsStyleRecalc())
- return;
-
- // Don't emit the signal for objects that we already know won't be exposed directly.
- AccessibilityObject* coreParent = obj->parentObjectUnignored();
- if (!coreParent || coreParent->accessibilityIsIgnoredByDefault())
- return;
-
- // Look for the right object to emit the signal from.
- AtkObject* atkParent = coreParent ? coreParent->wrapper() : 0;
- if (!atkParent)
- return;
-
- size_t index = coreParent->children().find(obj);
- g_signal_emit_by_name(atkParent, "children-changed::add", index, atkObj);
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static AccessibilityObject* getListObject(AccessibilityObject* object)
</span><span class="lines">@@ -186,50 +143,29 @@
</span><span class="cx"> if (!axObject)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- switch (notification) {
- case AXCheckedStateChanged:
</del><ins>+ if (notification == AXCheckedStateChanged) {
</ins><span class="cx"> if (!coreObject->isCheckboxOrRadio())
</span><span class="cx"> return;
</span><span class="cx"> atk_object_notify_state_change(axObject, ATK_STATE_CHECKED, coreObject->isChecked());
</span><del>- break;
-
- case AXChildrenChanged:
- // We need to make sure that the children AtkObjects are created at this moment,
- // so the children-changed::add signal gets properly emitted in attachWrapper().
- if (int numOfChildren = atk_object_get_n_accessible_children(axObject)) {
- for (int i = 0; i < numOfChildren; ++i)
- GRefPtr<AtkObject> child(atk_object_ref_accessible_child(axObject, i));
- }
- break;
-
- case AXSelectedChildrenChanged:
- case AXMenuListValueChanged:
</del><ins>+ } else if (notification == AXSelectedChildrenChanged || notification == AXMenuListValueChanged) {
</ins><span class="cx"> if (notification == AXMenuListValueChanged && coreObject->isMenuList()) {
</span><span class="cx"> g_signal_emit_by_name(axObject, "focus-event", true);
</span><span class="cx"> atk_object_notify_state_change(axObject, ATK_STATE_FOCUSED, true);
</span><span class="cx"> }
</span><span class="cx"> notifyChildrenSelectionChange(coreObject);
</span><del>- break;
</del><ins>+ } else if (notification == AXValueChanged) {
+ if (!ATK_IS_VALUE(axObject))
+ return;
</ins><span class="cx">
</span><del>- case AXValueChanged:
- if (ATK_IS_VALUE(axObject)) {
- AtkPropertyValues propertyValues;
- propertyValues.property_name = "accessible-value";
</del><ins>+ AtkPropertyValues propertyValues;
+ propertyValues.property_name = "accessible-value";
</ins><span class="cx">
</span><del>- memset(&propertyValues.new_value, 0, sizeof(GValue));
- atk_value_get_current_value(ATK_VALUE(axObject), &propertyValues.new_value);
</del><ins>+ memset(&propertyValues.new_value, 0, sizeof(GValue));
+ atk_value_get_current_value(ATK_VALUE(axObject), &propertyValues.new_value);
</ins><span class="cx">
</span><del>- g_signal_emit_by_name(ATK_OBJECT(axObject), "property-change::accessible-value", &propertyValues, NULL);
- }
- break;
-
- case AXInvalidStatusChanged:
</del><ins>+ g_signal_emit_by_name(ATK_OBJECT(axObject), "property-change::accessible-value", &propertyValues, NULL);
+ } else if (notification == AXInvalidStatusChanged)
</ins><span class="cx"> atk_object_notify_state_change(axObject, ATK_STATE_INVALID_ENTRY, coreObject->invalidStatus() != "false");
</span><del>- break;
-
- default:
- break;
- }
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void AXObjectCache::nodeTextChangePlatformNotification(AccessibilityObject* object, AXTextChange textChange, unsigned offset, const String& text)
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityiosAXObjectCacheIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-void AXObjectCache::detachWrapper(AccessibilityObject* obj, DetachmentType)
</del><ins>+void AXObjectCache::detachWrapper(AccessibilityObject* obj)
</ins><span class="cx"> {
</span><span class="cx"> [obj->wrapper() detach];
</span><span class="cx"> obj->setWrapper(0);
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilitymacAXObjectCacheMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-void AXObjectCache::detachWrapper(AccessibilityObject* obj, DetachmentType)
</del><ins>+void AXObjectCache::detachWrapper(AccessibilityObject* obj)
</ins><span class="cx"> {
</span><span class="cx"> [obj->wrapper() detach];
</span><span class="cx"> obj->setWrapper(0);
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilitywinAXObjectCacheWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/win/AXObjectCacheWin.cpp (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/win/AXObjectCacheWin.cpp        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Source/WebCore/accessibility/win/AXObjectCacheWin.cpp        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-void AXObjectCache::detachWrapper(AccessibilityObject* obj, DetachmentType)
</del><ins>+void AXObjectCache::detachWrapper(AccessibilityObject* obj)
</ins><span class="cx"> {
</span><span class="cx"> // On Windows, AccessibilityObjects are created when get_accChildCount is
</span><span class="cx"> // called, but they are not wrapped until get_accChild is called, so this
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Tools/ChangeLog        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2013-12-12 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r160417.
+ http://trac.webkit.org/changeset/160417
+ https://bugs.webkit.org/show_bug.cgi?id=125629
+
+ The patch is causing crashes (Requested by zdobersek1 on
+ #webkit).
+
+ * DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:
+ (axObjectEventListener):
+ * WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:
+
</ins><span class="cx"> 2013-12-12 Zan Dobersek <zdobersek@igalia.com>
</span><span class="cx">
</span><span class="cx"> Use of ar T option not supported by older binutils
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreeatkAccessibilityCallbacksAtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -113,10 +113,8 @@
</span><span class="cx"> if (g_value_get_boolean(&paramValues[1]))
</span><span class="cx"> notificationName = "AXFocusedUIElementChanged";
</span><span class="cx"> } else if (!g_strcmp0(signalQuery.signal_name, "children-changed")) {
</span><del>- const gchar* childrenChangedDetail = g_quark_to_string(signalHint->detail);
- signalName.set(g_strdup_printf("children-changed:%s", childrenChangedDetail));
</del><ins>+ signalName.set(g_strdup("children-changed"));
</ins><span class="cx"> signalValue.set(g_strdup_printf("%d", g_value_get_uint(&paramValues[1])));
</span><del>- notificationName = !g_strcmp0(childrenChangedDetail, "add") ? "AXChildrenAdded" : "AXChildrenRemoved";
</del><span class="cx"> } else if (!g_strcmp0(signalQuery.signal_name, "property-change")) {
</span><span class="cx"> signalName.set(g_strdup_printf("property-change:%s", g_quark_to_string(signalHint->detail)));
</span><span class="cx"> if (!g_strcmp0(g_quark_to_string(signalHint->detail), "accessible-value"))
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerInjectedBundleatkAccessibilityNotificationHandlerAtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp (160484 => 160485)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp        2013-12-12 11:54:02 UTC (rev 160484)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp        2013-12-12 12:04:20 UTC (rev 160485)
</span><span class="lines">@@ -102,10 +102,8 @@
</span><span class="cx"> if (g_value_get_boolean(&paramValues[1]))
</span><span class="cx"> notificationName = "AXFocusedUIElementChanged";
</span><span class="cx"> } else if (!g_strcmp0(signalQuery.signal_name, "children-changed")) {
</span><del>- const gchar* childrenChangedDetail = g_quark_to_string(signalHint->detail);
- signalName.set(g_strdup_printf("children-changed:%s", childrenChangedDetail));
</del><ins>+ signalName.set(g_strdup("children-changed"));
</ins><span class="cx"> signalValue.set(g_strdup_printf("%d", g_value_get_uint(&paramValues[1])));
</span><del>- notificationName = !g_strcmp0(childrenChangedDetail, "add") ? "AXChildrenAdded" : "AXChildrenRemoved";
</del><span class="cx"> } else if (!g_strcmp0(signalQuery.signal_name, "property-change")) {
</span><span class="cx"> signalName.set(g_strdup_printf("property-change:%s", g_quark_to_string(signalHint->detail)));
</span><span class="cx"> if (!g_strcmp0(g_quark_to_string(signalHint->detail), "accessible-value"))
</span></span></pre>
</div>
</div>
</body>
</html>