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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/UrlBarTest.java

Issue 2831823003: Convert ChromeActivityTestCaseBase direct children to JUnit4 (Closed)
Patch Set: fix findbug issues Created 3 years, 8 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.omnibox; 5 package org.chromium.chrome.browser.omnibox;
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.annotation.SuppressLint; 9 import android.annotation.SuppressLint;
10 import android.content.ClipData; 10 import android.content.ClipData;
11 import android.content.ClipboardManager; 11 import android.content.ClipboardManager;
12 import android.content.Context; 12 import android.content.Context;
13 import android.content.Intent; 13 import android.content.Intent;
14 import android.support.test.InstrumentationRegistry;
14 import android.support.test.filters.SmallTest; 15 import android.support.test.filters.SmallTest;
15 import android.text.Editable; 16 import android.text.Editable;
16 import android.text.TextUtils; 17 import android.text.TextUtils;
17 import android.view.KeyEvent; 18 import android.view.KeyEvent;
18 import android.view.inputmethod.BaseInputConnection; 19 import android.view.inputmethod.BaseInputConnection;
19 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
20 import org.chromium.base.ThreadUtils; 27 import org.chromium.base.ThreadUtils;
21 import org.chromium.base.test.util.CallbackHelper; 28 import org.chromium.base.test.util.CallbackHelper;
29 import org.chromium.base.test.util.CommandLineFlags;
22 import org.chromium.base.test.util.Feature; 30 import org.chromium.base.test.util.Feature;
23 import org.chromium.base.test.util.Restriction; 31 import org.chromium.base.test.util.Restriction;
24 import org.chromium.base.test.util.RetryOnFailure; 32 import org.chromium.base.test.util.RetryOnFailure;
25 import org.chromium.chrome.R; 33 import org.chromium.chrome.R;
26 import org.chromium.chrome.browser.ChromeActivity; 34 import org.chromium.chrome.browser.ChromeActivity;
35 import org.chromium.chrome.browser.ChromeSwitches;
27 import org.chromium.chrome.browser.profiles.Profile; 36 import org.chromium.chrome.browser.profiles.Profile;
28 import org.chromium.chrome.test.ChromeActivityTestCaseBase; 37 import org.chromium.chrome.test.ChromeActivityTestRule;
38 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
29 import org.chromium.chrome.test.util.OmniboxTestUtils; 39 import org.chromium.chrome.test.util.OmniboxTestUtils;
30 import org.chromium.chrome.test.util.OmniboxTestUtils.StubAutocompleteController ; 40 import org.chromium.chrome.test.util.OmniboxTestUtils.StubAutocompleteController ;
31 import org.chromium.content.browser.test.util.Criteria; 41 import org.chromium.content.browser.test.util.Criteria;
32 import org.chromium.content.browser.test.util.CriteriaHelper; 42 import org.chromium.content.browser.test.util.CriteriaHelper;
33 import org.chromium.content.browser.test.util.KeyUtils; 43 import org.chromium.content.browser.test.util.KeyUtils;
34 44
35 import java.util.concurrent.Callable; 45 import java.util.concurrent.Callable;
36 import java.util.concurrent.ExecutionException; 46 import java.util.concurrent.ExecutionException;
37 import java.util.concurrent.TimeoutException; 47 import java.util.concurrent.TimeoutException;
38 import java.util.concurrent.atomic.AtomicBoolean; 48 import java.util.concurrent.atomic.AtomicBoolean;
39 import java.util.concurrent.atomic.AtomicReference; 49 import java.util.concurrent.atomic.AtomicReference;
40 50
41 /** 51 /**
42 * Tests for the URL bar UI component. 52 * Tests for the URL bar UI component.
43 */ 53 */
44 public class UrlBarTest extends ChromeActivityTestCaseBase<ChromeActivity> { 54 @RunWith(ChromeJUnit4ClassRunner.class)
55 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
56 ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
57 public class UrlBarTest {
58 // 9000+ chars of goodness
45 59
46 // 9000+ chars of goodness 60 @Rule
61 public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
62 new ChromeActivityTestRule<>(ChromeActivity.class);
63
47 private static final String HUGE_URL = 64 private static final String HUGE_URL =
48 "data:text/plain,H" 65 "data:text/plain,H"
49 + new String(new char[9000]).replace('\0', 'u') 66 + new String(new char[9000]).replace('\0', 'u')
50 + "ge!"; 67 + "ge!";
51 68
52 public UrlBarTest() {
53 super(ChromeActivity.class);
54 }
55
56 private UrlBar getUrlBar() { 69 private UrlBar getUrlBar() {
57 return (UrlBar) getActivity().findViewById(R.id.url_bar); 70 return (UrlBar) mActivityTestRule.getActivity().findViewById(R.id.url_ba r);
58 } 71 }
59 72
60 private void stubLocationBarAutocomplete() { 73 private void stubLocationBarAutocomplete() {
61 setAutocompleteController(new StubAutocompleteController()); 74 setAutocompleteController(new StubAutocompleteController());
62 } 75 }
63 76
64 private void setAutocompleteController(final AutocompleteController controll er) { 77 private void setAutocompleteController(final AutocompleteController controll er) {
65 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 78 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
66 @Override 79 @Override
67 public void run() { 80 public void run() {
68 LocationBarLayout locationBar = 81 LocationBarLayout locationBar =
69 (LocationBarLayout) getActivity().findViewById(R.id.loca tion_bar); 82 (LocationBarLayout) mActivityTestRule.getActivity().find ViewById(
83 R.id.location_bar);
70 locationBar.cancelPendingAutocompleteStart(); 84 locationBar.cancelPendingAutocompleteStart();
71 locationBar.setAutocompleteController(controller); 85 locationBar.setAutocompleteController(controller);
72 } 86 }
73 }); 87 });
74 } 88 }
75 89
76 private static class AutocompleteState { 90 private static class AutocompleteState {
77 public final boolean hasAutocomplete; 91 public final boolean hasAutocomplete;
78 public final String textWithoutAutocomplete; 92 public final String textWithoutAutocomplete;
79 public final String textWithAutocomplete; 93 public final String textWithAutocomplete;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 } 131 }
118 132
119 private void setTextAndVerifyNoAutocomplete(final UrlBar urlBar, final Strin g text) { 133 private void setTextAndVerifyNoAutocomplete(final UrlBar urlBar, final Strin g text) {
120 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() { 134 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() {
121 @Override 135 @Override
122 public void run() { 136 public void run() {
123 urlBar.setText(text); 137 urlBar.setText(text);
124 } 138 }
125 }); 139 });
126 140
127 assertEquals(text, state.textWithoutAutocomplete); 141 Assert.assertEquals(text, state.textWithoutAutocomplete);
128 assertEquals(text, state.textWithAutocomplete); 142 Assert.assertEquals(text, state.textWithAutocomplete);
129 assertFalse(state.hasAutocomplete); 143 Assert.assertFalse(state.hasAutocomplete);
130 } 144 }
131 145
132 private void setAutocomplete(final UrlBar urlBar, 146 private void setAutocomplete(final UrlBar urlBar,
133 final String userText, final String autocompleteText) { 147 final String userText, final String autocompleteText) {
134 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() { 148 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() {
135 @Override 149 @Override
136 public void run() { 150 public void run() {
137 urlBar.setAutocompleteText(userText, autocompleteText); 151 urlBar.setAutocompleteText(userText, autocompleteText);
138 } 152 }
139 }); 153 });
140 154
141 assertEquals(userText, state.textWithoutAutocomplete); 155 Assert.assertEquals(userText, state.textWithoutAutocomplete);
142 assertEquals(userText + autocompleteText, state.textWithAutocomplete); 156 Assert.assertEquals(userText + autocompleteText, state.textWithAutocompl ete);
143 assertTrue(state.hasAutocomplete); 157 Assert.assertTrue(state.hasAutocomplete);
144 } 158 }
145 159
146 private AutocompleteState setSelection( 160 private AutocompleteState setSelection(
147 final UrlBar urlBar, final int selectionStart, final int selectionEn d) { 161 final UrlBar urlBar, final int selectionStart, final int selectionEn d) {
148 return getAutocompleteState(urlBar, new Runnable() { 162 return getAutocompleteState(urlBar, new Runnable() {
149 @Override 163 @Override
150 public void run() { 164 public void run() {
151 urlBar.setSelection(selectionStart, selectionEnd); 165 urlBar.setSelection(selectionStart, selectionEnd);
152 } 166 }
153 }); 167 });
154 } 168 }
155 169
170 @Test
156 @SmallTest 171 @SmallTest
157 @Feature({"Omnibox"}) 172 @Feature({"Omnibox"})
158 @RetryOnFailure 173 @RetryOnFailure
159 public void testRefocusing() throws InterruptedException { 174 public void testRefocusing() throws InterruptedException {
160 startMainActivityOnBlankPage(); 175 mActivityTestRule.startMainActivityOnBlankPage();
161 UrlBar urlBar = getUrlBar(); 176 UrlBar urlBar = getUrlBar();
162 assertFalse(OmniboxTestUtils.doesUrlBarHaveFocus(urlBar)); 177 Assert.assertFalse(OmniboxTestUtils.doesUrlBarHaveFocus(urlBar));
163 OmniboxTestUtils.checkUrlBarRefocus(urlBar, 5); 178 OmniboxTestUtils.checkUrlBarRefocus(urlBar, 5);
164 } 179 }
165 180
181 @Test
166 @SmallTest 182 @SmallTest
167 @Feature({"Omnibox"}) 183 @Feature({"Omnibox"})
168 @RetryOnFailure 184 @RetryOnFailure
169 public void testAutocompleteUpdatedOnSetText() throws InterruptedException { 185 public void testAutocompleteUpdatedOnSetText() throws InterruptedException {
170 startMainActivityOnBlankPage(); 186 mActivityTestRule.startMainActivityOnBlankPage();
171 stubLocationBarAutocomplete(); 187 stubLocationBarAutocomplete();
172 final UrlBar urlBar = getUrlBar(); 188 final UrlBar urlBar = getUrlBar();
173 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 189 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
174 190
175 // Verify that setting a new string will clear the autocomplete. 191 // Verify that setting a new string will clear the autocomplete.
176 setTextAndVerifyNoAutocomplete(urlBar, "test"); 192 setTextAndVerifyNoAutocomplete(urlBar, "test");
177 setAutocomplete(urlBar, "test", "ing is fun"); 193 setAutocomplete(urlBar, "test", "ing is fun");
178 setTextAndVerifyNoAutocomplete(urlBar, "new string"); 194 setTextAndVerifyNoAutocomplete(urlBar, "new string");
179 195
180 // Replace part of the non-autocomplete text and see that the autocomple te is cleared. 196 // Replace part of the non-autocomplete text and see that the autocomple te is cleared.
181 setTextAndVerifyNoAutocomplete(urlBar, "test"); 197 setTextAndVerifyNoAutocomplete(urlBar, "test");
182 setAutocomplete(urlBar, "test", "ing is fun"); 198 setAutocomplete(urlBar, "test", "ing is fun");
183 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() { 199 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() {
184 @Override 200 @Override
185 public void run() { 201 public void run() {
186 urlBar.setText(urlBar.getText().replace(1, 2, "a")); 202 urlBar.setText(urlBar.getText().replace(1, 2, "a"));
187 } 203 }
188 }); 204 });
189 assertFalse(state.hasAutocomplete); 205 Assert.assertFalse(state.hasAutocomplete);
190 assertEquals("tasting is fun", state.textWithoutAutocomplete); 206 Assert.assertEquals("tasting is fun", state.textWithoutAutocomplete);
191 assertEquals("tasting is fun", state.textWithAutocomplete); 207 Assert.assertEquals("tasting is fun", state.textWithAutocomplete);
192 208
193 // Replace part of the autocomplete text and see that the autocomplete i s cleared. 209 // Replace part of the autocomplete text and see that the autocomplete i s cleared.
194 setTextAndVerifyNoAutocomplete(urlBar, "test"); 210 setTextAndVerifyNoAutocomplete(urlBar, "test");
195 setAutocomplete(urlBar, "test", "ing is fun"); 211 setAutocomplete(urlBar, "test", "ing is fun");
196 state = getAutocompleteState(urlBar, new Runnable() { 212 state = getAutocompleteState(urlBar, new Runnable() {
197 @Override 213 @Override
198 public void run() { 214 public void run() {
199 urlBar.setText(urlBar.getText().replace(8, 10, "no")); 215 urlBar.setText(urlBar.getText().replace(8, 10, "no"));
200 } 216 }
201 }); 217 });
202 assertFalse(state.hasAutocomplete); 218 Assert.assertFalse(state.hasAutocomplete);
203 assertEquals("testing no fun", state.textWithoutAutocomplete); 219 Assert.assertEquals("testing no fun", state.textWithoutAutocomplete);
204 assertEquals("testing no fun", state.textWithAutocomplete); 220 Assert.assertEquals("testing no fun", state.textWithAutocomplete);
205 } 221 }
206 222
207 private void verifySelectionState( 223 private void verifySelectionState(
208 String text, String inlineAutocomplete, int selectionStart, int sele ctionEnd, 224 String text, String inlineAutocomplete, int selectionStart, int sele ctionEnd,
209 boolean expectedHasAutocomplete, String expectedTextWithoutAutocompl ete, 225 boolean expectedHasAutocomplete, String expectedTextWithoutAutocompl ete,
210 String expectedTextWithAutocomplete, boolean expectedPreventInline, 226 String expectedTextWithAutocomplete, boolean expectedPreventInline,
211 String expectedRequestedAutocompleteText) 227 String expectedRequestedAutocompleteText)
212 throws InterruptedException, TimeoutException { 228 throws InterruptedException, TimeoutException {
213 final UrlBar urlBar = getUrlBar(); 229 final UrlBar urlBar = getUrlBar();
214 230
(...skipping 11 matching lines...) Expand all
226 if (autocompleteHelper.getCallCount() != 0) return; 242 if (autocompleteHelper.getCallCount() != 0) return;
227 243
228 requestedAutocompleteText.set(text); 244 requestedAutocompleteText.set(text);
229 didPreventInlineAutocomplete.set(preventInlineAutocomplete); 245 didPreventInlineAutocomplete.set(preventInlineAutocomplete);
230 autocompleteHelper.notifyCalled(); 246 autocompleteHelper.notifyCalled();
231 } 247 }
232 }; 248 };
233 setAutocompleteController(controller); 249 setAutocompleteController(controller);
234 250
235 AutocompleteState state = setSelection(urlBar, selectionStart, selection End); 251 AutocompleteState state = setSelection(urlBar, selectionStart, selection End);
236 assertEquals("Has autocomplete", expectedHasAutocomplete, state.hasAutoc omplete); 252 Assert.assertEquals("Has autocomplete", expectedHasAutocomplete, state.h asAutocomplete);
237 assertEquals("Text w/o Autocomplete", 253 Assert.assertEquals("Text w/o Autocomplete", expectedTextWithoutAutocomp lete,
238 expectedTextWithoutAutocomplete, state.textWithoutAutocomplete); 254 state.textWithoutAutocomplete);
239 assertEquals("Text w/ Autocomplete", 255 Assert.assertEquals(
240 expectedTextWithAutocomplete, state.textWithAutocomplete); 256 "Text w/ Autocomplete", expectedTextWithAutocomplete, state.text WithAutocomplete);
241 257
242 autocompleteHelper.waitForCallback(0); 258 autocompleteHelper.waitForCallback(0);
243 assertEquals("Prevent inline autocomplete", 259 Assert.assertEquals("Prevent inline autocomplete", expectedPreventInline ,
244 expectedPreventInline, didPreventInlineAutocomplete.get()); 260 didPreventInlineAutocomplete.get());
245 assertEquals("Requested autocomplete text", 261 Assert.assertEquals("Requested autocomplete text", expectedRequestedAuto completeText,
246 expectedRequestedAutocompleteText, requestedAutocompleteText.get ()); 262 requestedAutocompleteText.get());
247 } 263 }
248 264
265 @Test
249 @SmallTest 266 @SmallTest
250 @Feature({"Omnibox"}) 267 @Feature({"Omnibox"})
251 @RetryOnFailure 268 @RetryOnFailure
252 public void testAutocompleteUpdatedOnSelection() 269 public void testAutocompleteUpdatedOnSelection() throws InterruptedException , TimeoutException {
253 throws InterruptedException, TimeoutException { 270 mActivityTestRule.startMainActivityOnBlankPage();
254 startMainActivityOnBlankPage();
255 stubLocationBarAutocomplete(); 271 stubLocationBarAutocomplete();
256 272
257 final UrlBar urlBar = getUrlBar(); 273 final UrlBar urlBar = getUrlBar();
258 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 274 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
259 275
260 // Verify that setting a selection before the autocomplete clears it. 276 // Verify that setting a selection before the autocomplete clears it.
261 verifySelectionState("test", "ing is fun", 1, 1, false, "test", "test", true, "test"); 277 verifySelectionState("test", "ing is fun", 1, 1, false, "test", "test", true, "test");
262 278
263 // Verify that setting a selection range before the autocomplete clears it. 279 // Verify that setting a selection range before the autocomplete clears it.
264 verifySelectionState("test", "ing is fun", 0, 4, false, "test", "test", true, "test"); 280 verifySelectionState("test", "ing is fun", 0, 4, false, "test", "test", true, "test");
(...skipping 26 matching lines...) Expand all
291 verifySelectionState("test", "ing is fun", 8, 11, 307 verifySelectionState("test", "ing is fun", 8, 11,
292 false, "testing is fun", "testing is fun", true, "testing is fun "); 308 false, "testing is fun", "testing is fun", true, "testing is fun ");
293 309
294 // Verify that setting the same selection does not clear the autocomplet e text. 310 // Verify that setting the same selection does not clear the autocomplet e text.
295 // As we do not expect the suggestions to be refreshed, we test this sli ghtly differently 311 // As we do not expect the suggestions to be refreshed, we test this sli ghtly differently
296 // than the other cases. 312 // than the other cases.
297 stubLocationBarAutocomplete(); 313 stubLocationBarAutocomplete();
298 setTextAndVerifyNoAutocomplete(urlBar, "test"); 314 setTextAndVerifyNoAutocomplete(urlBar, "test");
299 setAutocomplete(urlBar, "test", "ing is fun"); 315 setAutocomplete(urlBar, "test", "ing is fun");
300 AutocompleteState state = setSelection(urlBar, 4, 14); 316 AutocompleteState state = setSelection(urlBar, 4, 14);
301 assertEquals("Has autocomplete", true, state.hasAutocomplete); 317 Assert.assertEquals("Has autocomplete", true, state.hasAutocomplete);
302 assertEquals("Text w/o Autocomplete", "test", state.textWithoutAutocompl ete); 318 Assert.assertEquals("Text w/o Autocomplete", "test", state.textWithoutAu tocomplete);
303 assertEquals("Text w/ Autocomplete", "testing is fun", state.textWithAut ocomplete); 319 Assert.assertEquals("Text w/ Autocomplete", "testing is fun", state.text WithAutocomplete);
304 } 320 }
305 321
306 /** 322 /**
307 * Ensure that we allow inline autocomplete when the text gets shorter but i s not an explicit 323 * Ensure that we allow inline autocomplete when the text gets shorter but i s not an explicit
308 * delete action by the user. 324 * delete action by the user.
309 * 325 *
310 * If you focus the omnibox and there is the selected text "[about:blank]", then typing new text 326 * If you focus the omnibox and there is the selected text "[about:blank]", then typing new text
311 * should clear that entirely and allow autocomplete on the newly entered te xt. 327 * should clear that entirely and allow autocomplete on the newly entered te xt.
312 * 328 *
313 * If we assume deletes happen any time the text gets shorter, then this wou ld be prevented. 329 * If we assume deletes happen any time the text gets shorter, then this wou ld be prevented.
314 */ 330 */
331 @Test
315 @SmallTest 332 @SmallTest
316 @Feature({"Omnibox"}) 333 @Feature({"Omnibox"})
317 @RetryOnFailure 334 @RetryOnFailure
318 public void testAutocompleteAllowedWhenReplacingText() 335 public void testAutocompleteAllowedWhenReplacingText()
319 throws InterruptedException, TimeoutException { 336 throws InterruptedException, TimeoutException {
320 startMainActivityOnBlankPage(); 337 mActivityTestRule.startMainActivityOnBlankPage();
321 338
322 final String textToBeEntered = "c"; 339 final String textToBeEntered = "c";
323 340
324 final CallbackHelper autocompleteHelper = new CallbackHelper(); 341 final CallbackHelper autocompleteHelper = new CallbackHelper();
325 final AtomicBoolean didPreventInlineAutocomplete = new AtomicBoolean(); 342 final AtomicBoolean didPreventInlineAutocomplete = new AtomicBoolean();
326 final StubAutocompleteController controller = new StubAutocompleteContro ller() { 343 final StubAutocompleteController controller = new StubAutocompleteContro ller() {
327 @Override 344 @Override
328 public void start(Profile profile, String url, String text, int curs orPosition, 345 public void start(Profile profile, String url, String text, int curs orPosition,
329 boolean preventInlineAutocomplete) { 346 boolean preventInlineAutocomplete) {
330 if (!TextUtils.equals(textToBeEntered, text)) return; 347 if (!TextUtils.equals(textToBeEntered, text)) return;
(...skipping 11 matching lines...) Expand all
342 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 359 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
343 @Override 360 @Override
344 public void run() { 361 public void run() {
345 urlBar.beginBatchEdit(); 362 urlBar.beginBatchEdit();
346 urlBar.setText(textToBeEntered); 363 urlBar.setText(textToBeEntered);
347 urlBar.setSelection(textToBeEntered.length()); 364 urlBar.setSelection(textToBeEntered.length());
348 urlBar.endBatchEdit(); 365 urlBar.endBatchEdit();
349 } 366 }
350 }); 367 });
351 autocompleteHelper.waitForCallback(0); 368 autocompleteHelper.waitForCallback(0);
352 assertFalse("Inline autocomplete incorrectly prevented.", 369 Assert.assertFalse(
353 didPreventInlineAutocomplete.get()); 370 "Inline autocomplete incorrectly prevented.", didPreventInlineAu tocomplete.get());
354 } 371 }
355 372
356 /** 373 /**
357 * Ensure that if the user deletes just the inlined autocomplete text that t he suggestions are 374 * Ensure that if the user deletes just the inlined autocomplete text that t he suggestions are
358 * regenerated. 375 * regenerated.
359 */ 376 */
377 @Test
360 @SmallTest 378 @SmallTest
361 @Feature({"Omnibox"}) 379 @Feature({"Omnibox"})
362 @RetryOnFailure 380 @RetryOnFailure
363 public void testSuggestionsUpdatedWhenDeletingInlineAutocomplete() 381 public void testSuggestionsUpdatedWhenDeletingInlineAutocomplete()
364 throws InterruptedException, TimeoutException { 382 throws InterruptedException, TimeoutException {
365 startMainActivityOnBlankPage(); 383 mActivityTestRule.startMainActivityOnBlankPage();
366 384
367 stubLocationBarAutocomplete(); 385 stubLocationBarAutocomplete();
368 final UrlBar urlBar = getUrlBar(); 386 final UrlBar urlBar = getUrlBar();
369 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 387 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
370 388
371 setTextAndVerifyNoAutocomplete(urlBar, "test"); 389 setTextAndVerifyNoAutocomplete(urlBar, "test");
372 setAutocomplete(urlBar, "test", "ing"); 390 setAutocomplete(urlBar, "test", "ing");
373 391
374 final CallbackHelper autocompleteHelper = new CallbackHelper(); 392 final CallbackHelper autocompleteHelper = new CallbackHelper();
375 final AtomicBoolean didPreventInlineAutocomplete = new AtomicBoolean(); 393 final AtomicBoolean didPreventInlineAutocomplete = new AtomicBoolean();
376 final StubAutocompleteController controller = new StubAutocompleteContro ller() { 394 final StubAutocompleteController controller = new StubAutocompleteContro ller() {
377 @Override 395 @Override
378 public void start(Profile profile, String url, String text, int curs orPosition, 396 public void start(Profile profile, String url, String text, int curs orPosition,
379 boolean preventInlineAutocomplete) { 397 boolean preventInlineAutocomplete) {
380 if (!TextUtils.equals("test", text)) return; 398 if (!TextUtils.equals("test", text)) return;
381 if (autocompleteHelper.getCallCount() != 0) return; 399 if (autocompleteHelper.getCallCount() != 0) return;
382 400
383 didPreventInlineAutocomplete.set(preventInlineAutocomplete); 401 didPreventInlineAutocomplete.set(preventInlineAutocomplete);
384 autocompleteHelper.notifyCalled(); 402 autocompleteHelper.notifyCalled();
385 } 403 }
386 }; 404 };
387 setAutocompleteController(controller); 405 setAutocompleteController(controller);
388 406
389 KeyUtils.singleKeyEventView(getInstrumentation(), urlBar, KeyEvent.KEYCO DE_DEL); 407 KeyUtils.singleKeyEventView(
408 InstrumentationRegistry.getInstrumentation(), urlBar, KeyEvent.K EYCODE_DEL);
390 409
391 CriteriaHelper.pollUiThread(Criteria.equals("test", new Callable<String> () { 410 CriteriaHelper.pollUiThread(Criteria.equals("test", new Callable<String> () {
392 @Override 411 @Override
393 public String call() throws Exception { 412 public String call() throws Exception {
394 return urlBar.getText().toString(); 413 return urlBar.getText().toString();
395 } 414 }
396 })); 415 }));
397 416
398 autocompleteHelper.waitForCallback(0); 417 autocompleteHelper.waitForCallback(0);
399 assertTrue("Inline autocomplete incorrectly allowed after delete.", 418 Assert.assertTrue("Inline autocomplete incorrectly allowed after delete. ",
400 didPreventInlineAutocomplete.get()); 419 didPreventInlineAutocomplete.get());
401 } 420 }
402 421
422 @Test
403 @SmallTest 423 @SmallTest
404 @Feature({"Omnibox"}) 424 @Feature({"Omnibox"})
405 @RetryOnFailure 425 @RetryOnFailure
406 public void testSelectionChangesIgnoredInBatchMode() throws InterruptedExcep tion { 426 public void testSelectionChangesIgnoredInBatchMode() throws InterruptedExcep tion {
407 startMainActivityOnBlankPage(); 427 mActivityTestRule.startMainActivityOnBlankPage();
408 stubLocationBarAutocomplete(); 428 stubLocationBarAutocomplete();
409 final UrlBar urlBar = getUrlBar(); 429 final UrlBar urlBar = getUrlBar();
410 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 430 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
411 431
412 setTextAndVerifyNoAutocomplete(urlBar, "test"); 432 setTextAndVerifyNoAutocomplete(urlBar, "test");
413 setAutocomplete(urlBar, "test", "ing is fun"); 433 setAutocomplete(urlBar, "test", "ing is fun");
414 434
415 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 435 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
416 @Override 436 @Override
417 public void run() { 437 public void run() {
418 urlBar.beginBatchEdit(); 438 urlBar.beginBatchEdit();
419 } 439 }
420 }); 440 });
421 // Ensure the autocomplete is not modified if in batch mode. 441 // Ensure the autocomplete is not modified if in batch mode.
422 AutocompleteState state = setSelection(urlBar, 1, 1); 442 AutocompleteState state = setSelection(urlBar, 1, 1);
423 assertTrue(state.hasAutocomplete); 443 Assert.assertTrue(state.hasAutocomplete);
424 assertEquals("test", state.textWithoutAutocomplete); 444 Assert.assertEquals("test", state.textWithoutAutocomplete);
425 assertEquals("testing is fun", state.textWithAutocomplete); 445 Assert.assertEquals("testing is fun", state.textWithAutocomplete);
426 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 446 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
427 @Override 447 @Override
428 public void run() { 448 public void run() {
429 urlBar.endBatchEdit(); 449 urlBar.endBatchEdit();
430 } 450 }
431 }); 451 });
432 452
433 // Ensure that after batch mode has ended that the autocomplete is clear ed due to the 453 // Ensure that after batch mode has ended that the autocomplete is clear ed due to the
434 // invalid selection range. 454 // invalid selection range.
435 state = getAutocompleteState(urlBar, null); 455 state = getAutocompleteState(urlBar, null);
436 assertFalse(state.hasAutocomplete); 456 Assert.assertFalse(state.hasAutocomplete);
437 assertEquals("test", state.textWithoutAutocomplete); 457 Assert.assertEquals("test", state.textWithoutAutocomplete);
438 assertEquals("test", state.textWithAutocomplete); 458 Assert.assertEquals("test", state.textWithAutocomplete);
439 } 459 }
440 460
461 @Test
441 @SmallTest 462 @SmallTest
442 @Feature({"Omnibox"}) 463 @Feature({"Omnibox"})
443 @RetryOnFailure 464 @RetryOnFailure
444 public void testBatchModeChangesTriggerCorrectSuggestions() throws Interrupt edException { 465 public void testBatchModeChangesTriggerCorrectSuggestions() throws Interrupt edException {
445 startMainActivityOnBlankPage(); 466 mActivityTestRule.startMainActivityOnBlankPage();
446 467
447 final AtomicReference<String> requestedAutocompleteText = new AtomicRefe rence<String>(); 468 final AtomicReference<String> requestedAutocompleteText = new AtomicRefe rence<String>();
448 final StubAutocompleteController controller = new StubAutocompleteContro ller() { 469 final StubAutocompleteController controller = new StubAutocompleteContro ller() {
449 @Override 470 @Override
450 public void start(Profile profile, String url, String text, int curs orPosition, 471 public void start(Profile profile, String url, String text, int curs orPosition,
451 boolean preventInlineAutocomplete) { 472 boolean preventInlineAutocomplete) {
452 requestedAutocompleteText.set(text); 473 requestedAutocompleteText.set(text);
453 } 474 }
454 }; 475 };
455 476
(...skipping 25 matching lines...) Expand all
481 }); 502 });
482 503
483 CriteriaHelper.pollUiThread(Criteria.equals("testy", new Callable<String >() { 504 CriteriaHelper.pollUiThread(Criteria.equals("testy", new Callable<String >() {
484 @Override 505 @Override
485 public String call() { 506 public String call() {
486 return requestedAutocompleteText.get(); 507 return requestedAutocompleteText.get();
487 } 508 }
488 })); 509 }));
489 } 510 }
490 511
512 @Test
491 @SmallTest 513 @SmallTest
492 @Feature("Omnibox") 514 @Feature("Omnibox")
493 @RetryOnFailure 515 @RetryOnFailure
494 public void testAutocompleteCorrectlyPerservedOnBatchMode() throws Interrupt edException { 516 public void testAutocompleteCorrectlyPerservedOnBatchMode() throws Interrupt edException {
495 startMainActivityOnBlankPage(); 517 mActivityTestRule.startMainActivityOnBlankPage();
496 stubLocationBarAutocomplete(); 518 stubLocationBarAutocomplete();
497 519
498 final UrlBar urlBar = getUrlBar(); 520 final UrlBar urlBar = getUrlBar();
499 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 521 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
500 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true); 522 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true);
501 523
502 // Valid case (cursor at the end of text, single character, matches prev ious autocomplete). 524 // Valid case (cursor at the end of text, single character, matches prev ious autocomplete).
503 setAutocomplete(urlBar, "g", "oogle.com"); 525 setAutocomplete(urlBar, "g", "oogle.com");
504 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() { 526 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() {
505 @Override 527 @Override
506 // TODO(crbug.com/635567): Fix this properly. 528 // TODO(crbug.com/635567): Fix this properly.
507 @SuppressLint("SetTextI18n") 529 @SuppressLint("SetTextI18n")
508 public void run() { 530 public void run() {
509 urlBar.beginBatchEdit(); 531 urlBar.beginBatchEdit();
510 urlBar.setText("go"); 532 urlBar.setText("go");
511 urlBar.setSelection(2); 533 urlBar.setSelection(2);
512 urlBar.endBatchEdit(); 534 urlBar.endBatchEdit();
513 } 535 }
514 }); 536 });
515 assertTrue(state.hasAutocomplete); 537 Assert.assertTrue(state.hasAutocomplete);
516 assertEquals("google.com", state.textWithAutocomplete); 538 Assert.assertEquals("google.com", state.textWithAutocomplete);
517 assertEquals("go", state.textWithoutAutocomplete); 539 Assert.assertEquals("go", state.textWithoutAutocomplete);
518 540
519 // Invalid case (cursor not at the end of the text) 541 // Invalid case (cursor not at the end of the text)
520 setAutocomplete(urlBar, "g", "oogle.com"); 542 setAutocomplete(urlBar, "g", "oogle.com");
521 state = getAutocompleteState(urlBar, new Runnable() { 543 state = getAutocompleteState(urlBar, new Runnable() {
522 @Override 544 @Override
523 // TODO(crbug.com/635567): Fix this properly. 545 // TODO(crbug.com/635567): Fix this properly.
524 @SuppressLint("SetTextI18n") 546 @SuppressLint("SetTextI18n")
525 public void run() { 547 public void run() {
526 urlBar.beginBatchEdit(); 548 urlBar.beginBatchEdit();
527 urlBar.setText("go"); 549 urlBar.setText("go");
528 urlBar.setSelection(0); 550 urlBar.setSelection(0);
529 urlBar.endBatchEdit(); 551 urlBar.endBatchEdit();
530 } 552 }
531 }); 553 });
532 assertFalse(state.hasAutocomplete); 554 Assert.assertFalse(state.hasAutocomplete);
533 555
534 // Invalid case (next character did not match previous autocomplete) 556 // Invalid case (next character did not match previous autocomplete)
535 setAutocomplete(urlBar, "g", "oogle.com"); 557 setAutocomplete(urlBar, "g", "oogle.com");
536 state = getAutocompleteState(urlBar, new Runnable() { 558 state = getAutocompleteState(urlBar, new Runnable() {
537 @Override 559 @Override
538 // TODO(crbug.com/635567): Fix this properly. 560 // TODO(crbug.com/635567): Fix this properly.
539 @SuppressLint("SetTextI18n") 561 @SuppressLint("SetTextI18n")
540 public void run() { 562 public void run() {
541 urlBar.beginBatchEdit(); 563 urlBar.beginBatchEdit();
542 urlBar.setText("ga"); 564 urlBar.setText("ga");
543 urlBar.setSelection(2); 565 urlBar.setSelection(2);
544 urlBar.endBatchEdit(); 566 urlBar.endBatchEdit();
545 } 567 }
546 }); 568 });
547 assertFalse(state.hasAutocomplete); 569 Assert.assertFalse(state.hasAutocomplete);
548 570
549 // Invalid case (multiple characters entered instead of 1) 571 // Invalid case (multiple characters entered instead of 1)
550 setAutocomplete(urlBar, "g", "oogle.com"); 572 setAutocomplete(urlBar, "g", "oogle.com");
551 state = getAutocompleteState(urlBar, new Runnable() { 573 state = getAutocompleteState(urlBar, new Runnable() {
552 @Override 574 @Override
553 // TODO(crbug.com/635567): Fix this properly. 575 // TODO(crbug.com/635567): Fix this properly.
554 @SuppressLint("SetTextI18n") 576 @SuppressLint("SetTextI18n")
555 public void run() { 577 public void run() {
556 urlBar.beginBatchEdit(); 578 urlBar.beginBatchEdit();
557 urlBar.setText("googl"); 579 urlBar.setText("googl");
558 urlBar.setSelection(5); 580 urlBar.setSelection(5);
559 urlBar.endBatchEdit(); 581 urlBar.endBatchEdit();
560 } 582 }
561 }); 583 });
562 assertFalse(state.hasAutocomplete); 584 Assert.assertFalse(state.hasAutocomplete);
563 } 585 }
564 586
587 @Test
565 @SmallTest 588 @SmallTest
566 @Feature("Omnibox") 589 @Feature("Omnibox")
567 @RetryOnFailure 590 @RetryOnFailure
568 public void testAutocompleteSpanClearedOnNonMatchingCommitText() throws Inte rruptedException { 591 public void testAutocompleteSpanClearedOnNonMatchingCommitText() throws Inte rruptedException {
569 startMainActivityOnBlankPage(); 592 mActivityTestRule.startMainActivityOnBlankPage();
570 593
571 stubLocationBarAutocomplete(); 594 stubLocationBarAutocomplete();
572 595
573 final UrlBar urlBar = getUrlBar(); 596 final UrlBar urlBar = getUrlBar();
574 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 597 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
575 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true); 598 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true);
576 599
577 setTextAndVerifyNoAutocomplete(urlBar, "a"); 600 setTextAndVerifyNoAutocomplete(urlBar, "a");
578 setAutocomplete(urlBar, "a", "mazon.com"); 601 setAutocomplete(urlBar, "a", "mazon.com");
579 602
580 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 603 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
581 @Override 604 @Override
582 public void run() { 605 public void run() {
583 urlBar.mInputConnection.beginBatchEdit(); 606 urlBar.mInputConnection.beginBatchEdit();
584 urlBar.mInputConnection.commitText("l", 1); 607 urlBar.mInputConnection.commitText("l", 1);
585 urlBar.mInputConnection.setComposingText("", 1); 608 urlBar.mInputConnection.setComposingText("", 1);
586 urlBar.mInputConnection.endBatchEdit(); 609 urlBar.mInputConnection.endBatchEdit();
587 } 610 }
588 }); 611 });
589 612
590 CriteriaHelper.pollUiThread(Criteria.equals("al", new Callable<String>() { 613 CriteriaHelper.pollUiThread(Criteria.equals("al", new Callable<String>() {
591 @Override 614 @Override
592 public String call() { 615 public String call() {
593 return urlBar.getText().toString(); 616 return urlBar.getText().toString();
594 } 617 }
595 })); 618 }));
596 } 619 }
597 620
621 @Test
598 @SmallTest 622 @SmallTest
599 @Feature({"Omnibox"}) 623 @Feature({"Omnibox"})
600 @RetryOnFailure 624 @RetryOnFailure
601 public void testAutocompleteUpdatedOnDefocus() throws InterruptedException { 625 public void testAutocompleteUpdatedOnDefocus() throws InterruptedException {
602 startMainActivityOnBlankPage(); 626 mActivityTestRule.startMainActivityOnBlankPage();
603 stubLocationBarAutocomplete(); 627 stubLocationBarAutocomplete();
604 final UrlBar urlBar = getUrlBar(); 628 final UrlBar urlBar = getUrlBar();
605 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 629 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
606 630
607 // Verify that defocusing the UrlBar clears the autocomplete. 631 // Verify that defocusing the UrlBar clears the autocomplete.
608 setTextAndVerifyNoAutocomplete(urlBar, "test"); 632 setTextAndVerifyNoAutocomplete(urlBar, "test");
609 setAutocomplete(urlBar, "test", "ing is fun"); 633 setAutocomplete(urlBar, "test", "ing is fun");
610 OmniboxTestUtils.toggleUrlBarFocus(urlBar, false); 634 OmniboxTestUtils.toggleUrlBarFocus(urlBar, false);
611 AutocompleteState state = getAutocompleteState(urlBar, null); 635 AutocompleteState state = getAutocompleteState(urlBar, null);
612 assertFalse(state.hasAutocomplete); 636 Assert.assertFalse(state.hasAutocomplete);
613 } 637 }
614 638
639 @Test
615 @SmallTest 640 @SmallTest
616 @Feature({"Omnibox"}) 641 @Feature({"Omnibox"})
617 @RetryOnFailure 642 @RetryOnFailure
618 public void testAutocompleteClearedOnComposition() 643 public void testAutocompleteClearedOnComposition()
619 throws InterruptedException, ExecutionException { 644 throws InterruptedException, ExecutionException {
620 startMainActivityOnBlankPage(); 645 mActivityTestRule.startMainActivityOnBlankPage();
621 stubLocationBarAutocomplete(); 646 stubLocationBarAutocomplete();
622 final UrlBar urlBar = getUrlBar(); 647 final UrlBar urlBar = getUrlBar();
623 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 648 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
624 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true); 649 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true);
625 650
626 setTextAndVerifyNoAutocomplete(urlBar, "test"); 651 setTextAndVerifyNoAutocomplete(urlBar, "test");
627 setAutocomplete(urlBar, "test", "ing is fun"); 652 setAutocomplete(urlBar, "test", "ing is fun");
628 653
629 assertNotNull(urlBar.mInputConnection); 654 Assert.assertNotNull(urlBar.mInputConnection);
630 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() { 655 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() {
631 @Override 656 @Override
632 public void run() { 657 public void run() {
633 urlBar.mInputConnection.setComposingText("ing compose", 4); 658 urlBar.mInputConnection.setComposingText("ing compose", 4);
634 } 659 }
635 }); 660 });
636 assertFalse(state.hasAutocomplete); 661 Assert.assertFalse(state.hasAutocomplete);
637 662
638 Editable urlText = getUrlBarText(urlBar); 663 Editable urlText = getUrlBarText(urlBar);
639 assertEquals("testing compose", urlText.toString()); 664 Assert.assertEquals("testing compose", urlText.toString());
640 // TODO(tedchoc): Investigate why this fails on x86. 665 // TODO(tedchoc): Investigate why this fails on x86.
641 //assertEquals(4, BaseInputConnection.getComposingSpanStart(urlText)); 666 //assertEquals(4, BaseInputConnection.getComposingSpanStart(urlText));
642 //assertEquals(15, BaseInputConnection.getComposingSpanEnd(urlText)); 667 //assertEquals(15, BaseInputConnection.getComposingSpanEnd(urlText));
643 } 668 }
644 669
670 @Test
645 @SmallTest 671 @SmallTest
646 @Feature("Omnibox") 672 @Feature("Omnibox")
647 @RetryOnFailure 673 @RetryOnFailure
648 @Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE}) // crbug.com/635714 674 @Restriction({RESTRICTION_TYPE_NON_LOW_END_DEVICE}) // crbug.com/635714
649 public void testDelayedCompositionCorrectedWithAutocomplete() 675 public void testDelayedCompositionCorrectedWithAutocomplete()
650 throws InterruptedException, ExecutionException { 676 throws InterruptedException, ExecutionException {
651 startMainActivityOnBlankPage(); 677 mActivityTestRule.startMainActivityOnBlankPage();
652 stubLocationBarAutocomplete(); 678 stubLocationBarAutocomplete();
653 679
654 final UrlBar urlBar = getUrlBar(); 680 final UrlBar urlBar = getUrlBar();
655 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 681 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
656 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true); 682 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true);
657 683
658 assertNotNull(urlBar.mInputConnection); 684 Assert.assertNotNull(urlBar.mInputConnection);
659 685
660 // Test with a single autocomplete 686 // Test with a single autocomplete
661 687
662 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f"); 688 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f");
663 setAutocomplete(urlBar, "chrome://f", "lags"); 689 setAutocomplete(urlBar, "chrome://f", "lags");
664 690
665 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() { 691 AutocompleteState state = getAutocompleteState(urlBar, new Runnable() {
666 @Override 692 @Override
667 public void run() { 693 public void run() {
668 urlBar.mInputConnection.setComposingRegion(13, 14); 694 urlBar.mInputConnection.setComposingRegion(13, 14);
669 urlBar.mInputConnection.setComposingText("f", 1); 695 urlBar.mInputConnection.setComposingText("f", 1);
670 } 696 }
671 }); 697 });
672 assertFalse(state.hasAutocomplete); 698 Assert.assertFalse(state.hasAutocomplete);
673 699
674 Editable urlText = getUrlBarText(urlBar); 700 Editable urlText = getUrlBarText(urlBar);
675 assertEquals("chrome://f", urlText.toString()); 701 Assert.assertEquals("chrome://f", urlText.toString());
676 assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 9); 702 Assert.assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 9);
677 assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 10); 703 Assert.assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 10 );
678 704
679 // Test with > 1 characters in composition. 705 // Test with > 1 characters in composition.
680 706
681 setTextAndVerifyNoAutocomplete(urlBar, "chrome://fl"); 707 setTextAndVerifyNoAutocomplete(urlBar, "chrome://fl");
682 setAutocomplete(urlBar, "chrome://fl", "ags"); 708 setAutocomplete(urlBar, "chrome://fl", "ags");
683 709
684 state = getAutocompleteState(urlBar, new Runnable() { 710 state = getAutocompleteState(urlBar, new Runnable() {
685 @Override 711 @Override
686 public void run() { 712 public void run() {
687 urlBar.mInputConnection.setComposingRegion(12, 14); 713 urlBar.mInputConnection.setComposingRegion(12, 14);
688 urlBar.mInputConnection.setComposingText("fl", 1); 714 urlBar.mInputConnection.setComposingText("fl", 1);
689 } 715 }
690 }); 716 });
691 assertFalse(state.hasAutocomplete); 717 Assert.assertFalse(state.hasAutocomplete);
692 718
693 urlText = getUrlBarText(urlBar); 719 urlText = getUrlBarText(urlBar);
694 assertEquals("chrome://fl", urlText.toString()); 720 Assert.assertEquals("chrome://fl", urlText.toString());
695 assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 9); 721 Assert.assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 9);
696 assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 11); 722 Assert.assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 11 );
697 723
698 // Test with non-matching composition. Should just append to the URL te xt. 724 // Test with non-matching composition. Should just append to the URL te xt.
699 725
700 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f"); 726 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f");
701 setAutocomplete(urlBar, "chrome://f", "lags"); 727 setAutocomplete(urlBar, "chrome://f", "lags");
702 728
703 state = getAutocompleteState(urlBar, new Runnable() { 729 state = getAutocompleteState(urlBar, new Runnable() {
704 @Override 730 @Override
705 public void run() { 731 public void run() {
706 urlBar.mInputConnection.setComposingRegion(13, 14); 732 urlBar.mInputConnection.setComposingRegion(13, 14);
707 urlBar.mInputConnection.setComposingText("g", 1); 733 urlBar.mInputConnection.setComposingText("g", 1);
708 } 734 }
709 }); 735 });
710 assertFalse(state.hasAutocomplete); 736 Assert.assertFalse(state.hasAutocomplete);
711 737
712 urlText = getUrlBarText(urlBar); 738 urlText = getUrlBarText(urlBar);
713 assertEquals("chrome://fg", urlText.toString()); 739 Assert.assertEquals("chrome://fg", urlText.toString());
714 assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 10); 740 Assert.assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 10);
715 assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 11); 741 Assert.assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 11 );
716 742
717 // Test with composition text that matches the entire text w/o autocompl ete. 743 // Test with composition text that matches the entire text w/o autocompl ete.
718 744
719 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f"); 745 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f");
720 setAutocomplete(urlBar, "chrome://f", "lags"); 746 setAutocomplete(urlBar, "chrome://f", "lags");
721 747
722 state = getAutocompleteState(urlBar, new Runnable() { 748 state = getAutocompleteState(urlBar, new Runnable() {
723 @Override 749 @Override
724 public void run() { 750 public void run() {
725 urlBar.mInputConnection.setComposingRegion(13, 14); 751 urlBar.mInputConnection.setComposingRegion(13, 14);
726 urlBar.mInputConnection.setComposingText("chrome://f", 1); 752 urlBar.mInputConnection.setComposingText("chrome://f", 1);
727 } 753 }
728 }); 754 });
729 assertFalse(state.hasAutocomplete); 755 Assert.assertFalse(state.hasAutocomplete);
730 756
731 urlText = getUrlBarText(urlBar); 757 urlText = getUrlBarText(urlBar);
732 assertEquals("chrome://f", urlText.toString()); 758 Assert.assertEquals("chrome://f", urlText.toString());
733 assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 0); 759 Assert.assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 0);
734 assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 10); 760 Assert.assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 10 );
735 761
736 // Test with composition text longer than the URL text. Shouldn't crash and should 762 // Test with composition text longer than the URL text. Shouldn't crash and should
737 // just append text. 763 // just append text.
738 764
739 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f"); 765 setTextAndVerifyNoAutocomplete(urlBar, "chrome://f");
740 setAutocomplete(urlBar, "chrome://f", "lags"); 766 setAutocomplete(urlBar, "chrome://f", "lags");
741 767
742 state = getAutocompleteState(urlBar, new Runnable() { 768 state = getAutocompleteState(urlBar, new Runnable() {
743 @Override 769 @Override
744 public void run() { 770 public void run() {
745 urlBar.mInputConnection.setComposingRegion(13, 14); 771 urlBar.mInputConnection.setComposingRegion(13, 14);
746 urlBar.mInputConnection.setComposingText("blahblahblah", 1); 772 urlBar.mInputConnection.setComposingText("blahblahblah", 1);
747 } 773 }
748 }); 774 });
749 assertFalse(state.hasAutocomplete); 775 Assert.assertFalse(state.hasAutocomplete);
750 776
751 urlText = getUrlBarText(urlBar); 777 urlText = getUrlBarText(urlBar);
752 assertEquals("chrome://fblahblahblah", urlText.toString()); 778 Assert.assertEquals("chrome://fblahblahblah", urlText.toString());
753 assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 10); 779 Assert.assertEquals(BaseInputConnection.getComposingSpanStart(urlText), 10);
754 assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 22); 780 Assert.assertEquals(BaseInputConnection.getComposingSpanEnd(urlText), 22 );
755 } 781 }
756 782
757 /** 783 /**
758 * Test to verify the omnibox can take focus during startup before native li braries have 784 * Test to verify the omnibox can take focus during startup before native li braries have
759 * loaded. 785 * loaded.
760 */ 786 */
787 @Test
761 @SmallTest 788 @SmallTest
762 @Feature({"Omnibox"}) 789 @Feature({"Omnibox"})
763 @RetryOnFailure 790 @RetryOnFailure
764 public void testFocusingOnStartup() throws InterruptedException { 791 public void testFocusingOnStartup() {
765 Intent intent = new Intent(Intent.ACTION_MAIN); 792 Intent intent = new Intent(Intent.ACTION_MAIN);
766 intent.addCategory(Intent.CATEGORY_LAUNCHER); 793 intent.addCategory(Intent.CATEGORY_LAUNCHER);
767 prepareUrlIntent(intent, "about:blank"); 794 mActivityTestRule.prepareUrlIntent(intent, "about:blank");
768 startActivityCompletely(intent); 795 mActivityTestRule.startActivityCompletely(intent);
769 796
770 UrlBar urlBar = getUrlBar(); 797 UrlBar urlBar = getUrlBar();
771 assertNotNull(urlBar); 798 Assert.assertNotNull(urlBar);
772 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true); 799 OmniboxTestUtils.toggleUrlBarFocus(urlBar, true);
773 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true); 800 OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, true);
774 } 801 }
775 802
803 @Test
776 @SmallTest 804 @SmallTest
777 @Feature({"Omnibox"}) 805 @Feature({"Omnibox"})
778 @RetryOnFailure 806 @RetryOnFailure
779 public void testCopyHuge() throws InterruptedException { 807 public void testCopyHuge() throws InterruptedException {
780 startMainActivityWithURL(HUGE_URL); 808 mActivityTestRule.startMainActivityWithURL(HUGE_URL);
781 OmniboxTestUtils.toggleUrlBarFocus(getUrlBar(), true); 809 OmniboxTestUtils.toggleUrlBarFocus(getUrlBar(), true);
782 assertEquals(HUGE_URL, copyUrlToClipboard(android.R.id.copy)); 810 Assert.assertEquals(HUGE_URL, copyUrlToClipboard(android.R.id.copy));
783 } 811 }
784 812
813 @Test
785 @SmallTest 814 @SmallTest
786 @Feature({"Omnibox"}) 815 @Feature({"Omnibox"})
787 @RetryOnFailure 816 @RetryOnFailure
788 public void testCutHuge() throws InterruptedException { 817 public void testCutHuge() throws InterruptedException {
789 startMainActivityWithURL(HUGE_URL); 818 mActivityTestRule.startMainActivityWithURL(HUGE_URL);
790 OmniboxTestUtils.toggleUrlBarFocus(getUrlBar(), true); 819 OmniboxTestUtils.toggleUrlBarFocus(getUrlBar(), true);
791 assertEquals(HUGE_URL, copyUrlToClipboard(android.R.id.cut)); 820 Assert.assertEquals(HUGE_URL, copyUrlToClipboard(android.R.id.cut));
792 } 821 }
793 822
794 /** 823 /**
795 * Clears the clipboard, executes specified action on the omnibox and 824 * Clears the clipboard, executes specified action on the omnibox and
796 * returns clipboard's content. Action can be either android.R.id.copy 825 * returns clipboard's content. Action can be either android.R.id.copy
797 * or android.R.id.cut. 826 * or android.R.id.cut.
798 */ 827 */
799 private String copyUrlToClipboard(final int action) { 828 private String copyUrlToClipboard(final int action) {
800 ClipboardManager clipboardManager = (ClipboardManager) 829 return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<String> () {
801 getActivity().getSystemService(Context.CLIPBOARD_SERVICE); 830 @Override
831 public String call() {
832 ClipboardManager clipboardManager =
833 (ClipboardManager) mActivityTestRule.getActivity().getSy stemService(
834 Context.CLIPBOARD_SERVICE);
802 835
803 clipboardManager.setPrimaryClip(ClipData.newPlainText(null, "")); 836 clipboardManager.setPrimaryClip(ClipData.newPlainText(null, "")) ;
804 837
805 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 838
806 @Override 839 Assert.assertTrue(getUrlBar().onTextContextMenuItem(action));
807 public void run() { 840 ClipData clip = clipboardManager.getPrimaryClip();
808 assertTrue(getUrlBar().onTextContextMenuItem(action)); 841 CharSequence text = (clip != null && clip.getItemCount() != 0)
842 ? clip.getItemAt(0).getText() : null;
843 return text != null ? text.toString() : null;
844
809 } 845 }
810 }); 846 });
811 847
812 ClipData clip = clipboardManager.getPrimaryClip();
813 CharSequence text = (clip != null && clip.getItemCount() != 0)
814 ? clip.getItemAt(0).getText() : null;
815 return text != null ? text.toString() : null;
816 } 848 }
817 849
818 @Override 850 @Before
819 public void startMainActivity() throws InterruptedException { 851 public void setUp() throws InterruptedException {
820 // Each test will start the activity. 852 // Each test will start the activity.
821 } 853 }
822 } 854 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698