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

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

Issue 329053004: Fix race in BrowserAccessibilityManagerWin creation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 6 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_manager_win.cc
diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc
index dfd1508a790f8a8a5212d51e29b63a3688175374..008081a6ff92d2f2b86083e61e85ce71abb42b3a 100644
--- a/content/browser/accessibility/browser_accessibility_manager_win.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_win.cc
@@ -37,12 +37,14 @@ BrowserAccessibilityManagerWin::BrowserAccessibilityManagerWin(
BrowserAccessibilityDelegate* delegate,
BrowserAccessibilityFactory* factory)
: BrowserAccessibilityManager(initial_tree, delegate, factory),
- parent_hwnd_(accessible_hwnd->GetParent()),
parent_iaccessible_(parent_iaccessible),
tracked_scroll_object_(NULL),
accessible_hwnd_(accessible_hwnd) {
ui::win::CreateATLModuleIfNeeded();
- accessible_hwnd_->set_browser_accessibility_manager(this);
+ if (accessible_hwnd_) {
+ accessible_hwnd_->set_browser_accessibility_manager(this);
+ parent_hwnd_ = accessible_hwnd->GetParent();
+ }
}
BrowserAccessibilityManagerWin::~BrowserAccessibilityManagerWin() {
@@ -69,10 +71,17 @@ ui::AXTreeUpdate BrowserAccessibilityManagerWin::GetEmptyDocument() {
return update;
}
+void BrowserAccessibilityManagerWin::SetAccessibleHWND(
+ LegacyRenderWidgetHostHWND* accessible_hwnd) {
+ accessible_hwnd_ = accessible_hwnd;
+ accessible_hwnd_->set_browser_accessibility_manager(this);
+ parent_hwnd_ = accessible_hwnd->GetParent();
+}
+
void BrowserAccessibilityManagerWin::MaybeCallNotifyWinEvent(DWORD event,
LONG child_id) {
// Don't fire events if this view isn't hooked up to its parent.
- if (!parent_iaccessible())
+ if (!parent_iaccessible() || !parent_hwnd())
return;
// If on Win 7 and complete accessibility is enabled, use the fake child HWND

Powered by Google App Engine
This is Rietveld 408576698