Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(484)

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 2781613003: Added a class acting as a fake caret for accessibility. (Closed)
Patch Set: Added lib to build file. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 61b60b05345b9f7bc3b334c2517a143d09559918..8696db3db8ae30348842429e2c8b01c331c7906b 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -103,6 +103,7 @@
#include "content/browser/accessibility/browser_accessibility_manager_win.h"
#include "content/browser/accessibility/browser_accessibility_win.h"
#include "content/browser/renderer_host/legacy_render_widget_host_win.h"
+#include "ui/accessibility/platform/ax_fake_caret_win.h"
#include "ui/base/win/hidden_window.h"
#include "ui/base/win/osk_display_manager.h"
#include "ui/base/win/osk_display_observer.h"
@@ -885,7 +886,9 @@ void RenderWidgetHostViewAura::UpdateMouseLockRegion() {
}
void RenderWidgetHostViewAura::OnLegacyWindowDestroyed() {
- legacy_render_widget_host_HWND_ = NULL;
+ ui::AXFakeCaretWin::Get()->SetTargetForNativeAccessibilityEvent(
dmazzoni 2017/04/21 21:06:30 Hmmm, I wonder if it'd make more sense for each HW
+ gfx::kNullAcceleratedWidget);
+ legacy_render_widget_host_HWND_ = nullptr;
legacy_window_destroyed_ = true;
}
#endif
@@ -1556,6 +1559,8 @@ void RenderWidgetHostViewAura::OnWindowDestroying(aura::Window* window) {
// The Destroy call above will delete the LegacyRenderWidgetHostHWND
// instance.
legacy_render_widget_host_HWND_ = NULL;
+ ui::AXFakeCaretWin::Get()->SetTargetForNativeAccessibilityEvent(
+ gfx::kNullAcceleratedWidget);
}
#endif
@@ -2155,6 +2160,8 @@ void RenderWidgetHostViewAura::UpdateLegacyWin() {
// here.
if (!host_->is_hidden())
legacy_render_widget_host_HWND_->Show();
+ ui::AXFakeCaretWin::Get()->SetTargetForNativeAccessibilityEvent(
+ legacy_render_widget_host_HWND_->hwnd());
}
}
#endif
@@ -2333,7 +2340,6 @@ void RenderWidgetHostViewAura::OnSelectionBoundsChanged(
void RenderWidgetHostViewAura::OnTextSelectionChanged(
TextInputManager* text_input_manager,
RenderWidgetHostViewBase* updated_view) {
-#if defined(USE_X11) && !defined(OS_CHROMEOS)
if (!GetTextInputManager())
return;
@@ -2350,6 +2356,7 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged(
if (!focused_view)
return;
+#if defined(USE_X11) && !defined(OS_CHROMEOS)
const TextInputManager::TextSelection* selection =
GetTextInputManager()->GetTextSelection(focused_view);
if (selection->selected_text().length()) {
@@ -2357,7 +2364,24 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged(
ui::ScopedClipboardWriter clipboard_writer(ui::CLIPBOARD_TYPE_SELECTION);
clipboard_writer.WriteText(selection->selected_text());
}
-#endif // defined(USE_X11) && !defined(OS_CHROMEOS)
+
+// #endif defined(USE_X11) && !defined(OS_CHROMEOS)
+#elif defined(OS_WIN)
+ // Some assistive software need to track the location of the caret.
+ if (!GetRenderWidgetHost())
+ return;
+
+ // Not using |GetCaretBounds| because it includes the whole of the selection,
+ // not just the focus.
+ const TextInputManager::SelectionRegion* region =
+ GetTextInputManager()->GetSelectionRegion(focused_view);
+ if (!region)
+ return;
+ gfx::Rect caret_rect = ConvertRectToScreen(gfx::Rect(
+ region->focus.edge_top_rounded().x(),
+ region->focus.edge_top_rounded().y(), 1, region->focus.GetHeight()));
+ ui::AXFakeCaretWin::Get()->MoveCaretTo(caret_rect);
+#endif // defined(OS_WIN)
}
void RenderWidgetHostViewAura::SetPopupChild(

Powered by Google App Engine
This is Rietveld 408576698