diff options
Diffstat (limited to 'chrome/browser/accessibility/browser_accessibility_win.cc')
-rw-r--r-- | chrome/browser/accessibility/browser_accessibility_win.cc | 446 |
1 files changed, 256 insertions, 190 deletions
diff --git a/chrome/browser/accessibility/browser_accessibility_win.cc b/chrome/browser/accessibility/browser_accessibility_win.cc index f797c9c..f3520ee 100644 --- a/chrome/browser/accessibility/browser_accessibility_win.cc +++ b/chrome/browser/accessibility/browser_accessibility_win.cc @@ -12,24 +12,133 @@ using webkit_glue::WebAccessibility; -// static -BrowserAccessibility* BrowserAccessibility::Create() { - CComObject<BrowserAccessibilityWin>* instance; - HRESULT hr = CComObject<BrowserAccessibilityWin>::CreateInstance(&instance); - DCHECK(SUCCEEDED(hr)); - return instance->NewReference(); +BrowserAccessibilityWin::BrowserAccessibilityWin() + : manager_(NULL), + parent_(NULL), + child_id_(-1), + index_in_parent_(-1), + renderer_id_(-1), + instance_active_(false) { } -BrowserAccessibilityWin* BrowserAccessibility::toBrowserAccessibilityWin() { - return static_cast<BrowserAccessibilityWin*>(this); +BrowserAccessibilityWin::~BrowserAccessibilityWin() { + InactivateTree(); +} + +void BrowserAccessibilityWin::Initialize( + BrowserAccessibilityManagerWin* manager, + BrowserAccessibilityWin* parent, + LONG child_id, + LONG index_in_parent, + const webkit_glue::WebAccessibility& src) { + manager_ = manager; + parent_ = parent; + child_id_ = child_id; + index_in_parent_ = index_in_parent; + + renderer_id_ = src.id; + name_ = src.name; + value_ = src.value; + attributes_ = src.attributes; + html_attributes_ = src.html_attributes; + location_ = src.location; + src_role_ = src.role; + InitRoleAndState(src.role, src.state); + + // Expose headings levels to NVDA with the "level" object attribute. + if (src.role == WebAccessibility::ROLE_HEADING && role_name_.size() == 2 && + IsAsciiDigit(role_name_[1])) { + html_attributes_.push_back(std::make_pair(L"level", role_name_.substr(1))); + } + + // If this object doesn't have a name but it does have a description, + // use the description as its name - because some screen readers only + // announce the name. + if (name_.empty() && HasAttribute(WebAccessibility::ATTR_DESCRIPTION)) { + GetAttribute(WebAccessibility::ATTR_DESCRIPTION, &name_); + } + + instance_active_ = true; } -BrowserAccessibilityWin::BrowserAccessibilityWin() - : instance_active_(false) { +void BrowserAccessibilityWin::AddChild(BrowserAccessibilityWin* child) { + children_.push_back(child); } -BrowserAccessibilityWin::~BrowserAccessibilityWin() { - ReleaseTree(); +void BrowserAccessibilityWin::InactivateTree() { + if (!instance_active_) + return; + + // Mark this object as inactive, so calls to all COM methods will return + // failure. + instance_active_ = false; + + // Now we can safely call InactivateTree on our children and remove + // references to them, so that as much of the tree as possible will be + // destroyed now - however, nodes that still have references to them + // might stick around a while until all clients have released them. + for (std::vector<BrowserAccessibilityWin*>::iterator iter = + children_.begin(); + iter != children_.end(); ++iter) { + (*iter)->InactivateTree(); + (*iter)->Release(); + } + children_.clear(); + manager_->Remove(child_id_); +} + +bool BrowserAccessibilityWin::IsDescendantOf( + BrowserAccessibilityWin* ancestor) { + if (this == ancestor) { + return true; + } else if (parent_) { + return parent_->IsDescendantOf(ancestor); + } + + return false; +} + +BrowserAccessibilityWin* BrowserAccessibilityWin::GetParent() { + return parent_; +} + +uint32 BrowserAccessibilityWin::GetChildCount() { + return children_.size(); +} + +BrowserAccessibilityWin* BrowserAccessibilityWin::GetChild(uint32 child_index) { + DCHECK(child_index >= 0 && child_index < children_.size()); + return children_[child_index]; +} + +BrowserAccessibilityWin* BrowserAccessibilityWin::GetPreviousSibling() { + if (parent_ && index_in_parent_ > 0) + return parent_->children_[index_in_parent_ - 1]; + + return NULL; +} + +BrowserAccessibilityWin* BrowserAccessibilityWin::GetNextSibling() { + if (parent_ && + index_in_parent_ >= 0 && + index_in_parent_ < static_cast<int>(parent_->children_.size() - 1)) { + return parent_->children_[index_in_parent_ + 1]; + } + + return NULL; +} + +void BrowserAccessibilityWin::ReplaceChild( + const BrowserAccessibilityWin* old_acc, BrowserAccessibilityWin* new_acc) { + DCHECK_EQ(children_[old_acc->index_in_parent_], old_acc); + + old_acc = children_[old_acc->index_in_parent_]; + children_[old_acc->index_in_parent_] = new_acc; +} + +BrowserAccessibilityWin* BrowserAccessibilityWin::NewReference() { + AddRef(); + return this; } // @@ -79,7 +188,7 @@ STDMETHODIMP BrowserAccessibilityWin::accLocation(LONG* x_left, LONG* y_top, // Find the top left corner of the containing window in screen coords, and // adjust the output position by this amount. - HWND parent_hwnd = manager_->GetParentView(); + HWND parent_hwnd = manager_->GetParentWindow(); POINT top_left = {0, 0}; ::ClientToScreen(parent_hwnd, &top_left); @@ -103,7 +212,7 @@ STDMETHODIMP BrowserAccessibilityWin::accNavigate( return E_INVALIDARG; } - BrowserAccessibility* result = NULL; + BrowserAccessibilityWin* result = NULL; switch (nav_dir) { case NAVDIR_DOWN: case NAVDIR_UP: @@ -133,7 +242,7 @@ STDMETHODIMP BrowserAccessibilityWin::accNavigate( } end->vt = VT_DISPATCH; - end->pdispVal = result->toBrowserAccessibilityWin()->NewReference(); + end->pdispVal = result->NewReference(); return S_OK; } @@ -275,12 +384,11 @@ STDMETHODIMP BrowserAccessibilityWin::get_accParent(IDispatch** disp_parent) { if (!disp_parent) return E_INVALIDARG; - IAccessible* parent = parent_->toBrowserAccessibilityWin(); + IAccessible* parent = parent_; if (parent == NULL) { // This happens if we're the root of the tree; // return the IAccessible for the window. - parent = manager_->toBrowserAccessibilityManagerWin()-> - GetParentWindowIAccessible(); + parent = manager_->GetParentWindowIAccessible(); } parent->AddRef(); @@ -305,7 +413,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accRole( role->bstrVal = SysAllocString(target->role_name_.c_str()); } else { role->vt = VT_I4; - role->lVal = target->ia_role_; + role->lVal = target->role_; } return S_OK; } @@ -323,7 +431,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accState(VARIANT var_id, return E_INVALIDARG; state->vt = VT_I4; - state->lVal = target->ia_state_; + state->lVal = target->state_; if (manager_->GetFocus(NULL) == this) state->lVal |= STATE_SYSTEM_FOCUSED; @@ -445,7 +553,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_windowHandle(HWND* window_handle) { if (!window_handle) return E_INVALIDARG; - *window_handle = manager_->GetParentView(); + *window_handle = manager_->GetParentWindow(); return S_OK; } @@ -483,7 +591,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_imagePosition( return E_INVALIDARG; if (coordinate_type == IA2_COORDTYPE_SCREEN_RELATIVE) { - HWND parent_hwnd = manager_->GetParentView(); + HWND parent_hwnd = manager_->GetParentWindow(); POINT top_left = {0, 0}; ::ClientToScreen(parent_hwnd, &top_left); *x = location_.x + top_left.x; @@ -492,8 +600,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_imagePosition( *x = location_.x; *y = location_.y; if (parent_) { - *x -= parent_->location().x; - *y -= parent_->location().y; + *x -= parent_->location_.x; + *y -= parent_->location_.y; } } else { return E_INVALIDARG; @@ -525,7 +633,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_nCharacters(LONG* n_characters) { if (!n_characters) return E_INVALIDARG; - if (role_ == WebAccessibility::ROLE_TEXT_FIELD) { + if (src_role_ == WebAccessibility::ROLE_TEXT_FIELD) { *n_characters = value_.length(); } else { *n_characters = name_.length(); @@ -543,7 +651,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_text( return E_INVALIDARG; string16 text_str; - if (role_ == WebAccessibility::ROLE_TEXT_FIELD) { + if (src_role_ == WebAccessibility::ROLE_TEXT_FIELD) { text_str = value_; } else { text_str = name_; @@ -580,7 +688,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) { if (!offset) return E_INVALIDARG; - if (role_ == WebAccessibility::ROLE_TEXT_FIELD) { + if (src_role_ == WebAccessibility::ROLE_TEXT_FIELD) { int sel_start = 0; if (GetAttributeAsInt(WebAccessibility::ATTR_TEXT_SEL_START, &sel_start)) { *offset = sel_start; @@ -601,7 +709,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) { if (!n_selections) return E_INVALIDARG; - if (role_ == WebAccessibility::ROLE_TEXT_FIELD) { + if (src_role_ == WebAccessibility::ROLE_TEXT_FIELD) { int sel_start = 0; int sel_end = 0; if (GetAttributeAsInt(WebAccessibility::ATTR_TEXT_SEL_START, &sel_start) && @@ -627,7 +735,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index, if (!start_offset || !end_offset || selection_index != 0) return E_INVALIDARG; - if (role_ == WebAccessibility::ROLE_TEXT_FIELD) { + if (src_role_ == WebAccessibility::ROLE_TEXT_FIELD) { int sel_start = 0; int sel_end = 0; if (GetAttributeAsInt(WebAccessibility::ATTR_TEXT_SEL_START, &sel_start) && @@ -720,9 +828,9 @@ STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo( *num_children = children_.size(); *unique_id = child_id_; - if (ia_role_ == ROLE_SYSTEM_DOCUMENT) { + if (role_ == ROLE_SYSTEM_DOCUMENT) { *node_type = NODETYPE_DOCUMENT; - } else if (ia_role_ == ROLE_SYSTEM_TEXT && + } else if (role_ == ROLE_SYSTEM_TEXT && ((ia2_state_ & IA2_STATE_EDITABLE) == 0)) { *node_type = NODETYPE_TEXT; } else { @@ -853,7 +961,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_parentNode(ISimpleDOMNode** node) { if (!node) return E_INVALIDARG; - *node = parent_->toBrowserAccessibilityWin()->NewReference(); + *node = parent_->NewReference(); return S_OK; } @@ -865,7 +973,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_firstChild(ISimpleDOMNode** node) { return E_INVALIDARG; if (children_.size()) { - *node = children_[0]->toBrowserAccessibilityWin()->NewReference(); + *node = children_[0]->NewReference(); return S_OK; } else { *node = NULL; @@ -881,8 +989,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_lastChild(ISimpleDOMNode** node) { return E_INVALIDARG; if (children_.size()) { - *node = children_[children_.size() - 1]->toBrowserAccessibilityWin()-> - NewReference(); + *node = children_[children_.size() - 1]->NewReference(); return S_OK; } else { *node = NULL; @@ -899,8 +1006,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_previousSibling( return E_INVALIDARG; if (parent_ && index_in_parent_ > 0) { - *node = parent_->children()[index_in_parent_ - 1]-> - toBrowserAccessibilityWin()->NewReference(); + *node = parent_->children_[index_in_parent_ - 1]->NewReference(); return S_OK; } else { *node = NULL; @@ -917,9 +1023,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_nextSibling(ISimpleDOMNode** node) { if (parent_ && index_in_parent_ >= 0 && - index_in_parent_ < static_cast<int>(parent_->children().size()) - 1) { - *node = parent_->children()[index_in_parent_ + 1]-> - toBrowserAccessibilityWin()->NewReference(); + index_in_parent_ < static_cast<int>(parent_->children_.size()) - 1) { + *node = parent_->children_[index_in_parent_ + 1]->NewReference(); return S_OK; } else { *node = NULL; @@ -937,7 +1042,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_childAt( return E_INVALIDARG; if (child_index < children_.size()) { - *node = children_[child_index]->toBrowserAccessibilityWin()->NewReference(); + *node = children_[child_index]->NewReference(); return S_OK; } else { *node = NULL; @@ -997,17 +1102,17 @@ HRESULT WINAPI BrowserAccessibilityWin::InternalQueryInterface( REFIID iid, void** object) { if (iid == IID_IAccessibleText) { - if (ia_role_ != ROLE_SYSTEM_LINK && ia_role_ != ROLE_SYSTEM_TEXT) { + if (role_ != ROLE_SYSTEM_LINK && role_ != ROLE_SYSTEM_TEXT) { *object = NULL; return E_NOINTERFACE; } } else if (iid == IID_IAccessibleImage) { - if (ia_role_ != ROLE_SYSTEM_GRAPHIC) { + if (role_ != ROLE_SYSTEM_GRAPHIC) { *object = NULL; return E_NOINTERFACE; } } else if (iid == IID_ISimpleDOMDocument) { - if (ia_role_ != ROLE_SYSTEM_DOCUMENT) { + if (role_ != ROLE_SYSTEM_DOCUMENT) { *object = NULL; return E_NOINTERFACE; } @@ -1021,46 +1126,6 @@ HRESULT WINAPI BrowserAccessibilityWin::InternalQueryInterface( // Private methods. // -void BrowserAccessibilityWin::Initialize() { - InitRoleAndState(); - - // Expose headings levels to NVDA with the "level" object attribute. - if (role_ == WebAccessibility::ROLE_HEADING && role_name_.size() == 2 && - IsAsciiDigit(role_name_[1])) { - html_attributes_.push_back(std::make_pair(L"level", role_name_.substr(1))); - } - - // If this object doesn't have a name but it does have a description, - // use the description as its name - because some screen readers only - // announce the name. - if (name_.empty() && HasAttribute(WebAccessibility::ATTR_DESCRIPTION)) { - GetAttribute(WebAccessibility::ATTR_DESCRIPTION, &name_); - } - - instance_active_ = true; -} - -void BrowserAccessibilityWin::ReleaseTree() { - if (!instance_active_) - return; - - // Mark this object as inactive, so calls to all COM methods will return - // failure. - instance_active_ = false; - - BrowserAccessibility::ReleaseTree(); -} - -void BrowserAccessibilityWin::ReleaseReference() { - Release(); -} - - -BrowserAccessibilityWin* BrowserAccessibilityWin::NewReference() { - AddRef(); - return this; -} - BrowserAccessibilityWin* BrowserAccessibilityWin::GetTargetFromChildID( const VARIANT& var_id) { if (var_id.vt != VT_I4) @@ -1071,9 +1136,9 @@ BrowserAccessibilityWin* BrowserAccessibilityWin::GetTargetFromChildID( return this; if (child_id >= 1 && child_id <= static_cast<LONG>(children_.size())) - return children_[child_id - 1]->toBrowserAccessibilityWin(); + return children_[child_id - 1]; - return manager_->GetFromChildID(child_id)->toBrowserAccessibilityWin(); + return manager_->GetFromChildID(child_id); } bool BrowserAccessibilityWin::HasAttribute( @@ -1125,109 +1190,110 @@ string16 BrowserAccessibilityWin::Escape(string16 str) { return EscapeQueryParamValueUTF8(str, false); } -void BrowserAccessibilityWin::InitRoleAndState() { - ia_state_ = 0; +void BrowserAccessibilityWin::InitRoleAndState(LONG web_role, + LONG web_state) { + state_ = 0; ia2_state_ = IA2_STATE_OPAQUE; - if ((state_ >> WebAccessibility::STATE_CHECKED) & 1) - ia_state_ |= STATE_SYSTEM_CHECKED; - if ((state_ >> WebAccessibility::STATE_COLLAPSED) & 1) - ia_state_|= STATE_SYSTEM_COLLAPSED; - if ((state_ >> WebAccessibility::STATE_EXPANDED) & 1) - ia_state_|= STATE_SYSTEM_EXPANDED; - if ((state_ >> WebAccessibility::STATE_FOCUSABLE) & 1) - ia_state_|= STATE_SYSTEM_FOCUSABLE; - if ((state_ >> WebAccessibility::STATE_HASPOPUP) & 1) - ia_state_|= STATE_SYSTEM_HASPOPUP; - if ((state_ >> WebAccessibility::STATE_HOTTRACKED) & 1) - ia_state_|= STATE_SYSTEM_HOTTRACKED; - if ((state_ >> WebAccessibility::STATE_INDETERMINATE) & 1) - ia_state_|= STATE_SYSTEM_INDETERMINATE; - if ((state_ >> WebAccessibility::STATE_INVISIBLE) & 1) - ia_state_|= STATE_SYSTEM_INVISIBLE; - if ((state_ >> WebAccessibility::STATE_LINKED) & 1) - ia_state_|= STATE_SYSTEM_LINKED; - if ((state_ >> WebAccessibility::STATE_MULTISELECTABLE) & 1) - ia_state_|= STATE_SYSTEM_MULTISELECTABLE; + if ((web_state >> WebAccessibility::STATE_CHECKED) & 1) + state_ |= STATE_SYSTEM_CHECKED; + if ((web_state >> WebAccessibility::STATE_COLLAPSED) & 1) + state_ |= STATE_SYSTEM_COLLAPSED; + if ((web_state >> WebAccessibility::STATE_EXPANDED) & 1) + state_ |= STATE_SYSTEM_EXPANDED; + if ((web_state >> WebAccessibility::STATE_FOCUSABLE) & 1) + state_ |= STATE_SYSTEM_FOCUSABLE; + if ((web_state >> WebAccessibility::STATE_HASPOPUP) & 1) + state_ |= STATE_SYSTEM_HASPOPUP; + if ((web_state >> WebAccessibility::STATE_HOTTRACKED) & 1) + state_ |= STATE_SYSTEM_HOTTRACKED; + if ((web_state >> WebAccessibility::STATE_INDETERMINATE) & 1) + state_ |= STATE_SYSTEM_INDETERMINATE; + if ((web_state >> WebAccessibility::STATE_INVISIBLE) & 1) + state_ |= STATE_SYSTEM_INVISIBLE; + if ((web_state >> WebAccessibility::STATE_LINKED) & 1) + state_ |= STATE_SYSTEM_LINKED; + if ((web_state >> WebAccessibility::STATE_MULTISELECTABLE) & 1) + state_ |= STATE_SYSTEM_MULTISELECTABLE; // TODO(ctguil): Support STATE_SYSTEM_EXTSELECTABLE/accSelect. - if ((state_ >> WebAccessibility::STATE_OFFSCREEN) & 1) - ia_state_|= STATE_SYSTEM_OFFSCREEN; - if ((state_ >> WebAccessibility::STATE_PRESSED) & 1) - ia_state_|= STATE_SYSTEM_PRESSED; - if ((state_ >> WebAccessibility::STATE_PROTECTED) & 1) - ia_state_|= STATE_SYSTEM_PROTECTED; - if ((state_ >> WebAccessibility::STATE_SELECTABLE) & 1) - ia_state_|= STATE_SYSTEM_SELECTABLE; - if ((state_ >> WebAccessibility::STATE_SELECTED) & 1) - ia_state_|= STATE_SYSTEM_SELECTED; - if ((state_ >> WebAccessibility::STATE_READONLY) & 1) - ia_state_|= STATE_SYSTEM_READONLY; - if ((state_ >> WebAccessibility::STATE_TRAVERSED) & 1) - ia_state_|= STATE_SYSTEM_TRAVERSED; - if ((state_ >> WebAccessibility::STATE_BUSY) & 1) - ia_state_|= STATE_SYSTEM_BUSY; - if ((state_ >> WebAccessibility::STATE_UNAVAILABLE) & 1) - ia_state_|= STATE_SYSTEM_UNAVAILABLE; - - ia_role_ = 0; + if ((web_state >> WebAccessibility::STATE_OFFSCREEN) & 1) + state_ |= STATE_SYSTEM_OFFSCREEN; + if ((web_state >> WebAccessibility::STATE_PRESSED) & 1) + state_ |= STATE_SYSTEM_PRESSED; + if ((web_state >> WebAccessibility::STATE_PROTECTED) & 1) + state_ |= STATE_SYSTEM_PROTECTED; + if ((web_state >> WebAccessibility::STATE_SELECTABLE) & 1) + state_ |= STATE_SYSTEM_SELECTABLE; + if ((web_state >> WebAccessibility::STATE_SELECTED) & 1) + state_ |= STATE_SYSTEM_SELECTED; + if ((web_state >> WebAccessibility::STATE_READONLY) & 1) + state_ |= STATE_SYSTEM_READONLY; + if ((web_state >> WebAccessibility::STATE_TRAVERSED) & 1) + state_ |= STATE_SYSTEM_TRAVERSED; + if ((web_state >> WebAccessibility::STATE_BUSY) & 1) + state_ |= STATE_SYSTEM_BUSY; + if ((web_state >> WebAccessibility::STATE_UNAVAILABLE) & 1) + state_ |= STATE_SYSTEM_UNAVAILABLE; + + role_ = 0; ia2_role_ = 0; - switch (role_) { + switch (web_role) { case WebAccessibility::ROLE_ALERT: case WebAccessibility::ROLE_ALERT_DIALOG: - ia_role_ = ROLE_SYSTEM_ALERT; + role_ = ROLE_SYSTEM_ALERT; break; case WebAccessibility::ROLE_APPLICATION: - ia_role_ = ROLE_SYSTEM_APPLICATION; + role_ = ROLE_SYSTEM_APPLICATION; break; case WebAccessibility::ROLE_ARTICLE: - ia_role_ = ROLE_SYSTEM_GROUPING; + role_ = ROLE_SYSTEM_GROUPING; ia2_role_ = IA2_ROLE_SECTION; break; case WebAccessibility::ROLE_BUTTON: - ia_role_ = ROLE_SYSTEM_PUSHBUTTON; + role_ = ROLE_SYSTEM_PUSHBUTTON; break; case WebAccessibility::ROLE_CELL: - ia_role_ = ROLE_SYSTEM_CELL; + role_ = ROLE_SYSTEM_CELL; break; case WebAccessibility::ROLE_CHECKBOX: - ia_role_ = ROLE_SYSTEM_CHECKBUTTON; + role_ = ROLE_SYSTEM_CHECKBUTTON; break; case WebAccessibility::ROLE_COLOR_WELL: - ia_role_ = ROLE_SYSTEM_CLIENT; + role_ = ROLE_SYSTEM_CLIENT; ia2_role_ = IA2_ROLE_COLOR_CHOOSER; break; case WebAccessibility::ROLE_COLUMN: - ia_role_ = ROLE_SYSTEM_COLUMN; + role_ = ROLE_SYSTEM_COLUMN; break; case WebAccessibility::ROLE_COLUMN_HEADER: - ia_role_ = ROLE_SYSTEM_COLUMNHEADER; + role_ = ROLE_SYSTEM_COLUMNHEADER; break; case WebAccessibility::ROLE_COMBO_BOX: - ia_role_ = ROLE_SYSTEM_COMBOBOX; + role_ = ROLE_SYSTEM_COMBOBOX; break; case WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION: GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_); ia2_role_ = IA2_ROLE_PARAGRAPH; break; case WebAccessibility::ROLE_DEFINITION_LIST_TERM: - ia_role_ = ROLE_SYSTEM_LISTITEM; + role_ = ROLE_SYSTEM_LISTITEM; break; case WebAccessibility::ROLE_DIALOG: - ia_role_ = ROLE_SYSTEM_DIALOG; + role_ = ROLE_SYSTEM_DIALOG; break; case WebAccessibility::ROLE_DOCUMENT: case WebAccessibility::ROLE_WEB_AREA: - ia_role_ = ROLE_SYSTEM_DOCUMENT; - ia_state_|= STATE_SYSTEM_READONLY; - ia_state_|= STATE_SYSTEM_FOCUSABLE; + role_ = ROLE_SYSTEM_DOCUMENT; + state_ |= STATE_SYSTEM_READONLY; + state_ |= STATE_SYSTEM_FOCUSABLE; break; case WebAccessibility::ROLE_EDITABLE_TEXT: - ia_role_ = ROLE_SYSTEM_TEXT; + role_ = ROLE_SYSTEM_TEXT; ia2_state_ |= IA2_STATE_SINGLE_LINE; ia2_state_ |= IA2_STATE_EDITABLE; break; case WebAccessibility::ROLE_GRID: - ia_role_ = ROLE_SYSTEM_TABLE; + role_ = ROLE_SYSTEM_TABLE; break; case WebAccessibility::ROLE_GROUP: GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_); @@ -1240,15 +1306,15 @@ void BrowserAccessibilityWin::InitRoleAndState() { ia2_role_ = IA2_ROLE_HEADING; break; case WebAccessibility::ROLE_IMAGE: - ia_role_ = ROLE_SYSTEM_GRAPHIC; + role_ = ROLE_SYSTEM_GRAPHIC; break; case WebAccessibility::ROLE_IMAGE_MAP: GetAttribute(WebAccessibility::ATTR_HTML_TAG, &role_name_); ia2_role_ = IA2_ROLE_IMAGE_MAP; break; case WebAccessibility::ROLE_IMAGE_MAP_LINK: - ia_role_ = ROLE_SYSTEM_LINK; - ia_state_|= STATE_SYSTEM_LINKED; + role_ = ROLE_SYSTEM_LINK; + state_ |= STATE_SYSTEM_LINKED; break; case WebAccessibility::ROLE_LANDMARK_APPLICATION: case WebAccessibility::ROLE_LANDMARK_BANNER: @@ -1257,136 +1323,136 @@ void BrowserAccessibilityWin::InitRoleAndState() { case WebAccessibility::ROLE_LANDMARK_MAIN: case WebAccessibility::ROLE_LANDMARK_NAVIGATION: case WebAccessibility::ROLE_LANDMARK_SEARCH: - ia_role_ = ROLE_SYSTEM_GROUPING; + role_ = ROLE_SYSTEM_GROUPING; ia2_role_ = IA2_ROLE_SECTION; break; case WebAccessibility::ROLE_LINK: case WebAccessibility::ROLE_WEBCORE_LINK: - ia_role_ = ROLE_SYSTEM_LINK; - ia_state_|= STATE_SYSTEM_LINKED; + role_ = ROLE_SYSTEM_LINK; + state_ |= STATE_SYSTEM_LINKED; break; case WebAccessibility::ROLE_LIST: - ia_role_ = ROLE_SYSTEM_LIST; + role_ = ROLE_SYSTEM_LIST; break; case WebAccessibility::ROLE_LISTBOX: - ia_role_ = ROLE_SYSTEM_LIST; + role_ = ROLE_SYSTEM_LIST; break; case WebAccessibility::ROLE_LISTBOX_OPTION: case WebAccessibility::ROLE_LIST_ITEM: case WebAccessibility::ROLE_LIST_MARKER: - ia_role_ = ROLE_SYSTEM_LISTITEM; + role_ = ROLE_SYSTEM_LISTITEM; break; case WebAccessibility::ROLE_MENU: case WebAccessibility::ROLE_MENU_BUTTON: - ia_role_ = ROLE_SYSTEM_MENUPOPUP; + role_ = ROLE_SYSTEM_MENUPOPUP; break; case WebAccessibility::ROLE_MENU_BAR: - ia_role_ = ROLE_SYSTEM_MENUBAR; + role_ = ROLE_SYSTEM_MENUBAR; break; case WebAccessibility::ROLE_MENU_ITEM: case WebAccessibility::ROLE_MENU_LIST_OPTION: - ia_role_ = ROLE_SYSTEM_MENUITEM; + role_ = ROLE_SYSTEM_MENUITEM; break; case WebAccessibility::ROLE_MENU_LIST_POPUP: - ia_role_ = ROLE_SYSTEM_MENUPOPUP; + role_ = ROLE_SYSTEM_MENUPOPUP; break; case WebAccessibility::ROLE_NOTE: - ia_role_ = ROLE_SYSTEM_GROUPING; + role_ = ROLE_SYSTEM_GROUPING; ia2_role_ = IA2_ROLE_NOTE; break; case WebAccessibility::ROLE_OUTLINE: - ia_role_ = ROLE_SYSTEM_OUTLINE; + role_ = ROLE_SYSTEM_OUTLINE; break; case WebAccessibility::ROLE_POPUP_BUTTON: - ia_role_ = ROLE_SYSTEM_COMBOBOX; + role_ = ROLE_SYSTEM_COMBOBOX; break; case WebAccessibility::ROLE_PROGRESS_INDICATOR: - ia_role_ = ROLE_SYSTEM_PROGRESSBAR; + role_ = ROLE_SYSTEM_PROGRESSBAR; break; case WebAccessibility::ROLE_RADIO_BUTTON: - ia_role_ = ROLE_SYSTEM_RADIOBUTTON; + role_ = ROLE_SYSTEM_RADIOBUTTON; break; case WebAccessibility::ROLE_RADIO_GROUP: - ia_role_ = ROLE_SYSTEM_GROUPING; + role_ = ROLE_SYSTEM_GROUPING; ia2_role_ = IA2_ROLE_SECTION; break; case WebAccessibility::ROLE_REGION: - ia_role_ = ROLE_SYSTEM_GROUPING; + role_ = ROLE_SYSTEM_GROUPING; ia2_role_ = IA2_ROLE_SECTION; break; case WebAccessibility::ROLE_ROW: - ia_role_ = ROLE_SYSTEM_ROW; + role_ = ROLE_SYSTEM_ROW; break; case WebAccessibility::ROLE_ROW_HEADER: - ia_role_ = ROLE_SYSTEM_ROWHEADER; + role_ = ROLE_SYSTEM_ROWHEADER; break; case WebAccessibility::ROLE_RULER: - ia_role_ = ROLE_SYSTEM_CLIENT; + role_ = ROLE_SYSTEM_CLIENT; ia2_role_ = IA2_ROLE_RULER; break; case WebAccessibility::ROLE_SCROLLAREA: - ia_role_ = ROLE_SYSTEM_CLIENT; + role_ = ROLE_SYSTEM_CLIENT; ia2_role_ = IA2_ROLE_SCROLL_PANE; break; case WebAccessibility::ROLE_SCROLLBAR: - ia_role_ = ROLE_SYSTEM_SCROLLBAR; + role_ = ROLE_SYSTEM_SCROLLBAR; break; case WebAccessibility::ROLE_SLIDER: - ia_role_ = ROLE_SYSTEM_SLIDER; + role_ = ROLE_SYSTEM_SLIDER; break; case WebAccessibility::ROLE_SPLIT_GROUP: - ia_role_ = ROLE_SYSTEM_CLIENT; + role_ = ROLE_SYSTEM_CLIENT; ia2_role_ = IA2_ROLE_SPLIT_PANE; break; case WebAccessibility::ROLE_ANNOTATION: case WebAccessibility::ROLE_STATIC_TEXT: - ia_role_ = ROLE_SYSTEM_TEXT; + role_ = ROLE_SYSTEM_TEXT; break; case WebAccessibility::ROLE_STATUS: - ia_role_ = ROLE_SYSTEM_STATUSBAR; + role_ = ROLE_SYSTEM_STATUSBAR; break; case WebAccessibility::ROLE_TAB: - ia_role_ = ROLE_SYSTEM_PAGETAB; + role_ = ROLE_SYSTEM_PAGETAB; break; case WebAccessibility::ROLE_TABLE: - ia_role_ = ROLE_SYSTEM_TABLE; + role_ = ROLE_SYSTEM_TABLE; break; case WebAccessibility::ROLE_TABLE_HEADER_CONTAINER: - ia_role_ = ROLE_SYSTEM_GROUPING; + role_ = ROLE_SYSTEM_GROUPING; ia2_role_ = IA2_ROLE_SECTION; break; case WebAccessibility::ROLE_TAB_GROUP: case WebAccessibility::ROLE_TAB_LIST: case WebAccessibility::ROLE_TAB_PANEL: - ia_role_ = ROLE_SYSTEM_PAGETABLIST; + role_ = ROLE_SYSTEM_PAGETABLIST; break; case WebAccessibility::ROLE_TEXTAREA: - ia_role_ = ROLE_SYSTEM_TEXT; + role_ = ROLE_SYSTEM_TEXT; ia2_state_ |= IA2_STATE_MULTI_LINE; ia2_state_ |= IA2_STATE_EDITABLE; break; case WebAccessibility::ROLE_TEXT_FIELD: - ia_role_ = ROLE_SYSTEM_TEXT; + role_ = ROLE_SYSTEM_TEXT; ia2_state_ |= IA2_STATE_SINGLE_LINE; ia2_state_ |= IA2_STATE_EDITABLE; break; case WebAccessibility::ROLE_TOOLBAR: - ia_role_ = ROLE_SYSTEM_TOOLBAR; + role_ = ROLE_SYSTEM_TOOLBAR; break; case WebAccessibility::ROLE_TOOLTIP: - ia_role_ = ROLE_SYSTEM_TOOLTIP; + role_ = ROLE_SYSTEM_TOOLTIP; break; case WebAccessibility::ROLE_TREE: - ia_role_ = ROLE_SYSTEM_OUTLINE; + role_ = ROLE_SYSTEM_OUTLINE; break; case WebAccessibility::ROLE_TREE_GRID: - ia_role_ = ROLE_SYSTEM_OUTLINE; + role_ = ROLE_SYSTEM_OUTLINE; break; case WebAccessibility::ROLE_TREE_ITEM: - ia_role_ = ROLE_SYSTEM_OUTLINEITEM; + role_ = ROLE_SYSTEM_OUTLINEITEM; break; case WebAccessibility::ROLE_WINDOW: - ia_role_ = ROLE_SYSTEM_WINDOW; + role_ = ROLE_SYSTEM_WINDOW; break; // TODO(dmazzoni): figure out the proper MSAA role for all of these. @@ -1411,15 +1477,15 @@ void BrowserAccessibilityWin::InitRoleAndState() { case WebAccessibility::ROLE_TIMER: case WebAccessibility::ROLE_VALUE_INDICATOR: default: - ia_role_ = ROLE_SYSTEM_CLIENT; + role_ = ROLE_SYSTEM_CLIENT; break; } // The role should always be set. - DCHECK(!role_name_.empty() || ia_role_); + DCHECK(!role_name_.empty() || role_); // If we didn't explicitly set the IAccessible2 role, make it the same // as the MSAA role. if (!ia2_role_) - ia2_role_ = ia_role_; + ia2_role_ = role_; } |