1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.android_webview.test;
7 import android.test.InstrumentationTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
9 import android.view.View;
10 import android.view.View.MeasureSpec;
12 import org.chromium.android_webview.AwLayoutSizer;
13 import org.chromium.base.test.util.Feature;
16 * Unittests for the AwLayoutSizer class.
18 public class AwLayoutSizerTest extends InstrumentationTestCase {
19 static class LayoutSizerDelegate implements AwLayoutSizer.Delegate {
20 public int requestLayoutCallCount;
21 public boolean setMeasuredDimensionCalled;
22 public int measuredWidth;
23 public int measuredHeight;
24 public boolean forceZeroHeight;
25 public boolean heightWrapContent;
28 public void requestLayout() {
29 requestLayoutCallCount++;
33 public void setMeasuredDimension(int measuredWidth, int measuredHeight) {
34 setMeasuredDimensionCalled = true;
35 this.measuredWidth = measuredWidth;
36 this.measuredHeight = measuredHeight;
40 public void setForceZeroLayoutHeight(boolean forceZeroHeight) {
41 this.forceZeroHeight = forceZeroHeight;
45 public boolean isLayoutParamsHeightWrapContent() {
46 return heightWrapContent;
50 private static final int FIRST_CONTENT_WIDTH = 101;
51 private static final int FIRST_CONTENT_HEIGHT = 389;
52 private static final int SECOND_CONTENT_WIDTH = 103;
53 private static final int SECOND_CONTENT_HEIGHT = 397;
55 private static final int SMALLER_CONTENT_SIZE = 25;
56 private static final int AT_MOST_MEASURE_SIZE = 50;
57 private static final int TOO_LARGE_CONTENT_SIZE = 100;
59 private static final float INITIAL_PAGE_SCALE = 1.0f;
60 private static final double DIP_SCALE = 1.0;
63 @Feature({"AndroidWebView"})
64 public void testCanQueryContentSize() {
65 AwLayoutSizer layoutSizer = new AwLayoutSizer();
66 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
67 layoutSizer.setDelegate(delegate);
68 layoutSizer.setDIPScale(DIP_SCALE);
70 final int contentWidth = 101;
71 final int contentHeight = 389;
73 layoutSizer.onContentSizeChanged(contentWidth, contentHeight);
74 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
75 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
76 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
78 assertTrue(delegate.setMeasuredDimensionCalled);
79 assertEquals(contentWidth, delegate.measuredWidth & View.MEASURED_SIZE_MASK);
80 assertEquals(contentHeight, delegate.measuredHeight & View.MEASURED_SIZE_MASK);
84 @Feature({"AndroidWebView"})
85 public void testContentSizeChangeRequestsLayout() {
86 AwLayoutSizer layoutSizer = new AwLayoutSizer();
87 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
88 layoutSizer.setDelegate(delegate);
89 layoutSizer.setDIPScale(DIP_SCALE);
91 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
92 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
93 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
94 layoutSizer.onContentSizeChanged(SECOND_CONTENT_WIDTH, SECOND_CONTENT_WIDTH);
96 assertEquals(requestLayoutCallCount + 1, delegate.requestLayoutCallCount);
100 @Feature({"AndroidWebView"})
101 public void testContentSizeChangeDoesNotRequestLayoutIfMeasuredExcatly() {
102 AwLayoutSizer layoutSizer = new AwLayoutSizer();
103 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
104 layoutSizer.setDelegate(delegate);
105 layoutSizer.setDIPScale(DIP_SCALE);
107 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
108 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
109 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(50, MeasureSpec.EXACTLY),
110 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
111 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
112 layoutSizer.onContentSizeChanged(SECOND_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
114 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
118 @Feature({"AndroidWebView"})
119 public void testDuplicateContentSizeChangeDoesNotRequestLayout() {
120 AwLayoutSizer layoutSizer = new AwLayoutSizer();
121 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
122 layoutSizer.setDelegate(delegate);
123 layoutSizer.setDIPScale(DIP_SCALE);
125 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
126 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
127 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(50, MeasureSpec.EXACTLY),
128 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
129 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
130 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
132 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
136 @Feature({"AndroidWebView"})
137 public void testContentHeightGrowsTillAtMostSize() {
138 AwLayoutSizer layoutSizer = new AwLayoutSizer();
139 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
140 layoutSizer.setDelegate(delegate);
141 layoutSizer.setDIPScale(DIP_SCALE);
143 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
144 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, SMALLER_CONTENT_SIZE);
145 layoutSizer.onMeasure(
146 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
147 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
148 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth);
149 assertEquals(SMALLER_CONTENT_SIZE, delegate.measuredHeight);
151 layoutSizer.onContentSizeChanged(TOO_LARGE_CONTENT_SIZE, TOO_LARGE_CONTENT_SIZE);
152 layoutSizer.onMeasure(
153 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
154 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
155 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth & View.MEASURED_SIZE_MASK);
156 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredHeight & View.MEASURED_SIZE_MASK);
160 @Feature({"AndroidWebView"})
161 public void testContentHeightGrowthRequestsLayoutInAtMostSizeMode() {
162 AwLayoutSizer layoutSizer = new AwLayoutSizer();
163 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
164 layoutSizer.setDelegate(delegate);
165 layoutSizer.setDIPScale(DIP_SCALE);
167 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
168 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, SMALLER_CONTENT_SIZE);
169 layoutSizer.onMeasure(
170 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
171 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
172 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth);
173 assertEquals(SMALLER_CONTENT_SIZE, delegate.measuredHeight);
175 int requestLayoutCallCount = delegate.requestLayoutCallCount;
176 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, AT_MOST_MEASURE_SIZE - 1);
177 assertEquals(requestLayoutCallCount + 1, delegate.requestLayoutCallCount);
179 // Test that crossing the AT_MOST_MEASURE_SIZE threshold results in a requestLayout.
180 requestLayoutCallCount = delegate.requestLayoutCallCount;
181 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, AT_MOST_MEASURE_SIZE + 1);
182 assertEquals(requestLayoutCallCount + 1, delegate.requestLayoutCallCount);
186 @Feature({"AndroidWebView"})
187 public void testContentHeightShrinksAfterAtMostSize() {
188 AwLayoutSizer layoutSizer = new AwLayoutSizer();
189 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
190 layoutSizer.setDelegate(delegate);
191 layoutSizer.setDIPScale(DIP_SCALE);
193 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
194 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, SMALLER_CONTENT_SIZE);
195 layoutSizer.onMeasure(
196 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
197 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
198 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth);
199 assertEquals(SMALLER_CONTENT_SIZE, delegate.measuredHeight);
201 layoutSizer.onContentSizeChanged(TOO_LARGE_CONTENT_SIZE, TOO_LARGE_CONTENT_SIZE);
202 layoutSizer.onMeasure(
203 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
204 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
205 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth & View.MEASURED_SIZE_MASK);
206 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredHeight & View.MEASURED_SIZE_MASK);
208 int requestLayoutCallCount = delegate.requestLayoutCallCount;
209 layoutSizer.onContentSizeChanged(TOO_LARGE_CONTENT_SIZE, TOO_LARGE_CONTENT_SIZE + 1);
210 layoutSizer.onContentSizeChanged(TOO_LARGE_CONTENT_SIZE, TOO_LARGE_CONTENT_SIZE);
211 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
213 requestLayoutCallCount = delegate.requestLayoutCallCount;
214 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, SMALLER_CONTENT_SIZE);
215 assertEquals(requestLayoutCallCount + 1, delegate.requestLayoutCallCount);
216 layoutSizer.onMeasure(
217 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
218 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
219 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth);
220 assertEquals(SMALLER_CONTENT_SIZE, delegate.measuredHeight);
224 @Feature({"AndroidWebView"})
225 public void testScaleChangeRequestsLayout() {
226 AwLayoutSizer layoutSizer = new AwLayoutSizer();
227 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
228 layoutSizer.setDelegate(delegate);
229 layoutSizer.setDIPScale(DIP_SCALE);
231 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
232 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
233 layoutSizer.onMeasure(
234 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.EXACTLY),
235 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
236 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
237 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE + 0.5f);
239 assertEquals(requestLayoutCallCount + 1, delegate.requestLayoutCallCount);
243 @Feature({"AndroidWebView"})
244 public void testDuplicateScaleChangeDoesNotRequestLayout() {
245 AwLayoutSizer layoutSizer = new AwLayoutSizer();
246 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
247 layoutSizer.setDelegate(delegate);
248 layoutSizer.setDIPScale(DIP_SCALE);
250 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
251 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
252 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(50, MeasureSpec.EXACTLY),
253 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
254 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
255 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
257 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
261 @Feature({"AndroidWebView"})
262 public void testScaleChangeGrowsTillAtMostSize() {
263 AwLayoutSizer layoutSizer = new AwLayoutSizer();
264 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
265 layoutSizer.setDelegate(delegate);
266 layoutSizer.setDIPScale(DIP_SCALE);
268 final float tooLargePageScale = 3.00f;
270 layoutSizer.onContentSizeChanged(SMALLER_CONTENT_SIZE, SMALLER_CONTENT_SIZE);
271 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
272 layoutSizer.onMeasure(
273 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
274 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
275 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth);
276 assertEquals(SMALLER_CONTENT_SIZE, delegate.measuredHeight);
278 layoutSizer.onPageScaleChanged(tooLargePageScale);
279 layoutSizer.onMeasure(
280 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
281 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
282 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredWidth & View.MEASURED_SIZE_MASK);
283 assertEquals(AT_MOST_MEASURE_SIZE, delegate.measuredHeight & View.MEASURED_SIZE_MASK);
287 @Feature({"AndroidWebView"})
288 public void testFreezeAndUnfreezeDoesntCauseLayout() {
289 AwLayoutSizer layoutSizer = new AwLayoutSizer();
290 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
291 layoutSizer.setDelegate(delegate);
292 layoutSizer.setDIPScale(DIP_SCALE);
294 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
295 layoutSizer.freezeLayoutRequests();
296 layoutSizer.unfreezeLayoutRequests();
297 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
301 @Feature({"AndroidWebView"})
302 public void testFreezeInhibitsLayoutRequest() {
303 AwLayoutSizer layoutSizer = new AwLayoutSizer();
304 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
305 layoutSizer.setDelegate(delegate);
306 layoutSizer.setDIPScale(DIP_SCALE);
308 layoutSizer.freezeLayoutRequests();
309 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
310 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
311 layoutSizer.onContentSizeChanged(SECOND_CONTENT_WIDTH, SECOND_CONTENT_WIDTH);
312 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
316 @Feature({"AndroidWebView"})
317 public void testUnfreezeIssuesLayoutRequest() {
318 AwLayoutSizer layoutSizer = new AwLayoutSizer();
319 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
320 layoutSizer.setDelegate(delegate);
321 layoutSizer.setDIPScale(DIP_SCALE);
323 layoutSizer.freezeLayoutRequests();
324 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
325 final int requestLayoutCallCount = delegate.requestLayoutCallCount;
326 layoutSizer.onContentSizeChanged(SECOND_CONTENT_WIDTH, SECOND_CONTENT_WIDTH);
327 assertEquals(requestLayoutCallCount, delegate.requestLayoutCallCount);
328 layoutSizer.unfreezeLayoutRequests();
329 assertEquals(requestLayoutCallCount + 1, delegate.requestLayoutCallCount);
333 @Feature({"AndroidWebView"})
334 public void testViewportWithExactMeasureSpec() {
335 AwLayoutSizer layoutSizer = new AwLayoutSizer();
336 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
337 layoutSizer.setDelegate(delegate);
339 final float dipScale = 2.0f;
340 final int measuredWidth = 800;
341 final int measuredHeight = 400;
343 layoutSizer.setDIPScale(dipScale);
345 layoutSizer.onContentSizeChanged(FIRST_CONTENT_WIDTH, FIRST_CONTENT_HEIGHT);
346 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
347 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.EXACTLY),
348 MeasureSpec.makeMeasureSpec(measuredHeight, MeasureSpec.EXACTLY));
349 assertEquals(measuredWidth, delegate.measuredWidth & View.MEASURED_SIZE_MASK);
350 assertEquals(measuredHeight, delegate.measuredHeight & View.MEASURED_SIZE_MASK);
354 @Feature({"AndroidWebView"})
355 public void testViewportDipSizeOverrideRounding() {
356 AwLayoutSizer layoutSizer = new AwLayoutSizer();
357 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
358 layoutSizer.setDelegate(delegate);
360 final float dipScale = 0.666f;
362 int contentWidth = 9;
363 int contentHeight = 6;
365 layoutSizer.setDIPScale(dipScale);
366 layoutSizer.onContentSizeChanged(contentWidth, contentHeight);
367 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
368 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
369 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
371 assertTrue(delegate.setMeasuredDimensionCalled);
372 int measuredWidth = delegate.measuredWidth & View.MEASURED_SIZE_MASK;
373 int measuredHeight = delegate.measuredHeight & View.MEASURED_SIZE_MASK;
374 assertFalse((int) Math.ceil(measuredWidth / dipScale) == contentWidth);
375 assertFalse((int) Math.ceil(measuredHeight / dipScale) == contentHeight);
377 layoutSizer.onSizeChanged(measuredWidth, measuredHeight, 0, 0);
381 @Feature({"AndroidWebView"})
382 public void testViewportWithAtMostMeasureSpec() {
383 AwLayoutSizer layoutSizer = new AwLayoutSizer();
384 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
385 delegate.heightWrapContent = true;
386 layoutSizer.setDelegate(delegate);
388 final float dipScale = 1.5f;
389 final int pageScale = 2;
390 final int dipAndPageScale = (int) (dipScale * pageScale);
392 int contentWidth = 800;
393 int contentHeight = 400;
394 int contentWidthPix = contentWidth * dipAndPageScale;
395 int contentHeightPix = contentHeight * dipAndPageScale;
397 assertFalse(delegate.forceZeroHeight);
399 layoutSizer.setDIPScale(dipScale);
400 layoutSizer.onContentSizeChanged(contentWidth, contentHeight);
401 layoutSizer.onPageScaleChanged(pageScale);
402 layoutSizer.onMeasure(MeasureSpec.makeMeasureSpec(contentWidthPix, MeasureSpec.EXACTLY),
403 MeasureSpec.makeMeasureSpec(contentHeightPix * 2, MeasureSpec.AT_MOST));
405 assertTrue(delegate.setMeasuredDimensionCalled);
406 assertFalse(delegate.forceZeroHeight);
408 int measuredWidth = delegate.measuredWidth & View.MEASURED_SIZE_MASK;
409 int measuredHeight = delegate.measuredHeight & View.MEASURED_SIZE_MASK;
410 layoutSizer.onSizeChanged(measuredWidth, measuredHeight, 0, 0);
412 assertTrue(delegate.forceZeroHeight);
416 @Feature({"AndroidWebView"})
417 public void testFixedLayoutSizeDependsOnHeightWrapContent() {
418 AwLayoutSizer layoutSizer = new AwLayoutSizer();
419 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
420 delegate.heightWrapContent = false;
421 layoutSizer.setDelegate(delegate);
422 layoutSizer.setDIPScale(DIP_SCALE);
424 layoutSizer.onContentSizeChanged(TOO_LARGE_CONTENT_SIZE, TOO_LARGE_CONTENT_SIZE);
425 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
426 layoutSizer.onMeasure(
427 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
428 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
429 layoutSizer.onSizeChanged(AT_MOST_MEASURE_SIZE, AT_MOST_MEASURE_SIZE, 0, 0);
431 assertFalse(delegate.forceZeroHeight);
433 delegate.heightWrapContent = true;
434 layoutSizer.onSizeChanged(AT_MOST_MEASURE_SIZE, AT_MOST_MEASURE_SIZE, 0, 0);
436 assertTrue(delegate.forceZeroHeight);
440 @Feature({"AndroidWebView"})
441 public void testFixedLayoutSizeDoesNotDependOnMeasureSpec() {
442 AwLayoutSizer layoutSizer = new AwLayoutSizer();
443 LayoutSizerDelegate delegate = new LayoutSizerDelegate();
444 delegate.heightWrapContent = false;
445 layoutSizer.setDelegate(delegate);
446 layoutSizer.setDIPScale(DIP_SCALE);
448 layoutSizer.onContentSizeChanged(TOO_LARGE_CONTENT_SIZE, TOO_LARGE_CONTENT_SIZE);
449 layoutSizer.onPageScaleChanged(INITIAL_PAGE_SCALE);
450 layoutSizer.onMeasure(
451 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST),
452 MeasureSpec.makeMeasureSpec(AT_MOST_MEASURE_SIZE, MeasureSpec.AT_MOST));
453 layoutSizer.onSizeChanged(AT_MOST_MEASURE_SIZE, AT_MOST_MEASURE_SIZE, 0, 0);
455 assertFalse(delegate.forceZeroHeight);
457 layoutSizer.onMeasure(
458 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
459 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
460 layoutSizer.onSizeChanged(AT_MOST_MEASURE_SIZE, AT_MOST_MEASURE_SIZE, 0, 0);
461 assertFalse(delegate.forceZeroHeight);