| Index: android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
|
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
|
| index 8f9f0f9b929f01188f51e1293b6ceb04e356b6e1..70cd68cf60c0d321ed3ff0b35cad242921930436 100644
|
| --- a/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContentsClient.java
|
| @@ -5,6 +5,7 @@
|
| package org.chromium.android_webview;
|
|
|
| import android.content.pm.ActivityInfo;
|
| +import android.content.Context;
|
| import android.graphics.Bitmap;
|
| import android.graphics.Picture;
|
| import android.graphics.Rect;
|
| @@ -36,7 +37,7 @@ import org.chromium.net.NetError;
|
| * new abstract methods that the our own client must implement.
|
| * i.e.: all methods in this class should either be final, or abstract.
|
| */
|
| -public abstract class AwContentsClient extends ContentViewClient {
|
| +public abstract class AwContentsClient {
|
|
|
| private static final String TAG = "AwContentsClient";
|
| private final AwContentsClientCallbackHelper mCallbackHelper =
|
| @@ -44,6 +45,8 @@ public abstract class AwContentsClient extends ContentViewClient {
|
|
|
| private AwWebContentsObserver mWebContentsObserver;
|
|
|
| + private AwContentViewClient mContentViewClient = new AwContentViewClient();
|
| +
|
| private double mDIPScale;
|
|
|
| class AwWebContentsObserver extends WebContentsObserverAndroid {
|
| @@ -62,7 +65,7 @@ public abstract class AwContentsClient extends ContentViewClient {
|
| if (errorCode == NetError.ERR_ABORTED) {
|
| // This error code is generated for the following reasons:
|
| // - WebView.stopLoading is called,
|
| - // - the navigation is intercepted by the embedder via shouldIgnoreNavigation.
|
| + // - the navigation is intercepted by the embedder via shouldOverrideNavigation.
|
| //
|
| // The Android WebView does not notify the embedder of these situations using this
|
| // error code with the WebViewClient.onReceivedError callback.
|
| @@ -83,14 +86,46 @@ public abstract class AwContentsClient extends ContentViewClient {
|
|
|
| }
|
|
|
| - void installWebContentsObserver(ContentViewCore contentViewCore) {
|
| + private class AwContentViewClient extends ContentViewClient {
|
| +
|
| + @Override
|
| + public void onScaleChanged(float oldScale, float newScale) {
|
| + AwContentsClient.this.onScaleChangedScaled((float)(oldScale * mDIPScale),
|
| + (float)(newScale * mDIPScale));
|
| + }
|
| +
|
| + @Override
|
| + public void onStartContentIntent(Context context, String contentUrl) {
|
| + // Callback when detecting a click on a content link.
|
| + AwContentsClient.this.shouldOverrideUrlLoading(contentUrl);
|
| + }
|
| +
|
| + @Override
|
| + public void onTabCrash() {
|
| + // This is not possible so long as the webview is run single process!
|
| + throw new RuntimeException("Renderer crash reported.");
|
| + }
|
| +
|
| + @Override
|
| + public void onUpdateTitle(String title) {
|
| + AwContentsClient.this.onReceivedTitle(title);
|
| + }
|
| +
|
| + @Override
|
| + public boolean shouldOverrideKeyEvent(KeyEvent event) {
|
| + return AwContentsClient.this.shouldOverrideKeyEvent(event);
|
| + }
|
| +
|
| + }
|
| +
|
| + final void installWebContentsObserver(ContentViewCore contentViewCore) {
|
| if (mWebContentsObserver != null) {
|
| mWebContentsObserver.detachFromWebContents();
|
| }
|
| mWebContentsObserver = new AwWebContentsObserver(contentViewCore);
|
| }
|
|
|
| - void setDIPScale(double dipScale) {
|
| + final void setDIPScale(double dipScale) {
|
| mDIPScale = dipScale;
|
| }
|
|
|
| @@ -98,6 +133,10 @@ public abstract class AwContentsClient extends ContentViewClient {
|
| return mCallbackHelper;
|
| }
|
|
|
| + final ContentViewClient getContentViewClient() {
|
| + return mContentViewClient;
|
| + }
|
| +
|
| //--------------------------------------------------------------------------------------------
|
| // WebView specific methods that map directly to WebViewClient / WebChromeClient
|
| //--------------------------------------------------------------------------------------------
|
| @@ -110,9 +149,11 @@ public abstract class AwContentsClient extends ContentViewClient {
|
|
|
| public abstract InterceptedRequestData shouldInterceptRequest(String url);
|
|
|
| - public abstract void onLoadResource(String url);
|
| + public abstract boolean shouldOverrideKeyEvent(KeyEvent event);
|
|
|
| - public abstract boolean shouldIgnoreNavigation(String url);
|
| + public abstract boolean shouldOverrideUrlLoading(String url);
|
| +
|
| + public abstract void onLoadResource(String url);
|
|
|
| public abstract void onUnhandledKeyEvent(KeyEvent event);
|
|
|
| @@ -135,10 +176,6 @@ public abstract class AwContentsClient extends ContentViewClient {
|
|
|
| public abstract void onGeolocationPermissionsHidePrompt();
|
|
|
| - public final void onScaleChanged(float oldScale, float newScale) {
|
| - onScaleChangedScaled((float)(oldScale * mDIPScale), (float)(newScale * mDIPScale));
|
| - }
|
| -
|
| public abstract void onScaleChangedScaled(float oldScale, float newScale);
|
|
|
| protected abstract void handleJsAlert(String url, String message, JsResultReceiver receiver);
|
| @@ -159,6 +196,8 @@ public abstract class AwContentsClient extends ContentViewClient {
|
|
|
| public abstract void onReceivedIcon(Bitmap bitmap);
|
|
|
| + public abstract void onReceivedTitle(String title);
|
| +
|
| protected abstract void onRequestFocus();
|
|
|
| protected abstract View getVideoLoadingProgressView();
|
| @@ -198,21 +237,4 @@ public abstract class AwContentsClient extends ContentViewClient {
|
| */
|
| public abstract void onNewPicture(Picture picture);
|
|
|
| - //--------------------------------------------------------------------------------------------
|
| - // Stuff that we ignore since it only makes sense for Chrome browser
|
| - //--------------------------------------------------------------------------------------------
|
| - //
|
| -
|
| - @Override
|
| - final public boolean shouldOverrideScroll(float dx, float dy, float scrollX, float scrollY) {
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - final public void onContextualActionBarShown() {
|
| - }
|
| -
|
| - @Override
|
| - final public void onContextualActionBarHidden() {
|
| - }
|
| }
|
|
|