summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility/browser_accessibility_manager_win.cc
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-30 05:16:02 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-30 05:16:02 +0000
commita6b2aa58719366e64a7fdbde719707304a993a33 (patch)
treec6e1949d861863357f8a1d714a636881e5c89889 /content/browser/accessibility/browser_accessibility_manager_win.cc
parent1329af2d22abc7f8ba082e68eba701518c09a9fb (diff)
downloadchromium_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.cc18
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