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

Side by Side Diff: content/browser/accessibility/browser_accessibility_win.cc

Issue 1308153012: Uses isEditable and isRichlyEditable to determine which attributes to expose on Mac and how to repr… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 (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_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 3735 matching lines...) Expand 10 before | Expand all | Expand 10 after
3746 if (focus_object->IsDescendantOf(this)) 3746 if (focus_object->IsDescendantOf(this))
3747 return GetHypertextOffsetFromDescendant(*focus_object); 3747 return GetHypertextOffsetFromDescendant(*focus_object);
3748 3748
3749 return -1; 3749 return -1;
3750 } 3750 }
3751 3751
3752 void BrowserAccessibilityWin::GetSelectionOffsets( 3752 void BrowserAccessibilityWin::GetSelectionOffsets(
3753 int* selection_start, int* selection_end) const { 3753 int* selection_start, int* selection_end) const {
3754 DCHECK(selection_start && selection_end); 3754 DCHECK(selection_start && selection_end);
3755 3755
3756 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, selection_start) && 3756 if (HasState(ui::AX_STATE_EDITABLE) &&
dmazzoni 2015/09/08 21:18:44 We already have IsEditableText - could you modify
3757 !HasState(ui::AX_STATE_RICHLY_EDITABLE) &&
3758 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, selection_start) &&
3757 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, selection_end)) { 3759 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, selection_end)) {
3758 return; 3760 return;
3759 } 3761 }
3760 3762
3761 *selection_start = GetSelectionAnchor(); 3763 *selection_start = GetSelectionAnchor();
3762 *selection_end = GetSelectionFocus(); 3764 *selection_end = GetSelectionFocus();
3763 if (*selection_start < 0 || *selection_end < 0) 3765 if (*selection_start < 0 || *selection_end < 0)
3764 return; 3766 return;
3765 3767
3766 if (*selection_end < *selection_start) 3768 if (*selection_end < *selection_start)
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
4009 BrowserAccessibilityStateImpl::GetInstance(); 4011 BrowserAccessibilityStateImpl::GetInstance();
4010 if (!accessibility_state->disable_hot_tracking_for_testing()) { 4012 if (!accessibility_state->disable_hot_tracking_for_testing()) {
4011 if (HasState(ui::AX_STATE_HOVERED)) 4013 if (HasState(ui::AX_STATE_HOVERED))
4012 ia_state |= STATE_SYSTEM_HOTTRACKED; 4014 ia_state |= STATE_SYSTEM_HOTTRACKED;
4013 } 4015 }
4014 4016
4015 // WebKit marks everything as readonly unless it's editable text, so if it's 4017 // WebKit marks everything as readonly unless it's editable text, so if it's
4016 // not readonly, mark it as editable now. The final computation of the 4018 // not readonly, mark it as editable now. The final computation of the
4017 // READONLY state for MSAA is below, after the switch. 4019 // READONLY state for MSAA is below, after the switch.
4018 if (!HasState(ui::AX_STATE_READ_ONLY)) 4020 if (!HasState(ui::AX_STATE_READ_ONLY))
4019 ia2_state |= IA2_STATE_EDITABLE; 4021 ia2_state |= IA2_STATE_EDITABLE;
dmazzoni 2015/09/08 21:18:44 Can you fix this line too?
4020 4022
4021 if (GetBoolAttribute(ui::AX_ATTR_BUTTON_MIXED)) 4023 if (GetBoolAttribute(ui::AX_ATTR_BUTTON_MIXED))
4022 ia_state |= STATE_SYSTEM_MIXED; 4024 ia_state |= STATE_SYSTEM_MIXED;
4023 4025
4024 if (GetBoolAttribute(ui::AX_ATTR_CAN_SET_VALUE)) 4026 if (GetBoolAttribute(ui::AX_ATTR_CAN_SET_VALUE))
4025 ia2_state |= IA2_STATE_EDITABLE; 4027 ia2_state |= IA2_STATE_EDITABLE;
dmazzoni 2015/09/08 21:18:44 This line is probably wrong now, hopefully we can
4026 4028
4027 if (!GetStringAttribute(ui::AX_ATTR_AUTO_COMPLETE).empty()) 4029 if (!GetStringAttribute(ui::AX_ATTR_AUTO_COMPLETE).empty())
4028 ia2_state |= IA2_STATE_SUPPORTS_AUTOCOMPLETION; 4030 ia2_state |= IA2_STATE_SUPPORTS_AUTOCOMPLETION;
4029 4031
4030 base::string16 html_tag = GetString16Attribute( 4032 base::string16 html_tag = GetString16Attribute(
4031 ui::AX_ATTR_HTML_TAG); 4033 ui::AX_ATTR_HTML_TAG);
4032 switch (GetRole()) { 4034 switch (GetRole()) {
4033 case ui::AX_ROLE_ALERT: 4035 case ui::AX_ROLE_ALERT:
4034 ia_role = ROLE_SYSTEM_ALERT; 4036 ia_role = ROLE_SYSTEM_ALERT;
4035 break; 4037 break;
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
4420 ia_role = ROLE_SYSTEM_PUSHBUTTON; 4422 ia_role = ROLE_SYSTEM_PUSHBUTTON;
4421 ia2_role = IA2_ROLE_TOGGLE_BUTTON; 4423 ia2_role = IA2_ROLE_TOGGLE_BUTTON;
4422 break; 4424 break;
4423 case ui::AX_ROLE_TEXT_FIELD: 4425 case ui::AX_ROLE_TEXT_FIELD:
4424 case ui::AX_ROLE_SEARCH_BOX: 4426 case ui::AX_ROLE_SEARCH_BOX:
4425 ia_role = ROLE_SYSTEM_TEXT; 4427 ia_role = ROLE_SYSTEM_TEXT;
4426 if (HasState(ui::AX_STATE_MULTILINE)) 4428 if (HasState(ui::AX_STATE_MULTILINE))
4427 ia2_state |= IA2_STATE_MULTI_LINE; 4429 ia2_state |= IA2_STATE_MULTI_LINE;
4428 else 4430 else
4429 ia2_state |= IA2_STATE_SINGLE_LINE; 4431 ia2_state |= IA2_STATE_SINGLE_LINE;
4430 ia2_state |= IA2_STATE_EDITABLE; 4432 ia2_state |= IA2_STATE_EDITABLE;
dmazzoni 2015/09/08 21:18:44 This should hopefully no longer be needed now - an
4431 ia2_state |= IA2_STATE_SELECTABLE_TEXT; 4433 ia2_state |= IA2_STATE_SELECTABLE_TEXT;
4432 break; 4434 break;
4433 case ui::AX_ROLE_TIME: 4435 case ui::AX_ROLE_TIME:
4434 role_name = html_tag; 4436 role_name = html_tag;
4435 ia_role = ROLE_SYSTEM_TEXT; 4437 ia_role = ROLE_SYSTEM_TEXT;
4436 ia2_role = IA2_ROLE_TEXT_FRAME; 4438 ia2_role = IA2_ROLE_TEXT_FRAME;
4437 break; 4439 break;
4438 case ui::AX_ROLE_TIMER: 4440 case ui::AX_ROLE_TIMER:
4439 ia_role = ROLE_SYSTEM_CLOCK; 4441 ia_role = ROLE_SYSTEM_CLOCK;
4440 ia_state |= STATE_SYSTEM_READONLY; 4442 ia_state |= STATE_SYSTEM_READONLY;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
4499 ia2_role = ia_role; 4501 ia2_role = ia_role;
4500 4502
4501 win_attributes_->ia_role = ia_role; 4503 win_attributes_->ia_role = ia_role;
4502 win_attributes_->ia_state = ia_state; 4504 win_attributes_->ia_state = ia_state;
4503 win_attributes_->role_name = role_name; 4505 win_attributes_->role_name = role_name;
4504 win_attributes_->ia2_role = ia2_role; 4506 win_attributes_->ia2_role = ia2_role;
4505 win_attributes_->ia2_state = ia2_state; 4507 win_attributes_->ia2_state = ia2_state;
4506 } 4508 }
4507 4509
4508 } // namespace content 4510 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698