Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
| index ef454af67f3c07c6ca6e4338cc7fda6e9600f334..be0c591ae48f78552666d1a34d009e9839254f49 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java |
| @@ -48,6 +48,7 @@ import org.chromium.chrome.browser.tabmodel.TabCreatorManager; |
| import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
| import org.chromium.chrome.browser.widget.ControlContainer; |
| import org.chromium.content.browser.ContentReadbackHandler; |
| +import org.chromium.content.browser.ContentViewClient; |
| import org.chromium.content.browser.ContentViewCore; |
| import org.chromium.content.browser.SPenSupport; |
| import org.chromium.ui.UiUtils; |
| @@ -432,7 +433,7 @@ public class CompositorViewHolder extends FrameLayout |
| mLayoutManager.getActiveLayout().getAllContentViewCores(sCachedCVCList); |
| for (int i = 0; i < sCachedCVCList.size(); i++) { |
| - sCachedCVCList.get(i).onPhysicalBackingSizeChanged(width, height); |
| + adjustPhysicalBackingSize(sCachedCVCList.get(i), width, height); |
| } |
| sCachedCVCList.clear(); |
| } |
| @@ -932,12 +933,42 @@ public class CompositorViewHolder extends FrameLayout |
| contentViewCore.setCurrentMotionEventOffsets(0.f, 0.f); |
| contentViewCore.setTopControlsHeight( |
| getTopControlsHeightPixels(), contentViewCore.doTopControlsShrinkBlinkSize()); |
| - contentViewCore.onPhysicalBackingSizeChanged( |
| + |
| + adjustPhysicalBackingSize(contentViewCore, |
| mCompositorView.getWidth(), mCompositorView.getHeight()); |
| + |
| contentViewCore.onOverdrawBottomHeightChanged(mCompositorView.getOverdrawBottomHeight()); |
| } |
| /** |
| + * Adjusts the physical backing size of a given ContentViewCore. This method will first check |
| + * if the ContentViewCore's client wants to override the size and, if so, it will use the |
| + * values provided by the {@link ContentViewClient#getDesiredWidthMeasureSpec()} and |
| + * {@link ContentViewClient#getDesiredHeightMeasureSpec()} methods. If no value is provided |
| + * in one of these methods, the values from the |width| and |height| arguments will be |
| + * used instead. |
| + * |
| + * @param contentViewCore The {@link ContentViewCore} to resize. |
| + * @param width The default width. |
| + * @param height The default height. |
| + */ |
| + private void adjustPhysicalBackingSize(ContentViewCore contentViewCore, int width, int height) { |
| + ContentViewClient client = contentViewCore.getContentViewClient(); |
| + |
| + int desiredWidthMeasureSpec = client.getDesiredWidthMeasureSpec(); |
| + if (MeasureSpec.getMode(desiredWidthMeasureSpec) != MeasureSpec.UNSPECIFIED) { |
| + width = MeasureSpec.getSize(desiredWidthMeasureSpec); |
| + } |
| + |
| + int desiredHeightMeasureSpec = client.getDesiredHeightMeasureSpec(); |
| + if (MeasureSpec.getMode(desiredHeightMeasureSpec) != MeasureSpec.UNSPECIFIED) { |
| + height = MeasureSpec.getSize(desiredHeightMeasureSpec); |
| + } |
| + |
| + contentViewCore.onPhysicalBackingSizeChanged(width, height); |
|
donnd
2015/07/14 22:24:12
Should this be called even when the width and heig
David Trainor- moved to gerrit
2015/07/14 23:12:00
I think internally it checks the values and ignore
pedro (no code reviews)
2015/07/15 00:19:16
Acknowledged.
pedro (no code reviews)
2015/07/15 00:19:16
I tried to keep the previous behavior, so whenever
|
| + } |
| + |
| + /** |
| * Resize {@code view} to match the size of this {@link FrameLayout}. This will only happen if |
| * {@code view} is not {@code null} and if {@link View#getWindowToken()} returns {@code null} |
| * (the {@link View} is not part of the view hierarchy). |
| @@ -954,7 +985,7 @@ public class CompositorViewHolder extends FrameLayout |
| int height = getHeight(); |
| view.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), |
| MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); |
| - view.layout(0, 0, width, height); |
| + view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); |
| return true; |
| } |