Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: ui/accessibility/platform/ax_platform_node_win.cc

Issue 2937083002: Revert of Forward BrowserAccessibility get_accState to AXPlatformNode. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <atlbase.h> 5 #include <atlbase.h>
6 #include <atlcom.h> 6 #include <atlcom.h>
7 #include <limits.h> 7 #include <limits.h>
8 #include <oleacc.h> 8 #include <oleacc.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 1420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 if (state & (1 << ui::AX_STATE_COLLAPSED)) 1431 if (state & (1 << ui::AX_STATE_COLLAPSED))
1432 msaa_state |= STATE_SYSTEM_COLLAPSED; 1432 msaa_state |= STATE_SYSTEM_COLLAPSED;
1433 if (state & (1 << ui::AX_STATE_DEFAULT)) 1433 if (state & (1 << ui::AX_STATE_DEFAULT))
1434 msaa_state |= STATE_SYSTEM_DEFAULT; 1434 msaa_state |= STATE_SYSTEM_DEFAULT;
1435 if (state & (1 << ui::AX_STATE_EXPANDED)) 1435 if (state & (1 << ui::AX_STATE_EXPANDED))
1436 msaa_state |= STATE_SYSTEM_EXPANDED; 1436 msaa_state |= STATE_SYSTEM_EXPANDED;
1437 if (state & (1 << ui::AX_STATE_FOCUSABLE)) 1437 if (state & (1 << ui::AX_STATE_FOCUSABLE))
1438 msaa_state |= STATE_SYSTEM_FOCUSABLE; 1438 msaa_state |= STATE_SYSTEM_FOCUSABLE;
1439 if (state & (1 << ui::AX_STATE_HASPOPUP)) 1439 if (state & (1 << ui::AX_STATE_HASPOPUP))
1440 msaa_state |= STATE_SYSTEM_HASPOPUP; 1440 msaa_state |= STATE_SYSTEM_HASPOPUP;
1441 1441 if (state & (1 << ui::AX_STATE_HOVERED))
1442 msaa_state |= STATE_SYSTEM_HOTTRACKED;
1442 if (state & (1 << ui::AX_STATE_INVISIBLE) || 1443 if (state & (1 << ui::AX_STATE_INVISIBLE) ||
1443 GetData().role == ui::AX_ROLE_IGNORED) { 1444 GetData().role == ui::AX_ROLE_IGNORED) {
1444 msaa_state |= STATE_SYSTEM_INVISIBLE; 1445 msaa_state |= STATE_SYSTEM_INVISIBLE;
1445 } 1446 }
1446 if (state & (1 << ui::AX_STATE_LINKED)) 1447 if (state & (1 << ui::AX_STATE_LINKED))
1447 msaa_state |= STATE_SYSTEM_LINKED; 1448 msaa_state |= STATE_SYSTEM_LINKED;
1448 if (state & (1 << ui::AX_STATE_OFFSCREEN)) 1449 if (state & (1 << ui::AX_STATE_OFFSCREEN))
1449 msaa_state |= STATE_SYSTEM_OFFSCREEN; 1450 msaa_state |= STATE_SYSTEM_OFFSCREEN;
1450 if (state & (1 << ui::AX_STATE_PROTECTED)) 1451 if (state & (1 << ui::AX_STATE_PROTECTED))
1451 msaa_state |= STATE_SYSTEM_PROTECTED; 1452 msaa_state |= STATE_SYSTEM_PROTECTED;
1452 if (state & (1 << ui::AX_STATE_READ_ONLY)) 1453 if (state & (1 << ui::AX_STATE_READ_ONLY))
1453 msaa_state |= STATE_SYSTEM_READONLY; 1454 msaa_state |= STATE_SYSTEM_READONLY;
1454 if (state & (1 << ui::AX_STATE_SELECTABLE)) 1455 if (state & (1 << ui::AX_STATE_SELECTABLE))
1455 msaa_state |= STATE_SYSTEM_SELECTABLE; 1456 msaa_state |= STATE_SYSTEM_SELECTABLE;
1456 if (state & (1 << ui::AX_STATE_SELECTED)) 1457 if (state & (1 << ui::AX_STATE_SELECTED))
1457 msaa_state |= STATE_SYSTEM_SELECTED; 1458 msaa_state |= STATE_SYSTEM_SELECTED;
1458 if (state & (1 << ui::AX_STATE_DISABLED)) 1459 if (state & (1 << ui::AX_STATE_DISABLED))
1459 msaa_state |= STATE_SYSTEM_UNAVAILABLE; 1460 msaa_state |= STATE_SYSTEM_UNAVAILABLE;
1460 if (state & (1 << ui::AX_STATE_BUSY))
1461 msaa_state |= STATE_SYSTEM_BUSY;
1462 if (state & (1 << ui::AX_STATE_VISITED))
1463 msaa_state |= STATE_SYSTEM_TRAVERSED;
1464
1465 if (state & (1 << ui::AX_STATE_MULTISELECTABLE)) {
1466 msaa_state |= STATE_SYSTEM_EXTSELECTABLE;
1467 msaa_state |= STATE_SYSTEM_MULTISELECTABLE;
1468 }
1469
1470 // Expose whether or not the mouse is over an element, but suppress
1471 // this for tests because it can make the test results flaky depending
1472 // on the position of the mouse.
1473 if (delegate_->ShouldIgnoreHoveredStateForTesting()) {
1474 if (state & (1 << ui::AX_STATE_HOVERED))
1475 msaa_state |= STATE_SYSTEM_HOTTRACKED;
1476 }
1477 1461
1478 // Checked state 1462 // Checked state
1479 const auto checked_state = static_cast<ui::AXCheckedState>( 1463 const auto checked_state = static_cast<ui::AXCheckedState>(
1480 GetIntAttribute(ui::AX_ATTR_CHECKED_STATE)); 1464 GetIntAttribute(ui::AX_ATTR_CHECKED_STATE));
1481 switch (checked_state) { 1465 switch (checked_state) {
1482 case ui::AX_CHECKED_STATE_TRUE: 1466 case ui::AX_CHECKED_STATE_TRUE:
1483 msaa_state |= data.role == ui::AX_ROLE_TOGGLE_BUTTON 1467 msaa_state |= data.role == ui::AX_ROLE_TOGGLE_BUTTON
1484 ? STATE_SYSTEM_PRESSED 1468 ? STATE_SYSTEM_PRESSED
1485 : STATE_SYSTEM_CHECKED; 1469 : STATE_SYSTEM_CHECKED;
1486 break; 1470 break;
(...skipping 12 matching lines...) Expand all
1499 // menu bars, when visible. 1483 // menu bars, when visible.
1500 // 1484 //
1501 // TODO(dmazzoni): this should probably check if focus is actually inside 1485 // TODO(dmazzoni): this should probably check if focus is actually inside
1502 // the menu bar, but we don't currently track focus inside menu pop-ups, 1486 // the menu bar, but we don't currently track focus inside menu pop-ups,
1503 // and Chrome only has one menu visible at a time so this works for now. 1487 // and Chrome only has one menu visible at a time so this works for now.
1504 if (data.role == ui::AX_ROLE_MENU_BAR && 1488 if (data.role == ui::AX_ROLE_MENU_BAR &&
1505 !(state & (1 << ui::AX_STATE_INVISIBLE))) { 1489 !(state & (1 << ui::AX_STATE_INVISIBLE))) {
1506 msaa_state |= STATE_SYSTEM_FOCUSED; 1490 msaa_state |= STATE_SYSTEM_FOCUSED;
1507 } 1491 }
1508 1492
1509 switch (GetData().role) {
1510 case ui::AX_ROLE_ARTICLE:
1511 case ui::AX_ROLE_BUSY_INDICATOR:
1512 case ui::AX_ROLE_DEFINITION:
1513 case ui::AX_ROLE_DESCRIPTION_LIST:
1514 case ui::AX_ROLE_DESCRIPTION_LIST_TERM:
1515 case ui::AX_ROLE_IFRAME:
1516 case ui::AX_ROLE_IMAGE:
1517 case ui::AX_ROLE_IMAGE_MAP:
1518 case ui::AX_ROLE_LIST:
1519 case ui::AX_ROLE_LIST_ITEM:
1520 case ui::AX_ROLE_PROGRESS_INDICATOR:
1521 case ui::AX_ROLE_RULER:
1522 case ui::AX_ROLE_SCROLL_AREA:
1523 case ui::AX_ROLE_TABLE_HEADER_CONTAINER:
1524 case ui::AX_ROLE_TERM:
1525 case ui::AX_ROLE_TIMER:
1526 case ui::AX_ROLE_TOOLBAR:
1527 case ui::AX_ROLE_TOOLTIP:
1528 msaa_state |= STATE_SYSTEM_READONLY;
1529 break;
1530
1531 case ui::AX_ROLE_DOCUMENT:
1532 case ui::AX_ROLE_ROOT_WEB_AREA:
1533 case ui::AX_ROLE_WEB_AREA:
1534 msaa_state |= STATE_SYSTEM_READONLY;
1535 msaa_state |= STATE_SYSTEM_FOCUSABLE;
1536 break;
1537
1538 case ui::AX_ROLE_GRID:
1539 // TODO(aleventhal) this changed between ARIA 1.0 and 1.1,
1540 // need to determine whether grids/treegrids should really be readonly
1541 // or editable by default
1542 // msaa_state |= STATE_SYSTEM_READONLY;
1543 break;
1544
1545 case ui::AX_ROLE_IMAGE_MAP_LINK:
1546 msaa_state |= STATE_SYSTEM_LINKED;
1547 msaa_state |= STATE_SYSTEM_READONLY;
1548 break;
1549
1550 case ui::AX_ROLE_LINK:
1551 msaa_state |= STATE_SYSTEM_LINKED;
1552 break;
1553
1554 case ui::AX_ROLE_LIST_BOX_OPTION:
1555 if (msaa_state & STATE_SYSTEM_SELECTABLE) {
1556 msaa_state |= STATE_SYSTEM_FOCUSABLE;
1557 }
1558 break;
1559
1560 case ui::AX_ROLE_MENU_LIST_OPTION:
1561 if (msaa_state & STATE_SYSTEM_SELECTABLE) {
1562 msaa_state |= STATE_SYSTEM_FOCUSABLE;
1563 }
1564 break;
1565
1566 case ui::AX_ROLE_TEXT_FIELD:
1567 case ui::AX_ROLE_SEARCH_BOX:
1568 if (state & (1 << ui::AX_STATE_READ_ONLY))
1569 msaa_state |= STATE_SYSTEM_READONLY;
1570 break;
1571 default:
1572 break;
1573 }
1574
1575 // Compute the final value of READONLY for MSAA.
1576 //
1577 // We always set the READONLY state for elements that have the
1578 // aria-readonly attribute and for a few roles (in the switch above),
1579 // including read-only text fields.
1580 // The majority of focusable controls should not have the read-only state set.
1581 if (state & (1 << ui::AX_STATE_FOCUSABLE) &&
1582 GetData().role != ROLE_SYSTEM_DOCUMENT &&
1583 GetData().role != ROLE_SYSTEM_TEXT) {
1584 msaa_state &= ~(STATE_SYSTEM_READONLY);
1585 }
1586 if (!(state & (1 << ui::AX_STATE_READ_ONLY)))
1587 msaa_state &= ~(STATE_SYSTEM_READONLY);
1588
1589 if (GetData().GetBoolAttribute(ui::AX_ATTR_ARIA_READONLY))
1590 msaa_state |= STATE_SYSTEM_READONLY;
1591
1592 return msaa_state; 1493 return msaa_state;
1593 } 1494 }
1594 1495
1595 int AXPlatformNodeWin::MSAAEvent(ui::AXEvent event) { 1496 int AXPlatformNodeWin::MSAAEvent(ui::AXEvent event) {
1596 switch (event) { 1497 switch (event) {
1597 case ui::AX_EVENT_ALERT: 1498 case ui::AX_EVENT_ALERT:
1598 return EVENT_SYSTEM_ALERT; 1499 return EVENT_SYSTEM_ALERT;
1599 case ui::AX_EVENT_FOCUS: 1500 case ui::AX_EVENT_FOCUS:
1600 return EVENT_OBJECT_FOCUS; 1501 return EVENT_OBJECT_FOCUS;
1601 case ui::AX_EVENT_MENU_START: 1502 case ui::AX_EVENT_MENU_START:
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1715 1616
1716 AXPlatformNodeBase* base = 1617 AXPlatformNodeBase* base =
1717 FromNativeViewAccessible(node->GetNativeViewAccessible()); 1618 FromNativeViewAccessible(node->GetNativeViewAccessible());
1718 if (base && !IsDescendant(base)) 1619 if (base && !IsDescendant(base))
1719 base = nullptr; 1620 base = nullptr;
1720 1621
1721 return static_cast<AXPlatformNodeWin*>(base); 1622 return static_cast<AXPlatformNodeWin*>(base);
1722 } 1623 }
1723 1624
1724 } // namespace ui 1625 } // namespace ui
OLDNEW
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_delegate.h ('k') | ui/accessibility/platform/test_ax_node_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698