From e12f31e21f5397de0e208d81ea4e7d6d1408968c Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Wed, 19 Nov 2014 02:08:25 +0100 Subject: BrowserAccessibilityDelegate has been implemented in RenderFrameHostImpl. Adopt Accessibility functions from render_frame_host_impl.cc Change-Id: Ifa6752fd9daa3429d4016a91b85d7145b1fc2775 Reviewed-by: Andras Becsi Reviewed-by: Frederik Gladhorn --- src/core/render_widget_host_view_qt.cpp | 66 ++------------------------------- src/core/render_widget_host_view_qt.h | 16 +------- src/core/web_contents_adapter.cpp | 9 ++++- 3 files changed, 11 insertions(+), 80 deletions(-) diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 1e9d2bbf7..9555c85a5 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -305,15 +305,12 @@ gfx::NativeViewAccessible RenderWidgetHostViewQt::GetNativeViewAccessible() return 0; } -void RenderWidgetHostViewQt::CreateBrowserAccessibilityManagerIfNeeded() +content::BrowserAccessibilityManager* RenderWidgetHostViewQt::CreateBrowserAccessibilityManager(content::BrowserAccessibilityDelegate* delegate) { - if (GetBrowserAccessibilityManager()) - return; - - SetBrowserAccessibilityManager(new content::BrowserAccessibilityManagerQt( + return new content::BrowserAccessibilityManagerQt( m_adapterClient->accessibilityParentObject(), content::BrowserAccessibilityManagerQt::GetEmptyDocument(), - this)); + delegate); } // Set focus to the associated View component. @@ -904,53 +901,6 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev) } } -void RenderWidgetHostViewQt::AccessibilitySetFocus(int acc_obj_id) -{ - if (!m_host) - return; - m_host->AccessibilitySetFocus(acc_obj_id); -} - -void RenderWidgetHostViewQt::AccessibilityDoDefaultAction(int acc_obj_id) -{ - if (!m_host) - return; - m_host->AccessibilityDoDefaultAction(acc_obj_id); -} -void RenderWidgetHostViewQt::AccessibilityScrollToMakeVisible(int acc_obj_id, const gfx::Rect& subfocus) -{ - if (!m_host) - return; - m_host->AccessibilityScrollToMakeVisible(acc_obj_id, subfocus); -} - -void RenderWidgetHostViewQt::AccessibilityScrollToPoint(int acc_obj_id, const gfx::Point& point) -{ - if (!m_host) - return; - m_host->AccessibilityScrollToPoint(acc_obj_id, point); -} - -void RenderWidgetHostViewQt::AccessibilitySetTextSelection(int acc_obj_id, int start_offset, int end_offset) -{ - if (!m_host) - return; - m_host->AccessibilitySetTextSelection(acc_obj_id, start_offset, end_offset); -} - -bool RenderWidgetHostViewQt::AccessibilityViewHasFocus() const -{ - return HasFocus(); -} - -void RenderWidgetHostViewQt::AccessibilityFatalError() -{ - if (!m_host) - return; - m_host->AccessibilityFatalError(); - SetBrowserAccessibilityManager(NULL); -} - void RenderWidgetHostViewQt::accessibilityActiveChanged(bool active) { if (active) @@ -1040,16 +990,6 @@ void RenderWidgetHostViewQt::handleFocusEvent(QFocusEvent *ev) } } -QAccessibleInterface *RenderWidgetHostViewQt::GetQtAccessible() -{ - // Assume we have a screen reader doing stuff - CreateBrowserAccessibilityManagerIfNeeded(); - content::BrowserAccessibilityState::GetInstance()->OnScreenReaderDetected(); - content::BrowserAccessibility *acc = GetBrowserAccessibilityManager()->GetRoot(); - content::BrowserAccessibilityQt *accQt = static_cast(acc); - return accQt; -} - void RenderWidgetHostViewQt::didFirstVisuallyNonEmptyLayout() { m_didFirstVisuallyNonEmptyLayout = true; diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 40fe72adc..ee11888ad 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -93,7 +93,6 @@ class RenderWidgetHostViewQt : public content::RenderWidgetHostViewBase , public ui::GestureProviderClient , public RenderWidgetHostViewQtDelegateClient - , public content::BrowserAccessibilityDelegate , public base::SupportsWeakPtr , public QAccessible::ActivationObserver { @@ -198,21 +197,9 @@ public: #endif // defined(OS_WIN) // Overridden from content::BrowserAccessibilityDelegate - virtual void AccessibilitySetFocus(int acc_obj_id) Q_DECL_OVERRIDE; - virtual void AccessibilityDoDefaultAction(int acc_obj_id) Q_DECL_OVERRIDE; - virtual void AccessibilityShowMenu(const gfx::Point& point) Q_DECL_OVERRIDE { } - virtual void AccessibilityScrollToMakeVisible(int acc_obj_id, const gfx::Rect& subfocus) Q_DECL_OVERRIDE; - virtual void AccessibilityScrollToPoint(int acc_obj_id, const gfx::Point& point) Q_DECL_OVERRIDE; - virtual void AccessibilitySetTextSelection(int acc_obj_id, int start_offset, int end_offset) Q_DECL_OVERRIDE; - virtual bool AccessibilityViewHasFocus() const Q_DECL_OVERRIDE; - virtual gfx::Rect AccessibilityGetViewBounds() const Q_DECL_OVERRIDE { return GetViewBounds(); } - virtual gfx::Point AccessibilityOriginInScreen(const gfx::Rect& bounds) const Q_DECL_OVERRIDE { return gfx::Point(); } - virtual void AccessibilityHitTest(const gfx::Point& point) Q_DECL_OVERRIDE { } - virtual void AccessibilityFatalError() Q_DECL_OVERRIDE; + virtual content::BrowserAccessibilityManager* CreateBrowserAccessibilityManager(content::BrowserAccessibilityDelegate* delegate) Q_DECL_OVERRIDE; virtual void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE; - QAccessibleInterface *GetQtAccessible(); - void didFirstVisuallyNonEmptyLayout(); private: @@ -222,7 +209,6 @@ private: float dpiScale() const; bool IsPopup() const; - void CreateBrowserAccessibilityManagerIfNeeded(); content::RenderWidgetHostImpl *m_host; ui::FilteredGestureProvider m_gestureProvider; diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 00f4bdbbe..b9c2018aa 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -41,6 +41,7 @@ #include "web_contents_adapter.h" #include "web_contents_adapter_p.h" +#include "browser_accessibility_qt.h" #include "browser_context_adapter.h" #include "browser_context_qt.h" #include "content_browser_client_qt.h" @@ -677,8 +678,12 @@ BrowserContextQt* WebContentsAdapter::browserContext() QAccessibleInterface *WebContentsAdapter::browserAccessible() { Q_D(const WebContentsAdapter); - RenderWidgetHostViewQt *rwhv = static_cast(d->webContents->GetRenderWidgetHostView()); - return rwhv ? rwhv->GetQtAccessible() : Q_NULLPTR; + content::RenderViewHost *rvh = d->webContents->GetRenderViewHost(); + Q_ASSERT(rvh); + content::BrowserAccessibilityManager *manager = static_cast(rvh->GetMainFrame())->GetOrCreateBrowserAccessibilityManager(); + content::BrowserAccessibility *acc = manager->GetRoot(); + content::BrowserAccessibilityQt *accQt = static_cast(acc); + return accQt; } void WebContentsAdapter::runJavaScript(const QString &javaScript) -- cgit v1.2.3