Chromium Code Reviews| Index: content/browser/accessibility/browser_accessibility_com_win.cc |
| diff --git a/content/browser/accessibility/browser_accessibility_com_win.cc b/content/browser/accessibility/browser_accessibility_com_win.cc |
| index 930d6070f38c8bd4ab49a5e108c67bd90df9782c..6d19cdeba1d24792cb62495a6c67ff9270860821 100644 |
| --- a/content/browser/accessibility/browser_accessibility_com_win.cc |
| +++ b/content/browser/accessibility/browser_accessibility_com_win.cc |
| @@ -346,7 +346,7 @@ STDMETHODIMP BrowserAccessibilityRelation::get_target(long target_index, |
| if (!owner_->GetOwner()) |
| return E_FAIL; |
| - auto* manager = owner_->GetOwner()->manager(); |
| + auto* manager = owner_->owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -430,7 +430,7 @@ HRESULT BrowserAccessibilityComWin::accDoDefaultAction(VARIANT var_id) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -454,7 +454,7 @@ STDMETHODIMP BrowserAccessibilityComWin::accHitTest(LONG x_left, |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -618,7 +618,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_accFocus(VARIANT* focus_child) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -693,8 +693,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_accParent( |
| if (parent_obj == NULL) { |
| // This happens if we're the root of the tree; |
| // return the IAccessible for the window. |
| - parent_obj = GetOwner() |
| - ->manager() |
| + parent_obj = owners_manager() |
| ->ToBrowserAccessibilityManagerWin() |
| ->GetParentIAccessible(); |
| // |parent| can only be NULL if the manager was created before the parent |
| @@ -742,7 +741,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_accState(VARIANT var_id, |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -868,7 +867,7 @@ STDMETHODIMP BrowserAccessibilityComWin::accSelect(LONG flags_sel, |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -963,10 +962,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_windowHandle(HWND* window_handle) { |
| if (!window_handle) |
| return E_INVALIDARG; |
| - *window_handle = GetOwner() |
| - ->manager() |
| - ->ToBrowserAccessibilityManagerWin() |
| - ->GetParentHWND(); |
| + *window_handle = |
| + owners_manager()->ToBrowserAccessibilityManagerWin()->GetParentHWND(); |
| if (!*window_handle) |
| return E_FAIL; |
| @@ -1050,7 +1047,7 @@ STDMETHODIMP BrowserAccessibilityComWin::scrollTo(IA2ScrollType scroll_type) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -1097,7 +1094,7 @@ STDMETHODIMP BrowserAccessibilityComWin::scrollToPoint( |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -2780,7 +2777,7 @@ STDMETHODIMP BrowserAccessibilityComWin::doAction(long action_index) { |
| if (!GetOwner()->HasIntAttribute(ui::AX_ATTR_ACTION) || action_index != 0) |
| return E_INVALIDARG; |
| - GetOwner()->manager()->DoDefaultAction(*GetOwner()); |
| + owners_manager()->DoDefaultAction(*GetOwner()); |
| return S_OK; |
| } |
| @@ -2940,7 +2937,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_URL(BSTR* url) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -2965,7 +2962,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_title(BSTR* title) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -2987,7 +2984,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_mimeType(BSTR* mime_type) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -3009,7 +3006,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_docType(BSTR* doc_type) { |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -3446,7 +3443,7 @@ STDMETHODIMP BrowserAccessibilityComWin::scrollToSubstring( |
| if (!GetOwner()) |
| return E_FAIL; |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| if (!manager) |
| return E_FAIL; |
| @@ -3735,7 +3732,7 @@ void BrowserAccessibilityComWin::ComputeStylesIfNeeded() { |
| AXPlatformPosition::AXPositionInstance |
| BrowserAccessibilityComWin::CreatePositionForSelectionAt(int offset) const { |
| if (!GetOwner()->IsNativeTextControl() && !GetOwner()->IsTextOnlyObject()) { |
| - auto* manager = GetOwner()->manager(); |
| + auto* manager = owners_manager(); |
| DCHECK(manager); |
| const BrowserAccessibilityComWin* child = this; |
| // TODO(nektar): Make parents of text-only objects not include the text of |
| @@ -3922,7 +3919,7 @@ void BrowserAccessibilityComWin::UpdateStep1ComputeWinAttributes() { |
| // On Windows, the value of a document should be its url. |
| if (GetOwner()->GetRole() == ui::AX_ROLE_ROOT_WEB_AREA || |
| GetOwner()->GetRole() == ui::AX_ROLE_WEB_AREA) { |
| - value = base::UTF8ToUTF16(GetOwner()->manager()->GetTreeData().url); |
| + value = base::UTF8ToUTF16(owners_manager()->GetTreeData().url); |
| } |
| // If this doesn't have a value and is linked then set its value to the url |
| // attribute. This allows screen readers to read an empty link's destination. |
| @@ -4089,6 +4086,14 @@ void BrowserAccessibilityComWin::UpdateStep3FireEvents( |
| old_win_attributes_.reset(nullptr); |
| } |
| +BrowserAccessibilityManager* BrowserAccessibilityComWin::owners_manager() |
| + const { |
| + auto* owner = GetOwner(); |
| + if (!owner) |
|
dmazzoni
2017/05/10 06:10:04
Doesn't every single method call GetOwner at the t
|
| + return nullptr; |
| + return owner->manager(); |
| +} |
| + |
| std::vector<base::string16> BrowserAccessibilityComWin::ComputeTextAttributes() |
| const { |
| std::vector<base::string16> attributes; |
| @@ -4385,7 +4390,7 @@ void BrowserAccessibilityComWin::SetIA2HypertextSelection(LONG start_offset, |
| CreatePositionForSelectionAt(static_cast<int>(start_offset)); |
| AXPlatformPositionInstance end_position = |
| CreatePositionForSelectionAt(static_cast<int>(end_offset)); |
| - GetOwner()->manager()->SetSelection(AXPlatformRange( |
| + owners_manager()->SetSelection(AXPlatformRange( |
| start_position->AsTextPosition(), end_position->AsTextPosition())); |
| } |
| @@ -4596,22 +4601,22 @@ int BrowserAccessibilityComWin::GetHypertextOffsetFromEndpoint( |
| } |
| int BrowserAccessibilityComWin::GetSelectionAnchor() const { |
| - int32_t anchor_id = GetOwner()->manager()->GetTreeData().sel_anchor_object_id; |
| + int32_t anchor_id = owners_manager()->GetTreeData().sel_anchor_object_id; |
| const BrowserAccessibilityComWin* anchor_object = GetFromID(anchor_id); |
| if (!anchor_object) |
| return -1; |
| - int anchor_offset = GetOwner()->manager()->GetTreeData().sel_anchor_offset; |
| + int anchor_offset = owners_manager()->GetTreeData().sel_anchor_offset; |
| return GetHypertextOffsetFromEndpoint(*anchor_object, anchor_offset); |
| } |
| int BrowserAccessibilityComWin::GetSelectionFocus() const { |
| - int32_t focus_id = GetOwner()->manager()->GetTreeData().sel_focus_object_id; |
| + int32_t focus_id = owners_manager()->GetTreeData().sel_focus_object_id; |
| const BrowserAccessibilityComWin* focus_object = GetFromID(focus_id); |
| if (!focus_object) |
| return -1; |
| - int focus_offset = GetOwner()->manager()->GetTreeData().sel_focus_offset; |
| + int focus_offset = owners_manager()->GetTreeData().sel_focus_offset; |
| return GetHypertextOffsetFromEndpoint(*focus_object, focus_offset); |
| } |
| @@ -4791,7 +4796,7 @@ LONG BrowserAccessibilityComWin::FindBoundary( |
| // affinity, otherwise default to downstream affinity. |
| ui::AXTextAffinity affinity = |
| start_offset == IA2_TEXT_OFFSET_CARET |
| - ? GetOwner()->manager()->GetTreeData().sel_focus_affinity |
| + ? owners_manager()->GetTreeData().sel_focus_affinity |
| : ui::AX_TEXT_AFFINITY_DOWNSTREAM; |
| HandleSpecialTextOffset(&start_offset); |
| @@ -4889,7 +4894,7 @@ BrowserAccessibilityComWin* BrowserAccessibilityComWin::GetFromID( |
| int32_t id) const { |
| if (!GetOwner()) |
| return nullptr; |
| - return ToBrowserAccessibilityComWin(GetOwner()->manager()->GetFromID(id)); |
| + return ToBrowserAccessibilityComWin(owners_manager()->GetFromID(id)); |
| } |
| bool BrowserAccessibilityComWin::IsListBoxOptionOrMenuListOption() { |