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 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 GetDocument()->GetFrame()->Selection().FrameIsFocusedAndActive())) | 452 GetDocument()->GetFrame()->Selection().FrameIsFocusedAndActive())) |
453 return true; | 453 return true; |
454 | 454 |
455 return false; | 455 return false; |
456 } | 456 } |
457 | 457 |
458 bool AXLayoutObject::IsSelected() const { | 458 bool AXLayoutObject::IsSelected() const { |
459 if (!GetLayoutObject() || !GetNode()) | 459 if (!GetLayoutObject() || !GetNode()) |
460 return false; | 460 return false; |
461 | 461 |
462 const AtomicString& aria_selected = GetAttribute(aria_selectedAttr); | 462 if (AOMPropertyOrARIAAttributeIsTrue(AOMBooleanProperty::kSelected)) |
463 if (EqualIgnoringASCIICase(aria_selected, "true")) | |
464 return true; | 463 return true; |
465 | 464 |
466 AXObjectImpl* focused_object = AxObjectCache().FocusedObject(); | 465 AXObjectImpl* focused_object = AxObjectCache().FocusedObject(); |
467 if (AriaRoleAttribute() == kListBoxOptionRole && focused_object && | 466 if (AriaRoleAttribute() == kListBoxOptionRole && focused_object && |
468 focused_object->ActiveDescendant() == this) { | 467 focused_object->ActiveDescendant() == this) { |
469 return true; | 468 return true; |
470 } | 469 } |
471 | 470 |
472 if (IsTabItem() && IsTabItemSelected()) | 471 if (IsTabItem() && IsTabItemSelected()) |
473 return true; | 472 return true; |
(...skipping 12 matching lines...) Expand all Loading... |
486 | 485 |
487 if (!layout_object_) { | 486 if (!layout_object_) { |
488 if (ignored_reasons) | 487 if (ignored_reasons) |
489 ignored_reasons->push_back(IgnoredReason(kAXNotRendered)); | 488 ignored_reasons->push_back(IgnoredReason(kAXNotRendered)); |
490 return kIgnoreObject; | 489 return kIgnoreObject; |
491 } | 490 } |
492 | 491 |
493 if (layout_object_->Style()->Visibility() != EVisibility::kVisible) { | 492 if (layout_object_->Style()->Visibility() != EVisibility::kVisible) { |
494 // aria-hidden is meant to override visibility as the determinant in AX | 493 // aria-hidden is meant to override visibility as the determinant in AX |
495 // hierarchy inclusion. | 494 // hierarchy inclusion. |
496 if (EqualIgnoringASCIICase(GetAttribute(aria_hiddenAttr), "false")) | 495 if (AOMPropertyOrARIAAttributeIsFalse(AOMBooleanProperty::kHidden)) |
497 return kDefaultBehavior; | 496 return kDefaultBehavior; |
498 | 497 |
499 if (ignored_reasons) | 498 if (ignored_reasons) |
500 ignored_reasons->push_back(IgnoredReason(kAXNotVisible)); | 499 ignored_reasons->push_back(IgnoredReason(kAXNotVisible)); |
501 return kIgnoreObject; | 500 return kIgnoreObject; |
502 } | 501 } |
503 | 502 |
504 return AXObjectImpl::DefaultObjectInclusion(ignored_reasons); | 503 return AXObjectImpl::DefaultObjectInclusion(ignored_reasons); |
505 } | 504 } |
506 | 505 |
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1374 GetAOMPropertyOrARIAAttribute(AOMStringProperty::kRelevant); | 1373 GetAOMPropertyOrARIAAttribute(AOMStringProperty::kRelevant); |
1375 | 1374 |
1376 // Default aria-relevant = "additions text". | 1375 // Default aria-relevant = "additions text". |
1377 if (relevant.IsEmpty()) | 1376 if (relevant.IsEmpty()) |
1378 return default_live_region_relevant; | 1377 return default_live_region_relevant; |
1379 | 1378 |
1380 return relevant; | 1379 return relevant; |
1381 } | 1380 } |
1382 | 1381 |
1383 bool AXLayoutObject::LiveRegionAtomic() const { | 1382 bool AXLayoutObject::LiveRegionAtomic() const { |
| 1383 bool atomic = false; |
| 1384 if (HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kAtomic, atomic)) |
| 1385 return atomic; |
| 1386 |
1384 // ARIA roles "alert" and "status" should have an implicit aria-atomic value | 1387 // ARIA roles "alert" and "status" should have an implicit aria-atomic value |
1385 // of true. | 1388 // of true. |
1386 if (GetAttribute(aria_atomicAttr).IsEmpty() && | 1389 return RoleValue() == kAlertRole || RoleValue() == kStatusRole; |
1387 (RoleValue() == kAlertRole || RoleValue() == kStatusRole)) { | |
1388 return true; | |
1389 } | |
1390 return ElementAttributeValue(aria_atomicAttr); | |
1391 } | 1390 } |
1392 | 1391 |
1393 bool AXLayoutObject::LiveRegionBusy() const { | 1392 bool AXLayoutObject::LiveRegionBusy() const { |
1394 return ElementAttributeValue(aria_busyAttr); | 1393 return AOMPropertyOrARIAAttributeIsTrue(AOMBooleanProperty::kBusy); |
1395 } | 1394 } |
1396 | 1395 |
1397 // | 1396 // |
1398 // Hit testing. | 1397 // Hit testing. |
1399 // | 1398 // |
1400 | 1399 |
1401 AXObjectImpl* AXLayoutObject::AccessibilityHitTest( | 1400 AXObjectImpl* AXLayoutObject::AccessibilityHitTest( |
1402 const IntPoint& point) const { | 1401 const IntPoint& point) const { |
1403 if (!layout_object_ || !layout_object_->HasLayer()) | 1402 if (!layout_object_ || !layout_object_->HasLayer()) |
1404 return nullptr; | 1403 return nullptr; |
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2524 | 2523 |
2525 bool AXLayoutObject::ElementAttributeValue( | 2524 bool AXLayoutObject::ElementAttributeValue( |
2526 const QualifiedName& attribute_name) const { | 2525 const QualifiedName& attribute_name) const { |
2527 if (!layout_object_) | 2526 if (!layout_object_) |
2528 return false; | 2527 return false; |
2529 | 2528 |
2530 return EqualIgnoringASCIICase(GetAttribute(attribute_name), "true"); | 2529 return EqualIgnoringASCIICase(GetAttribute(attribute_name), "true"); |
2531 } | 2530 } |
2532 | 2531 |
2533 } // namespace blink | 2532 } // namespace blink |
OLD | NEW |