| Index: content/browser/accessibility/browser_accessibility_win.cc
|
| diff --git a/content/browser/accessibility/browser_accessibility_win.cc b/content/browser/accessibility/browser_accessibility_win.cc
|
| index a78d8b2f0aac81fe59c296b4b17cc0184eee8388..bf3b0affdd751d7d45d1dc592723149d05660882 100644
|
| --- a/content/browser/accessibility/browser_accessibility_win.cc
|
| +++ b/content/browser/accessibility/browser_accessibility_win.cc
|
| @@ -42,10 +42,6 @@ const GUID GUID_IAccessibleContentDocument = {
|
|
|
| const base::char16 BrowserAccessibilityWin::kEmbeddedCharacter = L'\xfffc';
|
|
|
| -// static
|
| -LONG BrowserAccessibilityWin::next_unique_id_win_ =
|
| - base::win::kFirstBrowserAccessibilityManagerAccessibilityId;
|
| -
|
| //
|
| // BrowserAccessibilityRelation
|
| //
|
| @@ -150,7 +146,7 @@ STDMETHODIMP BrowserAccessibilityRelation::get_target(long target_index,
|
| return E_FAIL;
|
|
|
| *target = static_cast<IAccessible*>(
|
| - result->ToBrowserAccessibilityWin()->NewReference());
|
| + ToBrowserAccessibilityWin(result)->NewReference());
|
| return S_OK;
|
| }
|
|
|
| @@ -207,29 +203,10 @@ BrowserAccessibility* BrowserAccessibility::Create() {
|
| return instance->NewReference();
|
| }
|
|
|
| -const BrowserAccessibilityWin* BrowserAccessibility::ToBrowserAccessibilityWin()
|
| - const {
|
| - return static_cast<const BrowserAccessibilityWin*>(this);
|
| -}
|
| -
|
| -BrowserAccessibilityWin* BrowserAccessibility::ToBrowserAccessibilityWin() {
|
| - return static_cast<BrowserAccessibilityWin*>(this);
|
| -}
|
| -
|
| BrowserAccessibilityWin::BrowserAccessibilityWin()
|
| : win_attributes_(new WinAttributes()),
|
| previous_scroll_x_(0),
|
| previous_scroll_y_(0) {
|
| - // Start unique IDs at -1 and decrement each time, because get_accChild
|
| - // uses positive IDs to enumerate children, so we use negative IDs to
|
| - // clearly distinguish between indices and unique IDs.
|
| - unique_id_win_ = next_unique_id_win_;
|
| - if (next_unique_id_win_ ==
|
| - base::win::kLastBrowserAccessibilityManagerAccessibilityId) {
|
| - next_unique_id_win_ =
|
| - base::win::kFirstBrowserAccessibilityManagerAccessibilityId;
|
| - }
|
| - next_unique_id_win_--;
|
| }
|
|
|
| BrowserAccessibilityWin::~BrowserAccessibilityWin() {
|
| @@ -281,7 +258,7 @@ STDMETHODIMP BrowserAccessibilityWin::accHitTest(LONG x_left,
|
| child->lVal = CHILDID_SELF;
|
| } else {
|
| child->vt = VT_DISPATCH;
|
| - child->pdispVal = result->ToBrowserAccessibilityWin()->NewReference();
|
| + child->pdispVal = ToBrowserAccessibilityWin(result)->NewReference();
|
| }
|
| return S_OK;
|
| }
|
| @@ -355,7 +332,7 @@ STDMETHODIMP BrowserAccessibilityWin::accNavigate(LONG nav_dir,
|
| }
|
|
|
| end->vt = VT_DISPATCH;
|
| - end->pdispVal = result->ToBrowserAccessibilityWin()->NewReference();
|
| + end->pdispVal = ToBrowserAccessibilityWin(result)->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -511,7 +488,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accParent(IDispatch** disp_parent) {
|
| if (!disp_parent)
|
| return E_INVALIDARG;
|
|
|
| - IAccessible* parent_obj = GetParent()->ToBrowserAccessibilityWin();
|
| + IAccessible* parent_obj = ToBrowserAccessibilityWin(GetParent());
|
| if (parent_obj == NULL) {
|
| // This happens if we're the root of the tree;
|
| // return the IAccessible for the window.
|
| @@ -646,7 +623,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accSelection(VARIANT* selected) {
|
| if (InternalGetChild(i)->HasState(ui::AX_STATE_SELECTED)) {
|
| selected->vt = VT_DISPATCH;
|
| selected->pdispVal =
|
| - InternalGetChild(i)->ToBrowserAccessibilityWin()->NewReference();
|
| + ToBrowserAccessibilityWin(InternalGetChild(i))->NewReference();
|
| return S_OK;
|
| }
|
| }
|
| @@ -661,7 +638,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accSelection(VARIANT* selected) {
|
| if (InternalGetChild(i)->HasState(ui::AX_STATE_SELECTED)) {
|
| enum_variant->ItemAt(index)->vt = VT_DISPATCH;
|
| enum_variant->ItemAt(index)->pdispVal =
|
| - InternalGetChild(i)->ToBrowserAccessibilityWin()->NewReference();
|
| + ToBrowserAccessibilityWin(InternalGetChild(i))->NewReference();
|
| ++index;
|
| }
|
| }
|
| @@ -751,7 +728,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_uniqueID(LONG* unique_id) {
|
| if (!unique_id)
|
| return E_INVALIDARG;
|
|
|
| - *unique_id = unique_id_win_;
|
| + *unique_id = -unique_id_;
|
| return S_OK;
|
| }
|
|
|
| @@ -1289,7 +1266,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index,
|
|
|
| int cell_id = unique_cell_ids[cell_index];
|
| BrowserAccessibilityWin* cell =
|
| - manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(cell_id));
|
| int col_index;
|
| if (cell &&
|
| cell->GetIntAttribute(
|
| @@ -1394,7 +1371,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowDescription(long row,
|
| for (int i = 0; i < columns; ++i) {
|
| int cell_id = cell_ids[row * columns + i];
|
| BrowserAccessibilityWin* cell =
|
| - manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(cell_id));
|
| if (cell && cell->GetRole() == ui::AX_ROLE_ROW_HEADER) {
|
| base::string16 cell_name = cell->GetString16Attribute(
|
| ui::AX_ATTR_NAME);
|
| @@ -1439,7 +1416,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowExtentAt(long row,
|
| GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
|
| int cell_id = cell_ids[row * columns + column];
|
| BrowserAccessibilityWin* cell =
|
| - manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(cell_id));
|
| int rowspan;
|
| if (cell &&
|
| cell->GetIntAttribute(
|
| @@ -1477,7 +1454,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index,
|
|
|
| int cell_id = unique_cell_ids[cell_index];
|
| BrowserAccessibilityWin* cell =
|
| - manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(cell_id));
|
| int cell_row_index;
|
| if (cell &&
|
| cell->GetIntAttribute(
|
| @@ -1606,7 +1583,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowColumnExtentsAtIndex(
|
|
|
| int cell_id = unique_cell_ids[index];
|
| BrowserAccessibilityWin* cell =
|
| - manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(cell_id));
|
| int rowspan;
|
| int colspan;
|
| if (cell &&
|
| @@ -1765,7 +1742,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells(
|
| for (int i = 0; i < rows; ++i) {
|
| int cell_id = cell_ids[i * columns + column];
|
| BrowserAccessibilityWin* cell =
|
| - manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(cell_id));
|
| if (cell && cell->GetRole() == ui::AX_ROLE_COLUMN_HEADER)
|
| (*n_column_header_cells)++;
|
| }
|
| @@ -1778,7 +1755,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells(
|
| BrowserAccessibility* cell = manager()->GetFromID(cell_id);
|
| if (cell && cell->GetRole() == ui::AX_ROLE_COLUMN_HEADER) {
|
| (*cell_accessibles)[index] = static_cast<IAccessible*>(
|
| - cell->ToBrowserAccessibilityWin()->NewReference());
|
| + ToBrowserAccessibilityWin(cell)->NewReference());
|
| ++index;
|
| }
|
| }
|
| @@ -1875,7 +1852,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells(
|
| BrowserAccessibility* cell = manager()->GetFromID(cell_id);
|
| if (cell && cell->GetRole() == ui::AX_ROLE_ROW_HEADER) {
|
| (*cell_accessibles)[index] = static_cast<IAccessible*>(
|
| - cell->ToBrowserAccessibilityWin()->NewReference());
|
| + ToBrowserAccessibilityWin(cell)->NewReference());
|
| ++index;
|
| }
|
| }
|
| @@ -1970,7 +1947,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_table(IUnknown** table) {
|
| }
|
|
|
| *table = static_cast<IAccessibleTable*>(
|
| - find_table->ToBrowserAccessibilityWin()->NewReference());
|
| + ToBrowserAccessibilityWin(find_table)->NewReference());
|
|
|
| return S_OK;
|
| }
|
| @@ -2412,7 +2389,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_hyperlink(
|
|
|
| int32_t id = hyperlinks()[index];
|
| BrowserAccessibilityWin* child =
|
| - manager()->GetFromID(id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(id));
|
| if (child) {
|
| *hyperlink = static_cast<IAccessibleHyperlink*>(child->NewReference());
|
| return S_OK;
|
| @@ -2510,7 +2487,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) {
|
| const auto parent = GetParent();
|
| if (parent) {
|
| hypertext_offset =
|
| - parent->ToBrowserAccessibilityWin()->GetHypertextOffsetFromChild(*this);
|
| + ToBrowserAccessibilityWin(parent)->GetHypertextOffsetFromChild(*this);
|
| }
|
| *index = static_cast<LONG>(hypertext_offset);
|
| return S_OK;
|
| @@ -2751,7 +2728,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo(
|
| *name_space_id = 0;
|
| *node_value = SysAllocString(value().c_str());
|
| *num_children = PlatformChildCount();
|
| - *unique_id = unique_id_win_;
|
| + *unique_id = -unique_id_;
|
|
|
| if (GetRole() == ui::AX_ROLE_ROOT_WEB_AREA ||
|
| GetRole() == ui::AX_ROLE_WEB_AREA) {
|
| @@ -2889,7 +2866,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_parentNode(ISimpleDOMNode** node) {
|
| if (!node)
|
| return E_INVALIDARG;
|
|
|
| - *node = GetParent()->ToBrowserAccessibilityWin()->NewReference();
|
| + *node = ToBrowserAccessibilityWin(GetParent())->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -2905,7 +2882,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_firstChild(ISimpleDOMNode** node) {
|
| return S_FALSE;
|
| }
|
|
|
| - *node = PlatformGetChild(0)->ToBrowserAccessibilityWin()->NewReference();
|
| + *node = ToBrowserAccessibilityWin(PlatformGetChild(0))->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -2921,8 +2898,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_lastChild(ISimpleDOMNode** node) {
|
| return S_FALSE;
|
| }
|
|
|
| - *node = PlatformGetChild(PlatformChildCount() - 1)
|
| - ->ToBrowserAccessibilityWin()->NewReference();
|
| + *node = ToBrowserAccessibilityWin(
|
| + PlatformGetChild(PlatformChildCount() - 1))->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -2939,8 +2916,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_previousSibling(
|
| return S_FALSE;
|
| }
|
|
|
| - *node = GetParent()->InternalGetChild(GetIndexInParent() - 1)->
|
| - ToBrowserAccessibilityWin()->NewReference();
|
| + *node = ToBrowserAccessibilityWin(
|
| + GetParent()->InternalGetChild(GetIndexInParent() - 1))->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -2959,8 +2936,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_nextSibling(ISimpleDOMNode** node) {
|
| return S_FALSE;
|
| }
|
|
|
| - *node = GetParent()->InternalGetChild(GetIndexInParent() + 1)->
|
| - ToBrowserAccessibilityWin()->NewReference();
|
| + *node = ToBrowserAccessibilityWin(
|
| + GetParent()->InternalGetChild(GetIndexInParent() + 1))->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -2982,7 +2959,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_childAt(
|
| return S_FALSE;
|
| }
|
|
|
| - *node = child->ToBrowserAccessibilityWin()->NewReference();
|
| + *node = ToBrowserAccessibilityWin(child)->NewReference();
|
| return S_OK;
|
| }
|
|
|
| @@ -3101,7 +3078,7 @@ STDMETHODIMP BrowserAccessibilityWin::QueryService(REFGUID guid_service,
|
| BrowserAccessibility* node = this;
|
| while (node->GetParent())
|
| node = node->GetParent()->manager()->GetRoot();
|
| - return node->ToBrowserAccessibilityWin()->QueryInterface(
|
| + return ToBrowserAccessibilityWin(node)->QueryInterface(
|
| IID_IAccessible2, object);
|
| }
|
|
|
| @@ -3458,7 +3435,7 @@ void BrowserAccessibilityWin::UpdateStep2ComputeHypertext() {
|
| // child object it points to.
|
| for (unsigned int i = 0; i < PlatformChildCount(); ++i) {
|
| BrowserAccessibilityWin* child =
|
| - PlatformGetChild(i)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(PlatformGetChild(i));
|
| DCHECK(child);
|
| // Similar to Firefox, we don't expose text-only objects in IA2 hypertext.
|
| if (child->IsTextOnlyObject()) {
|
| @@ -3562,7 +3539,7 @@ void BrowserAccessibilityWin::UpdateStep3FireEvents(bool is_subtree_creation) {
|
|
|
| // Changing a static text node can affect the IAccessibleText hypertext
|
| // of the parent node, so force an update on the parent.
|
| - BrowserAccessibilityWin* parent = GetParent()->ToBrowserAccessibilityWin();
|
| + BrowserAccessibilityWin* parent = ToBrowserAccessibilityWin(GetParent());
|
| if (parent && IsTextOnlyObject() &&
|
| name() != old_win_attributes_->name) {
|
| parent->UpdateStep1ComputeWinAttributes();
|
| @@ -3611,10 +3588,10 @@ BrowserAccessibilityWin* BrowserAccessibilityWin::GetTargetFromChildID(
|
| return this;
|
|
|
| if (child_id >= 1 && child_id <= static_cast<LONG>(PlatformChildCount()))
|
| - return PlatformGetChild(child_id - 1)->ToBrowserAccessibilityWin();
|
| + return ToBrowserAccessibilityWin(PlatformGetChild(child_id - 1));
|
|
|
| - return manager()->ToBrowserAccessibilityManagerWin()->
|
| - GetFromUniqueIdWin(child_id);
|
| + return ToBrowserAccessibilityWin(
|
| + BrowserAccessibility::GetFromUniqueID(-child_id));
|
| }
|
|
|
| HRESULT BrowserAccessibilityWin::GetStringAttributeAsBstr(
|
| @@ -3687,7 +3664,7 @@ bool BrowserAccessibilityWin::IsHyperlink() const {
|
| const auto parent = GetParent();
|
| if (parent) {
|
| hyperlink_index =
|
| - parent->ToBrowserAccessibilityWin()->GetHyperlinkIndexFromChild(*this);
|
| + ToBrowserAccessibilityWin(parent)->GetHyperlinkIndexFromChild(*this);
|
| }
|
|
|
| if (hyperlink_index >= 0)
|
| @@ -3734,7 +3711,7 @@ int32_t BrowserAccessibilityWin::GetHypertextOffsetFromChild(
|
| DCHECK_LT(index_in_parent, static_cast<int32_t>(InternalChildCount()));
|
| for (uint32_t i = 0; i < static_cast<uint32_t>(index_in_parent); ++i) {
|
| const BrowserAccessibilityWin* sibling =
|
| - InternalGetChild(i)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(InternalGetChild(i));
|
| DCHECK(sibling);
|
| if (sibling->IsTextOnlyObject())
|
| hypertextOffset += sibling->GetText().size();
|
| @@ -3753,11 +3730,11 @@ int32_t BrowserAccessibilityWin::GetHypertextOffsetFromChild(
|
|
|
| int32_t BrowserAccessibilityWin::GetHypertextOffsetFromDescendant(
|
| const BrowserAccessibilityWin& descendant) const {
|
| - auto parent_object = descendant.GetParent()->ToBrowserAccessibilityWin();
|
| + auto parent_object = ToBrowserAccessibilityWin(descendant.GetParent());
|
| auto current_object = const_cast<BrowserAccessibilityWin*>(&descendant);
|
| while (parent_object && parent_object != this) {
|
| current_object = parent_object;
|
| - parent_object = current_object->GetParent()->ToBrowserAccessibilityWin();
|
| + parent_object = ToBrowserAccessibilityWin(current_object->GetParent());
|
| }
|
| if (!parent_object)
|
| return -1;
|
| @@ -3839,7 +3816,7 @@ int BrowserAccessibilityWin::GetHypertextOffsetFromEndpoint(
|
| int BrowserAccessibilityWin::GetSelectionAnchor() const {
|
| int32_t anchor_id = manager()->GetTreeData().sel_anchor_object_id;
|
| const auto anchor_object =
|
| - manager()->GetFromID(anchor_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(anchor_id));
|
| if (!anchor_object)
|
| return -1;
|
|
|
| @@ -3850,7 +3827,7 @@ int BrowserAccessibilityWin::GetSelectionAnchor() const {
|
| int BrowserAccessibilityWin::GetSelectionFocus() const {
|
| int32_t focus_id = manager()->GetTreeData().sel_focus_object_id;
|
| const auto focus_object =
|
| - manager()->GetFromID(focus_id)->ToBrowserAccessibilityWin();
|
| + ToBrowserAccessibilityWin(manager()->GetFromID(focus_id));
|
| if (!focus_object)
|
| return -1;
|
|
|
| @@ -4048,7 +4025,7 @@ LONG BrowserAccessibilityWin::FindBoundary(
|
| }
|
|
|
| BrowserAccessibilityWin* BrowserAccessibilityWin::GetFromID(int32_t id) {
|
| - return manager()->GetFromID(id)->ToBrowserAccessibilityWin();
|
| + return ToBrowserAccessibilityWin(manager()->GetFromID(id));
|
| }
|
|
|
| bool BrowserAccessibilityWin::IsListBoxOptionOrMenuListOption() {
|
| @@ -4703,4 +4680,15 @@ void BrowserAccessibilityWin::InitRoleAndState() {
|
| win_attributes_->ia2_state = ia2_state;
|
| }
|
|
|
| +BrowserAccessibilityWin* ToBrowserAccessibilityWin(BrowserAccessibility* obj) {
|
| + DCHECK(!obj || obj->IsNative());
|
| + return static_cast<BrowserAccessibilityWin*>(obj);
|
| +}
|
| +
|
| +const BrowserAccessibilityWin*
|
| +ToBrowserAccessibilityWin(const BrowserAccessibility* obj) {
|
| + DCHECK(!obj || obj->IsNative());
|
| + return static_cast<const BrowserAccessibilityWin*>(obj);
|
| +}
|
| +
|
| } // namespace content
|
|
|