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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java

Issue 2863583002: Convert WebappActivityTestBase and direct children to JUnit4. (Closed)
Patch Set: Merge Created 3 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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.webapps; 5 package org.chromium.chrome.browser.webapps;
6 6
7 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; 7 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
8 8
9 import android.content.Intent; 9 import android.content.Intent;
10 import android.net.Uri; 10 import android.net.Uri;
11 import android.view.ViewGroup; 11 import android.view.ViewGroup;
12 12
13 import org.junit.Assert;
14 import org.junit.runner.Description;
15 import org.junit.runners.model.Statement;
16
17 import org.chromium.base.test.util.UrlUtils;
13 import org.chromium.chrome.browser.ShortcutHelper; 18 import org.chromium.chrome.browser.ShortcutHelper;
14 import org.chromium.chrome.test.ChromeActivityTestCaseBase; 19 import org.chromium.chrome.test.ChromeActivityTestRule;
15 import org.chromium.content.browser.test.util.Criteria; 20 import org.chromium.content.browser.test.util.Criteria;
16 import org.chromium.content.browser.test.util.CriteriaHelper; 21 import org.chromium.content.browser.test.util.CriteriaHelper;
17 22
18 /** 23 /**
19 * The base class of the WebappActivity tests. It provides the common methods to access the activity 24 * Custom {@link ChromeActivityTestRule} for tests using {@link WebappActivity}.
20 * UI. This particular test base only instantiates WebappActivity0.
21 */ 25 */
22 public abstract class WebappActivityTestBase extends ChromeActivityTestCaseBase< WebappActivity0> { 26 public class WebappActivityTestRule extends ChromeActivityTestRule<WebappActivit y0> {
23 static final String WEBAPP_ID = "webapp_id"; 27 public static final String WEBAPP_ID = "webapp_id";
24 static final String WEBAPP_NAME = "webapp name"; 28 public static final String WEBAPP_NAME = "webapp name";
25 static final String WEBAPP_SHORT_NAME = "webapp short name"; 29 public static final String WEBAPP_SHORT_NAME = "webapp short name";
26 30
27 private static final long STARTUP_TIMEOUT = scaleTimeout(10000); 31 private static final long STARTUP_TIMEOUT = scaleTimeout(10000);
28 32
29 // Empty 192x192 image generated with: 33 // Empty 192x192 image generated with:
30 // ShortcutHelper.encodeBitmapAsString(Bitmap.createBitmap(192, 192, Bitmap. Config.ARGB_4444)); 34 // ShortcutHelper.encodeBitmapAsString(Bitmap.createBitmap(192, 192, Bitmap. Config.ARGB_4444));
31 protected static final String TEST_ICON = 35 public static final String TEST_ICON =
32 "iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAABHNCSVQICAgIfAhkiAA AAKZJREFU" 36 "iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAABHNCSVQICAgIfAhkiAA AAKZJREFU"
33 + "eJztwTEBAAAAwqD1T20JT6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 37 + "eJztwTEBAAAAwqD1T20JT6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
34 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 38 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
35 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4GQ N4AAe3mX6IA" 39 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4GQ N4AAe3mX6IA"
36 + "AAAASUVORK5CYII="; 40 + "AAAASUVORK5CYII=";
37 41
38 // Empty 512x512 image generated with: 42 // Empty 512x512 image generated with:
39 // ShortcutHelper.encodeBitmapAsString(Bitmap.createBitmap(512, 512, Bitmap. Config.ARGB_4444)); 43 // ShortcutHelper.encodeBitmapAsString(Bitmap.createBitmap(512, 512, Bitmap. Config.ARGB_4444));
40 protected static final String TEST_SPLASH_ICON = 44 public static final String TEST_SPLASH_ICON =
41 "iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAA ABA9JREFU" 45 "iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAA ABA9JREFU"
42 + "eJztwTEBAAAAwqD1T20Hb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 46 + "eJztwTEBAAAAwqD1T20Hb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
43 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 47 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
44 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 48 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
45 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 49 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
46 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 50 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
47 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 51 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
48 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 52 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
49 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 53 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
50 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 54 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
51 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 55 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
52 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 56 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
53 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 57 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
54 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 58 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
55 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 59 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
56 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 60 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
57 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 61 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
58 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 62 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
59 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA" 63 + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA"
60 + "AAAAAAAAAOA3AvAAAdln8YgAAAAASUVORK5CYII="; 64 + "AAAAAAAAAOA3AvAAAdln8YgAAAAASUVORK5CYII=";
61 65
62 public WebappActivityTestBase() { 66 public WebappActivityTestRule() {
63 super(WebappActivity0.class); 67 super(WebappActivity0.class);
64 } 68 }
65 69
66 /** 70 /**
67 * Creates the Intent that starts the WebAppActivity. This is meant to be ov erriden by other 71 * Creates the Intent that starts the WebAppActivity. This is meant to be ov erriden by other
68 * tests in order for them to pass some specific values, but it defaults to a web app that just 72 * tests in order for them to pass some specific values, but it defaults to a web app that just
69 * loads about:blank to avoid a network load. This results in the URL bar s howing because 73 * loads about:blank to avoid a network load. This results in the URL bar s howing because
70 * {@link UrlUtils} cannot parse this type of URL. 74 * {@link UrlUtils} cannot parse this type of URL.
71 */ 75 */
72 protected Intent createIntent() { 76 public Intent createIntent() {
73 Intent intent = new Intent(getInstrumentation().getTargetContext(), Weba ppActivity0.class); 77 Intent intent = new Intent(getInstrumentation().getTargetContext(), Weba ppActivity0.class);
74 intent.setData(Uri.parse(WebappActivity.WEBAPP_SCHEME + "://" + WEBAPP_I D)); 78 intent.setData(Uri.parse(WebappActivity.WEBAPP_SCHEME + "://" + WEBAPP_I D));
75 intent.putExtra(ShortcutHelper.EXTRA_ID, WEBAPP_ID); 79 intent.putExtra(ShortcutHelper.EXTRA_ID, WEBAPP_ID);
76 intent.putExtra(ShortcutHelper.EXTRA_URL, "about:blank"); 80 intent.putExtra(ShortcutHelper.EXTRA_URL, "about:blank");
77 intent.putExtra(ShortcutHelper.EXTRA_NAME, WEBAPP_NAME); 81 intent.putExtra(ShortcutHelper.EXTRA_NAME, WEBAPP_NAME);
78 intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, WEBAPP_SHORT_NAME); 82 intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, WEBAPP_SHORT_NAME);
79 return intent; 83 return intent;
80 } 84 }
81 85
82 @Override 86 @Override
83 protected void setUp() throws Exception { 87 public Statement apply(final Statement base, Description description) {
84 super.setUp(); 88 return new Statement() {
89 @Override
90 public void evaluate() throws Throwable {
91 // Register the webapp so when the data storage is opened, the t est doesn't crash.
92 WebappRegistry.refreshSharedPrefsForTesting();
93 TestFetchStorageCallback callback = new TestFetchStorageCallback ();
94 WebappRegistry.getInstance().register(WEBAPP_ID, callback);
95 callback.waitForCallback(0);
96 callback.getStorage().updateFromShortcutIntent(createIntent());
85 97
86 // Register the webapp so when the data storage is opened, the test does n't crash. 98 base.evaluate();
87 WebappRegistry.refreshSharedPrefsForTesting(); 99 }
88 TestFetchStorageCallback callback = new TestFetchStorageCallback(); 100 };
89 WebappRegistry.getInstance().register(WEBAPP_ID, callback);
90 callback.waitForCallback(0);
91 callback.getStorage().updateFromShortcutIntent(createIntent());
92 } 101 }
93 102
94 /** 103 /**
95 * Starts up the WebappActivity and sets up the test observer. 104 * Starts up the WebappActivity and sets up the test observer.
96 */ 105 */
97 protected final void startWebappActivity() throws Exception { 106 public final void startWebappActivity() throws Exception {
98 startWebappActivity(createIntent()); 107 startWebappActivity(createIntent());
99 } 108 }
100 109
101 /** 110 /**
102 * Starts up the WebappActivity with a specific Intent and sets up the test observer. 111 * Starts up the WebappActivity with a specific Intent and sets up the test observer.
103 */ 112 */
104 protected final void startWebappActivity(Intent intent) throws Exception { 113 public final void startWebappActivity(Intent intent) throws Exception {
105 setActivityIntent(intent); 114 launchActivity(intent);
106 waitUntilIdle(); 115 waitUntilIdle();
107 } 116 }
108 117
109 /** 118 /**
110 * Waits until any loads in progress have completed. 119 * Waits until any loads in progress have completed.
111 */ 120 */
112 protected void waitUntilIdle() { 121 public void waitUntilIdle() {
113 getInstrumentation().waitForIdleSync(); 122 getInstrumentation().waitForIdleSync();
114 CriteriaHelper.pollInstrumentationThread(new Criteria() { 123 CriteriaHelper.pollInstrumentationThread(new Criteria() {
115 @Override 124 @Override
116 public boolean isSatisfied() { 125 public boolean isSatisfied() {
117 return getActivity().getActivityTab() != null 126 return getActivity().getActivityTab() != null
118 && !getActivity().getActivityTab().isLoading(); 127 && !getActivity().getActivityTab().isLoading();
119 } 128 }
120 }, STARTUP_TIMEOUT, CriteriaHelper.DEFAULT_POLLING_INTERVAL); 129 }, STARTUP_TIMEOUT, CriteriaHelper.DEFAULT_POLLING_INTERVAL);
121 130
122 getInstrumentation().waitForIdleSync(); 131 getInstrumentation().waitForIdleSync();
123 } 132 }
124 133
125 @Override
126 public final void startMainActivity() throws InterruptedException {
127 // Do nothing; the WebappActivity may not have been completely set up, y et.
128 }
129
130 /** 134 /**
131 * Waits for the splash screen to be hidden. 135 * Waits for the splash screen to be hidden.
132 */ 136 */
133 protected void waitUntilSplashscreenHides() { 137 public void waitUntilSplashscreenHides() {
134 CriteriaHelper.pollInstrumentationThread(new Criteria() { 138 CriteriaHelper.pollInstrumentationThread(new Criteria() {
135 @Override 139 @Override
136 public boolean isSatisfied() { 140 public boolean isSatisfied() {
137 return !getActivity().isSplashScreenVisibleForTests(); 141 return !getActivity().isSplashScreenVisibleForTests();
138 } 142 }
139 }); 143 });
140 } 144 }
141 145
142 protected ViewGroup waitUntilSplashScreenAppears() { 146 public ViewGroup waitUntilSplashScreenAppears() {
143 CriteriaHelper.pollInstrumentationThread(new Criteria() { 147 CriteriaHelper.pollInstrumentationThread(new Criteria() {
144 @Override 148 @Override
145 public boolean isSatisfied() { 149 public boolean isSatisfied() {
146 return getActivity().getSplashScreenForTests() != null; 150 return getActivity().getSplashScreenForTests() != null;
147 } 151 }
148 }); 152 });
149 153
150 ViewGroup splashScreen = getActivity().getSplashScreenForTests(); 154 ViewGroup splashScreen = getActivity().getSplashScreenForTests();
151 if (splashScreen == null) { 155 if (splashScreen == null) {
152 fail("No splash screen available."); 156 Assert.fail("No splash screen available.");
153 } 157 }
154 return splashScreen; 158 return splashScreen;
155 } 159 }
156 } 160 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698