summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorjdduke <jdduke@chromium.org>2015-02-20 11:44:50 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-20 19:45:28 +0000
commitf54cd4931b24a41ca835985db9c9c9db439fb5c5 (patch)
tree440bbd71c1ac41d659f5a7fae3d4db7b629c2fdf /content
parent2792ed71482cd849ebf312fb02c93efec01f62f5 (diff)
downloadchromium_src-f54cd4931b24a41ca835985db9c9c9db439fb5c5.zip
chromium_src-f54cd4931b24a41ca835985db9c9c9db439fb5c5.tar.gz
chromium_src-f54cd4931b24a41ca835985db9c9c9db439fb5c5.tar.bz2
[Android] Decouple AccessibilityInjector from WebContentsObserver
Java-based WebContentsObservers can be relatively expensive, incurring JNI overhead, including necessary object conversions, for each callback. As AccessibilityInjector only relies on 2 observer methods, instead use ContentViewCore's observer to signal the necessary events. BUG=457748,440134 Review URL: https://codereview.chromium.org/941353002 Cr-Commit-Position: refs/heads/master@{#317376}
Diffstat (limited to 'content')
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java10
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java14
2 files changed, 17 insertions, 7 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index 1616b71..f051aa4 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -748,6 +748,16 @@ public class ContentViewCore
mWebContentsObserver = new WebContentsObserver(mWebContents) {
@Override
+ public void didStartLoading(String url) {
+ mAccessibilityInjector.onPageLoadStarted();
+ }
+
+ @Override
+ public void didStopLoading(String url) {
+ mAccessibilityInjector.onPageLoadStopped();
+ }
+
+ @Override
public void didFailLoad(boolean isProvisionalLoad, boolean isMainFrame, int errorCode,
String description, String failingUrl) {
// Navigation that fails the provisional load will have the strong binding removed
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java
index 25b722d..d07c493 100644
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java
@@ -20,7 +20,6 @@ import org.apache.http.client.utils.URLEncodedUtils;
import org.chromium.base.CommandLine;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.JavascriptInterface;
-import org.chromium.content.browser.WebContentsObserver;
import org.chromium.content.common.ContentSwitches;
import org.json.JSONException;
import org.json.JSONObject;
@@ -34,7 +33,7 @@ import java.util.List;
/**
* Responsible for accessibility injection and management of a {@link ContentViewCore}.
*/
-public class AccessibilityInjector extends WebContentsObserver {
+public class AccessibilityInjector {
// The ContentView this injector is responsible for managing.
protected ContentViewCore mContentViewCore;
@@ -103,7 +102,6 @@ public class AccessibilityInjector extends WebContentsObserver {
* @param view The ContentViewCore that this AccessibilityInjector manages.
*/
protected AccessibilityInjector(ContentViewCore view) {
- super(view.getWebContents());
mContentViewCore = view;
mAccessibilityScreenReaderUrl = CommandLine.getInstance().getSwitchValue(
@@ -208,13 +206,15 @@ public class AccessibilityInjector extends WebContentsObserver {
* accessibility script as not being injected. This way we can properly ignore incoming
* accessibility gesture events.
*/
- @Override
- public void didStartLoading(String url) {
+ public void onPageLoadStarted() {
mScriptInjected = false;
}
- @Override
- public void didStopLoading(String url) {
+ /**
+ * Notifies this handler that a page load has stopped, which means we can now inject the
+ * accessibility script.
+ */
+ public void onPageLoadStopped() {
injectAccessibilityScriptIntoPage();
}