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

Unified Diff: chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc

Issue 1173523006: Re-enable WebView ChromeVox manual script injection when accessibility status changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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: chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
index 687f78e61ede2236e153314cc131cd6514429670..3bab89395ddebc9f9b78837b39e46ab534911200 100644
--- a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
@@ -35,6 +35,7 @@ namespace extensions {
ChromeWebViewGuestDelegate::ChromeWebViewGuestDelegate(
WebViewGuest* web_view_guest)
: pending_context_menu_request_id_(0),
+ chromevox_injected_(false),
web_view_guest_(web_view_guest),
weak_ptr_factory_(this) {
}
@@ -87,6 +88,17 @@ void ChromeWebViewGuestDelegate::OnAttachWebViewHelpers(
new ChromePDFWebContentsHelperClient()));
}
+void ChromeWebViewGuestDelegate::OnDidInitialize() {
+#if defined(OS_CHROMEOS)
+ chromeos::AccessibilityManager* accessibility_manager =
+ chromeos::AccessibilityManager::Get();
+ CHECK(accessibility_manager);
+ accessibility_subscription_ = accessibility_manager->RegisterCallback(
+ base::Bind(&ChromeWebViewGuestDelegate::OnAccessibilityStatusChanged,
+ weak_ptr_factory_.GetWeakPtr()));
+#endif
+}
+
void ChromeWebViewGuestDelegate::OnGuestDestroyed() {
// Clean up custom context menu items for this guest.
MenuManager* menu_manager = MenuManager::Get(
@@ -130,4 +142,33 @@ void ChromeWebViewGuestDelegate::OnShowContextMenu(
menu_delegate->ShowMenu(pending_menu_.Pass());
}
+void ChromeWebViewGuestDelegate::InjectChromeVoxIfNeeded(
+ content::RenderViewHost* render_view_host) {
+#if defined(OS_CHROMEOS)
+ if (!chromevox_injected_) {
+ chromeos::AccessibilityManager* manager =
+ chromeos::AccessibilityManager::Get();
+ if (manager && manager->IsSpokenFeedbackEnabled()) {
+ manager->InjectChromeVox(render_view_host);
+ chromevox_injected_ = true;
+ }
+ }
+#endif
+}
+
+#if defined(OS_CHROMEOS)
+void ChromeWebViewGuestDelegate::OnAccessibilityStatusChanged(
+ const chromeos::AccessibilityStatusEventDetails& details) {
+ if (details.notification_type == chromeos::ACCESSIBILITY_MANAGER_SHUTDOWN) {
+ accessibility_subscription_.reset();
+ } else if (details.notification_type ==
+ chromeos::ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK) {
+ if (details.enabled)
+ InjectChromeVoxIfNeeded(guest_web_contents()->GetRenderViewHost());
+ else
+ chromevox_injected_ = false;
+ }
+}
+#endif
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698