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

Unified Diff: content/browser/accessibility/browser_accessibility_com_win.cc

Issue 2981083002: Migrate BrowserAccessibility windows unique id handling to AXPlatformNodeWin. (Closed)
Patch Set: Use after free no more Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
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 2abae580322645147efea8f34068242d6c084545..41d1523b46c5953a7ce102dfaa15a734f57cb3fe 100644
--- a/content/browser/accessibility/browser_accessibility_com_win.cc
+++ b/content/browser/accessibility/browser_accessibility_com_win.cc
@@ -137,7 +137,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_uniqueID(LONG* unique_id) {
if (!unique_id)
return E_INVALIDARG;
- *unique_id = -owner()->unique_id();
+ *unique_id = -AXPlatformNodeWin::unique_id();
return S_OK;
}
@@ -1249,8 +1249,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_hyperlink(
}
int32_t id = hyperlinks()[index];
- BrowserAccessibilityComWin* link =
- ToBrowserAccessibilityComWin(owner()->GetFromUniqueID(id));
+ auto* link = static_cast<BrowserAccessibilityComWin*>(
+ AXPlatformNodeWin::GetFromUniqueId(id));
if (!link)
return E_FAIL;
@@ -1708,7 +1708,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_nodeInfo(
*name_space_id = 0;
*node_value = SysAllocString(value().c_str());
*num_children = owner()->PlatformChildCount();
- *unique_id = -owner()->unique_id();
+ *unique_id = -AXPlatformNodeWin::unique_id();
if (owner()->IsDocument()) {
*node_type = NODETYPE_DOCUMENT;
@@ -2462,7 +2462,7 @@ void BrowserAccessibilityComWin::UpdateStep2ComputeHypertext() {
win_attributes_->hypertext += child->name();
} else {
int32_t char_offset = static_cast<int32_t>(owner()->GetText().size());
- int32_t child_unique_id = child->owner()->unique_id();
+ int32_t child_unique_id = child->unique_id();
int32_t index = hyperlinks().size();
win_attributes_->hyperlink_offset_to_index[char_offset] = index;
win_attributes_->hyperlinks.push_back(child_unique_id);
@@ -2577,12 +2577,6 @@ void BrowserAccessibilityComWin::Init(ui::AXPlatformNodeDelegate* delegate) {
AXPlatformNodeBase::Init(delegate);
}
-ui::AXPlatformNode* BrowserAccessibilityComWin::GetFromUniqueId(
- int32_t unique_id) {
- return ToBrowserAccessibilityComWin(
- BrowserAccessibility::GetFromUniqueID(unique_id));
-}
-
std::vector<base::string16> BrowserAccessibilityComWin::ComputeTextAttributes()
const {
std::vector<base::string16> attributes;
@@ -2831,8 +2825,8 @@ BrowserAccessibilityComWin* BrowserAccessibilityComWin::GetTargetFromChildID(
return ToBrowserAccessibilityComWin(
owner()->PlatformGetChild(child_id - 1));
- BrowserAccessibilityComWin* child = ToBrowserAccessibilityComWin(
- BrowserAccessibility::GetFromUniqueID(-child_id));
+ auto* child = static_cast<BrowserAccessibilityComWin*>(
+ AXPlatformNodeWin::GetFromUniqueId(-child_id));
if (child && child->owner()->IsDescendantOf(owner()))
return child;
@@ -2906,8 +2900,8 @@ BrowserAccessibilityComWin::GetHyperlinkFromHypertextOffset(int offset) const {
DCHECK_GE(index, 0);
DCHECK_LT(index, static_cast<int32_t>(hyperlinks().size()));
int32_t id = hyperlinks()[index];
- BrowserAccessibilityComWin* hyperlink =
- ToBrowserAccessibilityComWin(owner()->GetFromUniqueID(id));
+ auto* hyperlink = static_cast<BrowserAccessibilityComWin*>(
+ AXPlatformNodeWin::GetFromUniqueId(id));
if (!hyperlink)
return nullptr;
return hyperlink;
@@ -2918,8 +2912,8 @@ int32_t BrowserAccessibilityComWin::GetHyperlinkIndexFromChild(
if (hyperlinks().empty())
return -1;
- auto iterator = std::find(hyperlinks().begin(), hyperlinks().end(),
- child.owner()->unique_id());
+ auto iterator =
+ std::find(hyperlinks().begin(), hyperlinks().end(), child.unique_id());
if (iterator == hyperlinks().end())
return -1;

Powered by Google App Engine
This is Rietveld 408576698