| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/accessibility/browser_accessibility_manager_mac.h" | 5 #include "content/browser/accessibility/browser_accessibility_manager_mac.h" |
| 6 | 6 |
| 7 #import "base/mac/mac_util.h" | 7 #import "base/mac/mac_util.h" |
| 8 #import "base/mac/sdk_forward_declarations.h" | 8 #import "base/mac/sdk_forward_declarations.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 break; | 206 break; |
| 207 case ui::AX_EVENT_DOCUMENT_SELECTION_CHANGED: { | 207 case ui::AX_EVENT_DOCUMENT_SELECTION_CHANGED: { |
| 208 mac_notification = NSAccessibilitySelectedTextChangedNotification; | 208 mac_notification = NSAccessibilitySelectedTextChangedNotification; |
| 209 // WebKit fires a notification both on the focused object and the root. | 209 // WebKit fires a notification both on the focused object and the root. |
| 210 BrowserAccessibility* focus = GetFocus(); | 210 BrowserAccessibility* focus = GetFocus(); |
| 211 if (!focus) | 211 if (!focus) |
| 212 break; // Just fire a notification on the root. | 212 break; // Just fire a notification on the root. |
| 213 NSAccessibilityPostNotification(ToBrowserAccessibilityCocoa(focus), | 213 NSAccessibilityPostNotification(ToBrowserAccessibilityCocoa(focus), |
| 214 mac_notification); | 214 mac_notification); |
| 215 | 215 |
| 216 if (base::mac::IsOSElCapitanOrLater()) { | 216 if (base::mac::IsAtLeastOS10_11()) { |
| 217 // |NSAccessibilityPostNotificationWithUserInfo| should be used on OS X | 217 // |NSAccessibilityPostNotificationWithUserInfo| should be used on OS X |
| 218 // 10.11 or later to notify Voiceover about text selection changes. This | 218 // 10.11 or later to notify Voiceover about text selection changes. This |
| 219 // API has been present on versions of OS X since 10.7 but doesn't | 219 // API has been present on versions of OS X since 10.7 but doesn't |
| 220 // appear to be needed by Voiceover before version 10.11. | 220 // appear to be needed by Voiceover before version 10.11. |
| 221 NSDictionary* user_info = | 221 NSDictionary* user_info = |
| 222 GetUserInfoForSelectedTextChangedNotification(); | 222 GetUserInfoForSelectedTextChangedNotification(); |
| 223 | 223 |
| 224 BrowserAccessibility* root = GetRoot(); | 224 BrowserAccessibility* root = GetRoot(); |
| 225 if (!root) | 225 if (!root) |
| 226 return; | 226 return; |
| 227 | 227 |
| 228 NSAccessibilityPostNotificationWithUserInfo( | 228 NSAccessibilityPostNotificationWithUserInfo( |
| 229 ToBrowserAccessibilityCocoa(focus), mac_notification, user_info); | 229 ToBrowserAccessibilityCocoa(focus), mac_notification, user_info); |
| 230 NSAccessibilityPostNotificationWithUserInfo( | 230 NSAccessibilityPostNotificationWithUserInfo( |
| 231 ToBrowserAccessibilityCocoa(root), mac_notification, user_info); | 231 ToBrowserAccessibilityCocoa(root), mac_notification, user_info); |
| 232 return; | 232 return; |
| 233 } | 233 } |
| 234 break; | 234 break; |
| 235 } | 235 } |
| 236 case ui::AX_EVENT_CHECKED_STATE_CHANGED: | 236 case ui::AX_EVENT_CHECKED_STATE_CHANGED: |
| 237 mac_notification = NSAccessibilityValueChangedNotification; | 237 mac_notification = NSAccessibilityValueChangedNotification; |
| 238 break; | 238 break; |
| 239 case ui::AX_EVENT_VALUE_CHANGED: | 239 case ui::AX_EVENT_VALUE_CHANGED: |
| 240 mac_notification = NSAccessibilityValueChangedNotification; | 240 mac_notification = NSAccessibilityValueChangedNotification; |
| 241 if (base::mac::IsOSElCapitanOrLater() && text_edits_.size()) { | 241 if (base::mac::IsAtLeastOS10_11() && text_edits_.size()) { |
| 242 // It seems that we don't need to distinguish between deleted and | 242 // It seems that we don't need to distinguish between deleted and |
| 243 // inserted text for now. | 243 // inserted text for now. |
| 244 base::string16 deleted_text; | 244 base::string16 deleted_text; |
| 245 base::string16 inserted_text; | 245 base::string16 inserted_text; |
| 246 int32_t id = node->GetId(); | 246 int32_t id = node->GetId(); |
| 247 const auto iterator = text_edits_.find(id); | 247 const auto iterator = text_edits_.find(id); |
| 248 if (iterator != text_edits_.end()) | 248 if (iterator != text_edits_.end()) |
| 249 inserted_text = iterator->second; | 249 inserted_text = iterator->second; |
| 250 NSDictionary* user_info = GetUserInfoForValueChangedNotification( | 250 NSDictionary* user_info = GetUserInfoForValueChangedNotification( |
| 251 native_node, deleted_text, inserted_text); | 251 native_node, deleted_text, inserted_text); |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 } | 465 } |
| 466 | 466 |
| 467 return @{ | 467 return @{ |
| 468 NSAccessibilityTextStateChangeTypeKey : @(AXTextStateChangeTypeEdit), | 468 NSAccessibilityTextStateChangeTypeKey : @(AXTextStateChangeTypeEdit), |
| 469 NSAccessibilityTextChangeValues : changes, | 469 NSAccessibilityTextChangeValues : changes, |
| 470 NSAccessibilityTextChangeElement : native_node | 470 NSAccessibilityTextChangeElement : native_node |
| 471 }; | 471 }; |
| 472 } | 472 } |
| 473 | 473 |
| 474 } // namespace content | 474 } // namespace content |
| OLD | NEW |