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

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 12567020: [android] Resize the android_webview if it's 0x0 initially. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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: android_webview/java/src/org/chromium/android_webview/AwContents.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
index 24116574210740c60d59b72c3ff00e95e523318d..c600972043e9d7781ea33ae4f5bf39b4524e6f98 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -28,6 +28,8 @@ import android.view.inputmethod.InputConnection;
import android.webkit.GeolocationPermissions;
import android.webkit.ValueCallback;
+import com.google.common.annotations.VisibleForTesting;
+
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils;
@@ -92,23 +94,13 @@ public class AwContents {
void setMeasuredDimension(int measuredWidth, int measuredHeight);
}
- /**
- * Listener for renderer state change notifications coming through ContentViewCore.
- */
- private class AwContentStateChangeListener
- implements ContentViewCore.ContentSizeChangeListener {
- @Override
- public void onContentSizeChanged(int contentWidthPix, int contentHeightPix) {
- mLayoutSizer.onContentSizeChanged(contentWidthPix, contentHeightPix);
- }
- }
-
private int mNativeAwContents;
private AwBrowserContext mBrowserContext;
private ViewGroup mContainerView;
private ContentViewCore mContentViewCore;
private AwContentsClient mContentsClient;
private AwContentsClientBridge mContentsClientBridge;
+ private AwWebContentsDelegate mWebContentsDelegate;
private AwContentsIoThreadClient mIoThreadClient;
private InterceptNavigationDelegateImpl mInterceptNavigationDelegate;
private InternalAccessDelegate mInternalAccessAdapter;
@@ -137,6 +129,7 @@ public class AwContents {
private CleanupReference mCleanupReference;
+ //--------------------------------------------------------------------------------------------
private class IoThreadClientImpl implements AwContentsIoThreadClient {
// All methods are called on the IO thread.
@@ -198,6 +191,7 @@ public class AwContents {
}
}
+ //--------------------------------------------------------------------------------------------
private class InterceptNavigationDelegateImpl implements InterceptNavigationDelegate {
private String mLastLoadUrlAddress;
@@ -242,6 +236,7 @@ public class AwContents {
}
}
+ //--------------------------------------------------------------------------------------------
private class AwLayoutSizerDelegate implements AwLayoutSizer.Delegate {
@Override
public void requestLayout() {
@@ -254,6 +249,25 @@ public class AwContents {
}
}
+ //--------------------------------------------------------------------------------------------
+ private class AwPageScaleChangeListener
+ implements ContentViewCore.PageScaleChangeListener {
+ @Override
+ public void onScaleChanged(float oldScale, float newScale) {
+ mContentsClient.onScaleChanged(oldScale, newScale);
+ mLayoutSizer.onPageScaleChanged(newScale);
joth 2013/03/26 22:12:49 my gut instinct is these two calls should be in th
mkosiba (inactive) 2013/03/27 16:46:41 Good find!
+ }
+ }
+
+ //--------------------------------------------------------------------------------------------
+ private class PreferredSizeChangedListener implements
+ AwWebContentsDelegateAdapter.PreferredSizeChangedListener {
+ @Override
+ public void updatePreferredSize(int widthCss, int heightCss) {
+ mLayoutSizer.onContentSizeChanged(widthCss, heightCss);
joth 2013/03/26 22:12:49 would it be evil for LayoutSize to just implement
mkosiba (inactive) 2013/03/27 16:46:41 not terribly, no. The only reason I wanted to keep
+ }
+ }
+
/**
* @param browserContext the browsing context to associate this view contents with.
* @param containerView the view-hierarchy item this object will be bound to.
@@ -272,8 +286,9 @@ public class AwContents {
mContentViewCore = new ContentViewCore(containerView.getContext(),
ContentViewCore.PERSONALITY_VIEW);
mContentsClientBridge = new AwContentsClientBridge(contentsClient);
- mNativeAwContents = nativeInit(contentsClient.getWebContentsDelegate(),
- mContentsClientBridge);
+ mWebContentsDelegate = new AwWebContentsDelegateAdapter(contentsClient,
+ new PreferredSizeChangedListener());
+ mNativeAwContents = nativeInit(mWebContentsDelegate, mContentsClientBridge);
mContentsClient = contentsClient;
mCleanupReference = new CleanupReference(this, new DestroyRunnable(mNativeAwContents));
@@ -283,8 +298,7 @@ public class AwContents {
new AwNativeWindow(mContainerView.getContext()),
isAccessFromFileURLsGrantedByDefault);
mContentViewCore.setContentViewClient(mContentsClient);
- mLayoutSizer = new AwLayoutSizer(new AwLayoutSizerDelegate());
- mContentViewCore.setContentSizeChangeListener(new AwContentStateChangeListener());
+ mContentViewCore.setPageScaleChangeListener(new AwPageScaleChangeListener());
mContentsClient.installWebContentsObserver(mContentViewCore);
mSettings = new AwSettings(mContentViewCore.getContext(), nativeWebContents);
@@ -299,11 +313,13 @@ public class AwContents {
mContentsClient.setDIPScale(mDIPScale);
mSettings.setDIPScale(mDIPScale);
+ mLayoutSizer = new AwLayoutSizer(new AwLayoutSizerDelegate(), mDIPScale);
+
ContentVideoView.registerContentVideoViewContextDelegate(
new AwContentVideoViewDelegate(contentsClient, containerView.getContext()));
}
- // TODO(mkosiba): Remove this once we move the embedding layer to use methods on AwContents.
+ @VisibleForTesting
public ContentViewCore getContentViewCore() {
return mContentViewCore;
}
@@ -330,7 +346,7 @@ public class AwContents {
// We explicitly do not null out the mContentViewCore reference here
// because ContentViewCore already has code to deal with the case
// methods are called on it after it's been destroyed, and other
- // code relies on AwContents.getContentViewCore to return non-null.
+ // code relies on AwContents.mContentViewCore to be non-null.
mCleanupReference.cleanupNow();
mNativeAwContents = 0;
}
@@ -422,7 +438,7 @@ public class AwContents {
*/
public int getMostRecentProgress() {
// WebContentsDelegateAndroid conveniently caches the most recent notified value for us.
- return mContentsClient.getWebContentsDelegate().getMostRecentProgress();
+ return mWebContentsDelegate.getMostRecentProgress();
}
public Bitmap getFavicon() {

Powered by Google App Engine
This is Rietveld 408576698