<!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>[180832] releases/WebKitGTK/webkit-2.8</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/180832">180832</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2015-02-28 03:55:59 -0800 (Sat, 28 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/180600">r180600</a> - AX: Implement support for ARIA 1.1 'switch' role
https://bugs.webkit.org/show_bug.cgi?id=141986

Reviewed by Chris Fleizach.

Source/WebCore:

Map the role to ATK_ROLE_TOGGLE_BUTTON for Gtk and Efl; on the Mac, to
AXCheckBox with a subrole of AXSwitch. Ensure it looks and acts like a
widget to accessibility APIs (supports and emits notifications when
toggled, doesn't have children, exposes a name and description when
provided).

Tests: accessibility/aria-switch-checked.html
       accessibility/aria-switch-sends-notification.html
       accessibility/aria-switch-text.html

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::canHaveChildren):
(WebCore::AccessibilityNodeObject::isChecked):
(WebCore::AccessibilityNodeObject::visibleText):
(WebCore::AccessibilityNodeObject::title):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isARIAInput):
(WebCore::AccessibilityObject::actionVerb):
(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::supportsChecked):
(WebCore::AccessibilityObject::checkboxOrRadioValue):
* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::isSwitch):
* accessibility/atk/AXObjectCacheAtk.cpp:
(WebCore::AXObjectCache::postPlatformNotification):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(atkRole):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
(-[WebAccessibilityObjectWrapper accessibilityTraits]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

* accessibility/aria-switch-checked-expected.txt: Added.
* accessibility/aria-switch-checked.html: Added.
* accessibility/aria-switch-sends-notification-expected.txt: Added.
* accessibility/aria-switch-sends-notification.html: Added.
* accessibility/aria-switch-text.html: Added.
* accessibility/roles-exposed.html: Added a test case for the new role.
* platform/efl/accessibility/aria-fallback-roles-expected.txt: Added.
* platform/efl/accessibility/aria-switch-text-expected.txt: Added.
* platform/efl/accessibility/roles-exposed-expected.txt: Updated for the new role.
* platform/gtk/accessibility/aria-fallback-roles-expected.txt: Added.
* platform/gtk/accessibility/aria-switch-text-expected.txt: Added.
* platform/gtk/accessibility/roles-exposed-expected.txt: Updated for the new role.
* platform/mac-mavericks/accessibility/roles-exposed-expected.txt: Updated for the new role.
* platform/mac/TestExpectations: Skip the 'checked' notifcation as the Mac doesn't have it.
* platform/mac/accessibility/aria-switch-text-expected.txt: Added.
* platform/mac/accessibility/roles-exposed-expected.txt: Updated for the new role.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsChangeLog">releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsaccessibilityrolesexposedhtml">releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/roles-exposed.html</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformeflaccessibilityrolesexposedexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/roles-exposed-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformgtkaccessibilityrolesexposedexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/roles-exposed-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformmacTestExpectations">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/TestExpectations</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformmacaccessibilityrolesexposedexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/roles-exposed-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformmacmavericksaccessibilityrolesexposedexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac-mavericks/accessibility/roles-exposed-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilityAccessibilityNodeObjectcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityNodeObject.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilityAccessibilityObjectcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilityAccessibilityObjecth">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.h</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilityatkAXObjectCacheAtkcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilityiosWebAccessibilityObjectWrapperIOSmm">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm</a></li>
<li><a href="#releasesWebKitGTKwebkit28SourceWebCoreaccessibilitymacWebAccessibilityObjectWrapperMacmm">releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchcheckedexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchcheckedhtml">releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked.html</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchsendsnotificationexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchsendsnotificationhtml">releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification.html</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchtexthtml">releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-text.html</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformeflaccessibilityariafallbackrolesexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-fallback-roles-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformeflaccessibilityariaswitchtextexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-switch-text-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformgtkaccessibilityariafallbackrolesexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-fallback-roles-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformgtkaccessibilityariaswitchtextexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit28LayoutTestsplatformmacaccessibilityariaswitchtextexpectedtxt">releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/aria-switch-text-expected.txt</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit28LayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -1,5 +1,29 @@
</span><span class="cx"> 2015-02-24  Joanmarie Diggs  &lt;jdiggs@igalia.com&gt;
</span><span class="cx"> 
</span><ins>+        AX: Implement support for ARIA 1.1 'switch' role
+        https://bugs.webkit.org/show_bug.cgi?id=141986
+
+        Reviewed by Chris Fleizach.
+
+        * accessibility/aria-switch-checked-expected.txt: Added.
+        * accessibility/aria-switch-checked.html: Added.
+        * accessibility/aria-switch-sends-notification-expected.txt: Added.
+        * accessibility/aria-switch-sends-notification.html: Added.
+        * accessibility/aria-switch-text.html: Added.
+        * accessibility/roles-exposed.html: Added a test case for the new role.
+        * platform/efl/accessibility/aria-fallback-roles-expected.txt: Added.
+        * platform/efl/accessibility/aria-switch-text-expected.txt: Added.
+        * platform/efl/accessibility/roles-exposed-expected.txt: Updated for the new role.
+        * platform/gtk/accessibility/aria-fallback-roles-expected.txt: Added.
+        * platform/gtk/accessibility/aria-switch-text-expected.txt: Added.
+        * platform/gtk/accessibility/roles-exposed-expected.txt: Updated for the new role.
+        * platform/mac-mavericks/accessibility/roles-exposed-expected.txt: Updated for the new role.
+        * platform/mac/TestExpectations: Skip the 'checked' notifcation as the Mac doesn't have it.
+        * platform/mac/accessibility/aria-switch-text-expected.txt: Added.
+        * platform/mac/accessibility/roles-exposed-expected.txt: Updated for the new role.
+
+2015-02-24  Joanmarie Diggs  &lt;jdiggs@igalia.com&gt;
+
</ins><span class="cx">         [GTK] Layout Test accessibility/roles-exposed.html is failing
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=141960
</span><span class="cx"> 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchcheckedexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+X
+X
+X
+This tests that ARIA switches correctly handle the aria-checked attribute.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS widget.isChecked is false
+PASS widget.isChecked is true
+PASS widget.isChecked is false
+PASS widget.isChecked is true
+PASS widget.isChecked is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchcheckedhtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked.html (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-checked.html        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;div role=&quot;switch&quot; id=&quot;switch1&quot;&gt;X&lt;/div&gt;
+&lt;div role=&quot;switch&quot; id=&quot;switch2&quot; aria-checked=&quot;true&quot;&gt;X&lt;/div&gt;
+&lt;div role=&quot;switch&quot; id=&quot;switch3&quot; aria-checked=&quot;false&quot;&gt;X&lt;/div&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+    description(&quot;This tests that ARIA switches correctly handle the aria-checked attribute.&quot;);
+
+    if (window.accessibilityController) {
+        // If aria-checked is absent, it should be not checked.
+        var widget = accessibilityController.accessibleElementById(&quot;switch1&quot;);
+        shouldBeFalse(&quot;widget.isChecked&quot;);
+
+        // If aria-checked is present and true, it's clearly checked.
+        widget = accessibilityController.accessibleElementById(&quot;switch2&quot;);
+        shouldBeTrue(&quot;widget.isChecked&quot;);
+
+        // If aria-checked is present and false, it's clearly not checked.
+        widget = accessibilityController.accessibleElementById(&quot;switch3&quot;);
+        shouldBeFalse(&quot;widget.isChecked&quot;);
+
+        // Change the value on the element and be sure we see the change
+        var element = document.getElementById(&quot;switch3&quot;);
+        element.setAttribute(&quot;aria-checked&quot;, &quot;true&quot;);
+        shouldBeTrue(&quot;widget.isChecked&quot;);
+
+        // Remove the attribute from the element and be sure we see the change
+        element.removeAttribute(&quot;aria-checked&quot;);
+        shouldBeFalse(&quot;widget.isChecked&quot;);
+    }
+
+&lt;/script&gt;
+
+&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchsendsnotificationexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Test Switch
+This tests that toggling an aria switch sends a notification.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+Got notification: CheckedStateChanged
+Got notification: CheckedStateChanged
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchsendsnotificationhtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification.html (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-sends-notification.html        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+    function runTest() {
+        if (window.testRunner)
+            testRunner.waitUntilDone();
+
+        description(&quot;This tests that toggling an aria switch sends a notification.&quot;);
+
+        var widget = accessibilityController.accessibleElementById(&quot;switch&quot;);
+        var notificationCount = 0;
+
+        function listener(notification) {
+            if (notification == &quot;CheckedStateChanged&quot;)
+                notificationCount++;
+
+            document.getElementById(&quot;console&quot;).innerText += &quot;Got notification: &quot; + notification + &quot;\n&quot;;
+
+            if (notificationCount == 2) {
+                widget.removeNotificationListener(listener);
+                if (window.testRunner)
+                    testRunner.notifyDone();
+            }
+        }
+        widget.addNotificationListener(listener);
+
+        document.getElementById('switch').setAttribute('aria-checked', 'true');
+        document.getElementById('switch').setAttribute('aria-checked', 'false');
+    };
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;div id=&quot;switch&quot; role=&quot;switch&quot; aria-checked=&quot;false&quot;&gt;Test Switch&lt;/div&gt;
+
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+    runTest();
+&lt;/script&gt;
+&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsaccessibilityariaswitchtexthtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-text.html (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-text.html                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/aria-switch-text.html        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;div role=&quot;radiobuttongroup&quot;&gt;
+        &lt;div role=&quot;switch&quot; id=&quot;switch1&quot; aria-checked=&quot;true&quot;&gt;One&lt;/div&gt;
+        &lt;div role=&quot;switch&quot; id=&quot;switch2&quot;&gt;Two&lt;/div&gt;
+        &lt;div role=&quot;switch&quot; id=&quot;switch3&quot; aria-label=&quot;foo&quot;&gt;Three&lt;/div&gt;
+&lt;/div&gt;
+
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+
+    description(&quot;This tests that ARIA switches use accessible name computation and have no child text.&quot;);
+
+    if (window.accessibilityController) {
+        var widget = accessibilityController.accessibleElementById(&quot;switch1&quot;);
+        debug(&quot;widget.title is &quot; + widget.title);
+        debug(&quot;widget.description is &quot; + widget.description);
+        debug(&quot;widget.childrenCount is &quot; + widget.childrenCount);
+
+        widget = accessibilityController.accessibleElementById(&quot;switch2&quot;);
+        debug(&quot;widget.title is &quot; + widget.title);
+        debug(&quot;widget.description is &quot; + widget.description);
+        debug(&quot;widget.childrenCount is &quot; + widget.childrenCount);
+
+        widget = accessibilityController.accessibleElementById(&quot;switch3&quot;);
+        debug(&quot;widget.title is &quot; + widget.title);
+        debug(&quot;widget.description is &quot; + widget.description);
+        debug(&quot;widget.childrenCount is &quot; + widget.childrenCount);
+    }
+
+&lt;/script&gt;
+
+&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsaccessibilityrolesexposedhtml"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/roles-exposed.html (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/roles-exposed.html        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/accessibility/roles-exposed.html        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -304,6 +304,7 @@
</span><span class="cx"> &lt;div role=&quot;slider&quot;                   data-platform=&quot;atk,mac&quot; class=&quot;ex&quot;&gt;X&lt;/div&gt;
</span><span class="cx"> &lt;div role=&quot;spinbutton&quot;               data-platform=&quot;atk,mac&quot; class=&quot;ex&quot;&gt;X&lt;/div&gt;
</span><span class="cx"> &lt;div role=&quot;status&quot; data-platform=&quot;atk,mac&quot; class=&quot;ex&quot;&gt;X&lt;/div&gt;
</span><ins>+&lt;div role=&quot;switch&quot; data-platform=&quot;atk,mac&quot; class=&quot;ex&quot;&gt;X&lt;/div&gt;
</ins><span class="cx"> &lt;div role=&quot;tablist&quot;                  data-platform=&quot;atk,mac&quot; class=&quot;ex&quot;&gt;
</span><span class="cx">     &lt;div role=&quot;tab&quot;                  data-platform=&quot;atk,mac&quot; class=&quot;ex&quot;&gt;X&lt;/div&gt;
</span><span class="cx"> &lt;/div&gt;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformeflaccessibilityariafallbackrolesexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-fallback-roles-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-fallback-roles-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-fallback-roles-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+test
+This tests that aria fallback roles work correctly.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Role should be: AXRole: AXToggleButton
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformeflaccessibilityariaswitchtextexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-switch-text-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-switch-text-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/aria-switch-text-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+One
+Two
+Three
+This tests that ARIA switches use accessible name computation and have no child text.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+widget.title is AXTitle: One
+widget.description is AXDescription: 
+widget.childrenCount is 0
+widget.title is AXTitle: Two
+widget.description is AXDescription: 
+widget.childrenCount is 0
+widget.title is AXTitle: Three
+widget.description is AXDescription: foo
+widget.childrenCount is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformeflaccessibilityrolesexposedexpectedtxt"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/roles-exposed-expected.txt (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/roles-exposed-expected.txt        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/efl/accessibility/roles-exposed-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -643,6 +643,9 @@
</span><span class="cx"> div[role=status]
</span><span class="cx">       AXRole: AXStatusBar
</span><span class="cx">       
</span><ins>+div[role=switch]
+      AXRole: AXToggleButton
+      
</ins><span class="cx"> div[role=tablist]
</span><span class="cx">       AXRole: AXTabGroup
</span><span class="cx">       
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformgtkaccessibilityariafallbackrolesexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-fallback-roles-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-fallback-roles-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-fallback-roles-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+test
+This tests that aria fallback roles work correctly.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+Role should be: AXRole: AXToggleButton
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformgtkaccessibilityariaswitchtextexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/aria-switch-text-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+One
+Two
+Three
+This tests that ARIA switches use accessible name computation and have no child text.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+widget.title is AXTitle: One
+widget.description is AXDescription: 
+widget.childrenCount is 0
+widget.title is AXTitle: Two
+widget.description is AXDescription: 
+widget.childrenCount is 0
+widget.title is AXTitle: Three
+widget.description is AXDescription: foo
+widget.childrenCount is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformgtkaccessibilityrolesexposedexpectedtxt"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/roles-exposed-expected.txt (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/roles-exposed-expected.txt        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/gtk/accessibility/roles-exposed-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -643,6 +643,9 @@
</span><span class="cx"> div[role=status]
</span><span class="cx">       AXRole: AXStatusBar
</span><span class="cx">       
</span><ins>+div[role=switch]
+      AXRole: AXToggleButton
+      
</ins><span class="cx"> div[role=tablist]
</span><span class="cx">       AXRole: AXTabGroup
</span><span class="cx">       
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformmacTestExpectations"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/TestExpectations (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/TestExpectations        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/TestExpectations        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -31,6 +31,7 @@
</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><ins>+accessibility/aria-switch-sends-notification.html
</ins><span class="cx"> accessibility/combo-box-collapsed-selection-changed.html
</span><span class="cx"> accessibility/children-changed-sends-notification.html
</span><span class="cx"> accessibility/menu-list-sends-change-notification.html
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformmacaccessibilityariaswitchtextexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/aria-switch-text-expected.txt (0 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/aria-switch-text-expected.txt                                (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/aria-switch-text-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+One
+Two
+Three
+This tests that ARIA switches use accessible name computation and have no child text.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+widget.title is AXTitle: One
+widget.description is AXDescription: 
+widget.childrenCount is 0
+widget.title is AXTitle: Two
+widget.description is AXDescription: 
+widget.childrenCount is 0
+widget.title is AXTitle: 
+widget.description is AXDescription: foo
+widget.childrenCount is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformmacaccessibilityrolesexposedexpectedtxt"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/roles-exposed-expected.txt (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/roles-exposed-expected.txt        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac/accessibility/roles-exposed-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -1069,6 +1069,11 @@
</span><span class="cx">       AXSubrole: AXApplicationStatus
</span><span class="cx">       AXRoleDescription: application status
</span><span class="cx">       
</span><ins>+div[role=switch]
+      AXRole: AXCheckBox
+      AXSubrole: AXSwitch
+      AXRoleDescription: switch
+      
</ins><span class="cx"> div[role=tablist]
</span><span class="cx">       AXRole: AXTabGroup
</span><span class="cx">       AXSubrole: 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28LayoutTestsplatformmacmavericksaccessibilityrolesexposedexpectedtxt"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac-mavericks/accessibility/roles-exposed-expected.txt (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac-mavericks/accessibility/roles-exposed-expected.txt        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/platform/mac-mavericks/accessibility/roles-exposed-expected.txt        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -1069,6 +1069,11 @@
</span><span class="cx">       AXSubrole: AXApplicationStatus
</span><span class="cx">       AXRoleDescription: application status
</span><span class="cx">       
</span><ins>+div[role=switch]
+      AXRole: AXCheckBox
+      AXSubrole: AXSwitch
+      AXRoleDescription: switch
+      
</ins><span class="cx"> div[role=tablist]
</span><span class="cx">       AXRole: AXTabGroup
</span><span class="cx">       AXSubrole: 
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -1,3 +1,46 @@
</span><ins>+2015-02-24  Joanmarie Diggs  &lt;jdiggs@igalia.com&gt;
+
+        AX: Implement support for ARIA 1.1 'switch' role
+        https://bugs.webkit.org/show_bug.cgi?id=141986
+
+        Reviewed by Chris Fleizach.
+
+        Map the role to ATK_ROLE_TOGGLE_BUTTON for Gtk and Efl; on the Mac, to
+        AXCheckBox with a subrole of AXSwitch. Ensure it looks and acts like a
+        widget to accessibility APIs (supports and emits notifications when
+        toggled, doesn't have children, exposes a name and description when
+        provided).
+
+        Tests: accessibility/aria-switch-checked.html
+               accessibility/aria-switch-sends-notification.html
+               accessibility/aria-switch-text.html
+
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::canHaveChildren):
+        (WebCore::AccessibilityNodeObject::isChecked):
+        (WebCore::AccessibilityNodeObject::visibleText):
+        (WebCore::AccessibilityNodeObject::title):
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::isARIAInput):
+        (WebCore::AccessibilityObject::actionVerb):
+        (WebCore::initializeRoleMap):
+        (WebCore::AccessibilityObject::supportsChecked):
+        (WebCore::AccessibilityObject::checkboxOrRadioValue):
+        * accessibility/AccessibilityObject.h:
+        (WebCore::AccessibilityObject::isSwitch):
+        * accessibility/atk/AXObjectCacheAtk.cpp:
+        (WebCore::AXObjectCache::postPlatformNotification):
+        * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+        (atkRole):
+        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+        (-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
+        (-[WebAccessibilityObjectWrapper accessibilityTraits]):
+        (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (createAccessibilityRoleMap):
+        (-[WebAccessibilityObjectWrapper subrole]):
+        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+
</ins><span class="cx"> 2015-02-24  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION(r179429): Can't type comments in Facebook
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilityAccessibilityNodeObjectcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -403,6 +403,7 @@
</span><span class="cx">     case ListBoxOptionRole:
</span><span class="cx">     case ScrollBarRole:
</span><span class="cx">     case ProgressIndicatorRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">         return false;
</span><span class="cx">     default:
</span><span class="cx">         return true;
</span><span class="lines">@@ -699,6 +700,7 @@
</span><span class="cx">     case MenuItemRole:
</span><span class="cx">     case MenuItemCheckboxRole:
</span><span class="cx">     case MenuItemRadioRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">         validRole = true;
</span><span class="cx">         break;
</span><span class="cx">     default:
</span><span class="lines">@@ -1356,6 +1358,7 @@
</span><span class="cx">     case MenuItemCheckboxRole:
</span><span class="cx">     case MenuItemRadioRole:
</span><span class="cx">     case RadioButtonRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">     case TabRole:
</span><span class="cx">     case ProgressIndicatorRole:
</span><span class="cx">         useTextUnderElement = true;
</span><span class="lines">@@ -1734,6 +1737,7 @@
</span><span class="cx">     case MenuItemCheckboxRole:
</span><span class="cx">     case MenuItemRadioRole:
</span><span class="cx">     case RadioButtonRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">     case TabRole:
</span><span class="cx">         return textUnderElement();
</span><span class="cx">     // SVGRoots should not use the text under itself as a title. That could include the text of objects like &lt;text&gt;.
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.cpp (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.cpp        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.cpp        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -779,7 +779,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool AccessibilityObject::isARIAInput(AccessibilityRole ariaRole)
</span><span class="cx"> {
</span><del>-    return ariaRole == RadioButtonRole || ariaRole == CheckBoxRole || ariaRole == TextFieldRole;
</del><ins>+    return ariaRole == RadioButtonRole || ariaRole == CheckBoxRole || ariaRole == TextFieldRole || ariaRole == SwitchRole;
</ins><span class="cx"> }    
</span><span class="cx">     
</span><span class="cx"> bool AccessibilityObject::isARIAControl(AccessibilityRole ariaRole)
</span><span class="lines">@@ -1733,6 +1733,7 @@
</span><span class="cx">     case RadioButtonRole:
</span><span class="cx">         return radioButtonAction;
</span><span class="cx">     case CheckBoxRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">         return isChecked() ? checkedCheckBoxAction : uncheckedCheckBoxAction;
</span><span class="cx">     case LinkRole:
</span><span class="cx">     case WebCoreLinkRole:
</span><span class="lines">@@ -1915,6 +1916,7 @@
</span><span class="cx">         { &quot;slider&quot;, SliderRole },
</span><span class="cx">         { &quot;spinbutton&quot;, SpinButtonRole },
</span><span class="cx">         { &quot;status&quot;, ApplicationStatusRole },
</span><ins>+        { &quot;switch&quot;, SwitchRole },
</ins><span class="cx">         { &quot;tab&quot;, TabRole },
</span><span class="cx">         { &quot;tablist&quot;, TabListRole },
</span><span class="cx">         { &quot;tabpanel&quot;, TabPanelRole },
</span><span class="lines">@@ -2212,6 +2214,7 @@
</span><span class="cx">     case MenuItemCheckboxRole:
</span><span class="cx">     case MenuItemRadioRole:
</span><span class="cx">     case RadioButtonRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">         return true;
</span><span class="cx">     default:
</span><span class="cx">         return false;
</span><span class="lines">@@ -2221,15 +2224,15 @@
</span><span class="cx"> AccessibilityButtonState AccessibilityObject::checkboxOrRadioValue() const
</span><span class="cx"> {
</span><span class="cx">     // If this is a real checkbox or radio button, AccessibilityRenderObject will handle.
</span><del>-    // If it's an ARIA checkbox or radio, the aria-checked attribute should be used.
</del><ins>+    // If it's an ARIA checkbox, radio, or switch the aria-checked attribute should be used.
</ins><span class="cx"> 
</span><span class="cx">     const AtomicString&amp; result = getAttribute(aria_checkedAttr);
</span><span class="cx">     if (equalIgnoringCase(result, &quot;true&quot;))
</span><span class="cx">         return ButtonStateOn;
</span><span class="cx">     if (equalIgnoringCase(result, &quot;mixed&quot;)) {
</span><del>-        // ARIA says that radio and menuitemradio elements must NOT expose button state mixed.
</del><ins>+        // ARIA says that radio, menuitemradio, and switch elements must NOT expose button state mixed.
</ins><span class="cx">         AccessibilityRole ariaRole = ariaRoleAttribute();
</span><del>-        if (ariaRole == RadioButtonRole || ariaRole == MenuItemRadioRole)
</del><ins>+        if (ariaRole == RadioButtonRole || ariaRole == MenuItemRadioRole || ariaRole == SwitchRole)
</ins><span class="cx">             return ButtonStateOff;
</span><span class="cx">         return ButtonStateMixed;
</span><span class="cx">     }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilityAccessibilityObjecth"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.h (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.h        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/AccessibilityObject.h        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -188,6 +188,7 @@
</span><span class="cx">     SplitGroupRole,
</span><span class="cx">     SplitterRole,
</span><span class="cx">     StaticTextRole,
</span><ins>+    SwitchRole,
</ins><span class="cx">     SystemWideRole,
</span><span class="cx">     SVGRootRole,
</span><span class="cx">     TabGroupRole,
</span><span class="lines">@@ -499,6 +500,7 @@
</span><span class="cx">     virtual bool isSpinButtonPart() const { return false; }
</span><span class="cx">     virtual bool isMockObject() const { return false; }
</span><span class="cx">     virtual bool isMediaControlLabel() const { return false; }
</span><ins>+    bool isSwitch() const { return roleValue() == SwitchRole; }
</ins><span class="cx">     bool isTextControl() const;
</span><span class="cx">     bool isARIATextControl() const;
</span><span class="cx">     bool isTabList() const { return roleValue() == TabListRole; }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilityatkAXObjectCacheAtkcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx"> 
</span><span class="cx">     switch (notification) {
</span><span class="cx">     case AXCheckedStateChanged:
</span><del>-        if (!coreObject-&gt;isCheckboxOrRadio())
</del><ins>+        if (!coreObject-&gt;isCheckboxOrRadio() &amp;&amp; !coreObject-&gt;isSwitch())
</ins><span class="cx">             return;
</span><span class="cx">         atk_object_notify_state_change(axObject, ATK_STATE_CHECKED, coreObject-&gt;isChecked());
</span><span class="cx">         break;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilityatkWebKitAccessibleWrapperAtkcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -510,6 +510,7 @@
</span><span class="cx">         return ATK_ROLE_EMBEDDED;
</span><span class="cx">     case ButtonRole:
</span><span class="cx">         return ATK_ROLE_PUSH_BUTTON;
</span><ins>+    case SwitchRole:
</ins><span class="cx">     case ToggleButtonRole:
</span><span class="cx">         return ATK_ROLE_TOGGLE_BUTTON;
</span><span class="cx">     case RadioButtonRole:
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilityiosWebAccessibilityObjectWrapperIOSmm"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -299,6 +299,7 @@
</span><span class="cx">     case ScrollBarRole:
</span><span class="cx">     case SliderRole:
</span><span class="cx">     case StaticTextRole:
</span><ins>+    case SwitchRole:
</ins><span class="cx">     case TabRole:
</span><span class="cx">     case TextFieldRole:
</span><span class="cx">     case ToggleButtonRole:
</span><span class="lines">@@ -566,6 +567,7 @@
</span><span class="cx">             break;
</span><span class="cx">         case ToggleButtonRole:
</span><span class="cx">         case CheckBoxRole:
</span><ins>+        case SwitchRole:
</ins><span class="cx">             traits |= ([self _axButtonTrait] | [self _axToggleTrait]);
</span><span class="cx">             break;
</span><span class="cx">         case HeadingRole:
</span><span class="lines">@@ -645,6 +647,7 @@
</span><span class="cx">         case TabRole:
</span><span class="cx">         case DocumentMathRole:
</span><span class="cx">         case HorizontalRuleRole:
</span><ins>+        case SwitchRole:
</ins><span class="cx">             return true;
</span><span class="cx">         case StaticTextRole:
</span><span class="cx">         {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit28SourceWebCoreaccessibilitymacWebAccessibilityObjectWrapperMacmm"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (180831 => 180832)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm        2015-02-28 11:52:56 UTC (rev 180831)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm        2015-02-28 11:55:59 UTC (rev 180832)
</span><span class="lines">@@ -1942,7 +1942,8 @@
</span><span class="cx">         { AudioRole, NSAccessibilityGroupRole },
</span><span class="cx">         { VideoRole, NSAccessibilityGroupRole },
</span><span class="cx">         { HorizontalRuleRole, NSAccessibilitySplitterRole },
</span><del>-        { BlockquoteRole, NSAccessibilityGroupRole }
</del><ins>+        { BlockquoteRole, NSAccessibilityGroupRole },
+        { SwitchRole, NSAccessibilityCheckBoxRole },
</ins><span class="cx">     };
</span><span class="cx">     AccessibilityRoleMap&amp; roleMap = *new AccessibilityRoleMap;
</span><span class="cx">     
</span><span class="lines">@@ -2117,6 +2118,9 @@
</span><span class="cx">     
</span><span class="cx">     if (m_object-&gt;isMediaTimeline())
</span><span class="cx">         return NSAccessibilityTimelineSubrole;
</span><ins>+
+    if (m_object-&gt;isSwitch())
+        return NSAccessibilitySwitchSubrole;
</ins><span class="cx">     
</span><span class="cx">     return nil;
</span><span class="cx"> }
</span><span class="lines">@@ -2434,7 +2438,7 @@
</span><span class="cx">         if (m_object-&gt;isHeading())
</span><span class="cx">             return [NSNumber numberWithInt:m_object-&gt;headingLevel()];
</span><span class="cx">         
</span><del>-        if (m_object-&gt;isCheckboxOrRadio() || m_object-&gt;isMenuItem()) {
</del><ins>+        if (m_object-&gt;isCheckboxOrRadio() || m_object-&gt;isMenuItem() || m_object-&gt;isSwitch()) {
</ins><span class="cx">             switch (m_object-&gt;checkboxOrRadioValue()) {
</span><span class="cx">                 case ButtonStateOff:
</span><span class="cx">                     return [NSNumber numberWithInt:0];
</span></span></pre>
</div>
</div>

</body>
</html>