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

Side by Side Diff: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeArrayTest.java

Issue 2708243004: Auto convert content shell tests to JUnit4 (Closed)
Patch Set: Remove test that failed 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 2012 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.content.browser; 5 package org.chromium.content.browser;
6 6
7 import android.support.test.filters.SmallTest; 7 import android.support.test.filters.SmallTest;
8 8
9 import org.chromium.base.annotations.SuppressFBWarnings; 9 import org.chromium.base.annotations.SuppressFBWarnings;
10 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
11 import org.chromium.content.browser.JavaBridgeActivityTestRule.Controller;
12 import org.junit.Rule;
13 import org.junit.Test;
14 import org.chromium.base.test.BaseJUnit4ClassRunner;
15 import org.junit.runner.RunWith;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.chromium.content.browser.JavaBridgeActivityTestRule;
11 19
12 /** 20 /**
13 * Part of the test suite for the Java Bridge. This class tests the general use of arrays. 21 * Part of the test suite for the Java Bridge. This class tests the general use of arrays.
14 * 22 *
15 * The conversions should follow 23 * The conversions should follow
16 * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in 24 * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in
17 * which the implementation differs from the spec are marked with 25 * which the implementation differs from the spec are marked with
18 * LIVECONNECT_COMPLIANCE. 26 * LIVECONNECT_COMPLIANCE.
19 * FIXME: Consider making our implementation more compliant, if it will not 27 * FIXME: Consider making our implementation more compliant, if it will not
20 * break backwards-compatibility. See b/4408210. 28 * break backwards-compatibility. See b/4408210.
21 */ 29 */
22 public class JavaBridgeArrayTest extends JavaBridgeTestBase { 30 @RunWith(BaseJUnit4ClassRunner.class)
31 public class JavaBridgeArrayTest {
32
33 @Rule
34 public JavaBridgeActivityTestRule mActivityTestRule = new JavaBridgeActivity TestRule();
23 @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD") 35 @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD")
24 private static class TestObject extends Controller { 36 private static class TestObject extends Controller {
25 private boolean mBooleanValue; 37 private boolean mBooleanValue;
26 private int mIntValue; 38 private int mIntValue;
27 private String mStringValue; 39 private String mStringValue;
28 40
29 private int[] mIntArray; 41 private int[] mIntArray;
30 private int[][] mIntIntArray; 42 private int[][] mIntIntArray;
31 43
32 private boolean mWasArrayMethodCalled; 44 private boolean mWasArrayMethodCalled;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 return new int[] {42, 43, 44}; 92 return new int[] {42, 43, 44};
81 } 93 }
82 94
83 public synchronized boolean wasArrayMethodCalled() { 95 public synchronized boolean wasArrayMethodCalled() {
84 return mWasArrayMethodCalled; 96 return mWasArrayMethodCalled;
85 } 97 }
86 } 98 }
87 99
88 private TestObject mTestObject; 100 private TestObject mTestObject;
89 101
90 @Override 102 @Before
91 protected void setUp() throws Exception { 103
92 super.setUp(); 104 public void setUp() throws Exception {
93 mTestObject = new TestObject(); 105 mTestObject = new TestObject();
94 injectObjectAndReload(mTestObject, "testObject"); 106 mActivityTestRule.injectObjectAndReload(mTestObject, "testObject");
95 } 107 }
96 108
109 @Test
97 @SmallTest 110 @SmallTest
98 @Feature({"AndroidWebView", "Android-JavaBridge"}) 111 @Feature({"AndroidWebView", "Android-JavaBridge"})
99 public void testArrayLength() throws Throwable { 112 public void testArrayLength() throws Throwable {
100 executeJavaScript("testObject.setIntArray([42, 43, 44]);"); 113 mActivityTestRule.executeJavaScript("testObject.setIntArray([42, 43, 44] );");
101 int[] result = mTestObject.waitForIntArray(); 114 int[] result = mTestObject.waitForIntArray();
102 assertEquals(3, result.length); 115 Assert.assertEquals(3, result.length);
103 assertEquals(42, result[0]); 116 Assert.assertEquals(42, result[0]);
104 assertEquals(43, result[1]); 117 Assert.assertEquals(43, result[1]);
105 assertEquals(44, result[2]); 118 Assert.assertEquals(44, result[2]);
106 } 119 }
107 120
121 @Test
108 @SmallTest 122 @SmallTest
109 @Feature({"AndroidWebView", "Android-JavaBridge"}) 123 @Feature({"AndroidWebView", "Android-JavaBridge"})
110 public void testPassNull() throws Throwable { 124 public void testPassNull() throws Throwable {
111 executeJavaScript("testObject.setIntArray(null);"); 125 mActivityTestRule.executeJavaScript("testObject.setIntArray(null);");
112 assertNull(mTestObject.waitForIntArray()); 126 Assert.assertNull(mTestObject.waitForIntArray());
113 } 127 }
114 128
129 @Test
115 @SmallTest 130 @SmallTest
116 @Feature({"AndroidWebView", "Android-JavaBridge"}) 131 @Feature({"AndroidWebView", "Android-JavaBridge"})
117 public void testPassUndefined() throws Throwable { 132 public void testPassUndefined() throws Throwable {
118 executeJavaScript("testObject.setIntArray(undefined);"); 133 mActivityTestRule.executeJavaScript("testObject.setIntArray(undefined);" );
119 assertNull(mTestObject.waitForIntArray()); 134 Assert.assertNull(mTestObject.waitForIntArray());
120 } 135 }
121 136
137 @Test
122 @SmallTest 138 @SmallTest
123 @Feature({"AndroidWebView", "Android-JavaBridge"}) 139 @Feature({"AndroidWebView", "Android-JavaBridge"})
124 public void testPassEmptyArray() throws Throwable { 140 public void testPassEmptyArray() throws Throwable {
125 executeJavaScript("testObject.setIntArray([]);"); 141 mActivityTestRule.executeJavaScript("testObject.setIntArray([]);");
126 assertEquals(0, mTestObject.waitForIntArray().length); 142 Assert.assertEquals(0, mTestObject.waitForIntArray().length);
127 } 143 }
128 144
129 // Note that this requires being able to pass a string from JavaScript to 145 // Note that this requires being able to pass a string from JavaScript to
130 // Java. 146 // Java.
147 @Test
131 @SmallTest 148 @SmallTest
132 @Feature({"AndroidWebView", "Android-JavaBridge"}) 149 @Feature({"AndroidWebView", "Android-JavaBridge"})
133 public void testPassArrayToStringMethod() throws Throwable { 150 public void testPassArrayToStringMethod() throws Throwable {
134 // LIVECONNECT_COMPLIANCE: Should call toString() on array. 151 // LIVECONNECT_COMPLIANCE: Should call toString() on array.
135 executeJavaScript("testObject.setStringValue([42, 42, 42]);"); 152 mActivityTestRule.executeJavaScript("testObject.setStringValue([42, 42, 42]);");
136 assertEquals("undefined", mTestObject.waitForStringValue()); 153 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
137 } 154 }
138 155
139 // Note that this requires being able to pass an integer from JavaScript to 156 // Note that this requires being able to pass an integer from JavaScript to
140 // Java. 157 // Java.
158 @Test
141 @SmallTest 159 @SmallTest
142 @Feature({"AndroidWebView", "Android-JavaBridge"}) 160 @Feature({"AndroidWebView", "Android-JavaBridge"})
143 public void testPassArrayToNonStringNonArrayMethod() throws Throwable { 161 public void testPassArrayToNonStringNonArrayMethod() throws Throwable {
144 // LIVECONNECT_COMPLIANCE: Should raise JavaScript exception. 162 // LIVECONNECT_COMPLIANCE: Should raise JavaScript exception.
145 executeJavaScript("testObject.setIntValue([42, 42, 42]);"); 163 mActivityTestRule.executeJavaScript("testObject.setIntValue([42, 42, 42] );");
146 assertEquals(0, mTestObject.waitForIntValue()); 164 Assert.assertEquals(0, mTestObject.waitForIntValue());
147 } 165 }
148 166
167 @Test
149 @SmallTest 168 @SmallTest
150 @Feature({"AndroidWebView", "Android-JavaBridge"}) 169 @Feature({"AndroidWebView", "Android-JavaBridge"})
151 public void testPassNonArrayToArrayMethod() throws Throwable { 170 public void testPassNonArrayToArrayMethod() throws Throwable {
152 // LIVECONNECT_COMPLIANCE: Should raise JavaScript exception. 171 // LIVECONNECT_COMPLIANCE: Should raise JavaScript exception.
153 executeJavaScript("testObject.setIntArray(42);"); 172 mActivityTestRule.executeJavaScript("testObject.setIntArray(42);");
154 assertNull(mTestObject.waitForIntArray()); 173 Assert.assertNull(mTestObject.waitForIntArray());
155 } 174 }
156 175
176 @Test
157 @SmallTest 177 @SmallTest
158 @Feature({"AndroidWebView", "Android-JavaBridge"}) 178 @Feature({"AndroidWebView", "Android-JavaBridge"})
159 public void testObjectWithLengthProperty() throws Throwable { 179 public void testObjectWithLengthProperty() throws Throwable {
160 executeJavaScript("testObject.setIntArray({length: 3, 1: 42});"); 180 mActivityTestRule.executeJavaScript("testObject.setIntArray({length: 3, 1: 42});");
161 int[] result = mTestObject.waitForIntArray(); 181 int[] result = mTestObject.waitForIntArray();
162 assertEquals(3, result.length); 182 Assert.assertEquals(3, result.length);
163 assertEquals(0, result[0]); 183 Assert.assertEquals(0, result[0]);
164 assertEquals(42, result[1]); 184 Assert.assertEquals(42, result[1]);
165 assertEquals(0, result[2]); 185 Assert.assertEquals(0, result[2]);
166 } 186 }
167 187
188 @Test
168 @SmallTest 189 @SmallTest
169 @Feature({"AndroidWebView", "Android-JavaBridge"}) 190 @Feature({"AndroidWebView", "Android-JavaBridge"})
170 public void testNonNumericLengthProperty() throws Throwable { 191 public void testNonNumericLengthProperty() throws Throwable {
171 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we 192 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we
172 // should raise a JavaScript exception. 193 // should raise a JavaScript exception.
173 executeJavaScript("testObject.setIntArray({length: \"foo\"});"); 194 mActivityTestRule.executeJavaScript("testObject.setIntArray({length: \"f oo\"});");
174 assertNull(mTestObject.waitForIntArray()); 195 Assert.assertNull(mTestObject.waitForIntArray());
175 } 196 }
176 197
198 @Test
177 @SmallTest 199 @SmallTest
178 @Feature({"AndroidWebView", "Android-JavaBridge"}) 200 @Feature({"AndroidWebView", "Android-JavaBridge"})
179 public void testLengthOutOfBounds() throws Throwable { 201 public void testLengthOutOfBounds() throws Throwable {
180 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we 202 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we
181 // should raise a JavaScript exception. 203 // should raise a JavaScript exception.
182 executeJavaScript("testObject.setIntArray({length: -1});"); 204 mActivityTestRule.executeJavaScript("testObject.setIntArray({length: -1} );");
183 assertNull(mTestObject.waitForIntArray()); 205 Assert.assertNull(mTestObject.waitForIntArray());
184 206
185 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we 207 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we
186 // should raise a JavaScript exception. 208 // should raise a JavaScript exception.
187 long length = Integer.MAX_VALUE + 1L; 209 long length = Integer.MAX_VALUE + 1L;
188 executeJavaScript("testObject.setIntArray({length: " + length + "});"); 210 mActivityTestRule.executeJavaScript("testObject.setIntArray({length: " + length + "});");
189 assertNull(mTestObject.waitForIntArray()); 211 Assert.assertNull(mTestObject.waitForIntArray());
190 212
191 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we 213 // LIVECONNECT_COMPLIANCE: This should not count as an array, so we
192 // should raise a JavaScript exception. 214 // should raise a JavaScript exception.
193 length = Integer.MAX_VALUE + 1L - Integer.MIN_VALUE + 1L; 215 length = Integer.MAX_VALUE + 1L - Integer.MIN_VALUE + 1L;
194 executeJavaScript("testObject.setIntArray({length: " + length + "});"); 216 mActivityTestRule.executeJavaScript("testObject.setIntArray({length: " + length + "});");
195 assertNull(mTestObject.waitForIntArray()); 217 Assert.assertNull(mTestObject.waitForIntArray());
196 } 218 }
197 219
220 @Test
198 @SmallTest 221 @SmallTest
199 @Feature({"AndroidWebView", "Android-JavaBridge"}) 222 @Feature({"AndroidWebView", "Android-JavaBridge"})
200 public void testSparseArray() throws Throwable { 223 public void testSparseArray() throws Throwable {
201 executeJavaScript("var x = [42, 43]; x[3] = 45; testObject.setIntArray(x );"); 224 mActivityTestRule.executeJavaScript("var x = [42, 43]; x[3] = 45; testOb ject.setIntArray(x);");
202 int[] result = mTestObject.waitForIntArray(); 225 int[] result = mTestObject.waitForIntArray();
203 assertEquals(4, result.length); 226 Assert.assertEquals(4, result.length);
204 assertEquals(42, result[0]); 227 Assert.assertEquals(42, result[0]);
205 assertEquals(43, result[1]); 228 Assert.assertEquals(43, result[1]);
206 assertEquals(0, result[2]); 229 Assert.assertEquals(0, result[2]);
207 assertEquals(45, result[3]); 230 Assert.assertEquals(45, result[3]);
208 } 231 }
209 232
210 // Note that this requires being able to pass a boolean from JavaScript to 233 // Note that this requires being able to pass a boolean from JavaScript to
211 // Java. 234 // Java.
235 @Test
212 @SmallTest 236 @SmallTest
213 @Feature({"AndroidWebView", "Android-JavaBridge"}) 237 @Feature({"AndroidWebView", "Android-JavaBridge"})
214 public void testMethodReturningArrayNotCalled() throws Throwable { 238 public void testMethodReturningArrayNotCalled() throws Throwable {
215 // We don't invoke methods which return arrays, but note that no 239 // We don't invoke methods which return arrays, but note that no
216 // exception is raised. 240 // exception is raised.
217 // LIVECONNECT_COMPLIANCE: Should call method and convert result to 241 // LIVECONNECT_COMPLIANCE: Should call method and convert result to
218 // JavaScript array. 242 // JavaScript array.
219 executeJavaScript("testObject.setBooleanValue(undefined === testObject.a rrayMethod())"); 243 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(undefine d === testObject.arrayMethod())");
220 assertTrue(mTestObject.waitForBooleanValue()); 244 Assert.assertTrue(mTestObject.waitForBooleanValue());
221 assertFalse(mTestObject.wasArrayMethodCalled()); 245 Assert.assertFalse(mTestObject.wasArrayMethodCalled());
222 } 246 }
223 247
248 @Test
224 @SmallTest 249 @SmallTest
225 @Feature({"AndroidWebView", "Android-JavaBridge"}) 250 @Feature({"AndroidWebView", "Android-JavaBridge"})
226 public void testMultiDimensionalArrayMethod() throws Throwable { 251 public void testMultiDimensionalArrayMethod() throws Throwable {
227 // LIVECONNECT_COMPLIANCE: Should handle multi-dimensional arrays. 252 // LIVECONNECT_COMPLIANCE: Should handle multi-dimensional arrays.
228 executeJavaScript("testObject.setIntIntArray([ [42, 43], [44, 45] ]);"); 253 mActivityTestRule.executeJavaScript("testObject.setIntIntArray([ [42, 43 ], [44, 45] ]);");
229 assertNull(mTestObject.waitForIntIntArray()); 254 Assert.assertNull(mTestObject.waitForIntIntArray());
230 } 255 }
231 256
257 @Test
232 @SmallTest 258 @SmallTest
233 @Feature({"AndroidWebView", "Android-JavaBridge"}) 259 @Feature({"AndroidWebView", "Android-JavaBridge"})
234 public void testPassMultiDimensionalArray() throws Throwable { 260 public void testPassMultiDimensionalArray() throws Throwable {
235 // LIVECONNECT_COMPLIANCE: Should handle multi-dimensional arrays. 261 // LIVECONNECT_COMPLIANCE: Should handle multi-dimensional arrays.
236 executeJavaScript("testObject.setIntArray([ [42, 43], [44, 45] ]);"); 262 mActivityTestRule.executeJavaScript("testObject.setIntArray([ [42, 43], [44, 45] ]);");
237 int[] result = mTestObject.waitForIntArray(); 263 int[] result = mTestObject.waitForIntArray();
238 assertEquals(2, result.length); 264 Assert.assertEquals(2, result.length);
239 assertEquals(0, result[0]); 265 Assert.assertEquals(0, result[0]);
240 assertEquals(0, result[1]); 266 Assert.assertEquals(0, result[1]);
241 } 267 }
242 268
243 // Verify that ArrayBuffers are not converted into arrays when passed to Jav a. 269 // Verify that ArrayBuffers are not converted into arrays when passed to Jav a.
244 // The LiveConnect spec doesn't mention ArrayBuffers, so it doesn't seem to 270 // The LiveConnect spec doesn't mention ArrayBuffers, so it doesn't seem to
245 // be a compliance issue. 271 // be a compliance issue.
272 @Test
246 @SmallTest 273 @SmallTest
247 @Feature({"AndroidWebView", "Android-JavaBridge"}) 274 @Feature({"AndroidWebView", "Android-JavaBridge"})
248 public void testPassArrayBuffer() throws Throwable { 275 public void testPassArrayBuffer() throws Throwable {
249 executeJavaScript("buffer = new ArrayBuffer(16);"); 276 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(16);");
250 executeJavaScript("testObject.setIntArray(buffer);"); 277 mActivityTestRule.executeJavaScript("testObject.setIntArray(buffer);");
251 assertNull(mTestObject.waitForIntArray()); 278 Assert.assertNull(mTestObject.waitForIntArray());
252 } 279 }
253 280
254 // Verify that ArrayBufferViews are not converted into arrays when passed to Java. 281 // Verify that ArrayBufferViews are not converted into arrays when passed to Java.
255 // The LiveConnect spec doesn't mention ArrayBufferViews, so it doesn't seem to 282 // The LiveConnect spec doesn't mention ArrayBufferViews, so it doesn't seem to
256 // be a compliance issue. 283 // be a compliance issue.
257 // Here, a DataView is used as an ArrayBufferView instance (since the latter is 284 // Here, a DataView is used as an ArrayBufferView instance (since the latter is
258 // an interface and can't be instantiated directly). See also JavaBridgeArra yCoercionTest 285 // an interface and can't be instantiated directly). See also JavaBridgeArra yCoercionTest
259 // for typed arrays (that also subclass ArrayBufferView) tests. 286 // for typed arrays (that also subclass ArrayBufferView) tests.
287 @Test
260 @SmallTest 288 @SmallTest
261 @Feature({"AndroidWebView", "Android-JavaBridge"}) 289 @Feature({"AndroidWebView", "Android-JavaBridge"})
262 public void testPassDataView() throws Throwable { 290 public void testPassDataView() throws Throwable {
263 executeJavaScript("buffer = new ArrayBuffer(16);"); 291 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(16);");
264 executeJavaScript("testObject.setIntArray(new DataView(buffer));"); 292 mActivityTestRule.executeJavaScript("testObject.setIntArray(new DataView (buffer));");
265 assertNull(mTestObject.waitForIntArray()); 293 Assert.assertNull(mTestObject.waitForIntArray());
266 } 294 }
267 } 295 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698