diff options
-rw-r--r-- | content/renderer/renderer_accessibility.cc | 14 | ||||
-rw-r--r-- | content/renderer/renderer_accessibility.h | 5 |
2 files changed, 19 insertions, 0 deletions
diff --git a/content/renderer/renderer_accessibility.cc b/content/renderer/renderer_accessibility.cc index 2ca15dd..5f81af8 100644 --- a/content/renderer/renderer_accessibility.cc +++ b/content/renderer/renderer_accessibility.cc @@ -81,6 +81,7 @@ RendererAccessibility::RendererAccessibility(RenderViewImpl* render_view) : content::RenderViewObserver(render_view), ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), browser_root_(NULL), + last_scroll_offset_(gfx::Size()), ack_pending_(false), logging_(false), sent_load_complete_(false) { @@ -164,6 +165,19 @@ void RendererAccessibility::PostAccessibilityNotification( WebKit::WebAccessibilityNotificationLoadComplete); } + gfx::Size scroll_offset = document.frame()->scrollOffset(); + if (scroll_offset != last_scroll_offset_) { + // Make sure the browser is always aware of the scroll position of + // the root document element by posting a generic notification that + // will update it. + // TODO(dmazzoni): remove this as soon as + // https://bugs.webkit.org/show_bug.cgi?id=73460 is fixed. + last_scroll_offset_ = scroll_offset; + PostAccessibilityNotification( + document.accessibilityObject(), + WebKit::WebAccessibilityNotificationLayoutComplete); + } + if (notification == WebKit::WebAccessibilityNotificationLoadComplete) sent_load_complete_ = true; diff --git a/content/renderer/renderer_accessibility.h b/content/renderer/renderer_accessibility.h index c6e4c17..19e850a 100644 --- a/content/renderer/renderer_accessibility.h +++ b/content/renderer/renderer_accessibility.h @@ -106,6 +106,11 @@ class RendererAccessibility : public content::RenderViewObserver { // A map from IDs to nodes in the browser tree. base::hash_map<int32, BrowserTreeNode*> browser_id_map_; + // The most recently observed scroll offset of the root document element. + // TODO(dmazzoni): remove once https://bugs.webkit.org/show_bug.cgi?id=73460 + // is fixed. + gfx::Size last_scroll_offset_; + // Set if we are waiting for an accessibility notification ack. bool ack_pending_; |