From c98b34608b23bf9208520b969d20518253881743 Mon Sep 17 00:00:00 2001 From: alanv Date: Mon, 27 Aug 2012 15:21:09 -0700 Subject: [PATCH] Reload page when A11y is on and the JavaScript state changes. Bug: 6910403 Change-Id: I85af7d2019a02c1a6cc17b0c4930276b7fb69e33 --- .../android/webkit/AccessibilityInjector.java | 18 ++++++++++++++++++ .../android/webkit/WebSettingsClassic.java | 1 + core/java/android/webkit/WebViewClassic.java | 6 ++++++ 3 files changed, 25 insertions(+) diff --git a/core/java/android/webkit/AccessibilityInjector.java b/core/java/android/webkit/AccessibilityInjector.java index 7dfb5bb102e2a..fd73fdaa03e2d 100644 --- a/core/java/android/webkit/AccessibilityInjector.java +++ b/core/java/android/webkit/AccessibilityInjector.java @@ -279,6 +279,7 @@ class AccessibilityInjector { } if (!shouldInjectJavaScript(url)) { + mAccessibilityScriptInjected = false; toggleFallbackAccessibilityInjector(true); return; } @@ -291,6 +292,23 @@ class AccessibilityInjector { mAccessibilityScriptInjected = true; } + /** + * Adjusts the accessibility injection state to reflect changes in the + * JavaScript enabled state. + * + * @param enabled Whether JavaScript is enabled. + */ + public void updateJavaScriptEnabled(boolean enabled) { + if (enabled) { + addAccessibilityApisIfNecessary(); + } else { + removeAccessibilityApisIfNecessary(); + } + + // We have to reload the page after adding or removing APIs. + mWebView.reload(); + } + /** * Toggles the non-JavaScript method for handling accessibility. * diff --git a/core/java/android/webkit/WebSettingsClassic.java b/core/java/android/webkit/WebSettingsClassic.java index d1f8b4bc04481..1bbe7bbad073e 100644 --- a/core/java/android/webkit/WebSettingsClassic.java +++ b/core/java/android/webkit/WebSettingsClassic.java @@ -1122,6 +1122,7 @@ public class WebSettingsClassic extends WebSettings { if (mJavaScriptEnabled != flag) { mJavaScriptEnabled = flag; postSync(); + mWebView.updateJavaScriptEnabled(flag); } } diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java index 9df485282f42c..d6be3021df1f0 100644 --- a/core/java/android/webkit/WebViewClassic.java +++ b/core/java/android/webkit/WebViewClassic.java @@ -1633,6 +1633,12 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc mZoomManager.updateMultiTouchSupport(context); } + void updateJavaScriptEnabled(boolean enabled) { + if (isAccessibilityInjectionEnabled()) { + getAccessibilityInjector().updateJavaScriptEnabled(enabled); + } + } + private void init() { OnTrimMemoryListener.init(mContext); mWebView.setWillNotDraw(false);