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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java

Issue 2760153002: Convert chrome compositor test's InstrumentationTestCases (Closed)
Patch Set: Address comments Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.compositor.layouts; 5 package org.chromium.chrome.browser.compositor.layouts;
6 6
7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE; 7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE;
8 8
9 import android.content.Context; 9 import android.content.Context;
10 import android.graphics.PointF; 10 import android.graphics.PointF;
11 import android.support.test.InstrumentationRegistry;
12 import android.support.test.annotation.UiThreadTest;
11 import android.support.test.filters.SmallTest; 13 import android.support.test.filters.SmallTest;
12 import android.test.InstrumentationTestCase; 14 import android.support.test.rule.UiThreadTestRule;
13 import android.util.Log; 15 import android.util.Log;
14 import android.view.MotionEvent; 16 import android.view.MotionEvent;
15 import android.view.MotionEvent.PointerCoords; 17 import android.view.MotionEvent.PointerCoords;
16 import android.view.MotionEvent.PointerProperties; 18 import android.view.MotionEvent.PointerProperties;
17 import android.widget.FrameLayout; 19 import android.widget.FrameLayout;
18 20
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Rule;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26
19 import org.chromium.base.ThreadUtils; 27 import org.chromium.base.ThreadUtils;
20 import org.chromium.base.library_loader.ProcessInitException; 28 import org.chromium.base.library_loader.ProcessInitException;
21 import org.chromium.base.test.util.Feature; 29 import org.chromium.base.test.util.Feature;
22 import org.chromium.base.test.util.Restriction; 30 import org.chromium.base.test.util.Restriction;
23 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; 31 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
24 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeEvent Filter.ScrollDirection; 32 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeEvent Filter.ScrollDirection;
25 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandl er; 33 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandl er;
26 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; 34 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
27 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout; 35 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout;
28 import org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack; 36 import org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack;
29 import org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab; 37 import org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab;
30 import org.chromium.chrome.browser.init.ChromeBrowserInitializer; 38 import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
31 import org.chromium.chrome.browser.tab.Tab; 39 import org.chromium.chrome.browser.tab.Tab;
32 import org.chromium.chrome.browser.tabmodel.TabModel; 40 import org.chromium.chrome.browser.tabmodel.TabModel;
33 import org.chromium.chrome.browser.tabmodel.TabModelSelector; 41 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
34 import org.chromium.chrome.browser.tabmodel.TabModelUtils; 42 import org.chromium.chrome.browser.tabmodel.TabModelUtils;
35 import org.chromium.chrome.browser.util.MathUtils; 43 import org.chromium.chrome.browser.util.MathUtils;
44 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
36 import org.chromium.chrome.test.util.ChromeRestriction; 45 import org.chromium.chrome.test.util.ChromeRestriction;
37 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel.MockTabModelD elegate; 46 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel.MockTabModelD elegate;
38 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModelSelector; 47 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModelSelector;
39 48
40 /** 49 /**
41 * Unit tests for {@link org.chromium.chrome.browser.compositor.layouts.LayoutMa nagerChrome} 50 * Unit tests for {@link org.chromium.chrome.browser.compositor.layouts.LayoutMa nagerChrome}
42 */ 51 */
43 public class LayoutManagerTest extends InstrumentationTestCase 52 @RunWith(ChromeJUnit4ClassRunner.class)
44 implements MockTabModelDelegate { 53 public class LayoutManagerTest implements MockTabModelDelegate {
45 private static final String TAG = "LayoutManagerTest"; 54 private static final String TAG = "LayoutManagerTest";
46 55
47 private long mLastDownTime = 0; 56 private long mLastDownTime = 0;
48 57
49 private TabModelSelector mTabModelSelector; 58 private TabModelSelector mTabModelSelector;
50 private LayoutManagerChrome mManager; 59 private LayoutManagerChrome mManager;
51 private LayoutManagerChromePhone mManagerPhone; 60 private LayoutManagerChromePhone mManagerPhone;
52 61
53 private final PointerProperties[] mProperties = new PointerProperties[2]; 62 private final PointerProperties[] mProperties = new PointerProperties[2];
54 private final PointerCoords[] mPointerCoords = new PointerCoords[2]; 63 private final PointerCoords[] mPointerCoords = new PointerCoords[2];
(...skipping 13 matching lines...) Expand all
68 mPointerCoords[0].y = 0; 77 mPointerCoords[0].y = 0;
69 mPointerCoords[0].pressure = 1; 78 mPointerCoords[0].pressure = 1;
70 mPointerCoords[0].size = 1; 79 mPointerCoords[0].size = 1;
71 mPointerCoords[1] = new PointerCoords(); 80 mPointerCoords[1] = new PointerCoords();
72 mPointerCoords[1].x = 0; 81 mPointerCoords[1].x = 0;
73 mPointerCoords[1].y = 0; 82 mPointerCoords[1].y = 0;
74 mPointerCoords[1].pressure = 1; 83 mPointerCoords[1].pressure = 1;
75 mPointerCoords[1].size = 1; 84 mPointerCoords[1].size = 1;
76 } 85 }
77 86
87 @Rule
88 public UiThreadTestRule mRule = new UiThreadTestRule();
89
78 /** 90 /**
79 * Simulates time so the animation updates. 91 * Simulates time so the animation updates.
80 * @param layoutManager The {@link LayoutManagerChrome} to update. 92 * @param layoutManager The {@link LayoutManagerChrome} to update.
81 * @param maxFrameCount The maximum number of frames to simulate before the motion ends. 93 * @param maxFrameCount The maximum number of frames to simulate before the motion ends.
82 * @return Whether the maximum number of frames was enough for the 94 * @return Whether the maximum number of frames was enough for the
83 * {@link LayoutManagerChrome} to reach the end of the animations. 95 * {@link LayoutManagerChrome} to reach the end of the animations.
84 */ 96 */
85 private static boolean simulateTime(LayoutManagerChrome layoutManager, int m axFrameCount) { 97 private static boolean simulateTime(LayoutManagerChrome layoutManager, int m axFrameCount) {
86 // Simulating time 98 // Simulating time
87 int frame = 0; 99 int frame = 0;
88 long time = 0; 100 long time = 0;
89 final long dt = 16; 101 final long dt = 16;
90 while (layoutManager.onUpdate(time, dt) && frame < maxFrameCount) { 102 while (layoutManager.onUpdate(time, dt) && frame < maxFrameCount) {
91 time += dt; 103 time += dt;
92 frame++; 104 frame++;
93 } 105 }
94 Log.w(TAG, "simulateTime frame " + frame); 106 Log.w(TAG, "simulateTime frame " + frame);
95 return frame < maxFrameCount; 107 return frame < maxFrameCount;
96 } 108 }
97 109
98 private void initializeLayoutManagerPhone(int standardTabCount, int incognit oTabCount) { 110 private void initializeLayoutManagerPhone(int standardTabCount, int incognit oTabCount) {
99 initializeLayoutManagerPhone(standardTabCount, incognitoTabCount, 111 initializeLayoutManagerPhone(standardTabCount, incognitoTabCount,
100 TabModel.INVALID_TAB_INDEX, TabModel.INVALID_TAB_INDEX, false); 112 TabModel.INVALID_TAB_INDEX, TabModel.INVALID_TAB_INDEX, false);
101 } 113 }
102 114
103 private void initializeLayoutManagerPhone(int standardTabCount, int incognit oTabCount, 115 private void initializeLayoutManagerPhone(int standardTabCount, int incognit oTabCount,
104 int standardIndexSelected, int incognitoIndexSelected, boolean incog nitoSelected) { 116 int standardIndexSelected, int incognitoIndexSelected, boolean incog nitoSelected) {
105 Context context = new MockContextForLayout(getInstrumentation().getConte xt()); 117 Context context =
118 new MockContextForLayout(InstrumentationRegistry.getInstrumentat ion().getContext());
106 119
107 mDpToPx = context.getResources().getDisplayMetrics().density; 120 mDpToPx = context.getResources().getDisplayMetrics().density;
108 121
109 mTabModelSelector = new MockTabModelSelector(standardTabCount, incognito TabCount, this); 122 mTabModelSelector = new MockTabModelSelector(standardTabCount, incognito TabCount, this);
110 if (standardIndexSelected != TabModel.INVALID_TAB_INDEX) { 123 if (standardIndexSelected != TabModel.INVALID_TAB_INDEX) {
111 TabModelUtils.setIndex(mTabModelSelector.getModel(false), standardIn dexSelected); 124 TabModelUtils.setIndex(mTabModelSelector.getModel(false), standardIn dexSelected);
112 } 125 }
113 if (incognitoIndexSelected != TabModel.INVALID_TAB_INDEX) { 126 if (incognitoIndexSelected != TabModel.INVALID_TAB_INDEX) {
114 TabModelUtils.setIndex(mTabModelSelector.getModel(true), incognitoIn dexSelected); 127 TabModelUtils.setIndex(mTabModelSelector.getModel(true), incognitoIn dexSelected);
115 } 128 }
(...skipping 19 matching lines...) Expand all
135 } 148 }
136 149
137 private void eventDown(long time, PointF p) { 150 private void eventDown(long time, PointF p) {
138 mLastDownTime = time; 151 mLastDownTime = time;
139 152
140 mPointerCoords[0].x = p.x * mDpToPx; 153 mPointerCoords[0].x = p.x * mDpToPx;
141 mPointerCoords[0].y = p.y * mDpToPx; 154 mPointerCoords[0].y = p.y * mDpToPx;
142 155
143 MotionEvent event = MotionEvent.obtain(mLastDownTime, time, MotionEvent. ACTION_DOWN, 156 MotionEvent event = MotionEvent.obtain(mLastDownTime, time, MotionEvent. ACTION_DOWN,
144 1, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0); 157 1, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0);
145 assertTrue("Down event not intercepted", mManager.onInterceptTouchEvent( event, false)); 158 Assert.assertTrue(
146 assertTrue("Down event not handled", mManager.onTouchEvent(event)); 159 "Down event not intercepted", mManager.onInterceptTouchEvent(eve nt, false));
160 Assert.assertTrue("Down event not handled", mManager.onTouchEvent(event) );
147 } 161 }
148 162
149 private void eventDown1(long time, PointF p) { 163 private void eventDown1(long time, PointF p) {
150 mPointerCoords[1].x = p.x * mDpToPx; 164 mPointerCoords[1].x = p.x * mDpToPx;
151 mPointerCoords[1].y = p.y * mDpToPx; 165 mPointerCoords[1].y = p.y * mDpToPx;
152 166
153 assertTrue("Down_1 event not handled", mManager.onTouchEvent( 167 Assert.assertTrue("Down_1 event not handled",
154 MotionEvent.obtain(mLastDownTime, time, 168 mManager.onTouchEvent(MotionEvent.obtain(mLastDownTime, time,
155 MotionEvent.ACTION_POINTER_DOWN | (0x1 << MotionEvent.ACTION_POI NTER_INDEX_SHIFT), 169 MotionEvent.ACTION_POINTER_DOWN
156 2, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0))); 170 | (0x1 << MotionEvent.ACTION_POINTER_INDEX_SHIFT ),
171 2, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0)) );
157 } 172 }
158 173
159 private void eventMove(long time, PointF p) { 174 private void eventMove(long time, PointF p) {
160 mPointerCoords[0].x = p.x * mDpToPx; 175 mPointerCoords[0].x = p.x * mDpToPx;
161 mPointerCoords[0].y = p.y * mDpToPx; 176 mPointerCoords[0].y = p.y * mDpToPx;
162 177
163 assertTrue("Move event not handled", mManager.onTouchEvent( 178 Assert.assertTrue("Move event not handled",
164 MotionEvent.obtain(mLastDownTime, time, MotionEvent.ACTION_MOVE, 179 mManager.onTouchEvent(
165 1, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0))); 180 MotionEvent.obtain(mLastDownTime, time, MotionEvent.ACTI ON_MOVE, 1,
181 mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0 , 0)));
166 } 182 }
167 183
168 private void eventUp(long time, PointF p) { 184 private void eventUp(long time, PointF p) {
169 mPointerCoords[0].x = p.x * mDpToPx; 185 mPointerCoords[0].x = p.x * mDpToPx;
170 mPointerCoords[0].y = p.y * mDpToPx; 186 mPointerCoords[0].y = p.y * mDpToPx;
171 187
172 assertTrue("Up event not handled", mManager.onTouchEvent( 188 Assert.assertTrue("Up event not handled",
173 MotionEvent.obtain(mLastDownTime, time, MotionEvent.ACTION_UP, 189 mManager.onTouchEvent(MotionEvent.obtain(mLastDownTime, time, Mo tionEvent.ACTION_UP,
174 1, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0))); 190 1, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0)) );
175 } 191 }
176 192
177 private void eventUp1(long time, PointF p) { 193 private void eventUp1(long time, PointF p) {
178 mPointerCoords[1].x = p.x * mDpToPx; 194 mPointerCoords[1].x = p.x * mDpToPx;
179 mPointerCoords[1].y = p.y * mDpToPx; 195 mPointerCoords[1].y = p.y * mDpToPx;
180 196
181 assertTrue("Up_1 event not handled", mManager.onTouchEvent( 197 Assert.assertTrue("Up_1 event not handled",
182 MotionEvent.obtain(mLastDownTime, time, 198 mManager.onTouchEvent(MotionEvent.obtain(mLastDownTime, time,
183 MotionEvent.ACTION_POINTER_UP | (0x1 << MotionEvent.ACTION_POINT ER_INDEX_SHIFT), 199 MotionEvent.ACTION_POINTER_UP
184 2, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0))); 200 | (0x1 << MotionEvent.ACTION_POINTER_INDEX_SHIFT ),
201 2, mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0)) );
185 } 202 }
186 203
187 private void eventMoveBoth(long time, PointF p0, PointF p1) { 204 private void eventMoveBoth(long time, PointF p0, PointF p1) {
188 mPointerCoords[0].x = p0.x * mDpToPx; 205 mPointerCoords[0].x = p0.x * mDpToPx;
189 mPointerCoords[0].y = p0.y * mDpToPx; 206 mPointerCoords[0].y = p0.y * mDpToPx;
190 mPointerCoords[1].x = p1.x * mDpToPx; 207 mPointerCoords[1].x = p1.x * mDpToPx;
191 mPointerCoords[1].y = p1.y * mDpToPx; 208 mPointerCoords[1].y = p1.y * mDpToPx;
192 209
193 assertTrue("Move event not handled", mManager.onTouchEvent( 210 Assert.assertTrue("Move event not handled",
194 MotionEvent.obtain(mLastDownTime, time, MotionEvent.ACTION_MOVE, 2, 211 mManager.onTouchEvent(
195 mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0, 0))); 212 MotionEvent.obtain(mLastDownTime, time, MotionEvent.ACTI ON_MOVE, 2,
213 mProperties, mPointerCoords, 0, 0, 1, 1, 0, 0, 0 , 0)));
196 } 214 }
197 215
216 @Test
198 @SmallTest 217 @SmallTest
199 @Feature({"Android-TabSwitcher"}) 218 @Feature({"Android-TabSwitcher"})
219 @UiThreadTest
200 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE}) 220 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
201 public void testCreation() { 221 public void testCreation() {
202 initializeLayoutManagerPhone(0, 0); 222 initializeLayoutManagerPhone(0, 0);
203 } 223 }
204 224
225 @Test
205 @SmallTest 226 @SmallTest
206 @Feature({"Android-TabSwitcher"}) 227 @Feature({"Android-TabSwitcher"})
228 @UiThreadTest
207 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE}) 229 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
208 public void testStack() throws Exception { 230 public void testStack() throws Exception {
209 initializeLayoutManagerPhone(3, 0); 231 initializeLayoutManagerPhone(3, 0);
210 mManagerPhone.showOverview(true); 232 mManagerPhone.showOverview(true);
211 assertTrue("layoutManager is way too long to end motion", simulateTime(m Manager, 1000)); 233 Assert.assertTrue(
212 assertTrue("The activate layout type is expected to be StackLayout", 234 "layoutManager is way too long to end motion", simulateTime(mMan ager, 1000));
235 Assert.assertTrue("The activate layout type is expected to be StackLayou t",
213 mManager.getActiveLayout() instanceof StackLayout); 236 mManager.getActiveLayout() instanceof StackLayout);
214 mManagerPhone.hideOverview(true); 237 mManagerPhone.hideOverview(true);
215 assertTrue("layoutManager is way too long to end motion", simulateTime(m Manager, 1000)); 238 Assert.assertTrue(
239 "layoutManager is way too long to end motion", simulateTime(mMan ager, 1000));
216 } 240 }
217 241
242 @Test
218 @SmallTest 243 @SmallTest
219 @Feature({"Android-TabSwitcher"}) 244 @Feature({"Android-TabSwitcher"})
245 @UiThreadTest
220 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE}) 246 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
221 public void testStackNoAnimation() throws Exception { 247 public void testStackNoAnimation() throws Exception {
222 initializeLayoutManagerPhone(1, 0); 248 initializeLayoutManagerPhone(1, 0);
223 mManagerPhone.showOverview(false); 249 mManagerPhone.showOverview(false);
224 assertTrue("The activate layout type is expected to be StackLayout", 250 Assert.assertTrue("The activate layout type is expected to be StackLayou t",
225 mManager.getActiveLayout() instanceof StackLayout); 251 mManager.getActiveLayout() instanceof StackLayout);
226 mManagerPhone.hideOverview(false); 252 mManagerPhone.hideOverview(false);
227 } 253 }
228 254
229 /** 255 /**
230 * Tests the tab pinching behavior with two finger. 256 * Tests the tab pinching behavior with two finger.
231 * This test is still under development. 257 * This test is still under development.
232 */ 258 */
259 @Test
233 @SmallTest 260 @SmallTest
234 @Feature({"Android-TabSwitcher"}) 261 @Feature({"Android-TabSwitcher"})
262 @UiThreadTest
235 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE}) 263 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
236 public void testStackPinch() throws Exception { 264 public void testStackPinch() throws Exception {
237 initializeLayoutManagerPhone(5, 0); 265 initializeLayoutManagerPhone(5, 0);
238 // Setting the index to the second to last element ensure the stack can be scrolled in both 266 // Setting the index to the second to last element ensure the stack can be scrolled in both
239 // directions. 267 // directions.
240 mManager.tabSelected(mTabModelSelector.getCurrentModel().getTabAt(3).get Id(), 268 mManager.tabSelected(mTabModelSelector.getCurrentModel().getTabAt(3).get Id(),
241 Tab.INVALID_TAB_ID, false); 269 Tab.INVALID_TAB_ID, false);
242 270
243 mManagerPhone.showOverview(false); 271 mManagerPhone.showOverview(false);
244 // Basic verifications 272 // Basic verifications
245 assertTrue("The activate layout type is expected to be StackLayout", 273 Assert.assertTrue("The activate layout type is expected to be StackLayou t",
246 mManager.getActiveLayout() instanceof StackLayout); 274 mManager.getActiveLayout() instanceof StackLayout);
247 275
248 StackLayout layout = (StackLayout) mManager.getActiveLayout(); 276 StackLayout layout = (StackLayout) mManager.getActiveLayout();
249 Stack stack = layout.getTabStack(false); 277 Stack stack = layout.getTabStack(false);
250 StackTab[] tabs = stack.getTabs(); 278 StackTab[] tabs = stack.getTabs();
251 279
252 long time = 0; 280 long time = 0;
253 // At least one update is necessary to get updated positioning of Layout Tabs. 281 // At least one update is necessary to get updated positioning of Layout Tabs.
254 mManager.onUpdate(time, 16); 282 mManager.onUpdate(time, 16);
255 time++; 283 time++;
(...skipping 29 matching lines...) Expand all
285 float expectedTab1Y = tab1.getY(); 313 float expectedTab1Y = tab1.getY();
286 314
287 // Initiate the pinch with finger 1 315 // Initiate the pinch with finger 1
288 PointF finger1 = new PointF(tab3.getX() + tab3.getFinalContentWidth() / 2, 316 PointF finger1 = new PointF(tab3.getX() + tab3.getFinalContentWidth() / 2,
289 tab3.getY() + fingerOffset); 317 tab3.getY() + fingerOffset);
290 eventDown1(time, finger1); 318 eventDown1(time, finger1);
291 mManager.onUpdate(time, 16); 319 mManager.onUpdate(time, 16);
292 time++; 320 time++;
293 321
294 final float delta = 0.001f; 322 final float delta = 0.001f;
295 assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX(), del ta); 323 Assert.assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX (), delta);
296 assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY(), del ta); 324 Assert.assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY (), delta);
297 float expectedTab3X = tab3.getX(); 325 float expectedTab3X = tab3.getX();
298 float expectedTab3Y = tab3.getY(); 326 float expectedTab3Y = tab3.getY();
299 327
300 // Move Finger 0: Y only 328 // Move Finger 0: Y only
301 finger0.y += scrollOffset1; 329 finger0.y += scrollOffset1;
302 expectedTab1Y += scrollOffset1; 330 expectedTab1Y += scrollOffset1;
303 331
304 eventMoveBoth(time, finger0, finger1); 332 eventMoveBoth(time, finger0, finger1);
305 mManager.onUpdate(time, 16); 333 mManager.onUpdate(time, 16);
306 time++; 334 time++;
307 335
308 assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX(), del ta); 336 Assert.assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX (), delta);
309 assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY(), del ta); 337 Assert.assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY (), delta);
310 assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX(), del ta); 338 Assert.assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX (), delta);
311 assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY(), del ta); 339 Assert.assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY (), delta);
312 340
313 // Move finger 0: Y and X 341 // Move finger 0: Y and X
314 finger0.y += scrollOffset1; 342 finger0.y += scrollOffset1;
315 finger0.x += tab1.getFinalContentWidth() / 8.0f; 343 finger0.x += tab1.getFinalContentWidth() / 8.0f;
316 expectedTab1Y += scrollOffset1; 344 expectedTab1Y += scrollOffset1;
317 345
318 eventMoveBoth(time, finger0, finger1); 346 eventMoveBoth(time, finger0, finger1);
319 mManager.onUpdate(time, 16); 347 mManager.onUpdate(time, 16);
320 time++; 348 time++;
321 349
322 assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX(), del ta); 350 Assert.assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX (), delta);
323 assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY(), del ta); 351 Assert.assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY (), delta);
324 assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX(), del ta); 352 Assert.assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX (), delta);
325 assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY(), del ta); 353 Assert.assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY (), delta);
326 354
327 // Move finger 1: Y and X 355 // Move finger 1: Y and X
328 final float scrollOffset3 = (tab3.getY() - layout.getHeight()) / 8.0f; 356 final float scrollOffset3 = (tab3.getY() - layout.getHeight()) / 8.0f;
329 finger1.y += scrollOffset3; 357 finger1.y += scrollOffset3;
330 finger1.x += tab3.getFinalContentWidth() / 8.0f; 358 finger1.x += tab3.getFinalContentWidth() / 8.0f;
331 expectedTab3Y += scrollOffset3; 359 expectedTab3Y += scrollOffset3;
332 360
333 eventMoveBoth(time, finger0, finger1); 361 eventMoveBoth(time, finger0, finger1);
334 mManager.onUpdate(time, 16); 362 mManager.onUpdate(time, 16);
335 time++; 363 time++;
336 364
337 assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX(), del ta); 365 Assert.assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX (), delta);
338 assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY(), del ta); 366 Assert.assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY (), delta);
339 assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX(), del ta); 367 Assert.assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX (), delta);
340 assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY(), del ta); 368 Assert.assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY (), delta);
341 369
342 // Move finger 0 and 1: Y and X 370 // Move finger 0 and 1: Y and X
343 finger0.y += scrollOffset1; 371 finger0.y += scrollOffset1;
344 finger0.x += tab1.getFinalContentWidth() / 8.0f; 372 finger0.x += tab1.getFinalContentWidth() / 8.0f;
345 expectedTab1Y += scrollOffset1; 373 expectedTab1Y += scrollOffset1;
346 finger1.y += scrollOffset3; 374 finger1.y += scrollOffset3;
347 finger1.x += tab3.getFinalContentWidth() / 8.0f; 375 finger1.x += tab3.getFinalContentWidth() / 8.0f;
348 expectedTab3Y += scrollOffset3; 376 expectedTab3Y += scrollOffset3;
349 377
350 eventMoveBoth(time, finger0, finger1); 378 eventMoveBoth(time, finger0, finger1);
351 mManager.onUpdate(time, 16); 379 mManager.onUpdate(time, 16);
352 time++; 380 time++;
353 381
354 assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX(), del ta); 382 Assert.assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX (), delta);
355 assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY(), del ta); 383 Assert.assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY (), delta);
356 assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX(), del ta); 384 Assert.assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX (), delta);
357 assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY(), del ta); 385 Assert.assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY (), delta);
358 386
359 // Done 387 // Done
360 eventUp1(time, finger1); 388 eventUp1(time, finger1);
361 eventUp(time, finger0); 389 eventUp(time, finger0);
362 390
363 assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX(), del ta); 391 Assert.assertEquals("Wrong x offset for tab 1", expectedTab1X, tab1.getX (), delta);
364 assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY(), del ta); 392 Assert.assertEquals("Wrong y offset for tab 1", expectedTab1Y, tab1.getY (), delta);
365 assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX(), del ta); 393 Assert.assertEquals("Wrong x offset for tab 3", expectedTab3X, tab3.getX (), delta);
366 assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY(), del ta); 394 Assert.assertEquals("Wrong y offset for tab 3", expectedTab3Y, tab3.getY (), delta);
367 395
368 mManagerPhone.hideOverview(false); 396 mManagerPhone.hideOverview(false);
369 } 397 }
370 398
399 @Test
371 @SmallTest 400 @SmallTest
372 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 401 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
373 @Feature({"Android-TabSwitcher"}) 402 @Feature({"Android-TabSwitcher"})
403 @UiThreadTest
374 public void testToolbarSideSwipeOnlyTab() throws Exception { 404 public void testToolbarSideSwipeOnlyTab() throws Exception {
375 initializeLayoutManagerPhone(1, 0, 0, TabModel.INVALID_TAB_INDEX, false) ; 405 initializeLayoutManagerPhone(1, 0, 0, TabModel.INVALID_TAB_INDEX, false) ;
376 assertEquals(mTabModelSelector.getModel(false).index(), 0); 406 Assert.assertEquals(mTabModelSelector.getModel(false).index(), 0);
377 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 0); 407 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 0);
378 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0); 408 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
379 } 409 }
380 410
411 @Test
381 @SmallTest 412 @SmallTest
382 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 413 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
383 @Feature({"Android-TabSwitcher"}) 414 @Feature({"Android-TabSwitcher"})
415 @UiThreadTest
384 public void testToolbarSideSwipeOnlyTabIncognito() throws Exception { 416 public void testToolbarSideSwipeOnlyTabIncognito() throws Exception {
385 initializeLayoutManagerPhone(0, 1, TabModel.INVALID_TAB_INDEX, 0, true); 417 initializeLayoutManagerPhone(0, 1, TabModel.INVALID_TAB_INDEX, 0, true);
386 assertEquals(mTabModelSelector.getModel(true).index(), 0); 418 Assert.assertEquals(mTabModelSelector.getModel(true).index(), 0);
387 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 0); 419 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 0);
388 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0); 420 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
389 } 421 }
390 422
423 @Test
391 @SmallTest 424 @SmallTest
392 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 425 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
393 @Feature({"Android-TabSwitcher"}) 426 @Feature({"Android-TabSwitcher"})
427 @UiThreadTest
394 public void testToolbarSideSwipeNextTab() throws Exception { 428 public void testToolbarSideSwipeNextTab() throws Exception {
395 initializeLayoutManagerPhone(2, 0, 0, TabModel.INVALID_TAB_INDEX, false) ; 429 initializeLayoutManagerPhone(2, 0, 0, TabModel.INVALID_TAB_INDEX, false) ;
396 assertEquals(mTabModelSelector.getModel(false).index(), 0); 430 Assert.assertEquals(mTabModelSelector.getModel(false).index(), 0);
397 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1); 431 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1);
398 } 432 }
399 433
434 @Test
400 @SmallTest 435 @SmallTest
401 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 436 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
402 @Feature({"Android-TabSwitcher"}) 437 @Feature({"Android-TabSwitcher"})
438 @UiThreadTest
403 public void testToolbarSideSwipePrevTab() throws Exception { 439 public void testToolbarSideSwipePrevTab() throws Exception {
404 initializeLayoutManagerPhone(2, 0, 1, TabModel.INVALID_TAB_INDEX, false) ; 440 initializeLayoutManagerPhone(2, 0, 1, TabModel.INVALID_TAB_INDEX, false) ;
405 assertEquals(mTabModelSelector.getModel(false).index(), 1); 441 Assert.assertEquals(mTabModelSelector.getModel(false).index(), 1);
406 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0); 442 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
407 } 443 }
408 444
445 @Test
409 @SmallTest 446 @SmallTest
410 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 447 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
411 @Feature({"Android-TabSwitcher"}) 448 @Feature({"Android-TabSwitcher"})
449 @UiThreadTest
412 public void testToolbarSideSwipeNextTabNone() throws Exception { 450 public void testToolbarSideSwipeNextTabNone() throws Exception {
413 initializeLayoutManagerPhone(2, 0, 1, TabModel.INVALID_TAB_INDEX, false) ; 451 initializeLayoutManagerPhone(2, 0, 1, TabModel.INVALID_TAB_INDEX, false) ;
414 assertEquals(mTabModelSelector.getModel(false).index(), 1); 452 Assert.assertEquals(mTabModelSelector.getModel(false).index(), 1);
415 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1); 453 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1);
416 } 454 }
417 455
456 @Test
418 @SmallTest 457 @SmallTest
419 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 458 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
420 @Feature({"Android-TabSwitcher"}) 459 @Feature({"Android-TabSwitcher"})
460 @UiThreadTest
421 public void testToolbarSideSwipePrevTabNone() throws Exception { 461 public void testToolbarSideSwipePrevTabNone() throws Exception {
422 initializeLayoutManagerPhone(2, 0, 0, TabModel.INVALID_TAB_INDEX, false) ; 462 initializeLayoutManagerPhone(2, 0, 0, TabModel.INVALID_TAB_INDEX, false) ;
423 assertEquals(mTabModelSelector.getModel(false).index(), 0); 463 Assert.assertEquals(mTabModelSelector.getModel(false).index(), 0);
424 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0); 464 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
425 } 465 }
426 466
467 @Test
427 @SmallTest 468 @SmallTest
428 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 469 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
429 @Feature({"Android-TabSwitcher"}) 470 @Feature({"Android-TabSwitcher"})
471 @UiThreadTest
430 public void testToolbarSideSwipeNextTabIncognito() throws Exception { 472 public void testToolbarSideSwipeNextTabIncognito() throws Exception {
431 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 0, true); 473 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 0, true);
432 assertEquals(mTabModelSelector.getModel(true).index(), 0); 474 Assert.assertEquals(mTabModelSelector.getModel(true).index(), 0);
433 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1); 475 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1);
434 } 476 }
435 477
478 @Test
436 @SmallTest 479 @SmallTest
437 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 480 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
438 @Feature({"Android-TabSwitcher"}) 481 @Feature({"Android-TabSwitcher"})
482 @UiThreadTest
439 public void testToolbarSideSwipePrevTabIncognito() throws Exception { 483 public void testToolbarSideSwipePrevTabIncognito() throws Exception {
440 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 1, true); 484 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 1, true);
441 assertEquals(mTabModelSelector.getModel(true).index(), 1); 485 Assert.assertEquals(mTabModelSelector.getModel(true).index(), 1);
442 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0); 486 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
443 } 487 }
444 488
489 @Test
445 @SmallTest 490 @SmallTest
446 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 491 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
447 @Feature({"Android-TabSwitcher"}) 492 @Feature({"Android-TabSwitcher"})
493 @UiThreadTest
448 public void testToolbarSideSwipeNextTabNoneIncognito() throws Exception { 494 public void testToolbarSideSwipeNextTabNoneIncognito() throws Exception {
449 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 1, true); 495 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 1, true);
450 assertEquals(mTabModelSelector.getModel(true).index(), 1); 496 Assert.assertEquals(mTabModelSelector.getModel(true).index(), 1);
451 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1); 497 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.LEFT, 1);
452 } 498 }
453 499
500 @Test
454 @SmallTest 501 @SmallTest
455 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) 502 @Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
456 @Feature({"Android-TabSwitcher"}) 503 @Feature({"Android-TabSwitcher"})
504 @UiThreadTest
457 public void testToolbarSideSwipePrevTabNoneIncognito() throws Exception { 505 public void testToolbarSideSwipePrevTabNoneIncognito() throws Exception {
458 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 0, true); 506 initializeLayoutManagerPhone(0, 2, TabModel.INVALID_TAB_INDEX, 0, true);
459 assertEquals(mTabModelSelector.getModel(true).index(), 0); 507 Assert.assertEquals(mTabModelSelector.getModel(true).index(), 0);
460 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0); 508 runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
461 } 509 }
462 510
463 @Override 511 @Before
464 protected void setUp() throws Exception { 512 public void setUp() throws Exception {
465 super.setUp();
466
467 // Load the browser process. 513 // Load the browser process.
468 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 514 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
469 @Override 515 @Override
470 public void run() { 516 public void run() {
471 try { 517 try {
472 ChromeBrowserInitializer.getInstance( 518 ChromeBrowserInitializer
473 getInstrumentation().getTargetContext()).handleSynch ronousStartup(); 519 .getInstance(
520 InstrumentationRegistry.getInstrumentation() .getTargetContext())
521 .handleSynchronousStartup();
474 } catch (ProcessInitException e) { 522 } catch (ProcessInitException e) {
475 fail("Failed to load browser"); 523 Assert.fail("Failed to load browser");
476 } 524 }
477 } 525 }
478 }); 526 });
479 } 527 }
480 528
481 private void runToolbarSideSwipeTestOnCurrentModel(ScrollDirection direction , int finalIndex) { 529 private void runToolbarSideSwipeTestOnCurrentModel(ScrollDirection direction , int finalIndex) {
482 final TabModel model = mTabModelSelector.getCurrentModel(); 530 final TabModel model = mTabModelSelector.getCurrentModel();
483 final int finalId = model.getTabAt(finalIndex).getId(); 531 final int finalId = model.getTabAt(finalIndex).getId();
484 532
485 performToolbarSideSwipe(direction); 533 performToolbarSideSwipe(direction);
486 534
487 assertEquals("Unexpected model change after side swipe", model.isIncogni to(), 535 Assert.assertEquals("Unexpected model change after side swipe", model.is Incognito(),
488 mTabModelSelector.isIncognitoSelected()); 536 mTabModelSelector.isIncognitoSelected());
489 537
490 assertEquals("Wrong index after side swipe", finalIndex, model.index()); 538 Assert.assertEquals("Wrong index after side swipe", finalIndex, model.in dex());
491 assertEquals("Wrong current tab id", finalId, TabModelUtils.getCurrentTa b(model).getId()); 539 Assert.assertEquals(
492 assertTrue("LayoutManager#getActiveLayout() should be StaticLayout", 540 "Wrong current tab id", finalId, TabModelUtils.getCurrentTab(mod el).getId());
541 Assert.assertTrue("LayoutManager#getActiveLayout() should be StaticLayou t",
493 mManager.getActiveLayout() instanceof StaticLayout); 542 mManager.getActiveLayout() instanceof StaticLayout);
494 } 543 }
495 544
496 private void performToolbarSideSwipe(ScrollDirection direction) { 545 private void performToolbarSideSwipe(ScrollDirection direction) {
497 assertTrue("Unexpected direction for side swipe " + direction, 546 Assert.assertTrue("Unexpected direction for side swipe " + direction,
498 direction == ScrollDirection.LEFT || direction == ScrollDirectio n.RIGHT); 547 direction == ScrollDirection.LEFT || direction == ScrollDirectio n.RIGHT);
499 548
500 final Layout layout = mManager.getActiveLayout(); 549 final Layout layout = mManager.getActiveLayout();
501 final EdgeSwipeHandler eventHandler = mManager.getTopSwipeHandler(); 550 final EdgeSwipeHandler eventHandler = mManager.getTopSwipeHandler();
502 551
503 assertNotNull("LayoutManager#getTopSwipeHandler() returned null", eventH andler); 552 Assert.assertNotNull("LayoutManager#getTopSwipeHandler() returned null", eventHandler);
504 assertNotNull("LayoutManager#getActiveLayout() returned null", layout); 553 Assert.assertNotNull("LayoutManager#getActiveLayout() returned null", la yout);
505 554
506 final float layoutWidth = layout.getWidth(); 555 final float layoutWidth = layout.getWidth();
507 final boolean scrollLeft = direction == ScrollDirection.LEFT; 556 final boolean scrollLeft = direction == ScrollDirection.LEFT;
508 final float deltaX = MathUtils.flipSignIf(layoutWidth / 2.f, scrollLeft) ; 557 final float deltaX = MathUtils.flipSignIf(layoutWidth / 2.f, scrollLeft) ;
509 558
510 eventHandler.swipeStarted(direction, layoutWidth, 0); 559 eventHandler.swipeStarted(direction, layoutWidth, 0);
511 eventHandler.swipeUpdated(deltaX, 0.f, deltaX, 0.f, deltaX, 0.f); 560 eventHandler.swipeUpdated(deltaX, 0.f, deltaX, 0.f, deltaX, 0.f);
512 eventHandler.swipeFinished(); 561 eventHandler.swipeFinished();
513 562
514 assertTrue("LayoutManager#getActiveLayout() should be ToolbarSwipeLayout ", 563 Assert.assertTrue("LayoutManager#getActiveLayout() should be ToolbarSwip eLayout",
515 mManager.getActiveLayout() instanceof ToolbarSwipeLayout); 564 mManager.getActiveLayout() instanceof ToolbarSwipeLayout);
516 assertTrue("LayoutManager took too long to finish the animations", 565 Assert.assertTrue("LayoutManager took too long to finish the animations" ,
517 simulateTime(mManager, 1000)); 566 simulateTime(mManager, 1000));
518 } 567 }
519 568
520 @Override 569 @Override
521 public Tab createTab(int id, boolean incognito) { 570 public Tab createTab(int id, boolean incognito) {
522 return new Tab(id, incognito, null); 571 return new Tab(id, incognito, null);
523 } 572 }
524 } 573 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698