| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2010 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 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 721 postNotification(node, AXSelectedChildrenChanged, false); | 721 postNotification(node, AXSelectedChildrenChanged, false); |
| 722 } | 722 } |
| 723 | 723 |
| 724 void AXObjectCache::selectedChildrenChanged(RenderObject* renderer) | 724 void AXObjectCache::selectedChildrenChanged(RenderObject* renderer) |
| 725 { | 725 { |
| 726 // postToElement is false so that you can pass in any child of an element an
d it will go up the parent tree | 726 // postToElement is false so that you can pass in any child of an element an
d it will go up the parent tree |
| 727 // to find the container which should send out the notification. | 727 // to find the container which should send out the notification. |
| 728 postNotification(renderer, AXSelectedChildrenChanged, false); | 728 postNotification(renderer, AXSelectedChildrenChanged, false); |
| 729 } | 729 } |
| 730 | 730 |
| 731 void AXObjectCache::nodeTextChangeNotification(Node* node, AXTextChange textChan
ge, unsigned offset, const String& text) | |
| 732 { | |
| 733 if (!node) | |
| 734 return; | |
| 735 | |
| 736 stopCachingComputedObjectAttributes(); | |
| 737 | |
| 738 // Delegate on the right platform | |
| 739 AccessibilityObject* obj = getOrCreate(node); | |
| 740 nodeTextChangePlatformNotification(obj, textChange, offset, text); | |
| 741 } | |
| 742 | |
| 743 void AXObjectCache::handleScrollbarUpdate(ScrollView* view) | 731 void AXObjectCache::handleScrollbarUpdate(ScrollView* view) |
| 744 { | 732 { |
| 745 if (!view) | 733 if (!view) |
| 746 return; | 734 return; |
| 747 | 735 |
| 748 // We don't want to create a scroll view from this method, only update an ex
isting one. | 736 // We don't want to create a scroll view from this method, only update an ex
isting one. |
| 749 if (AccessibilityObject* scrollViewObject = get(view)) { | 737 if (AccessibilityObject* scrollViewObject = get(view)) { |
| 750 stopCachingComputedObjectAttributes(); | 738 stopCachingComputedObjectAttributes(); |
| 751 scrollViewObject->updateChildrenIfNecessary(); | 739 scrollViewObject->updateChildrenIfNecessary(); |
| 752 } | 740 } |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 940 obj = get(document->renderer()); | 928 obj = get(document->renderer()); |
| 941 } | 929 } |
| 942 | 930 |
| 943 if (!obj || !obj->document() || !obj->documentFrameView() || !obj->documentF
rameView()->frame() || !obj->documentFrameView()->frame()->page()) | 931 if (!obj || !obj->document() || !obj->documentFrameView() || !obj->documentF
rameView()->frame() || !obj->documentFrameView()->frame()->page()) |
| 944 return; | 932 return; |
| 945 | 933 |
| 946 ChromeClient* client = obj->documentFrameView()->frame()->page()->chrome().c
lient(); | 934 ChromeClient* client = obj->documentFrameView()->frame()->page()->chrome().c
lient(); |
| 947 if (!client) | 935 if (!client) |
| 948 return; | 936 return; |
| 949 | 937 |
| 950 switch (notification) { | 938 if (notification == AXActiveDescendantChanged |
| 951 case AXActiveDescendantChanged: | 939 && obj->document()->focusedElement() |
| 952 if (!obj->document()->focusedElement() || (obj->node() != obj->document(
)->focusedElement())) | 940 && obj->node() == obj->document()->focusedElement()) { |
| 953 break; | |
| 954 | |
| 955 // Calling handleFocusedUIElementChanged will focus the new active | 941 // Calling handleFocusedUIElementChanged will focus the new active |
| 956 // descendant and send the AXFocusedUIElementChanged notification. | 942 // descendant and send the AXFocusedUIElementChanged notification. |
| 957 handleFocusedUIElementChanged(0, obj->document()->focusedElement()); | 943 handleFocusedUIElementChanged(0, obj->document()->focusedElement()); |
| 958 break; | |
| 959 case AXAriaAttributeChanged: | |
| 960 case AXAutocorrectionOccured: | |
| 961 case AXCheckedStateChanged: | |
| 962 case AXChildrenChanged: | |
| 963 case AXFocusedUIElementChanged: | |
| 964 case AXInvalidStatusChanged: | |
| 965 case AXLayoutComplete: | |
| 966 case AXLiveRegionChanged: | |
| 967 case AXLoadComplete: | |
| 968 case AXMenuListItemSelected: | |
| 969 case AXMenuListValueChanged: | |
| 970 case AXRowCollapsed: | |
| 971 case AXRowCountChanged: | |
| 972 case AXRowExpanded: | |
| 973 case AXScrolledToAnchor: | |
| 974 case AXSelectedChildrenChanged: | |
| 975 case AXSelectedTextChanged: | |
| 976 case AXTextChanged: | |
| 977 case AXValueChanged: | |
| 978 break; | |
| 979 } | 944 } |
| 980 | 945 |
| 981 client->postAccessibilityNotification(obj, notification); | 946 client->postAccessibilityNotification(obj, notification); |
| 982 } | 947 } |
| 983 | 948 |
| 984 void AXObjectCache::nodeTextChangePlatformNotification(AccessibilityObject*, AXT
extChange, unsigned, const String&) | |
| 985 { | |
| 986 } | |
| 987 | |
| 988 void AXObjectCache::handleFocusedUIElementChanged(Node*, Node* newFocusedNode) | 949 void AXObjectCache::handleFocusedUIElementChanged(Node*, Node* newFocusedNode) |
| 989 { | 950 { |
| 990 if (!newFocusedNode) | 951 if (!newFocusedNode) |
| 991 return; | 952 return; |
| 992 | 953 |
| 993 Page* page = newFocusedNode->document()->page(); | 954 Page* page = newFocusedNode->document()->page(); |
| 994 if (!page) | 955 if (!page) |
| 995 return; | 956 return; |
| 996 | 957 |
| 997 AccessibilityObject* focusedObject = focusedUIElementForPage(page); | 958 AccessibilityObject* focusedObject = focusedUIElementForPage(page); |
| 998 if (!focusedObject) | 959 if (!focusedObject) |
| 999 return; | 960 return; |
| 1000 | 961 |
| 1001 postPlatformNotification(focusedObject, AXFocusedUIElementChanged); | 962 postPlatformNotification(focusedObject, AXFocusedUIElementChanged); |
| 1002 } | 963 } |
| 1003 | 964 |
| 1004 void AXObjectCache::handleScrolledToAnchor(const Node* anchorNode) | 965 void AXObjectCache::handleScrolledToAnchor(const Node* anchorNode) |
| 1005 { | 966 { |
| 1006 // The anchor node may not be accessible. Post the notification for the | 967 // The anchor node may not be accessible. Post the notification for the |
| 1007 // first accessible object. | 968 // first accessible object. |
| 1008 postPlatformNotification(AccessibilityObject::firstAccessibleObjectFromNode(
anchorNode), AXScrolledToAnchor); | 969 postPlatformNotification(AccessibilityObject::firstAccessibleObjectFromNode(
anchorNode), AXScrolledToAnchor); |
| 1009 } | 970 } |
| 1010 | 971 |
| 1011 } // namespace WebCore | 972 } // namespace WebCore |
| 1012 | 973 |
| 1013 #endif // HAVE(ACCESSIBILITY) | 974 #endif // HAVE(ACCESSIBILITY) |
| OLD | NEW |