48TEST(AXEventGeneratorTest, LoadCompleteNewTree) {
51 initial_state.
nodes.resize(1);
52 initial_state.
nodes[0].id = 1;
55 AXTree tree(initial_state);
59 load_complete_update.
root_id = 2;
60 load_complete_update.
nodes.resize(1);
61 load_complete_update.
nodes[0].id = 2;
62 load_complete_update.
nodes[0].relative_bounds.bounds =
67 ASSERT_TRUE(tree.
Unserialize(load_complete_update));
69 HasEvent(event_generator, AXEventGenerator::Event::LOAD_COMPLETE, 2));
71 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 2));
74 load_complete_update.
root_id = 3;
75 load_complete_update.
nodes.resize(1);
76 load_complete_update.
nodes[0].id = 3;
77 load_complete_update.
nodes[0].relative_bounds.bounds =
gfx::RectF(0, 0, 0, 0);
81 ASSERT_TRUE(tree.
Unserialize(load_complete_update));
83 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 3));
87 load_complete_update.
root_id = 4;
88 load_complete_update.
nodes.resize(1);
89 load_complete_update.
nodes[0].id = 4;
90 load_complete_update.
nodes[0].relative_bounds.bounds =
92 load_complete_update.
nodes[0].AddStringAttribute(
97 ASSERT_TRUE(tree.
Unserialize(load_complete_update));
99 HasEvent(event_generator, AXEventGenerator::Event::LOAD_COMPLETE, 4));
101 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 4));
209TEST(AXEventGeneratorTest, ExpandedAndRowCount) {
212 initial_state.
nodes.resize(4);
213 initial_state.
nodes[0].id = 1;
215 initial_state.
nodes[0].child_ids.push_back(2);
216 initial_state.
nodes[0].child_ids.push_back(4);
217 initial_state.
nodes[1].id = 2;
219 initial_state.
nodes[1].child_ids.push_back(3);
220 initial_state.
nodes[2].id = 3;
222 initial_state.
nodes[3].id = 4;
225 AXTree tree(initial_state);
230 update.nodes[3].state = 0;
233 EXPECT_TRUE(HasEvent(event_generator, AXEventGenerator::Event::COLLAPSED, 4));
234 EXPECT_TRUE(HasEvent(event_generator, AXEventGenerator::Event::EXPANDED, 3));
236 HasEvent(event_generator, AXEventGenerator::Event::ROW_COUNT_CHANGED, 2));
238 HasEvent(event_generator, AXEventGenerator::Event::STATE_CHANGED, 3));
240 AXEventGenerator::Event::WIN_IACCESSIBLE_STATE_CHANGED,
243 HasEvent(event_generator, AXEventGenerator::Event::STATE_CHANGED, 4));
245 AXEventGenerator::Event::WIN_IACCESSIBLE_STATE_CHANGED,
249TEST(AXEventGeneratorTest, SelectedAndSelectedChildren) {
252 initial_state.
nodes.resize(4);
253 initial_state.
nodes[0].id = 1;
255 initial_state.
nodes[0].child_ids.push_back(2);
256 initial_state.
nodes[0].child_ids.push_back(4);
257 initial_state.
nodes[1].id = 2;
259 initial_state.
nodes[1].child_ids.push_back(3);
260 initial_state.
nodes[2].id = 3;
262 initial_state.
nodes[3].id = 4;
266 AXTree tree(initial_state);
272 update.nodes.emplace_back();
279 AXEventGenerator::Event::SELECTED_CHILDREN_CHANGED, 2));
281 HasEvent(event_generator, AXEventGenerator::Event::SELECTED_CHANGED, 3));
283 AXEventGenerator::Event::WIN_IACCESSIBLE_STATE_CHANGED,
286 HasEvent(event_generator, AXEventGenerator::Event::SELECTED_CHANGED, 4));
288 AXEventGenerator::Event::WIN_IACCESSIBLE_STATE_CHANGED,
352TEST(AXEventGeneratorTest, AddLiveRegionAttribute) {
355 initial_state.
nodes.resize(1);
356 initial_state.
nodes[0].id = 1;
357 AXTree tree(initial_state);
365 AXEventGenerator::Event::LIVE_STATUS_CHANGED, 1));
367 AXEventGenerator::Event::LIVE_REGION_CREATED, 1));
374 AXEventGenerator::Event::LIVE_STATUS_CHANGED, 1));
382 AXEventGenerator::Event::LIVE_STATUS_CHANGED, 1));
404TEST(AXEventGeneratorTest, ActiveDescendantChanged) {
407 initial_state.
nodes.resize(3);
408 initial_state.
nodes[0].id = 1;
410 initial_state.
nodes[0].child_ids.push_back(2);
411 initial_state.
nodes[0].child_ids.push_back(3);
412 initial_state.
nodes[0].AddIntAttribute(
414 initial_state.
nodes[1].id = 2;
416 initial_state.
nodes[2].id = 3;
418 AXTree tree(initial_state);
422 update.nodes[0].int_attributes.clear();
427 AXEventGenerator::Event::ACTIVE_DESCENDANT_CHANGED, 1));
429 AXEventGenerator::Event::RELATED_NODE_CHANGED, 1));
432TEST(AXEventGeneratorTest, CreateAlertAndLiveRegion) {
435 initial_state.
nodes.resize(1);
436 initial_state.
nodes[0].id = 1;
437 AXTree tree(initial_state);
442 update.nodes[0].child_ids.push_back(2);
443 update.nodes[0].child_ids.push_back(3);
444 update.nodes[0].child_ids.push_back(4);
461 EXPECT_TRUE(HasEvent(event_generator, AXEventGenerator::Event::ALERT, 3));
462 EXPECT_TRUE(HasEvent(event_generator, AXEventGenerator::Event::ALERT, 4));
464 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 1));
466 AXEventGenerator::Event::LIVE_REGION_CREATED, 2));
468 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 2));
470 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 3));
472 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 4));
475TEST(AXEventGeneratorTest, LiveRegionChanged) {
478 initial_state.
nodes.resize(3);
479 initial_state.
nodes[0].id = 1;
480 initial_state.
nodes[0].AddStringAttribute(
482 initial_state.
nodes[0].AddStringAttribute(
484 initial_state.
nodes[0].child_ids.push_back(2);
485 initial_state.
nodes[0].child_ids.push_back(3);
486 initial_state.
nodes[1].id = 2;
488 initial_state.
nodes[1].AddStringAttribute(
492 initial_state.
nodes[2].id = 3;
494 initial_state.
nodes[2].AddStringAttribute(
498 AXTree tree(initial_state);
502 update.nodes[1].string_attributes.clear();
503 update.nodes[1].AddStringAttribute(
507 update.nodes[2].string_attributes.clear();
508 update.nodes[2].AddStringAttribute(
515 AXEventGenerator::Event::LIVE_REGION_CHANGED, 1));
517 AXEventGenerator::Event::LIVE_REGION_NODE_CHANGED, 2));
519 AXEventGenerator::Event::LIVE_REGION_NODE_CHANGED, 3));
521 HasEvent(event_generator, AXEventGenerator::Event::NAME_CHANGED, 2));
523 HasEvent(event_generator, AXEventGenerator::Event::NAME_CHANGED, 3));
526TEST(AXEventGeneratorTest, LiveRegionOnlyTextChanges) {
529 initial_state.
nodes.resize(3);
530 initial_state.
nodes[0].id = 1;
531 initial_state.
nodes[0].AddStringAttribute(
533 initial_state.
nodes[0].AddStringAttribute(
535 initial_state.
nodes[0].child_ids.push_back(2);
536 initial_state.
nodes[0].child_ids.push_back(3);
537 initial_state.
nodes[1].id = 2;
539 initial_state.
nodes[1].AddStringAttribute(
543 initial_state.
nodes[2].id = 3;
545 initial_state.
nodes[2].AddStringAttribute(
549 AXTree tree(initial_state);
561 AXEventGenerator::Event::CHECKED_STATE_CHANGED, 3));
563 AXEventGenerator::Event::WIN_IACCESSIBLE_STATE_CHANGED,
566 AXEventGenerator::Event::DESCRIPTION_CHANGED, 2));
569TEST(AXEventGeneratorTest, BusyLiveRegionChanged) {
572 initial_state.
nodes.resize(3);
573 initial_state.
nodes[0].id = 1;
574 initial_state.
nodes[0].AddStringAttribute(
576 initial_state.
nodes[0].AddStringAttribute(
580 initial_state.
nodes[0].child_ids.push_back(2);
581 initial_state.
nodes[0].child_ids.push_back(3);
582 initial_state.
nodes[1].id = 2;
584 initial_state.
nodes[1].AddStringAttribute(
588 initial_state.
nodes[2].id = 3;
590 initial_state.
nodes[2].AddStringAttribute(
594 AXTree tree(initial_state);
598 update.nodes[1].string_attributes.clear();
599 update.nodes[1].AddStringAttribute(
603 update.nodes[2].string_attributes.clear();
604 update.nodes[2].AddStringAttribute(
611 HasEvent(event_generator, AXEventGenerator::Event::NAME_CHANGED, 2));
613 HasEvent(event_generator, AXEventGenerator::Event::NAME_CHANGED, 3));
714TEST(AXEventGeneratorTest, TextAttributeChanged) {
717 initial_state.
nodes.resize(17);
718 initial_state.
nodes[0].id = 1;
719 initial_state.
nodes[0].child_ids = {2, 3, 4, 5, 6, 7, 8, 9,
720 10, 11, 12, 13, 14, 15, 16, 17};
721 initial_state.
nodes[1].id = 2;
722 initial_state.
nodes[2].id = 3;
723 initial_state.
nodes[3].id = 4;
724 initial_state.
nodes[4].id = 5;
725 initial_state.
nodes[5].id = 6;
726 initial_state.
nodes[6].id = 7;
727 initial_state.
nodes[7].id = 8;
728 initial_state.
nodes[8].id = 9;
729 initial_state.
nodes[9].id = 10;
730 initial_state.
nodes[10].id = 11;
731 initial_state.
nodes[11].id = 12;
732 initial_state.
nodes[12].id = 13;
733 initial_state.
nodes[13].id = 14;
734 initial_state.
nodes[14].id = 15;
735 initial_state.
nodes[15].id = 16;
736 initial_state.
nodes[16].id = 17;
739 initial_state.
nodes[11].AddIntListAttribute(
742 initial_state.
nodes[11].AddIntListAttribute(
744 initial_state.
nodes[11].AddIntListAttribute(
747 AXTree tree(initial_state);
753 update.nodes[3].AddIntAttribute(
756 update.nodes[4].AddIntAttribute(
759 update.nodes[5].AddIntAttribute(
762 update.nodes[6].AddIntAttribute(
765 update.nodes[7].AddIntAttribute(
768 update.nodes[8].AddIntAttribute(
771 update.nodes[9].AddIntListAttribute(
774 update.nodes[10].AddIntListAttribute(
779 update.nodes[12].AddIntListAttribute(
782 update.nodes[13].AddIntListAttribute(
794 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 2));
796 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 3));
798 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 4));
800 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 5));
802 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 6));
804 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 7));
806 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 8));
808 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 9));
810 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 10));
812 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 11));
814 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 12));
816 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 13));
818 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 14));
820 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 15));
822 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 16));
824 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 17));
827TEST(AXEventGeneratorTest, ObjectAttributeChanged) {
830 initial_state.
nodes.resize(3);
831 initial_state.
nodes[0].id = 1;
832 initial_state.
nodes[0].child_ids = {2, 3};
833 initial_state.
nodes[1].id = 2;
834 initial_state.
nodes[2].id = 3;
835 AXTree tree(initial_state);
844 HasEvent(event_generator,
845 AXEventGenerator::Event::ATK_TEXT_OBJECT_ATTRIBUTE_CHANGED, 2));
847 HasEvent(event_generator,
848 AXEventGenerator::Event::ATK_TEXT_OBJECT_ATTRIBUTE_CHANGED, 3));
850 AXEventGenerator::Event::OBJECT_ATTRIBUTE_CHANGED, 2));
852 AXEventGenerator::Event::OBJECT_ATTRIBUTE_CHANGED, 3));
855TEST(AXEventGeneratorTest, OtherAttributeChanged) {
858 initial_state.
nodes.resize(6);
859 initial_state.
nodes[0].id = 1;
860 initial_state.
nodes[0].child_ids.push_back(2);
861 initial_state.
nodes[0].child_ids.push_back(3);
862 initial_state.
nodes[0].child_ids.push_back(4);
863 initial_state.
nodes[0].child_ids.push_back(5);
864 initial_state.
nodes[0].child_ids.push_back(6);
865 initial_state.
nodes[1].id = 2;
866 initial_state.
nodes[2].id = 3;
867 initial_state.
nodes[3].id = 4;
868 initial_state.
nodes[4].id = 5;
869 initial_state.
nodes[5].id = 6;
870 AXTree tree(initial_state);
881 std::vector<int> ids = {2};
886 HasEvent(event_generator, AXEventGenerator::Event::CONTROLS_CHANGED, 6));
888 HasEvent(event_generator, AXEventGenerator::Event::LANGUAGE_CHANGED, 2));
890 AXEventGenerator::Event::OTHER_ATTRIBUTE_CHANGED, 3));
892 AXEventGenerator::Event::TEXT_ATTRIBUTE_CHANGED, 4));
894 AXEventGenerator::Event::OTHER_ATTRIBUTE_CHANGED, 5));
896 AXEventGenerator::Event::RELATED_NODE_CHANGED, 6));
948TEST(AXEventGeneratorTest, MenuItemSelected) {
951 initial_state.
nodes.resize(3);
952 initial_state.
nodes[0].id = 1;
954 initial_state.
nodes[0].child_ids.push_back(2);
955 initial_state.
nodes[0].child_ids.push_back(3);
956 initial_state.
nodes[0].AddIntAttribute(
958 initial_state.
nodes[1].id = 2;
960 initial_state.
nodes[2].id = 3;
962 AXTree tree(initial_state);
966 update.nodes[0].int_attributes.clear();
971 AXEventGenerator::Event::ACTIVE_DESCENDANT_CHANGED, 1));
973 AXEventGenerator::Event::MENU_ITEM_SELECTED, 3));
975 AXEventGenerator::Event::RELATED_NODE_CHANGED, 1));
1046TEST(AXEventGeneratorTest, NodeBecomesUnignored) {
1049 initial_state.
nodes.resize(5);
1050 initial_state.
nodes[0].id = 1;
1052 initial_state.
nodes[0].child_ids.push_back(2);
1053 initial_state.
nodes[1].id = 2;
1055 initial_state.
nodes[1].child_ids.push_back(3);
1056 initial_state.
nodes[2].id = 3;
1059 initial_state.
nodes[2].child_ids.push_back(4);
1060 initial_state.
nodes[3].id = 4;
1063 initial_state.
nodes[3].child_ids.push_back(5);
1064 initial_state.
nodes[4].id = 5;
1067 AXTree tree(initial_state);
1071 update.nodes[3].state = 0;
1074 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 2));
1076 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 4));
1078 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 4));
1081TEST(AXEventGeneratorTest, NodeBecomesUnignored2) {
1084 initial_state.
nodes.resize(5);
1085 initial_state.
nodes[0].id = 1;
1087 initial_state.
nodes[0].child_ids.push_back(2);
1088 initial_state.
nodes[1].id = 2;
1090 initial_state.
nodes[1].child_ids.push_back(3);
1091 initial_state.
nodes[2].id = 3;
1094 initial_state.
nodes[2].child_ids.push_back(4);
1095 initial_state.
nodes[3].id = 4;
1098 initial_state.
nodes[3].child_ids.push_back(5);
1099 initial_state.
nodes[4].id = 5;
1102 AXTree tree(initial_state);
1107 update.nodes[3].state = 0;
1110 update.nodes[3].child_ids.clear();
1113 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 2));
1115 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 4));
1117 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 4));
1150TEST(AXEventGeneratorTest, TwoNodesSwapIgnored) {
1153 initial_state.
nodes.resize(3);
1154 initial_state.
nodes[0].id = 1;
1156 initial_state.
nodes[0].child_ids.push_back(2);
1157 initial_state.
nodes[1].id = 2;
1159 initial_state.
nodes[1].child_ids.push_back(3);
1160 initial_state.
nodes[2].id = 3;
1164 AXTree tree(initial_state);
1172 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 1));
1174 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 2));
1176 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 3));
1178 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 3));
1181TEST(AXEventGeneratorTest, TwoNodesSwapIgnored2) {
1184 initial_state.
nodes.resize(3);
1185 initial_state.
nodes[0].id = 1;
1187 initial_state.
nodes[0].child_ids.push_back(2);
1188 initial_state.
nodes[1].id = 2;
1191 initial_state.
nodes[1].child_ids.push_back(3);
1192 initial_state.
nodes[2].id = 3;
1195 AXTree tree(initial_state);
1203 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 1));
1205 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 2));
1207 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 3));
1209 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 2));
1357TEST(AXEventGeneratorTest, IgnoredChangedFiredOnAncestorOnly4) {
1388 initial_state.
nodes.resize(8);
1389 initial_state.
nodes[0].id = 1;
1391 initial_state.
nodes[0].child_ids = {2};
1393 initial_state.
nodes[1].id = 2;
1395 initial_state.
nodes[1].child_ids = {3};
1397 initial_state.
nodes[2].id = 3;
1399 initial_state.
nodes[2].child_ids = {4};
1402 initial_state.
nodes[3].id = 4;
1404 initial_state.
nodes[3].child_ids = {5};
1407 initial_state.
nodes[4].id = 5;
1409 initial_state.
nodes[4].child_ids = {6, 7, 8};
1411 initial_state.
nodes[5].id = 6;
1415 initial_state.
nodes[6].id = 7;
1419 initial_state.
nodes[7].id = 8;
1422 AXTree tree(initial_state);
1431 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 5));
1433 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 6));
1435 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 7));
1437 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 6));
1439 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 7));
1441 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 8));
1444TEST(AXEventGeneratorTest, IgnoredChangedFiredOnAncestorOnly5) {
1475 initial_state.
nodes.resize(8);
1476 initial_state.
nodes[0].id = 1;
1478 initial_state.
nodes[0].child_ids = {2};
1480 initial_state.
nodes[1].id = 2;
1482 initial_state.
nodes[1].child_ids = {3};
1484 initial_state.
nodes[2].id = 3;
1486 initial_state.
nodes[2].child_ids = {4};
1489 initial_state.
nodes[3].id = 4;
1491 initial_state.
nodes[3].child_ids = {5};
1494 initial_state.
nodes[4].id = 5;
1496 initial_state.
nodes[4].child_ids = {6, 7, 8};
1498 initial_state.
nodes[5].id = 6;
1502 initial_state.
nodes[6].id = 7;
1505 initial_state.
nodes[7].id = 8;
1508 AXTree tree(initial_state);
1518 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 5));
1520 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 6));
1522 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 1));
1524 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 6));
1527TEST(AXEventGeneratorTest, IgnoredChangedFiredOnAncestorOnly6) {
1558 initial_state.
nodes.resize(8);
1559 initial_state.
nodes[0].id = 1;
1561 initial_state.
nodes[0].child_ids = {2};
1564 initial_state.
nodes[1].id = 2;
1566 initial_state.
nodes[1].child_ids = {3};
1568 initial_state.
nodes[2].id = 3;
1570 initial_state.
nodes[2].child_ids = {4};
1572 initial_state.
nodes[3].id = 4;
1574 initial_state.
nodes[3].child_ids = {5};
1576 initial_state.
nodes[4].id = 5;
1578 initial_state.
nodes[4].child_ids = {6, 7, 8};
1580 initial_state.
nodes[5].id = 6;
1584 initial_state.
nodes[6].id = 7;
1588 initial_state.
nodes[7].id = 8;
1591 AXTree tree(initial_state);
1601 HasEvent(event_generator, AXEventGenerator::Event::CHILDREN_CHANGED, 5));
1603 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 1));
1605 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 6));
1607 HasEvent(event_generator, AXEventGenerator::Event::SUBTREE_CREATED, 7));
1609 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 1));
1611 HasEvent(event_generator, AXEventGenerator::Event::IGNORED_CHANGED, 8));
1769TEST(AXEventGeneratorTest, ActiveDescendantChangeOnDescendant) {
1772 initial_state.
nodes.resize(5);
1773 initial_state.
nodes[0].id = 1;
1775 initial_state.
nodes[0].child_ids.push_back(2);
1776 initial_state.
nodes[1].id = 2;
1778 initial_state.
nodes[1].child_ids.push_back(3);
1779 initial_state.
nodes[2].id = 3;
1781 initial_state.
nodes[2].AddIntAttribute(
1783 initial_state.
nodes[2].child_ids.push_back(4);
1784 initial_state.
nodes[2].child_ids.push_back(5);
1785 initial_state.
nodes[3].id = 4;
1787 initial_state.
nodes[4].id = 5;
1790 AXTree tree(initial_state);
1793 initial_state.
nodes[2].RemoveIntAttribute(
1795 initial_state.
nodes[2].AddIntAttribute(
1798 update.node_id_to_clear = 2;
1801 AXEventGenerator::Event::ACTIVE_DESCENDANT_CHANGED, 3));
1803 AXEventGenerator::Event::RELATED_NODE_CHANGED, 3));
1839TEST(AXEventGeneratorTest, StringPropertyChanges) {
1842 initial_state.
nodes.resize(1);
1843 initial_state.
nodes[0].id = 1;
1847 std::string old_value;
1848 std::string new_value;
1856 for (
auto&& attrib : attributes) {
1857 initial_state.
nodes.push_back({});
1858 initial_state.
nodes.back().id = initial_state.
nodes.size();
1859 initial_state.
nodes.back().AddStringAttribute(attrib.id, attrib.old_value);
1860 initial_state.
nodes[0].child_ids.push_back(initial_state.
nodes.size());
1863 AXTree tree(initial_state);
1867 for (
auto&& attrib : attributes) {
1868 initial_state.
nodes[index++].AddStringAttribute(attrib.id,
1875 AXEventGenerator::Event::ACCESS_KEY_CHANGED, 2));
1877 AXEventGenerator::Event::CLASS_NAME_CHANGED, 3));
1879 AXEventGenerator::Event::KEY_SHORTCUTS_CHANGED, 4));
1881 HasEvent(event_generator, AXEventGenerator::Event::LANGUAGE_CHANGED, 5));
1883 AXEventGenerator::Event::PLACEHOLDER_CHANGED, 6));
1886TEST(AXEventGeneratorTest, IntPropertyChanges) {
1889 initial_state.
nodes.resize(1);
1890 initial_state.
nodes[0].id = 1;
1901 for (
auto&& attrib : attributes) {
1902 initial_state.
nodes.push_back({});
1903 initial_state.
nodes.back().id = initial_state.
nodes.size();
1904 initial_state.
nodes.back().AddIntAttribute(attrib.id, attrib.old_value);
1905 initial_state.
nodes[0].child_ids.push_back(initial_state.
nodes.size());
1908 AXTree tree(initial_state);
1912 for (
auto&& attrib : attributes)
1913 initial_state.
nodes[index++].AddIntAttribute(attrib.id, attrib.new_value);
1918 AXEventGenerator::Event::HIERARCHICAL_LEVEL_CHANGED, 2));
1920 AXEventGenerator::Event::POSITION_IN_SET_CHANGED, 3));
1922 HasEvent(event_generator, AXEventGenerator::Event::SET_SIZE_CHANGED, 4));
1925TEST(AXEventGeneratorTest, IntListPropertyChanges) {
1928 initial_state.
nodes.resize(1);
1929 initial_state.
nodes[0].id = 1;
1933 std::vector<int> old_value;
1934 std::vector<int> new_value;
1940 for (
auto&& attrib : attributes) {
1941 initial_state.
nodes.push_back({});
1942 initial_state.
nodes.back().id = initial_state.
nodes.size();
1943 initial_state.
nodes.back().AddIntListAttribute(attrib.id, attrib.old_value);
1944 initial_state.
nodes[0].child_ids.push_back(initial_state.
nodes.size());
1947 AXTree tree(initial_state);
1951 for (
auto&& attrib : attributes) {
1952 initial_state.
nodes[index++].AddIntListAttribute(attrib.id,
1959 AXEventGenerator::Event::DESCRIBED_BY_CHANGED, 2));
1961 HasEvent(event_generator, AXEventGenerator::Event::FLOW_FROM_CHANGED, 1));
1963 HasEvent(event_generator, AXEventGenerator::Event::FLOW_FROM_CHANGED, 2));
1965 HasEvent(event_generator, AXEventGenerator::Event::FLOW_TO_CHANGED, 3));
1967 AXEventGenerator::Event::LABELED_BY_CHANGED, 4));
1969 AXEventGenerator::Event::RELATED_NODE_CHANGED, 2));
1971 AXEventGenerator::Event::RELATED_NODE_CHANGED, 3));
1973 AXEventGenerator::Event::RELATED_NODE_CHANGED, 4));
1976TEST(AXEventGeneratorTest, AriaBusyChanged) {
1979 initial_state.
nodes.resize(1);
1980 initial_state.
nodes[0].id = 1;
1981 AXTree tree(initial_state);
1991 HasEvent(event_generator, AXEventGenerator::Event::BUSY_CHANGED, 1));
1993 AXEventGenerator::Event::LAYOUT_INVALIDATED, 1));
1995 AXEventGenerator::Event::WIN_IACCESSIBLE_STATE_CHANGED,
2044TEST(AXEventGeneratorTest, FlowToChanged) {
2047 initial_state.
nodes.resize(6);
2048 initial_state.
nodes[0].id = 1;
2050 initial_state.
nodes[0].child_ids.assign({2, 3, 4, 5, 6});
2051 initial_state.
nodes[1].id = 2;
2053 initial_state.
nodes[1].AddIntListAttribute(
2055 initial_state.
nodes[2].id = 3;
2057 initial_state.
nodes[3].id = 4;
2059 initial_state.
nodes[4].id = 5;
2061 initial_state.
nodes[5].id = 6;
2064 AXTree tree(initial_state);
2073 HasEvent(event_generator, AXEventGenerator::Event::FLOW_FROM_CHANGED, 3));
2075 HasEvent(event_generator, AXEventGenerator::Event::FLOW_FROM_CHANGED, 5));
2077 HasEvent(event_generator, AXEventGenerator::Event::FLOW_FROM_CHANGED, 6));
2079 HasEvent(event_generator, AXEventGenerator::Event::FLOW_TO_CHANGED, 2));
2081 AXEventGenerator::Event::RELATED_NODE_CHANGED, 2));