diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-30 05:16:02 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-30 05:16:02 +0000 |
commit | a6b2aa58719366e64a7fdbde719707304a993a33 (patch) | |
tree | c6e1949d861863357f8a1d714a636881e5c89889 /content/browser/accessibility/browser_accessibility_manager_win.cc | |
parent | 1329af2d22abc7f8ba082e68eba701518c09a9fb (diff) | |
download | chromium_src-a6b2aa58719366e64a7fdbde719707304a993a33.zip chromium_src-a6b2aa58719366e64a7fdbde719707304a993a33.tar.gz chromium_src-a6b2aa58719366e64a7fdbde719707304a993a33.tar.bz2 |
Support win aura screen reader workarounds on Win 8 too.
This also fixes a crash on all Win platforms due to
incorrect HWND ownership.
BUG=227026
Review URL: https://codereview.chromium.org/72863003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237972 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/accessibility/browser_accessibility_manager_win.cc')
-rw-r--r-- | content/browser/accessibility/browser_accessibility_manager_win.cc | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc index 5158935..d4dbe6d 100644 --- a/content/browser/accessibility/browser_accessibility_manager_win.cc +++ b/content/browser/accessibility/browser_accessibility_manager_win.cc @@ -64,6 +64,12 @@ class AccessibleHWND IAccessible* window_accessible() { return window_accessible_; } + protected: + virtual void OnFinalMessage(HWND hwnd) OVERRIDE { + manager_->OnAccessibleHwndDeleted(); + delete this; + } + private: LRESULT OnGetObject(UINT message, WPARAM w_param, @@ -109,7 +115,8 @@ BrowserAccessibilityManagerWin::BrowserAccessibilityManagerWin( parent_iaccessible_(parent_iaccessible), tracked_scroll_object_(NULL), is_chrome_frame_( - CommandLine::ForCurrentProcess()->HasSwitch("chrome-frame")) { + CommandLine::ForCurrentProcess()->HasSwitch("chrome-frame")), + accessible_hwnd_(NULL) { } BrowserAccessibilityManagerWin::~BrowserAccessibilityManagerWin() { @@ -143,9 +150,8 @@ void BrowserAccessibilityManagerWin::MaybeCallNotifyWinEvent(DWORD event, // accessibility tree. See comments above AccessibleHWND for details. if (BrowserAccessibilityStateImpl::GetInstance()->IsAccessibleBrowser() && !is_chrome_frame_ && - !accessible_hwnd_ && - base::win::GetVersion() < base::win::VERSION_WIN8) { - accessible_hwnd_.reset(new AccessibleHWND(parent_hwnd_, this)); + !accessible_hwnd_) { + accessible_hwnd_ = new AccessibleHWND(parent_hwnd_, this); parent_hwnd_ = accessible_hwnd_->hwnd(); parent_iaccessible_ = accessible_hwnd_->window_accessible(); } @@ -298,4 +304,8 @@ BrowserAccessibilityWin* BrowserAccessibilityManagerWin::GetFromUniqueIdWin( return NULL; } +void BrowserAccessibilityManagerWin::OnAccessibleHwndDeleted() { + accessible_hwnd_ = NULL; +} + } // namespace content |