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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerTest.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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
(Empty)
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
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.tabmodel;
6
7 import android.app.Activity;
8 import android.test.InstrumentationTestCase;
9 import android.test.UiThreadTest;
10 import android.test.suitebuilder.annotation.SmallTest;
11 import android.test.suitebuilder.annotation.Smoke;
12
13 import org.chromium.base.ActivityState;
14 import org.chromium.base.ApplicationStatus;
15 import org.chromium.base.test.util.Feature;
16 import org.chromium.chrome.browser.ChromeActivity;
17 import org.chromium.chrome.browser.EmbedContentViewActivity;
18 import org.chromium.chrome.browser.tabmodel.TabWindowManager.TabModelSelectorFac tory;
19 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModelSelector;
20 import org.chromium.ui.base.WindowAndroid;
21
22 /**
23 * Test for {@link TabWindowManager} APIs. Makes sure the class handles multipl e {@link Activity}s
24 * requesting {@link TabModelSelector}s, {@link Activity}s getting destroyed, et c..
25 */
26 public class TabWindowManagerTest extends InstrumentationTestCase {
27 private final TabModelSelectorFactory mMockTabModelSelectorFactory =
28 new TabModelSelectorFactory() {
29 @Override
30 public TabModelSelector buildSelector(ChromeActivity activity,
31 WindowAndroid windowAndroid, int selectorIndex) {
32 return new MockTabModelSelector(0, 0, null);
33 }
34 };
35
36 private ChromeActivity buildActivity() {
37 ChromeActivity activity = new EmbedContentViewActivity();
38 ApplicationStatus.onStateChangeForTesting(activity, ActivityState.CREATE D);
39 return activity;
40 }
41
42 private TabModelSelector requestSelector(ChromeActivity activity, int reques tedIndex) {
43 final TabWindowManager manager = TabWindowManager.getInstance();
44 manager.setTabModelSelectorFactory(mMockTabModelSelectorFactory);
45 TabModelSelector selector = manager.requestSelector(activity, null, requ estedIndex);
46 return selector;
47 }
48
49 /**
50 * Test that a single {@link Activity} can request a {@link TabModelSelector }.
51 */
52 @Smoke
53 @Feature({"Multiwindow"})
54 @UiThreadTest
55 public void testSingleActivity() {
56 final TabWindowManager manager = TabWindowManager.getInstance();
57
58 ChromeActivity activity0 = buildActivity();
59 TabModelSelector selector0 = requestSelector(activity0, 0);
60
61 assertNotNull("Was not able to build the TabModelSelector", selector0);
62 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
63 }
64
65 /**
66 * Test that two {@link Activity}s can request different {@link TabModelSele ctor}s.
67 */
68 @SmallTest
69 @Feature({"Multiwindow"})
70 @UiThreadTest
71 public void testMultipleActivities() {
72 assertTrue("Not enough selectors", TabWindowManager.MAX_SIMULTANEOUS_SEL ECTORS >= 2);
73 final TabWindowManager manager = TabWindowManager.getInstance();
74
75 ChromeActivity activity0 = buildActivity();
76 ChromeActivity activity1 = buildActivity();
77 TabModelSelector selector0 = requestSelector(activity0, 0);
78 TabModelSelector selector1 = requestSelector(activity1, 1);
79
80 assertNotNull("Was not able to build the TabModelSelector", selector0);
81 assertNotNull("Was not able to build the TabModelSelector", selector1);
82 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
83 assertEquals("Unexpected model index", 1, manager.getIndexForWindow(acti vity1));
84 }
85
86 /**
87 * Test that trying to have too many {@link Activity}s requesting {@link Tab ModelSelector}s is
88 * properly capped and returns {@code null}.
89 */
90 @SmallTest
91 @Feature({"Multiwindow"})
92 @UiThreadTest
93 public void testTooManyActivities() {
94 for (int i = 0; i < TabWindowManager.MAX_SIMULTANEOUS_SELECTORS; i++) {
95 assertNotNull("Could not build selector", requestSelector(buildActiv ity(), 0));
96 }
97
98 assertNull("Built selectors past the max number supported",
99 requestSelector(buildActivity(), 0));
100 }
101
102 /**
103 * Test that requesting the same {@link TabModelSelector} index will fall ba ck and return a
104 * model for a different available index instead. In this case, a higher in dex (0 -> 1).
105 */
106 @SmallTest
107 @Feature({"Multiwindow"})
108 @UiThreadTest
109 public void testIndexFallback() {
110 assertTrue("Not enough selectors", TabWindowManager.MAX_SIMULTANEOUS_SEL ECTORS >= 2);
111
112 final TabWindowManager manager = TabWindowManager.getInstance();
113
114 ChromeActivity activity0 = buildActivity();
115 ChromeActivity activity1 = buildActivity();
116 TabModelSelector selector0 = requestSelector(activity0, 0);
117 // Request 0 again, but should get 1 instead.
118 TabModelSelector selector1 = requestSelector(activity1, 0);
119
120 assertNotNull("Was not able to build the TabModelSelector", selector0);
121 assertNotNull("Was not able to build the TabModelSelector", selector1);
122 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
123 assertEquals("Unexpected model index", 1, manager.getIndexForWindow(acti vity1));
124 }
125
126 /**
127 * Test that requesting the same {@link TabModelSelector} index will fall ba ck and return a
128 * model for a different available index instead. In this case, a lower ind ex (2 -> 0).
129 */
130 @SmallTest
131 @Feature({"Multiwindow"})
132 @UiThreadTest
133 public void testIndexFallback2() {
134 assertTrue("Not enough selectors", TabWindowManager.MAX_SIMULTANEOUS_SEL ECTORS >= 3);
135
136 final TabWindowManager manager = TabWindowManager.getInstance();
137
138 ChromeActivity activity0 = buildActivity();
139 ChromeActivity activity1 = buildActivity();
140 TabModelSelector selector0 = requestSelector(activity0, 2);
141 // Request 2 again, but should get 0 instead.
142 TabModelSelector selector1 = requestSelector(activity1, 2);
143
144 assertNotNull("Was not able to build the TabModelSelector", selector0);
145 assertNotNull("Was not able to build the TabModelSelector", selector1);
146 assertEquals("Unexpected model index", 2, manager.getIndexForWindow(acti vity0));
147 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity1));
148 }
149
150 /**
151 * Test that a destroyed {@link Activity} properly gets removed from {@link TabWindowManager}.
152 */
153 @SmallTest
154 @Feature({"Multiwindow"})
155 @UiThreadTest
156 public void testActivityDeathRemovesSingle() {
157 final TabWindowManager manager = TabWindowManager.getInstance();
158
159 ChromeActivity activity0 = buildActivity();
160 TabModelSelector selector0 = requestSelector(activity0, 0);
161
162 assertNotNull("Was not able to build the TabModelSelector", selector0);
163 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
164
165 ApplicationStatus.onStateChangeForTesting(activity0, ActivityState.DESTR OYED);
166
167 assertEquals("Still found model", TabWindowManager.INVALID_WINDOW_INDEX,
168 manager.getIndexForWindow(activity0));
169 }
170
171 /**
172 * Test that an {@link Activity} requesting an index that was previously ass igned to a destroyed
173 * {@link Activity} can take that {@link TabModelSelector}.
174 */
175 @SmallTest
176 @Feature({"Multiwindow"})
177 @UiThreadTest
178 public void testActivityDeathLetsModelReassign() {
179 final TabWindowManager manager = TabWindowManager.getInstance();
180
181 ChromeActivity activity0 = buildActivity();
182 TabModelSelector selector0 = requestSelector(activity0, 0);
183
184 assertNotNull("Was not able to build the TabModelSelector", selector0);
185 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
186
187 ApplicationStatus.onStateChangeForTesting(activity0, ActivityState.DESTR OYED);
188
189 assertEquals("Still found model", TabWindowManager.INVALID_WINDOW_INDEX,
190 manager.getIndexForWindow(activity0));
191
192 ChromeActivity activity1 = buildActivity();
193 TabModelSelector selector1 = requestSelector(activity1, 0);
194
195 assertNotNull("Was not able to build the TabModelSelector", selector1);
196 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity1));
197 }
198
199 /**
200 * Test that an {@link Activity} requesting an index that was previously ass igned to a destroyed
201 * {@link Activity} can take that {@link TabModelSelector} when there are ot her
202 * {@link Activity}s assigned {@link TabModelSelector}s.
203 */
204 @SmallTest
205 @Feature({"Multiwindow"})
206 @UiThreadTest
207 public void testActivityDeathWithMultipleActivities() {
208 assertTrue("Not enough selectors", TabWindowManager.MAX_SIMULTANEOUS_SEL ECTORS >= 2);
209
210 final TabWindowManager manager = TabWindowManager.getInstance();
211
212 ChromeActivity activity0 = buildActivity();
213 ChromeActivity activity1 = buildActivity();
214 TabModelSelector selector0 = requestSelector(activity0, 0);
215 TabModelSelector selector1 = requestSelector(activity1, 1);
216
217 assertNotNull("Was not able to build the TabModelSelector", selector0);
218 assertNotNull("Was not able to build the TabModelSelector", selector1);
219 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
220 assertEquals("Unexpected model index", 1, manager.getIndexForWindow(acti vity1));
221
222 ApplicationStatus.onStateChangeForTesting(activity1, ActivityState.DESTR OYED);
223
224 assertEquals("Still found model", TabWindowManager.INVALID_WINDOW_INDEX,
225 manager.getIndexForWindow(activity1));
226
227 ChromeActivity activity2 = buildActivity();
228 TabModelSelector selector2 = requestSelector(activity2, 1);
229
230 assertNotNull("Was not able to build the TabModelSelector", selector2);
231 assertEquals("Unexpected model index", 0, manager.getIndexForWindow(acti vity0));
232 assertEquals("Unexpected model index", 1, manager.getIndexForWindow(acti vity2));
233 }
234 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698