diff options
author | jdduke <jdduke@chromium.org> | 2015-02-20 11:44:50 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-20 19:45:28 +0000 |
commit | f54cd4931b24a41ca835985db9c9c9db439fb5c5 (patch) | |
tree | 440bbd71c1ac41d659f5a7fae3d4db7b629c2fdf /content | |
parent | 2792ed71482cd849ebf312fb02c93efec01f62f5 (diff) | |
download | chromium_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')
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(); } |