diff options
Diffstat (limited to 'src/core/render_widget_host_view_qt.cpp')
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 386783f88..21de24d45 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -41,20 +41,25 @@ #include "render_widget_host_view_qt.h" +#include "browser_accessibility_manager_qt.h" +#include "browser_accessibility_qt.h" #include "chromium_overrides.h" #include "delegated_frame_node.h" #include "render_widget_host_view_qt_delegate.h" #include "type_conversion.h" +#include "web_contents_adapter.h" #include "web_contents_adapter_client.h" #include "web_event_factory.h" #include "base/command_line.h" #include "cc/output/compositor_frame_ack.h" +#include "content/browser/accessibility/browser_accessibility_state_impl.h" #include "content/browser/renderer_host/render_view_host_impl.h" #include "content/browser/renderer_host/ui_events_helper.h" -#include "content/public/common/content_switches.h" #include "content/common/gpu/gpu_messages.h" #include "content/common/view_messages.h" +#include "content/public/common/content_switches.h" +#include "content/public/browser/browser_accessibility_state.h" #include "third_party/skia/include/core/SkColor.h" #include "third_party/WebKit/public/platform/WebColor.h" #include "third_party/WebKit/public/platform/WebCursorInfo.h" @@ -76,6 +81,7 @@ #include <QVariant> #include <QWheelEvent> #include <QWindow> +#include <QtGui/qaccessible.h> static inline ui::EventType toUIEventType(Qt::TouchPointState state) { @@ -258,9 +264,20 @@ gfx::NativeViewId RenderWidgetHostViewQt::GetNativeViewId() const gfx::NativeViewAccessible RenderWidgetHostViewQt::GetNativeViewAccessible() { - // We are not using accessibility features at this point. - QT_NOT_USED - return NULL; + CreateBrowserAccessibilityManagerIfNeeded(); + return GetBrowserAccessibilityManager()->GetRoot(); +} + +void RenderWidgetHostViewQt::CreateBrowserAccessibilityManagerIfNeeded() +{ + if (GetBrowserAccessibilityManager()) + return; + + m_accessibilityDelegate = scoped_ptr<BrowserAccessibilityDelegateQt>(new BrowserAccessibilityDelegateQt(this)); + SetBrowserAccessibilityManager(new content::BrowserAccessibilityManagerQt( + m_adapterClient->accessibilityParentObject(), + content::BrowserAccessibilityManagerQt::GetEmptyDocument(), + m_accessibilityDelegate.get())); } // Set focus to the associated View component. @@ -624,10 +641,10 @@ void RenderWidgetHostViewQt::SetHasHorizontalScrollbar(bool) { } void RenderWidgetHostViewQt::SetScrollOffsetPinning(bool, bool) { } -void RenderWidgetHostViewQt::OnAccessibilityEvents(const std::vector<AccessibilityHostMsg_EventParams>&) +void RenderWidgetHostViewQt::OnAccessibilityEvents(const std::vector<AccessibilityHostMsg_EventParams> ¬ifications) { - // We are not using accessibility features at this point. - QT_NOT_USED + CreateBrowserAccessibilityManagerIfNeeded(); + GetBrowserAccessibilityManager()->OnAccessibilityEvents(notifications); } void RenderWidgetHostViewQt::SelectionChanged(const base::string16 &text, size_t offset, const gfx::Range &range) @@ -1022,3 +1039,16 @@ void RenderWidgetHostViewQt::handleFocusEvent(QFocusEvent *ev) ev->accept(); } } + +QAccessibleInterface *RenderWidgetHostViewQt::GetQtAccessible() +{ + // Assume we have a screen reader doing stuff + CreateBrowserAccessibilityManagerIfNeeded(); + content::BrowserAccessibilityState::GetInstance()->OnScreenReaderDetected(); + content::BrowserAccessibilityStateImpl::GetInstance()->SetAccessibilityMode( + AccessibilityModeComplete); + + content::BrowserAccessibility *acc = GetBrowserAccessibilityManager()->GetRoot(); + content::BrowserAccessibilityQt *accQt = static_cast<content::BrowserAccessibilityQt*>(acc); + return accQt; +} |