OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 getDocument()->frame()->selection().isFocusedAndActive())) | 451 getDocument()->frame()->selection().isFocusedAndActive())) |
452 return true; | 452 return true; |
453 | 453 |
454 return false; | 454 return false; |
455 } | 455 } |
456 | 456 |
457 bool AXLayoutObject::isSelected() const { | 457 bool AXLayoutObject::isSelected() const { |
458 if (!getLayoutObject() || !getNode()) | 458 if (!getLayoutObject() || !getNode()) |
459 return false; | 459 return false; |
460 | 460 |
461 const AtomicString& ariaSelected = getAttribute(aria_selectedAttr); | 461 if (AOMPropertyOrARIAAttributeIsTrue(AOMBooleanProperty::kSelected)) |
462 if (equalIgnoringASCIICase(ariaSelected, "true")) | |
463 return true; | 462 return true; |
464 | 463 |
465 AXObject* focusedObject = axObjectCache().focusedObject(); | 464 AXObject* focusedObject = axObjectCache().focusedObject(); |
466 if (ariaRoleAttribute() == ListBoxOptionRole && focusedObject && | 465 if (ariaRoleAttribute() == ListBoxOptionRole && focusedObject && |
467 focusedObject->activeDescendant() == this) { | 466 focusedObject->activeDescendant() == this) { |
468 return true; | 467 return true; |
469 } | 468 } |
470 | 469 |
471 if (isTabItem() && isTabItemSelected()) | 470 if (isTabItem() && isTabItemSelected()) |
472 return true; | 471 return true; |
(...skipping 12 matching lines...) Expand all Loading... |
485 | 484 |
486 if (!m_layoutObject) { | 485 if (!m_layoutObject) { |
487 if (ignoredReasons) | 486 if (ignoredReasons) |
488 ignoredReasons->push_back(IgnoredReason(AXNotRendered)); | 487 ignoredReasons->push_back(IgnoredReason(AXNotRendered)); |
489 return IgnoreObject; | 488 return IgnoreObject; |
490 } | 489 } |
491 | 490 |
492 if (m_layoutObject->style()->visibility() != EVisibility::kVisible) { | 491 if (m_layoutObject->style()->visibility() != EVisibility::kVisible) { |
493 // aria-hidden is meant to override visibility as the determinant in AX | 492 // aria-hidden is meant to override visibility as the determinant in AX |
494 // hierarchy inclusion. | 493 // hierarchy inclusion. |
495 if (equalIgnoringASCIICase(getAttribute(aria_hiddenAttr), "false")) | 494 if (AOMPropertyOrARIAAttributeIsFalse(AOMBooleanProperty::kHidden)) |
496 return DefaultBehavior; | 495 return DefaultBehavior; |
497 | 496 |
498 if (ignoredReasons) | 497 if (ignoredReasons) |
499 ignoredReasons->push_back(IgnoredReason(AXNotVisible)); | 498 ignoredReasons->push_back(IgnoredReason(AXNotVisible)); |
500 return IgnoreObject; | 499 return IgnoreObject; |
501 } | 500 } |
502 | 501 |
503 return AXObject::defaultObjectInclusion(ignoredReasons); | 502 return AXObject::defaultObjectInclusion(ignoredReasons); |
504 } | 503 } |
505 | 504 |
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1356 getAOMPropertyOrARIAAttribute(AOMStringProperty::kRelevant); | 1355 getAOMPropertyOrARIAAttribute(AOMStringProperty::kRelevant); |
1357 | 1356 |
1358 // Default aria-relevant = "additions text". | 1357 // Default aria-relevant = "additions text". |
1359 if (relevant.isEmpty()) | 1358 if (relevant.isEmpty()) |
1360 return defaultLiveRegionRelevant; | 1359 return defaultLiveRegionRelevant; |
1361 | 1360 |
1362 return relevant; | 1361 return relevant; |
1363 } | 1362 } |
1364 | 1363 |
1365 bool AXLayoutObject::liveRegionAtomic() const { | 1364 bool AXLayoutObject::liveRegionAtomic() const { |
| 1365 bool atomic = false; |
| 1366 if (getAOMPropertyOrARIAAttribute(AOMBooleanProperty::kAtomic, atomic)) |
| 1367 return atomic; |
| 1368 |
1366 // ARIA roles "alert" and "status" should have an implicit aria-atomic value | 1369 // ARIA roles "alert" and "status" should have an implicit aria-atomic value |
1367 // of true. | 1370 // of true. |
1368 if (getAttribute(aria_atomicAttr).isEmpty() && | 1371 return roleValue() == AlertRole || roleValue() == StatusRole; |
1369 (roleValue() == AlertRole || roleValue() == StatusRole)) { | |
1370 return true; | |
1371 } | |
1372 return elementAttributeValue(aria_atomicAttr); | |
1373 } | 1372 } |
1374 | 1373 |
1375 bool AXLayoutObject::liveRegionBusy() const { | 1374 bool AXLayoutObject::liveRegionBusy() const { |
1376 return elementAttributeValue(aria_busyAttr); | 1375 return AOMPropertyOrARIAAttributeIsTrue(AOMBooleanProperty::kBusy); |
1377 } | 1376 } |
1378 | 1377 |
1379 // | 1378 // |
1380 // Hit testing. | 1379 // Hit testing. |
1381 // | 1380 // |
1382 | 1381 |
1383 AXObject* AXLayoutObject::accessibilityHitTest(const IntPoint& point) const { | 1382 AXObject* AXLayoutObject::accessibilityHitTest(const IntPoint& point) const { |
1384 if (!m_layoutObject || !m_layoutObject->hasLayer()) | 1383 if (!m_layoutObject || !m_layoutObject->hasLayer()) |
1385 return nullptr; | 1384 return nullptr; |
1386 | 1385 |
(...skipping 1110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2497 | 2496 |
2498 bool AXLayoutObject::elementAttributeValue( | 2497 bool AXLayoutObject::elementAttributeValue( |
2499 const QualifiedName& attributeName) const { | 2498 const QualifiedName& attributeName) const { |
2500 if (!m_layoutObject) | 2499 if (!m_layoutObject) |
2501 return false; | 2500 return false; |
2502 | 2501 |
2503 return equalIgnoringASCIICase(getAttribute(attributeName), "true"); | 2502 return equalIgnoringASCIICase(getAttribute(attributeName), "true"); |
2504 } | 2503 } |
2505 | 2504 |
2506 } // namespace blink | 2505 } // namespace blink |
OLD | NEW |