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

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

Issue 2708243004: Auto convert content shell tests to JUnit4 (Closed)
Patch Set: New test added from WebContentsTest 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.junit.Assert;
10 import org.junit.Before;
11 import org.junit.Rule;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14
9 import org.chromium.base.annotations.SuppressFBWarnings; 15 import org.chromium.base.annotations.SuppressFBWarnings;
16 import org.chromium.base.test.BaseJUnit4ClassRunner;
10 import org.chromium.base.test.util.Feature; 17 import org.chromium.base.test.util.Feature;
11 import org.chromium.content.browser.JavaBridgeTestCommon.Controller; 18 import org.chromium.content.browser.JavaBridgeTestCommon.Controller;
12 19
13 /** 20 /**
14 * Part of the test suite for the Java Bridge. This class tests that we correctl y convert 21 * Part of the test suite for the Java Bridge. This class tests that we correctl y convert
15 * JavaScript arrays to Java arrays when passing them to the methods of injected Java objects. 22 * JavaScript arrays to Java arrays when passing them to the methods of injected Java objects.
16 * 23 *
17 * The conversions should follow 24 * The conversions should follow
18 * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in 25 * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in
19 * which the implementation differs from the spec are marked with 26 * which the implementation differs from the spec are marked with
20 * LIVECONNECT_COMPLIANCE. 27 * LIVECONNECT_COMPLIANCE.
21 * FIXME: Consider making our implementation more compliant, if it will not 28 * FIXME: Consider making our implementation more compliant, if it will not
22 * break backwards-compatibility. See b/4408210. 29 * break backwards-compatibility. See b/4408210.
23 */ 30 */
24 public class JavaBridgeArrayCoercionTest extends JavaBridgeTestBase { 31 @RunWith(BaseJUnit4ClassRunner.class)
32 public class JavaBridgeArrayCoercionTest {
33 private static final double ASSERTION_DELTA = 0.00000001;
boliu 2017/03/10 18:32:32 afaict, previous code effectively has the delta as
the real yoland 2017/03/10 19:31:58 Changed to 0 float is always promoted to double i
34
35 @Rule
36 public JavaBridgeActivityTestRule mActivityTestRule = new JavaBridgeActivity TestRule();
37
25 @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD") 38 @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD")
26 private static class TestObject extends Controller { 39 private static class TestObject extends Controller {
27 private final Object mObjectInstance; 40 private final Object mObjectInstance;
28 private final CustomType mCustomTypeInstance; 41 private final CustomType mCustomTypeInstance;
29 42
30 private boolean[] mBooleanArray; 43 private boolean[] mBooleanArray;
31 private byte[] mByteArray; 44 private byte[] mByteArray;
32 private char[] mCharArray; 45 private char[] mCharArray;
33 private short[] mShortArray; 46 private short[] mShortArray;
34 private int[] mIntArray; 47 private int[] mIntArray;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 return mCustomTypeArray; 154 return mCustomTypeArray;
142 } 155 }
143 } 156 }
144 157
145 // Two custom types used when testing passing objects. 158 // Two custom types used when testing passing objects.
146 private static class CustomType { 159 private static class CustomType {
147 } 160 }
148 161
149 private TestObject mTestObject; 162 private TestObject mTestObject;
150 163
151 @Override 164 @Before
152 protected void setUp() throws Exception { 165 public void setUp() throws Exception {
153 super.setUp();
154 mTestObject = new TestObject(); 166 mTestObject = new TestObject();
155 injectObjectAndReload(mTestObject, "testObject"); 167 mActivityTestRule.injectObjectAndReload(mTestObject, "testObject");
156 } 168 }
157 169
158 // Note that all tests use a single element array for simplicity. We test 170 // Note that all tests use a single element array for simplicity. We test
159 // multiple elements elsewhere. 171 // multiple elements elsewhere.
160 172
161 // Test passing an array of JavaScript numbers in the int32 range to a 173 // Test passing an array of JavaScript numbers in the int32 range to a
162 // method which takes a Java array. 174 // method which takes a Java array.
175 @Test
163 @SmallTest 176 @SmallTest
164 @Feature({"AndroidWebView", "Android-JavaBridge"}) 177 @Feature({"AndroidWebView", "Android-JavaBridge"})
165 public void testPassNumberInt32() throws Throwable { 178 public void testPassNumberInt32() throws Throwable {
166 executeJavaScript("testObject.setBooleanArray([0]);"); 179 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([0]);");
167 assertFalse(mTestObject.waitForBooleanArray()[0]); 180 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
168 // LIVECONNECT_COMPLIANCE: Should convert to boolean. 181 // LIVECONNECT_COMPLIANCE: Should convert to boolean.
169 executeJavaScript("testObject.setBooleanArray([42]);"); 182 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([42]);") ;
170 assertFalse(mTestObject.waitForBooleanArray()[0]); 183 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
171 184
172 executeJavaScript("testObject.setByteArray([42]);"); 185 mActivityTestRule.executeJavaScript("testObject.setByteArray([42]);");
173 assertEquals(42, mTestObject.waitForByteArray()[0]); 186 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
174 187
175 executeJavaScript("testObject.setCharArray([42]);"); 188 mActivityTestRule.executeJavaScript("testObject.setCharArray([42]);");
176 assertEquals(42, mTestObject.waitForCharArray()[0]); 189 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
177 190
178 executeJavaScript("testObject.setShortArray([42]);"); 191 mActivityTestRule.executeJavaScript("testObject.setShortArray([42]);");
179 assertEquals(42, mTestObject.waitForShortArray()[0]); 192 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
180 193
181 executeJavaScript("testObject.setIntArray([42]);"); 194 mActivityTestRule.executeJavaScript("testObject.setIntArray([42]);");
182 assertEquals(42, mTestObject.waitForIntArray()[0]); 195 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
183 196
184 executeJavaScript("testObject.setLongArray([42]);"); 197 mActivityTestRule.executeJavaScript("testObject.setLongArray([42]);");
185 assertEquals(42L, mTestObject.waitForLongArray()[0]); 198 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
186 199
187 executeJavaScript("testObject.setFloatArray([42]);"); 200 mActivityTestRule.executeJavaScript("testObject.setFloatArray([42]);");
188 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 201 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
189 202
190 executeJavaScript("testObject.setDoubleArray([42]);"); 203 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([42]);");
191 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 204 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
192 205
193 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number. 206 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number.
194 executeJavaScript("testObject.setObjectArray([42]);"); 207 mActivityTestRule.executeJavaScript("testObject.setObjectArray([42]);");
195 assertNull(mTestObject.waitForObjectArray()); 208 Assert.assertNull(mTestObject.waitForObjectArray());
196 209
197 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String. 210 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String.
198 executeJavaScript("testObject.setStringArray([42]);"); 211 mActivityTestRule.executeJavaScript("testObject.setStringArray([42]);");
199 assertNull(mTestObject.waitForStringArray()[0]); 212 Assert.assertNull(mTestObject.waitForStringArray()[0]);
200 213
201 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 214 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
202 executeJavaScript("testObject.setCustomTypeArray([42]);"); 215 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([42]) ;");
203 assertNull(mTestObject.waitForCustomTypeArray()); 216 Assert.assertNull(mTestObject.waitForCustomTypeArray());
204 } 217 }
205 218
206 // Test passing an array of JavaScript numbers in the double range to a 219 // Test passing an array of JavaScript numbers in the double range to a
207 // method which takes a Java array. 220 // method which takes a Java array.
221 @Test
208 @SmallTest 222 @SmallTest
209 @Feature({"AndroidWebView", "Android-JavaBridge"}) 223 @Feature({"AndroidWebView", "Android-JavaBridge"})
210 public void testPassNumberDouble() throws Throwable { 224 public void testPassNumberDouble() throws Throwable {
211 // LIVECONNECT_COMPLIANCE: Should convert to boolean. 225 // LIVECONNECT_COMPLIANCE: Should convert to boolean.
212 executeJavaScript("testObject.setBooleanArray([42.1]);"); 226 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([42.1]); ");
213 assertFalse(mTestObject.waitForBooleanArray()[0]); 227 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
214 228
215 executeJavaScript("testObject.setByteArray([42.1]);"); 229 mActivityTestRule.executeJavaScript("testObject.setByteArray([42.1]);");
216 assertEquals(42, mTestObject.waitForByteArray()[0]); 230 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
217 231
218 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value. 232 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value.
219 executeJavaScript("testObject.setCharArray([42.1]);"); 233 mActivityTestRule.executeJavaScript("testObject.setCharArray([42.1]);");
220 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 234 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
221 235
222 executeJavaScript("testObject.setShortArray([42.1]);"); 236 mActivityTestRule.executeJavaScript("testObject.setShortArray([42.1]);") ;
223 assertEquals(42, mTestObject.waitForShortArray()[0]); 237 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
224 238
225 executeJavaScript("testObject.setIntArray([42.1]);"); 239 mActivityTestRule.executeJavaScript("testObject.setIntArray([42.1]);");
226 assertEquals(42, mTestObject.waitForIntArray()[0]); 240 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
227 241
228 executeJavaScript("testObject.setLongArray([42.1]);"); 242 mActivityTestRule.executeJavaScript("testObject.setLongArray([42.1]);");
229 assertEquals(42L, mTestObject.waitForLongArray()[0]); 243 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
230 244
231 executeJavaScript("testObject.setFloatArray([42.1]);"); 245 mActivityTestRule.executeJavaScript("testObject.setFloatArray([42.1]);") ;
232 assertEquals(42.1f, mTestObject.waitForFloatArray()[0]); 246 Assert.assertEquals(42.1f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
233 247
234 executeJavaScript("testObject.setDoubleArray([42.1]);"); 248 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([42.1]);" );
235 assertEquals(42.1, mTestObject.waitForDoubleArray()[0]); 249 Assert.assertEquals(42.1, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
236 250
237 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number. 251 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number.
238 executeJavaScript("testObject.setObjectArray([42.1]);"); 252 mActivityTestRule.executeJavaScript("testObject.setObjectArray([42.1]);" );
239 assertNull(mTestObject.waitForObjectArray()); 253 Assert.assertNull(mTestObject.waitForObjectArray());
240 254
241 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String. 255 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String.
242 executeJavaScript("testObject.setStringArray([42.1]);"); 256 mActivityTestRule.executeJavaScript("testObject.setStringArray([42.1]);" );
243 assertNull(mTestObject.waitForStringArray()[0]); 257 Assert.assertNull(mTestObject.waitForStringArray()[0]);
244 258
245 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 259 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
246 executeJavaScript("testObject.setCustomTypeArray([42.1]);"); 260 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([42.1 ]);");
247 assertNull(mTestObject.waitForCustomTypeArray()); 261 Assert.assertNull(mTestObject.waitForCustomTypeArray());
248 } 262 }
249 263
250 // Test passing an array of JavaScript NaN values to a method which takes a 264 // Test passing an array of JavaScript NaN values to a method which takes a
251 // Java array. 265 // Java array.
266 @Test
252 @SmallTest 267 @SmallTest
253 @Feature({"AndroidWebView", "Android-JavaBridge"}) 268 @Feature({"AndroidWebView", "Android-JavaBridge"})
254 public void testPassNumberNaN() throws Throwable { 269 public void testPassNumberNaN() throws Throwable {
255 executeJavaScript("testObject.setBooleanArray([Number.NaN]);"); 270 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([Number. NaN]);");
256 assertFalse(mTestObject.waitForBooleanArray()[0]); 271 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
257 272
258 executeJavaScript("testObject.setByteArray([Number.NaN]);"); 273 mActivityTestRule.executeJavaScript("testObject.setByteArray([Number.NaN ]);");
259 assertEquals(0, mTestObject.waitForByteArray()[0]); 274 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
260 275
261 executeJavaScript("testObject.setCharArray([Number.NaN]);"); 276 mActivityTestRule.executeJavaScript("testObject.setCharArray([Number.NaN ]);");
262 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 277 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
263 278
264 executeJavaScript("testObject.setShortArray([Number.NaN]);"); 279 mActivityTestRule.executeJavaScript("testObject.setShortArray([Number.Na N]);");
265 assertEquals(0, mTestObject.waitForShortArray()[0]); 280 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
266 281
267 executeJavaScript("testObject.setIntArray([Number.NaN]);"); 282 mActivityTestRule.executeJavaScript("testObject.setIntArray([Number.NaN] );");
268 assertEquals(0, mTestObject.waitForIntArray()[0]); 283 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
269 284
270 executeJavaScript("testObject.setLongArray([Number.NaN]);"); 285 mActivityTestRule.executeJavaScript("testObject.setLongArray([Number.NaN ]);");
271 assertEquals(0L, mTestObject.waitForLongArray()[0]); 286 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
272 287
273 executeJavaScript("testObject.setFloatArray([Number.NaN]);"); 288 mActivityTestRule.executeJavaScript("testObject.setFloatArray([Number.Na N]);");
274 assertEquals(Float.NaN, mTestObject.waitForFloatArray()[0]); 289 Assert.assertEquals(Float.NaN, mTestObject.waitForFloatArray()[0], ASSER TION_DELTA);
275 290
276 executeJavaScript("testObject.setDoubleArray([Number.NaN]);"); 291 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([Number.N aN]);");
277 assertEquals(Double.NaN, mTestObject.waitForDoubleArray()[0]); 292 Assert.assertEquals(Double.NaN, mTestObject.waitForDoubleArray()[0], ASS ERTION_DELTA);
278 293
279 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number. 294 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number.
280 executeJavaScript("testObject.setObjectArray([Number.NaN]);"); 295 mActivityTestRule.executeJavaScript("testObject.setObjectArray([Number.N aN]);");
281 assertNull(mTestObject.waitForObjectArray()); 296 Assert.assertNull(mTestObject.waitForObjectArray());
282 297
283 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String. 298 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String.
284 executeJavaScript("testObject.setStringArray([Number.NaN]);"); 299 mActivityTestRule.executeJavaScript("testObject.setStringArray([Number.N aN]);");
285 assertNull(mTestObject.waitForStringArray()[0]); 300 Assert.assertNull(mTestObject.waitForStringArray()[0]);
286 301
287 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 302 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
288 executeJavaScript("testObject.setCustomTypeArray([Number.NaN]);"); 303 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([Numb er.NaN]);");
289 assertNull(mTestObject.waitForCustomTypeArray()); 304 Assert.assertNull(mTestObject.waitForCustomTypeArray());
290 } 305 }
291 306
292 // Test passing an array of JavaScript infinity values to a method which 307 // Test passing an array of JavaScript infinity values to a method which
293 // takes a Java array. 308 // takes a Java array.
309 @Test
294 @SmallTest 310 @SmallTest
295 @Feature({"AndroidWebView", "Android-JavaBridge"}) 311 @Feature({"AndroidWebView", "Android-JavaBridge"})
296 public void testPassNumberInfinity() throws Throwable { 312 public void testPassNumberInfinity() throws Throwable {
297 executeJavaScript("testObject.setBooleanArray([Infinity]);"); 313 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([Infinit y]);");
298 assertFalse(mTestObject.waitForBooleanArray()[0]); 314 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
299 315
300 executeJavaScript("testObject.setByteArray([Infinity]);"); 316 mActivityTestRule.executeJavaScript("testObject.setByteArray([Infinity]) ;");
301 assertEquals(-1, mTestObject.waitForByteArray()[0]); 317 Assert.assertEquals(-1, mTestObject.waitForByteArray()[0]);
302 318
303 // LIVECONNECT_COMPLIANCE: Should convert to maximum numeric char value. 319 // LIVECONNECT_COMPLIANCE: Should convert to maximum numeric char value.
304 executeJavaScript("testObject.setCharArray([Infinity]);"); 320 mActivityTestRule.executeJavaScript("testObject.setCharArray([Infinity]) ;");
305 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 321 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
306 322
307 executeJavaScript("testObject.setShortArray([Infinity]);"); 323 mActivityTestRule.executeJavaScript("testObject.setShortArray([Infinity] );");
308 assertEquals(-1, mTestObject.waitForShortArray()[0]); 324 Assert.assertEquals(-1, mTestObject.waitForShortArray()[0]);
309 325
310 executeJavaScript("testObject.setIntArray([Infinity]);"); 326 mActivityTestRule.executeJavaScript("testObject.setIntArray([Infinity]); ");
311 assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntArray()[0]); 327 Assert.assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntArray()[0]) ;
312 328
313 executeJavaScript("testObject.setLongArray([Infinity]);"); 329 mActivityTestRule.executeJavaScript("testObject.setLongArray([Infinity]) ;");
314 assertEquals(Long.MAX_VALUE, mTestObject.waitForLongArray()[0]); 330 Assert.assertEquals(Long.MAX_VALUE, mTestObject.waitForLongArray()[0]);
315 331
316 executeJavaScript("testObject.setFloatArray([Infinity]);"); 332 mActivityTestRule.executeJavaScript("testObject.setFloatArray([Infinity] );");
317 assertEquals(Float.POSITIVE_INFINITY, mTestObject.waitForFloatArray()[0] ); 333 Assert.assertEquals(
318 334 Float.POSITIVE_INFINITY, mTestObject.waitForFloatArray()[0], ASS ERTION_DELTA);
319 executeJavaScript("testObject.setDoubleArray([Infinity]);"); 335
320 assertEquals(Double.POSITIVE_INFINITY, mTestObject.waitForDoubleArray()[ 0]); 336 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([Infinity ]);");
337 Assert.assertEquals(
338 Double.POSITIVE_INFINITY, mTestObject.waitForDoubleArray()[0], A SSERTION_DELTA);
321 339
322 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number. 340 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number.
323 executeJavaScript("testObject.setObjectArray([Infinity]);"); 341 mActivityTestRule.executeJavaScript("testObject.setObjectArray([Infinity ]);");
324 assertNull(mTestObject.waitForObjectArray()); 342 Assert.assertNull(mTestObject.waitForObjectArray());
325 343
326 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String. 344 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String.
327 executeJavaScript("testObject.setStringArray([Infinity]);"); 345 mActivityTestRule.executeJavaScript("testObject.setStringArray([Infinity ]);");
328 assertNull(mTestObject.waitForStringArray()[0]); 346 Assert.assertNull(mTestObject.waitForStringArray()[0]);
329 347
330 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 348 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
331 executeJavaScript("testObject.setCustomTypeArray([Infinity]);"); 349 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([Infi nity]);");
332 assertNull(mTestObject.waitForCustomTypeArray()); 350 Assert.assertNull(mTestObject.waitForCustomTypeArray());
333 } 351 }
334 352
335 // Test passing an array of JavaScript boolean values to a method which 353 // Test passing an array of JavaScript boolean values to a method which
336 // takes a Java array. 354 // takes a Java array.
355 @Test
337 @SmallTest 356 @SmallTest
338 @Feature({"AndroidWebView", "Android-JavaBridge"}) 357 @Feature({"AndroidWebView", "Android-JavaBridge"})
339 public void testPassBoolean() throws Throwable { 358 public void testPassBoolean() throws Throwable {
340 executeJavaScript("testObject.setBooleanArray([true]);"); 359 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([true]); ");
341 assertTrue(mTestObject.waitForBooleanArray()[0]); 360 Assert.assertTrue(mTestObject.waitForBooleanArray()[0]);
342 executeJavaScript("testObject.setBooleanArray([false]);"); 361 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([false]) ;");
343 assertFalse(mTestObject.waitForBooleanArray()[0]); 362 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
344 363
345 // LIVECONNECT_COMPLIANCE: Should be 1. 364 // LIVECONNECT_COMPLIANCE: Should be 1.
346 executeJavaScript("testObject.setByteArray([true]);"); 365 mActivityTestRule.executeJavaScript("testObject.setByteArray([true]);");
347 assertEquals(0, mTestObject.waitForByteArray()[0]); 366 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
348 executeJavaScript("testObject.setByteArray([false]);"); 367 mActivityTestRule.executeJavaScript("testObject.setByteArray([false]);") ;
349 assertEquals(0, mTestObject.waitForByteArray()[0]); 368 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
350 369
351 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value 1. 370 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value 1.
352 executeJavaScript("testObject.setCharArray([true]);"); 371 mActivityTestRule.executeJavaScript("testObject.setCharArray([true]);");
353 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 372 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
354 executeJavaScript("testObject.setCharArray([false]);"); 373 mActivityTestRule.executeJavaScript("testObject.setCharArray([false]);") ;
355 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 374 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
356 375
357 // LIVECONNECT_COMPLIANCE: Should be 1. 376 // LIVECONNECT_COMPLIANCE: Should be 1.
358 executeJavaScript("testObject.setShortArray([true]);"); 377 mActivityTestRule.executeJavaScript("testObject.setShortArray([true]);") ;
359 assertEquals(0, mTestObject.waitForShortArray()[0]); 378 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
360 executeJavaScript("testObject.setShortArray([false]);"); 379 mActivityTestRule.executeJavaScript("testObject.setShortArray([false]);" );
361 assertEquals(0, mTestObject.waitForShortArray()[0]); 380 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
362 381
363 // LIVECONNECT_COMPLIANCE: Should be 1. 382 // LIVECONNECT_COMPLIANCE: Should be 1.
364 executeJavaScript("testObject.setIntArray([true]);"); 383 mActivityTestRule.executeJavaScript("testObject.setIntArray([true]);");
365 assertEquals(0, mTestObject.waitForIntArray()[0]); 384 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
366 executeJavaScript("testObject.setIntArray([false]);"); 385 mActivityTestRule.executeJavaScript("testObject.setIntArray([false]);");
367 assertEquals(0, mTestObject.waitForIntArray()[0]); 386 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
368 387
369 // LIVECONNECT_COMPLIANCE: Should be 1. 388 // LIVECONNECT_COMPLIANCE: Should be 1.
370 executeJavaScript("testObject.setLongArray([true]);"); 389 mActivityTestRule.executeJavaScript("testObject.setLongArray([true]);");
371 assertEquals(0L, mTestObject.waitForLongArray()[0]); 390 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
372 executeJavaScript("testObject.setLongArray([false]);"); 391 mActivityTestRule.executeJavaScript("testObject.setLongArray([false]);") ;
373 assertEquals(0L, mTestObject.waitForLongArray()[0]); 392 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
374 393
375 // LIVECONNECT_COMPLIANCE: Should be 1.0. 394 // LIVECONNECT_COMPLIANCE: Should be 1.0.
376 executeJavaScript("testObject.setFloatArray([true]);"); 395 mActivityTestRule.executeJavaScript("testObject.setFloatArray([true]);") ;
377 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 396 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
378 executeJavaScript("testObject.setFloatArray([false]);"); 397 mActivityTestRule.executeJavaScript("testObject.setFloatArray([false]);" );
379 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 398 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
380 399
381 // LIVECONNECT_COMPLIANCE: Should be 1.0. 400 // LIVECONNECT_COMPLIANCE: Should be 1.0.
382 executeJavaScript("testObject.setDoubleArray([true]);"); 401 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([true]);" );
383 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 402 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
384 executeJavaScript("testObject.setDoubleArray([false]);"); 403 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([false]); ");
385 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 404 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
386 405
387 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number. 406 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number.
388 executeJavaScript("testObject.setObjectArray([true]);"); 407 mActivityTestRule.executeJavaScript("testObject.setObjectArray([true]);" );
389 assertNull(mTestObject.waitForObjectArray()); 408 Assert.assertNull(mTestObject.waitForObjectArray());
390 409
391 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String. 410 // LIVECONNECT_COMPLIANCE: Should create instances of java.lang.String.
392 executeJavaScript("testObject.setStringArray([true]);"); 411 mActivityTestRule.executeJavaScript("testObject.setStringArray([true]);" );
393 assertNull(mTestObject.waitForStringArray()[0]); 412 Assert.assertNull(mTestObject.waitForStringArray()[0]);
394 413
395 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 414 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
396 executeJavaScript("testObject.setCustomTypeArray([true]);"); 415 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([true ]);");
397 assertNull(mTestObject.waitForCustomTypeArray()); 416 Assert.assertNull(mTestObject.waitForCustomTypeArray());
398 } 417 }
399 418
400 // Test passing an array of JavaScript strings to a method which takes a 419 // Test passing an array of JavaScript strings to a method which takes a
401 // Java array. 420 // Java array.
421 @Test
402 @SmallTest 422 @SmallTest
403 @Feature({"AndroidWebView", "Android-JavaBridge"}) 423 @Feature({"AndroidWebView", "Android-JavaBridge"})
404 public void testPassString() throws Throwable { 424 public void testPassString() throws Throwable {
405 // LIVECONNECT_COMPLIANCE: Non-empty string should convert to true. 425 // LIVECONNECT_COMPLIANCE: Non-empty string should convert to true.
406 executeJavaScript("testObject.setBooleanArray([\"+042.10\"]);"); 426 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([\"+042. 10\"]);");
407 assertFalse(mTestObject.waitForBooleanArray()[0]); 427 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
408 428
409 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 429 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
410 executeJavaScript("testObject.setByteArray([\"+042.10\"]);"); 430 mActivityTestRule.executeJavaScript("testObject.setByteArray([\"+042.10\ "]);");
411 assertEquals(0, mTestObject.waitForByteArray()[0]); 431 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
412 432
413 // LIVECONNECT_COMPLIANCE: Should decode and convert to numeric char val ue. 433 // LIVECONNECT_COMPLIANCE: Should decode and convert to numeric char val ue.
414 executeJavaScript("testObject.setCharArray([\"+042.10\"]);"); 434 mActivityTestRule.executeJavaScript("testObject.setCharArray([\"+042.10\ "]);");
415 assertEquals(0, mTestObject.waitForCharArray()[0]); 435 Assert.assertEquals(0, mTestObject.waitForCharArray()[0]);
416 436
417 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 437 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
418 executeJavaScript("testObject.setShortArray([\"+042.10\"]);"); 438 mActivityTestRule.executeJavaScript("testObject.setShortArray([\"+042.10 \"]);");
419 assertEquals(0, mTestObject.waitForShortArray()[0]); 439 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
420 440
421 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 441 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
422 executeJavaScript("testObject.setIntArray([\"+042.10\"]);"); 442 mActivityTestRule.executeJavaScript("testObject.setIntArray([\"+042.10\" ]);");
423 assertEquals(0, mTestObject.waitForIntArray()[0]); 443 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
424 444
425 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 445 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
426 executeJavaScript("testObject.setLongArray([\"+042.10\"]);"); 446 mActivityTestRule.executeJavaScript("testObject.setLongArray([\"+042.10\ "]);");
427 assertEquals(0L, mTestObject.waitForLongArray()[0]); 447 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
428 448
429 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 449 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
430 executeJavaScript("testObject.setFloatArray([\"+042.10\"]);"); 450 mActivityTestRule.executeJavaScript("testObject.setFloatArray([\"+042.10 \"]);");
431 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 451 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
432 452
433 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 453 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
434 executeJavaScript("testObject.setDoubleArray([\"+042.10\"]);"); 454 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([\"+042.1 0\"]);");
435 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 455 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
436 456
437 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number. 457 // LIVECONNECT_COMPLIANCE: Should create array and create instances of j ava.lang.Number.
438 executeJavaScript("testObject.setObjectArray([\"+042.10\"]);"); 458 mActivityTestRule.executeJavaScript("testObject.setObjectArray([\"+042.1 0\"]);");
439 assertNull(mTestObject.waitForObjectArray()); 459 Assert.assertNull(mTestObject.waitForObjectArray());
440 460
441 executeJavaScript("testObject.setStringArray([\"+042.10\"]);"); 461 mActivityTestRule.executeJavaScript("testObject.setStringArray([\"+042.1 0\"]);");
442 assertEquals("+042.10", mTestObject.waitForStringArray()[0]); 462 Assert.assertEquals("+042.10", mTestObject.waitForStringArray()[0]);
443 463
444 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 464 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
445 executeJavaScript("testObject.setCustomTypeArray([\"+042.10\"]);"); 465 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([\"+0 42.10\"]);");
446 assertNull(mTestObject.waitForCustomTypeArray()); 466 Assert.assertNull(mTestObject.waitForCustomTypeArray());
447 } 467 }
448 468
449 // Test passing an array of JavaScript objects to a method which takes a 469 // Test passing an array of JavaScript objects to a method which takes a
450 // Java array. 470 // Java array.
471 @Test
451 @SmallTest 472 @SmallTest
452 @Feature({"AndroidWebView", "Android-JavaBridge"}) 473 @Feature({"AndroidWebView", "Android-JavaBridge"})
453 public void testPassJavaScriptObject() throws Throwable { 474 public void testPassJavaScriptObject() throws Throwable {
454 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 475 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
455 executeJavaScript("testObject.setBooleanArray([{foo: 42}]);"); 476 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([{foo: 4 2}]);");
456 assertFalse(mTestObject.waitForBooleanArray()[0]); 477 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
457 478
458 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 479 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
459 executeJavaScript("testObject.setByteArray([{foo: 42}]);"); 480 mActivityTestRule.executeJavaScript("testObject.setByteArray([{foo: 42}] );");
460 assertEquals(0, mTestObject.waitForByteArray()[0]); 481 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
461 482
462 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 483 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
463 executeJavaScript("testObject.setCharArray([{foo: 42}]);"); 484 mActivityTestRule.executeJavaScript("testObject.setCharArray([{foo: 42}] );");
464 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 485 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
465 486
466 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 487 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
467 executeJavaScript("testObject.setShortArray([{foo: 42}]);"); 488 mActivityTestRule.executeJavaScript("testObject.setShortArray([{foo: 42} ]);");
468 assertEquals(0, mTestObject.waitForShortArray()[0]); 489 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
469 490
470 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 491 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
471 executeJavaScript("testObject.setIntArray([{foo: 42}]);"); 492 mActivityTestRule.executeJavaScript("testObject.setIntArray([{foo: 42}]) ;");
472 assertEquals(0, mTestObject.waitForIntArray()[0]); 493 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
473 494
474 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 495 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
475 executeJavaScript("testObject.setLongArray([{foo: 42}]);"); 496 mActivityTestRule.executeJavaScript("testObject.setLongArray([{foo: 42}] );");
476 assertEquals(0L, mTestObject.waitForLongArray()[0]); 497 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
477 498
478 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 499 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
479 executeJavaScript("testObject.setFloatArray([{foo: 42}]);"); 500 mActivityTestRule.executeJavaScript("testObject.setFloatArray([{foo: 42} ]);");
480 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 501 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
481 502
482 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 503 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
483 executeJavaScript("testObject.setDoubleArray([{foo: 42}]);"); 504 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([{foo: 42 }]);");
484 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 505 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
485 506
486 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 507 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
487 executeJavaScript("testObject.setObjectArray([{foo: 42}]);"); 508 mActivityTestRule.executeJavaScript("testObject.setObjectArray([{foo: 42 }]);");
488 assertNull(mTestObject.waitForObjectArray()); 509 Assert.assertNull(mTestObject.waitForObjectArray());
489 510
490 // LIVECONNECT_COMPLIANCE: Should call toString() on object. 511 // LIVECONNECT_COMPLIANCE: Should call toString() on object.
491 executeJavaScript("testObject.setStringArray([{foo: 42}]);"); 512 mActivityTestRule.executeJavaScript("testObject.setStringArray([{foo: 42 }]);");
492 assertNull(mTestObject.waitForStringArray()[0]); 513 Assert.assertNull(mTestObject.waitForStringArray()[0]);
493 514
494 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 515 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
495 executeJavaScript("testObject.setCustomTypeArray([{foo: 42}]);"); 516 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([{foo : 42}]);");
496 assertNull(mTestObject.waitForCustomTypeArray()); 517 Assert.assertNull(mTestObject.waitForCustomTypeArray());
497 } 518 }
498 519
499 // Test passing an array of Java objects to a method which takes a Java 520 // Test passing an array of Java objects to a method which takes a Java
500 // array. 521 // array.
522 @Test
501 @SmallTest 523 @SmallTest
502 @Feature({"AndroidWebView", "Android-JavaBridge"}) 524 @Feature({"AndroidWebView", "Android-JavaBridge"})
503 public void testPassJavaObject() throws Throwable { 525 public void testPassJavaObject() throws Throwable {
504 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 526 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
505 executeJavaScript("testObject.setBooleanArray([testObject.getObjectInsta nce()]);"); 527 mActivityTestRule.executeJavaScript(
506 assertFalse(mTestObject.waitForBooleanArray()[0]); 528 "testObject.setBooleanArray([testObject.getObjectInstance()]);") ;
507 529 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
508 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 530
509 executeJavaScript("testObject.setByteArray([testObject.getObjectInstance ()]);"); 531 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
510 assertEquals(0, mTestObject.waitForByteArray()[0]); 532 mActivityTestRule.executeJavaScript(
511 533 "testObject.setByteArray([testObject.getObjectInstance()]);");
512 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 534 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
513 executeJavaScript("testObject.setCharArray([testObject.getObjectInstance ()]);"); 535
514 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 536 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
515 537 mActivityTestRule.executeJavaScript(
516 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 538 "testObject.setCharArray([testObject.getObjectInstance()]);");
517 executeJavaScript("testObject.setShortArray([testObject.getObjectInstanc e()]);"); 539 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
518 assertEquals(0, mTestObject.waitForShortArray()[0]); 540
519 541 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
520 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 542 mActivityTestRule.executeJavaScript(
521 executeJavaScript("testObject.setIntArray([testObject.getObjectInstance( )]);"); 543 "testObject.setShortArray([testObject.getObjectInstance()]);");
522 assertEquals(0, mTestObject.waitForIntArray()[0]); 544 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
523 545
524 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 546 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
525 executeJavaScript("testObject.setLongArray([testObject.getObjectInstance ()]);"); 547 mActivityTestRule.executeJavaScript(
526 assertEquals(0L, mTestObject.waitForLongArray()[0]); 548 "testObject.setIntArray([testObject.getObjectInstance()]);");
527 549 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
528 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 550
529 executeJavaScript("testObject.setFloatArray([testObject.getObjectInstanc e()]);"); 551 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
530 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 552 mActivityTestRule.executeJavaScript(
531 553 "testObject.setLongArray([testObject.getObjectInstance()]);");
532 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 554 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
533 executeJavaScript("testObject.setDoubleArray([testObject.getObjectInstan ce()]);"); 555
534 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 556 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
557 mActivityTestRule.executeJavaScript(
558 "testObject.setFloatArray([testObject.getObjectInstance()]);");
559 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
560
561 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
562 mActivityTestRule.executeJavaScript(
563 "testObject.setDoubleArray([testObject.getObjectInstance()]);");
564 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
535 565
536 // LIVECONNECT_COMPLIANCE: Should create an array and pass Java object. 566 // LIVECONNECT_COMPLIANCE: Should create an array and pass Java object.
537 executeJavaScript("testObject.setObjectArray([testObject.getObjectInstan ce()]);"); 567 mActivityTestRule.executeJavaScript(
538 assertNull(mTestObject.waitForObjectArray()); 568 "testObject.setObjectArray([testObject.getObjectInstance()]);");
569 Assert.assertNull(mTestObject.waitForObjectArray());
539 570
540 // LIVECONNECT_COMPLIANCE: Should call toString() on object. 571 // LIVECONNECT_COMPLIANCE: Should call toString() on object.
541 executeJavaScript("testObject.setStringArray([testObject.getObjectInstan ce()]);"); 572 mActivityTestRule.executeJavaScript(
542 assertNull(mTestObject.waitForStringArray()[0]); 573 "testObject.setStringArray([testObject.getObjectInstance()]);");
574 Assert.assertNull(mTestObject.waitForStringArray()[0]);
543 575
544 // LIVECONNECT_COMPLIANCE: Should create array and pass Java object. 576 // LIVECONNECT_COMPLIANCE: Should create array and pass Java object.
545 executeJavaScript("testObject.setCustomTypeArray([testObject.getObjectIn stance()]);"); 577 mActivityTestRule.executeJavaScript(
546 assertNull(mTestObject.waitForCustomTypeArray()); 578 "testObject.setCustomTypeArray([testObject.getObjectInstance()]) ;");
547 executeJavaScript("testObject.setCustomTypeArray([testObject.getCustomTy peInstance()]);"); 579 Assert.assertNull(mTestObject.waitForCustomTypeArray());
548 assertNull(mTestObject.waitForCustomTypeArray()); 580 mActivityTestRule.executeJavaScript(
581 "testObject.setCustomTypeArray([testObject.getCustomTypeInstance ()]);");
582 Assert.assertNull(mTestObject.waitForCustomTypeArray());
549 } 583 }
550 584
551 // Test passing an array of JavaScript null values to a method which takes 585 // Test passing an array of JavaScript null values to a method which takes
552 // a Java array. 586 // a Java array.
587 @Test
553 @SmallTest 588 @SmallTest
554 @Feature({"AndroidWebView", "Android-JavaBridge"}) 589 @Feature({"AndroidWebView", "Android-JavaBridge"})
555 public void testPassNull() throws Throwable { 590 public void testPassNull() throws Throwable {
556 executeJavaScript("testObject.setByteArray([null]);"); 591 mActivityTestRule.executeJavaScript("testObject.setByteArray([null]);");
557 assertEquals(0, mTestObject.waitForByteArray()[0]); 592 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
558 593
559 executeJavaScript("testObject.setCharArray([null]);"); 594 mActivityTestRule.executeJavaScript("testObject.setCharArray([null]);");
560 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 595 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
561 596
562 executeJavaScript("testObject.setShortArray([null]);"); 597 mActivityTestRule.executeJavaScript("testObject.setShortArray([null]);") ;
563 assertEquals(0, mTestObject.waitForShortArray()[0]); 598 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
564 599
565 executeJavaScript("testObject.setIntArray([null]);"); 600 mActivityTestRule.executeJavaScript("testObject.setIntArray([null]);");
566 assertEquals(0, mTestObject.waitForIntArray()[0]); 601 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
567 602
568 executeJavaScript("testObject.setLongArray([null]);"); 603 mActivityTestRule.executeJavaScript("testObject.setLongArray([null]);");
569 assertEquals(0L, mTestObject.waitForLongArray()[0]); 604 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
570 605
571 executeJavaScript("testObject.setFloatArray([null]);"); 606 mActivityTestRule.executeJavaScript("testObject.setFloatArray([null]);") ;
572 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 607 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
573 608
574 executeJavaScript("testObject.setDoubleArray([null]);"); 609 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([null]);" );
575 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 610 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
576 611
577 executeJavaScript("testObject.setBooleanArray([null]);"); 612 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([null]); ");
578 assertFalse(mTestObject.waitForBooleanArray()[0]); 613 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
579 614
580 // LIVECONNECT_COMPLIANCE: Should create array and pass null. 615 // LIVECONNECT_COMPLIANCE: Should create array and pass null.
581 executeJavaScript("testObject.setObjectArray([null]);"); 616 mActivityTestRule.executeJavaScript("testObject.setObjectArray([null]);" );
582 assertNull(mTestObject.waitForObjectArray()); 617 Assert.assertNull(mTestObject.waitForObjectArray());
583 618
584 executeJavaScript("testObject.setStringArray([null]);"); 619 mActivityTestRule.executeJavaScript("testObject.setStringArray([null]);" );
585 assertNull(mTestObject.waitForStringArray()[0]); 620 Assert.assertNull(mTestObject.waitForStringArray()[0]);
586 621
587 // LIVECONNECT_COMPLIANCE: Should create array and pass null. 622 // LIVECONNECT_COMPLIANCE: Should create array and pass null.
588 executeJavaScript("testObject.setCustomTypeArray([null]);"); 623 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([null ]);");
589 assertNull(mTestObject.waitForCustomTypeArray()); 624 Assert.assertNull(mTestObject.waitForCustomTypeArray());
590 } 625 }
591 626
592 // Test passing an array of JavaScript undefined values to a method which 627 // Test passing an array of JavaScript undefined values to a method which
593 // takes a Java array. 628 // takes a Java array.
629 @Test
594 @SmallTest 630 @SmallTest
595 @Feature({"AndroidWebView", "Android-JavaBridge"}) 631 @Feature({"AndroidWebView", "Android-JavaBridge"})
596 public void testPassUndefined() throws Throwable { 632 public void testPassUndefined() throws Throwable {
597 executeJavaScript("testObject.setByteArray([undefined]);"); 633 mActivityTestRule.executeJavaScript("testObject.setByteArray([undefined] );");
598 assertEquals(0, mTestObject.waitForByteArray()[0]); 634 Assert.assertEquals(0, mTestObject.waitForByteArray()[0]);
599 635
600 executeJavaScript("testObject.setCharArray([undefined]);"); 636 mActivityTestRule.executeJavaScript("testObject.setCharArray([undefined] );");
601 assertEquals(0, mTestObject.waitForCharArray()[0]); 637 Assert.assertEquals(0, mTestObject.waitForCharArray()[0]);
602 638
603 executeJavaScript("testObject.setShortArray([undefined]);"); 639 mActivityTestRule.executeJavaScript("testObject.setShortArray([undefined ]);");
604 assertEquals(0, mTestObject.waitForShortArray()[0]); 640 Assert.assertEquals(0, mTestObject.waitForShortArray()[0]);
605 641
606 executeJavaScript("testObject.setIntArray([undefined]);"); 642 mActivityTestRule.executeJavaScript("testObject.setIntArray([undefined]) ;");
607 assertEquals(0, mTestObject.waitForIntArray()[0]); 643 Assert.assertEquals(0, mTestObject.waitForIntArray()[0]);
608 644
609 executeJavaScript("testObject.setLongArray([undefined]);"); 645 mActivityTestRule.executeJavaScript("testObject.setLongArray([undefined] );");
610 assertEquals(0L, mTestObject.waitForLongArray()[0]); 646 Assert.assertEquals(0L, mTestObject.waitForLongArray()[0]);
611 647
612 executeJavaScript("testObject.setFloatArray([undefined]);"); 648 mActivityTestRule.executeJavaScript("testObject.setFloatArray([undefined ]);");
613 assertEquals(0.0f, mTestObject.waitForFloatArray()[0]); 649 Assert.assertEquals(0.0f, mTestObject.waitForFloatArray()[0], ASSERTION_ DELTA);
614 650
615 executeJavaScript("testObject.setDoubleArray([undefined]);"); 651 mActivityTestRule.executeJavaScript("testObject.setDoubleArray([undefine d]);");
616 assertEquals(0.0, mTestObject.waitForDoubleArray()[0]); 652 Assert.assertEquals(0.0, mTestObject.waitForDoubleArray()[0], ASSERTION_ DELTA);
617 653
618 executeJavaScript("testObject.setBooleanArray([undefined]);"); 654 mActivityTestRule.executeJavaScript("testObject.setBooleanArray([undefin ed]);");
619 assertEquals(false, mTestObject.waitForBooleanArray()[0]); 655 Assert.assertEquals(false, mTestObject.waitForBooleanArray()[0]);
620 656
621 // LIVECONNECT_COMPLIANCE: Should create array and pass null. 657 // LIVECONNECT_COMPLIANCE: Should create array and pass null.
622 executeJavaScript("testObject.setObjectArray([undefined]);"); 658 mActivityTestRule.executeJavaScript("testObject.setObjectArray([undefine d]);");
623 assertNull(mTestObject.waitForObjectArray()); 659 Assert.assertNull(mTestObject.waitForObjectArray());
624 660
625 executeJavaScript("testObject.setStringArray([undefined]);"); 661 mActivityTestRule.executeJavaScript("testObject.setStringArray([undefine d]);");
626 assertNull(mTestObject.waitForStringArray()[0]); 662 Assert.assertNull(mTestObject.waitForStringArray()[0]);
627 663
628 // LIVECONNECT_COMPLIANCE: Should create array and pass null. 664 // LIVECONNECT_COMPLIANCE: Should create array and pass null.
629 executeJavaScript("testObject.setCustomTypeArray([undefined]);"); 665 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray([unde fined]);");
630 assertNull(mTestObject.waitForCustomTypeArray()); 666 Assert.assertNull(mTestObject.waitForCustomTypeArray());
631 } 667 }
632 668
633 // Test passing a typed Int8Array to a method which takes a Java array. 669 // Test passing a typed Int8Array to a method which takes a Java array.
670 @Test
634 @SmallTest 671 @SmallTest
635 @Feature({"AndroidWebView", "Android-JavaBridge"}) 672 @Feature({"AndroidWebView", "Android-JavaBridge"})
636 public void testPassInt8Array() throws Throwable { 673 public void testPassInt8Array() throws Throwable {
637 executeJavaScript("buffer = new ArrayBuffer(1);"); 674 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(1);");
638 executeJavaScript("int8_array = new Int8Array(buffer);"); 675 mActivityTestRule.executeJavaScript("int8_array = new Int8Array(buffer); ");
639 executeJavaScript("int8_array[0] = 42;"); 676 mActivityTestRule.executeJavaScript("int8_array[0] = 42;");
640 677
641 executeJavaScript("testObject.setBooleanArray(int8_array);"); 678 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(int8_arr ay);");
642 assertFalse(mTestObject.waitForBooleanArray()[0]); 679 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
643 680
644 executeJavaScript("testObject.setByteArray(int8_array);"); 681 mActivityTestRule.executeJavaScript("testObject.setByteArray(int8_array) ;");
645 assertEquals(42, mTestObject.waitForByteArray()[0]); 682 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
646 683
647 executeJavaScript("testObject.setCharArray(int8_array);"); 684 mActivityTestRule.executeJavaScript("testObject.setCharArray(int8_array) ;");
648 assertEquals(42, mTestObject.waitForCharArray()[0]); 685 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
649 686
650 executeJavaScript("testObject.setShortArray(int8_array);"); 687 mActivityTestRule.executeJavaScript("testObject.setShortArray(int8_array );");
651 assertEquals(42, mTestObject.waitForShortArray()[0]); 688 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
652 689
653 executeJavaScript("testObject.setIntArray(int8_array);"); 690 mActivityTestRule.executeJavaScript("testObject.setIntArray(int8_array); ");
654 assertEquals(42, mTestObject.waitForIntArray()[0]); 691 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
655 692
656 executeJavaScript("testObject.setLongArray(int8_array);"); 693 mActivityTestRule.executeJavaScript("testObject.setLongArray(int8_array) ;");
657 assertEquals(42L, mTestObject.waitForLongArray()[0]); 694 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
658 695
659 executeJavaScript("testObject.setFloatArray(int8_array);"); 696 mActivityTestRule.executeJavaScript("testObject.setFloatArray(int8_array );");
660 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 697 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
661 698
662 executeJavaScript("testObject.setDoubleArray(int8_array);"); 699 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(int8_arra y);");
663 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 700 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
664 701
665 executeJavaScript("testObject.setObjectArray(int8_array);"); 702 mActivityTestRule.executeJavaScript("testObject.setObjectArray(int8_arra y);");
666 assertNull(mTestObject.waitForObjectArray()); 703 Assert.assertNull(mTestObject.waitForObjectArray());
667 704
668 executeJavaScript("testObject.setStringArray(int8_array);"); 705 mActivityTestRule.executeJavaScript("testObject.setStringArray(int8_arra y);");
669 assertNull(mTestObject.waitForStringArray()[0]); 706 Assert.assertNull(mTestObject.waitForStringArray()[0]);
670 707
671 executeJavaScript("testObject.setCustomTypeArray(int8_array);"); 708 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(int8_ array);");
672 assertNull(mTestObject.waitForCustomTypeArray()); 709 Assert.assertNull(mTestObject.waitForCustomTypeArray());
673 } 710 }
674 711
675 // Test passing a typed Uint8Array to a method which takes a Java array. 712 // Test passing a typed Uint8Array to a method which takes a Java array.
713 @Test
676 @SmallTest 714 @SmallTest
677 @Feature({"AndroidWebView", "Android-JavaBridge"}) 715 @Feature({"AndroidWebView", "Android-JavaBridge"})
678 public void testPassUint8Array() throws Throwable { 716 public void testPassUint8Array() throws Throwable {
679 executeJavaScript("buffer = new ArrayBuffer(1);"); 717 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(1);");
680 executeJavaScript("uint8_array = new Uint8Array(buffer);"); 718 mActivityTestRule.executeJavaScript("uint8_array = new Uint8Array(buffer );");
681 executeJavaScript("uint8_array[0] = 42;"); 719 mActivityTestRule.executeJavaScript("uint8_array[0] = 42;");
682 720
683 executeJavaScript("testObject.setBooleanArray(uint8_array);"); 721 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(uint8_ar ray);");
684 assertFalse(mTestObject.waitForBooleanArray()[0]); 722 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
685 723
686 executeJavaScript("testObject.setByteArray(uint8_array);"); 724 mActivityTestRule.executeJavaScript("testObject.setByteArray(uint8_array );");
687 assertEquals(42, mTestObject.waitForByteArray()[0]); 725 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
688 726
689 executeJavaScript("testObject.setCharArray(uint8_array);"); 727 mActivityTestRule.executeJavaScript("testObject.setCharArray(uint8_array );");
690 assertEquals(42, mTestObject.waitForCharArray()[0]); 728 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
691 729
692 executeJavaScript("testObject.setShortArray(uint8_array);"); 730 mActivityTestRule.executeJavaScript("testObject.setShortArray(uint8_arra y);");
693 assertEquals(42, mTestObject.waitForShortArray()[0]); 731 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
694 732
695 executeJavaScript("testObject.setIntArray(uint8_array);"); 733 mActivityTestRule.executeJavaScript("testObject.setIntArray(uint8_array) ;");
696 assertEquals(42, mTestObject.waitForIntArray()[0]); 734 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
697 735
698 executeJavaScript("testObject.setLongArray(uint8_array);"); 736 mActivityTestRule.executeJavaScript("testObject.setLongArray(uint8_array );");
699 assertEquals(42L, mTestObject.waitForLongArray()[0]); 737 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
700 738
701 executeJavaScript("testObject.setFloatArray(uint8_array);"); 739 mActivityTestRule.executeJavaScript("testObject.setFloatArray(uint8_arra y);");
702 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 740 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
703 741
704 executeJavaScript("testObject.setDoubleArray(uint8_array);"); 742 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(uint8_arr ay);");
705 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 743 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
706 744
707 executeJavaScript("testObject.setObjectArray(uint8_array);"); 745 mActivityTestRule.executeJavaScript("testObject.setObjectArray(uint8_arr ay);");
708 assertNull(mTestObject.waitForObjectArray()); 746 Assert.assertNull(mTestObject.waitForObjectArray());
709 747
710 executeJavaScript("testObject.setStringArray(uint8_array);"); 748 mActivityTestRule.executeJavaScript("testObject.setStringArray(uint8_arr ay);");
711 assertNull(mTestObject.waitForStringArray()[0]); 749 Assert.assertNull(mTestObject.waitForStringArray()[0]);
712 750
713 executeJavaScript("testObject.setCustomTypeArray(uint8_array);"); 751 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(uint8 _array);");
714 assertNull(mTestObject.waitForCustomTypeArray()); 752 Assert.assertNull(mTestObject.waitForCustomTypeArray());
715 } 753 }
716 754
717 // Test passing a typed Int16Array to a method which takes a Java array. 755 // Test passing a typed Int16Array to a method which takes a Java array.
756 @Test
718 @SmallTest 757 @SmallTest
719 @Feature({"AndroidWebView", "Android-JavaBridge"}) 758 @Feature({"AndroidWebView", "Android-JavaBridge"})
720 public void testPassInt16Array() throws Throwable { 759 public void testPassInt16Array() throws Throwable {
721 executeJavaScript("buffer = new ArrayBuffer(2);"); 760 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(2);");
722 executeJavaScript("int16_array = new Int16Array(buffer);"); 761 mActivityTestRule.executeJavaScript("int16_array = new Int16Array(buffer );");
723 executeJavaScript("int16_array[0] = 42;"); 762 mActivityTestRule.executeJavaScript("int16_array[0] = 42;");
724 763
725 executeJavaScript("testObject.setBooleanArray(int16_array);"); 764 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(int16_ar ray);");
726 assertFalse(mTestObject.waitForBooleanArray()[0]); 765 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
727 766
728 executeJavaScript("testObject.setByteArray(int16_array);"); 767 mActivityTestRule.executeJavaScript("testObject.setByteArray(int16_array );");
729 assertEquals(42, mTestObject.waitForByteArray()[0]); 768 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
730 769
731 executeJavaScript("testObject.setCharArray(int16_array);"); 770 mActivityTestRule.executeJavaScript("testObject.setCharArray(int16_array );");
732 assertEquals(42, mTestObject.waitForCharArray()[0]); 771 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
733 772
734 executeJavaScript("testObject.setShortArray(int16_array);"); 773 mActivityTestRule.executeJavaScript("testObject.setShortArray(int16_arra y);");
735 assertEquals(42, mTestObject.waitForShortArray()[0]); 774 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
736 775
737 executeJavaScript("testObject.setIntArray(int16_array);"); 776 mActivityTestRule.executeJavaScript("testObject.setIntArray(int16_array) ;");
738 assertEquals(42, mTestObject.waitForIntArray()[0]); 777 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
739 778
740 executeJavaScript("testObject.setLongArray(int16_array);"); 779 mActivityTestRule.executeJavaScript("testObject.setLongArray(int16_array );");
741 assertEquals(42L, mTestObject.waitForLongArray()[0]); 780 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
742 781
743 executeJavaScript("testObject.setFloatArray(int16_array);"); 782 mActivityTestRule.executeJavaScript("testObject.setFloatArray(int16_arra y);");
744 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 783 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
745 784
746 executeJavaScript("testObject.setDoubleArray(int16_array);"); 785 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(int16_arr ay);");
747 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 786 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
748 787
749 executeJavaScript("testObject.setObjectArray(int16_array);"); 788 mActivityTestRule.executeJavaScript("testObject.setObjectArray(int16_arr ay);");
750 assertNull(mTestObject.waitForObjectArray()); 789 Assert.assertNull(mTestObject.waitForObjectArray());
751 790
752 executeJavaScript("testObject.setStringArray(int16_array);"); 791 mActivityTestRule.executeJavaScript("testObject.setStringArray(int16_arr ay);");
753 assertNull(mTestObject.waitForStringArray()[0]); 792 Assert.assertNull(mTestObject.waitForStringArray()[0]);
754 793
755 executeJavaScript("testObject.setCustomTypeArray(int16_array);"); 794 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(int16 _array);");
756 assertNull(mTestObject.waitForCustomTypeArray()); 795 Assert.assertNull(mTestObject.waitForCustomTypeArray());
757 } 796 }
758 797
759 // Test passing a typed Uint16Array to a method which takes a Java array. 798 // Test passing a typed Uint16Array to a method which takes a Java array.
799 @Test
760 @SmallTest 800 @SmallTest
761 @Feature({"AndroidWebView", "Android-JavaBridge"}) 801 @Feature({"AndroidWebView", "Android-JavaBridge"})
762 public void testPassUint16Array() throws Throwable { 802 public void testPassUint16Array() throws Throwable {
763 executeJavaScript("buffer = new ArrayBuffer(2);"); 803 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(2);");
764 executeJavaScript("uint16_array = new Uint16Array(buffer);"); 804 mActivityTestRule.executeJavaScript("uint16_array = new Uint16Array(buff er);");
765 executeJavaScript("uint16_array[0] = 42;"); 805 mActivityTestRule.executeJavaScript("uint16_array[0] = 42;");
766 806
767 executeJavaScript("testObject.setBooleanArray(uint16_array);"); 807 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(uint16_a rray);");
768 assertFalse(mTestObject.waitForBooleanArray()[0]); 808 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
769 809
770 executeJavaScript("testObject.setByteArray(uint16_array);"); 810 mActivityTestRule.executeJavaScript("testObject.setByteArray(uint16_arra y);");
771 assertEquals(42, mTestObject.waitForByteArray()[0]); 811 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
772 812
773 executeJavaScript("testObject.setCharArray(uint16_array);"); 813 mActivityTestRule.executeJavaScript("testObject.setCharArray(uint16_arra y);");
774 assertEquals(42, mTestObject.waitForCharArray()[0]); 814 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
775 815
776 executeJavaScript("testObject.setShortArray(uint16_array);"); 816 mActivityTestRule.executeJavaScript("testObject.setShortArray(uint16_arr ay);");
777 assertEquals(42, mTestObject.waitForShortArray()[0]); 817 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
778 818
779 executeJavaScript("testObject.setIntArray(uint16_array);"); 819 mActivityTestRule.executeJavaScript("testObject.setIntArray(uint16_array );");
780 assertEquals(42, mTestObject.waitForIntArray()[0]); 820 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
781 821
782 executeJavaScript("testObject.setLongArray(uint16_array);"); 822 mActivityTestRule.executeJavaScript("testObject.setLongArray(uint16_arra y);");
783 assertEquals(42L, mTestObject.waitForLongArray()[0]); 823 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
784 824
785 executeJavaScript("testObject.setFloatArray(uint16_array);"); 825 mActivityTestRule.executeJavaScript("testObject.setFloatArray(uint16_arr ay);");
786 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 826 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
787 827
788 executeJavaScript("testObject.setDoubleArray(uint16_array);"); 828 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(uint16_ar ray);");
789 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 829 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
790 830
791 executeJavaScript("testObject.setObjectArray(uint16_array);"); 831 mActivityTestRule.executeJavaScript("testObject.setObjectArray(uint16_ar ray);");
792 assertNull(mTestObject.waitForObjectArray()); 832 Assert.assertNull(mTestObject.waitForObjectArray());
793 833
794 executeJavaScript("testObject.setStringArray(uint16_array);"); 834 mActivityTestRule.executeJavaScript("testObject.setStringArray(uint16_ar ray);");
795 assertNull(mTestObject.waitForStringArray()[0]); 835 Assert.assertNull(mTestObject.waitForStringArray()[0]);
796 836
797 executeJavaScript("testObject.setCustomTypeArray(uint16_array);"); 837 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(uint1 6_array);");
798 assertNull(mTestObject.waitForCustomTypeArray()); 838 Assert.assertNull(mTestObject.waitForCustomTypeArray());
799 } 839 }
800 840
801 // Test passing a typed Int32Array to a method which takes a Java array. 841 // Test passing a typed Int32Array to a method which takes a Java array.
842 @Test
802 @SmallTest 843 @SmallTest
803 @Feature({"AndroidWebView", "Android-JavaBridge"}) 844 @Feature({"AndroidWebView", "Android-JavaBridge"})
804 public void testPassInt32Array() throws Throwable { 845 public void testPassInt32Array() throws Throwable {
805 executeJavaScript("buffer = new ArrayBuffer(4);"); 846 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(4);");
806 executeJavaScript("int32_array = new Int32Array(buffer);"); 847 mActivityTestRule.executeJavaScript("int32_array = new Int32Array(buffer );");
807 executeJavaScript("int32_array[0] = 42;"); 848 mActivityTestRule.executeJavaScript("int32_array[0] = 42;");
808 849
809 executeJavaScript("testObject.setBooleanArray(int32_array);"); 850 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(int32_ar ray);");
810 assertFalse(mTestObject.waitForBooleanArray()[0]); 851 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
811 852
812 executeJavaScript("testObject.setByteArray(int32_array);"); 853 mActivityTestRule.executeJavaScript("testObject.setByteArray(int32_array );");
813 assertEquals(42, mTestObject.waitForByteArray()[0]); 854 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
814 855
815 executeJavaScript("testObject.setCharArray(int32_array);"); 856 mActivityTestRule.executeJavaScript("testObject.setCharArray(int32_array );");
816 assertEquals(42, mTestObject.waitForCharArray()[0]); 857 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
817 858
818 executeJavaScript("testObject.setShortArray(int32_array);"); 859 mActivityTestRule.executeJavaScript("testObject.setShortArray(int32_arra y);");
819 assertEquals(42, mTestObject.waitForShortArray()[0]); 860 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
820 861
821 executeJavaScript("testObject.setIntArray(int32_array);"); 862 mActivityTestRule.executeJavaScript("testObject.setIntArray(int32_array) ;");
822 assertEquals(42, mTestObject.waitForIntArray()[0]); 863 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
823 864
824 executeJavaScript("testObject.setLongArray(int32_array);"); 865 mActivityTestRule.executeJavaScript("testObject.setLongArray(int32_array );");
825 assertEquals(42L, mTestObject.waitForLongArray()[0]); 866 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
826 867
827 executeJavaScript("testObject.setFloatArray(int32_array);"); 868 mActivityTestRule.executeJavaScript("testObject.setFloatArray(int32_arra y);");
828 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 869 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
829 870
830 executeJavaScript("testObject.setDoubleArray(int32_array);"); 871 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(int32_arr ay);");
831 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 872 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
832 873
833 executeJavaScript("testObject.setObjectArray(int32_array);"); 874 mActivityTestRule.executeJavaScript("testObject.setObjectArray(int32_arr ay);");
834 assertNull(mTestObject.waitForObjectArray()); 875 Assert.assertNull(mTestObject.waitForObjectArray());
835 876
836 executeJavaScript("testObject.setStringArray(int32_array);"); 877 mActivityTestRule.executeJavaScript("testObject.setStringArray(int32_arr ay);");
837 assertNull(mTestObject.waitForStringArray()[0]); 878 Assert.assertNull(mTestObject.waitForStringArray()[0]);
838 879
839 executeJavaScript("testObject.setCustomTypeArray(int32_array);"); 880 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(int32 _array);");
840 assertNull(mTestObject.waitForCustomTypeArray()); 881 Assert.assertNull(mTestObject.waitForCustomTypeArray());
841 } 882 }
842 883
843 // Test passing a typed Uint32Array to a method which takes a Java array. 884 // Test passing a typed Uint32Array to a method which takes a Java array.
885 @Test
844 @SmallTest 886 @SmallTest
845 @Feature({"AndroidWebView", "Android-JavaBridge"}) 887 @Feature({"AndroidWebView", "Android-JavaBridge"})
846 public void testPassUint32Array() throws Throwable { 888 public void testPassUint32Array() throws Throwable {
847 executeJavaScript("buffer = new ArrayBuffer(4);"); 889 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(4);");
848 executeJavaScript("uint32_array = new Uint32Array(buffer);"); 890 mActivityTestRule.executeJavaScript("uint32_array = new Uint32Array(buff er);");
849 executeJavaScript("uint32_array[0] = 42;"); 891 mActivityTestRule.executeJavaScript("uint32_array[0] = 42;");
850 892
851 executeJavaScript("testObject.setBooleanArray(uint32_array);"); 893 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(uint32_a rray);");
852 assertFalse(mTestObject.waitForBooleanArray()[0]); 894 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
853 895
854 executeJavaScript("testObject.setByteArray(uint32_array);"); 896 mActivityTestRule.executeJavaScript("testObject.setByteArray(uint32_arra y);");
855 assertEquals(42, mTestObject.waitForByteArray()[0]); 897 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
856 898
857 executeJavaScript("testObject.setCharArray(uint32_array);"); 899 mActivityTestRule.executeJavaScript("testObject.setCharArray(uint32_arra y);");
858 assertEquals(42, mTestObject.waitForCharArray()[0]); 900 Assert.assertEquals(42, mTestObject.waitForCharArray()[0]);
859 901
860 executeJavaScript("testObject.setShortArray(uint32_array);"); 902 mActivityTestRule.executeJavaScript("testObject.setShortArray(uint32_arr ay);");
861 assertEquals(42, mTestObject.waitForShortArray()[0]); 903 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
862 904
863 executeJavaScript("testObject.setIntArray(uint32_array);"); 905 mActivityTestRule.executeJavaScript("testObject.setIntArray(uint32_array );");
864 assertEquals(42, mTestObject.waitForIntArray()[0]); 906 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
865 907
866 executeJavaScript("testObject.setLongArray(uint32_array);"); 908 mActivityTestRule.executeJavaScript("testObject.setLongArray(uint32_arra y);");
867 assertEquals(42L, mTestObject.waitForLongArray()[0]); 909 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
868 910
869 executeJavaScript("testObject.setFloatArray(uint32_array);"); 911 mActivityTestRule.executeJavaScript("testObject.setFloatArray(uint32_arr ay);");
870 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 912 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
871 913
872 executeJavaScript("testObject.setDoubleArray(uint32_array);"); 914 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(uint32_ar ray);");
873 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 915 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
874 916
875 executeJavaScript("testObject.setObjectArray(uint32_array);"); 917 mActivityTestRule.executeJavaScript("testObject.setObjectArray(uint32_ar ray);");
876 assertNull(mTestObject.waitForObjectArray()); 918 Assert.assertNull(mTestObject.waitForObjectArray());
877 919
878 executeJavaScript("testObject.setStringArray(uint32_array);"); 920 mActivityTestRule.executeJavaScript("testObject.setStringArray(uint32_ar ray);");
879 assertNull(mTestObject.waitForStringArray()[0]); 921 Assert.assertNull(mTestObject.waitForStringArray()[0]);
880 922
881 executeJavaScript("testObject.setCustomTypeArray(uint32_array);"); 923 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(uint3 2_array);");
882 assertNull(mTestObject.waitForCustomTypeArray()); 924 Assert.assertNull(mTestObject.waitForCustomTypeArray());
883 } 925 }
884 926
885 // Test passing a typed Float32Array to a method which takes a Java array. 927 // Test passing a typed Float32Array to a method which takes a Java array.
928 @Test
886 @SmallTest 929 @SmallTest
887 @Feature({"AndroidWebView", "Android-JavaBridge"}) 930 @Feature({"AndroidWebView", "Android-JavaBridge"})
888 public void testPassFloat32Array() throws Throwable { 931 public void testPassFloat32Array() throws Throwable {
889 executeJavaScript("buffer = new ArrayBuffer(4);"); 932 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(4);");
890 executeJavaScript("float32_array = new Float32Array(buffer);"); 933 mActivityTestRule.executeJavaScript("float32_array = new Float32Array(bu ffer);");
891 executeJavaScript("float32_array[0] = 42.0;"); 934 mActivityTestRule.executeJavaScript("float32_array[0] = 42.0;");
892 935
893 executeJavaScript("testObject.setBooleanArray(float32_array);"); 936 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(float32_ array);");
894 assertFalse(mTestObject.waitForBooleanArray()[0]); 937 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
895 938
896 executeJavaScript("testObject.setByteArray(float32_array);"); 939 mActivityTestRule.executeJavaScript("testObject.setByteArray(float32_arr ay);");
897 assertEquals(42, mTestObject.waitForByteArray()[0]); 940 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
898 941
899 executeJavaScript("testObject.setCharArray(float32_array);"); 942 mActivityTestRule.executeJavaScript("testObject.setCharArray(float32_arr ay);");
900 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 943 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
901 944
902 executeJavaScript("testObject.setShortArray(float32_array);"); 945 mActivityTestRule.executeJavaScript("testObject.setShortArray(float32_ar ray);");
903 assertEquals(42, mTestObject.waitForShortArray()[0]); 946 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
904 947
905 executeJavaScript("testObject.setIntArray(float32_array);"); 948 mActivityTestRule.executeJavaScript("testObject.setIntArray(float32_arra y);");
906 assertEquals(42, mTestObject.waitForIntArray()[0]); 949 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
907 950
908 executeJavaScript("testObject.setLongArray(float32_array);"); 951 mActivityTestRule.executeJavaScript("testObject.setLongArray(float32_arr ay);");
909 assertEquals(42L, mTestObject.waitForLongArray()[0]); 952 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
910 953
911 executeJavaScript("testObject.setFloatArray(float32_array);"); 954 mActivityTestRule.executeJavaScript("testObject.setFloatArray(float32_ar ray);");
912 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 955 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
913 956
914 executeJavaScript("testObject.setDoubleArray(float32_array);"); 957 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(float32_a rray);");
915 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 958 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
916 959
917 executeJavaScript("testObject.setObjectArray(float32_array);"); 960 mActivityTestRule.executeJavaScript("testObject.setObjectArray(float32_a rray);");
918 assertNull(mTestObject.waitForObjectArray()); 961 Assert.assertNull(mTestObject.waitForObjectArray());
919 962
920 executeJavaScript("testObject.setStringArray(float32_array);"); 963 mActivityTestRule.executeJavaScript("testObject.setStringArray(float32_a rray);");
921 assertNull(mTestObject.waitForStringArray()[0]); 964 Assert.assertNull(mTestObject.waitForStringArray()[0]);
922 965
923 executeJavaScript("testObject.setCustomTypeArray(float32_array);"); 966 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(float 32_array);");
924 assertNull(mTestObject.waitForCustomTypeArray()); 967 Assert.assertNull(mTestObject.waitForCustomTypeArray());
925 } 968 }
926 969
927 // Test passing a typed Float64Array to a method which takes a Java array. 970 // Test passing a typed Float64Array to a method which takes a Java array.
971 @Test
928 @SmallTest 972 @SmallTest
929 @Feature({"AndroidWebView", "Android-JavaBridge"}) 973 @Feature({"AndroidWebView", "Android-JavaBridge"})
930 public void testPassFloat64Array() throws Throwable { 974 public void testPassFloat64Array() throws Throwable {
931 executeJavaScript("buffer = new ArrayBuffer(8);"); 975 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(8);");
932 executeJavaScript("float64_array = new Float64Array(buffer);"); 976 mActivityTestRule.executeJavaScript("float64_array = new Float64Array(bu ffer);");
933 executeJavaScript("float64_array[0] = 42.0;"); 977 mActivityTestRule.executeJavaScript("float64_array[0] = 42.0;");
934 978
935 executeJavaScript("testObject.setBooleanArray(float64_array);"); 979 mActivityTestRule.executeJavaScript("testObject.setBooleanArray(float64_ array);");
936 assertFalse(mTestObject.waitForBooleanArray()[0]); 980 Assert.assertFalse(mTestObject.waitForBooleanArray()[0]);
937 981
938 executeJavaScript("testObject.setByteArray(float64_array);"); 982 mActivityTestRule.executeJavaScript("testObject.setByteArray(float64_arr ay);");
939 assertEquals(42, mTestObject.waitForByteArray()[0]); 983 Assert.assertEquals(42, mTestObject.waitForByteArray()[0]);
940 984
941 executeJavaScript("testObject.setCharArray(float64_array);"); 985 mActivityTestRule.executeJavaScript("testObject.setCharArray(float64_arr ay);");
942 assertEquals('\u0000', mTestObject.waitForCharArray()[0]); 986 Assert.assertEquals('\u0000', mTestObject.waitForCharArray()[0]);
943 987
944 executeJavaScript("testObject.setShortArray(float64_array);"); 988 mActivityTestRule.executeJavaScript("testObject.setShortArray(float64_ar ray);");
945 assertEquals(42, mTestObject.waitForShortArray()[0]); 989 Assert.assertEquals(42, mTestObject.waitForShortArray()[0]);
946 990
947 executeJavaScript("testObject.setIntArray(float64_array);"); 991 mActivityTestRule.executeJavaScript("testObject.setIntArray(float64_arra y);");
948 assertEquals(42, mTestObject.waitForIntArray()[0]); 992 Assert.assertEquals(42, mTestObject.waitForIntArray()[0]);
949 993
950 executeJavaScript("testObject.setLongArray(float64_array);"); 994 mActivityTestRule.executeJavaScript("testObject.setLongArray(float64_arr ay);");
951 assertEquals(42L, mTestObject.waitForLongArray()[0]); 995 Assert.assertEquals(42L, mTestObject.waitForLongArray()[0]);
952 996
953 executeJavaScript("testObject.setFloatArray(float64_array);"); 997 mActivityTestRule.executeJavaScript("testObject.setFloatArray(float64_ar ray);");
954 assertEquals(42.0f, mTestObject.waitForFloatArray()[0]); 998 Assert.assertEquals(42.0f, mTestObject.waitForFloatArray()[0], ASSERTION _DELTA);
955 999
956 executeJavaScript("testObject.setDoubleArray(float64_array);"); 1000 mActivityTestRule.executeJavaScript("testObject.setDoubleArray(float64_a rray);");
957 assertEquals(42.0, mTestObject.waitForDoubleArray()[0]); 1001 Assert.assertEquals(42.0, mTestObject.waitForDoubleArray()[0], ASSERTION _DELTA);
958 1002
959 executeJavaScript("testObject.setObjectArray(float64_array);"); 1003 mActivityTestRule.executeJavaScript("testObject.setObjectArray(float64_a rray);");
960 assertNull(mTestObject.waitForObjectArray()); 1004 Assert.assertNull(mTestObject.waitForObjectArray());
961 1005
962 executeJavaScript("testObject.setStringArray(float64_array);"); 1006 mActivityTestRule.executeJavaScript("testObject.setStringArray(float64_a rray);");
963 assertNull(mTestObject.waitForStringArray()[0]); 1007 Assert.assertNull(mTestObject.waitForStringArray()[0]);
964 1008
965 executeJavaScript("testObject.setCustomTypeArray(float64_array);"); 1009 mActivityTestRule.executeJavaScript("testObject.setCustomTypeArray(float 64_array);");
966 assertNull(mTestObject.waitForCustomTypeArray()); 1010 Assert.assertNull(mTestObject.waitForCustomTypeArray());
967 } 1011 }
968 } 1012 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698