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

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

Issue 2708243004: Auto convert content shell tests to JUnit4 (Closed)
Patch Set: organized import order and removed broken tests 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 dalvik.system.DexClassLoader; 9 import dalvik.system.DexClassLoader;
10 10
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Rule;
14 import org.junit.Test;
15 import org.junit.runner.RunWith;
16
11 import org.chromium.base.annotations.SuppressFBWarnings; 17 import org.chromium.base.annotations.SuppressFBWarnings;
18 import org.chromium.base.test.BaseJUnit4ClassRunner;
12 import org.chromium.base.test.util.Feature; 19 import org.chromium.base.test.util.Feature;
13 import org.chromium.base.test.util.UrlUtils; 20 import org.chromium.base.test.util.UrlUtils;
14 import org.chromium.content.browser.JavaBridgeTestCommon.Controller; 21 import org.chromium.content.browser.JavaBridgeTestCommon.Controller;
15 22
16 import java.io.File; 23 import java.io.File;
17 24
18 /** 25 /**
19 * Part of the test suite for the Java Bridge. This class tests that 26 * Part of the test suite for the Java Bridge. This class tests that
20 * we correctly convert JavaScript values to Java values when passing them to 27 * we correctly convert JavaScript values to Java values when passing them to
21 * the methods of injected Java objects. 28 * the methods of injected Java objects.
22 * 29 *
23 * The conversions should follow 30 * The conversions should follow
24 * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in 31 * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in
25 * which the implementation differs from the spec are marked with 32 * which the implementation differs from the spec are marked with
26 * LIVECONNECT_COMPLIANCE. 33 * LIVECONNECT_COMPLIANCE.
27 * FIXME: Consider making our implementation more compliant, if it will not 34 * FIXME: Consider making our implementation more compliant, if it will not
28 * break backwards-compatibility. See b/4408210. 35 * break backwards-compatibility. See b/4408210.
29 */ 36 */
30 public class JavaBridgeCoercionTest extends JavaBridgeTestBase { 37 @RunWith(BaseJUnit4ClassRunner.class)
38 public class JavaBridgeCoercionTest {
39 private static final double ASSERTION_DELTA = 0.00000001;
the real yoland 2017/03/08 23:39:03 Set ASSERTION_DELTA to be 0.00000001 for no partic
40
41 @Rule
42 public JavaBridgeActivityTestRule mActivityTestRule = new JavaBridgeActivity TestRule();
43
31 @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD") 44 @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD")
32 private static class TestObject extends Controller { 45 private static class TestObject extends Controller {
33 private Object mObjectInstance; 46 private Object mObjectInstance;
34 private CustomType mCustomTypeInstance; 47 private CustomType mCustomTypeInstance;
35 private CustomType2 mCustomType2Instance; 48 private CustomType2 mCustomType2Instance;
36 49
37 private boolean mBooleanValue; 50 private boolean mBooleanValue;
38 private byte mByteValue; 51 private byte mByteValue;
39 private char mCharValue; 52 private char mCharValue;
40 private short mShortValue; 53 private short mShortValue;
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 public synchronized boolean waitForBooleanValue() { 185 public synchronized boolean waitForBooleanValue() {
173 waitForResult(); 186 waitForResult();
174 return mBooleanValue; 187 return mBooleanValue;
175 } 188 }
176 } 189 }
177 190
178 TestController mTestController; 191 TestController mTestController;
179 192
180 // Note that this requires that we can pass a JavaScript boolean to Java. 193 // Note that this requires that we can pass a JavaScript boolean to Java.
181 private void assertRaisesException(String script) throws Throwable { 194 private void assertRaisesException(String script) throws Throwable {
182 executeJavaScript("try {" 195 mActivityTestRule.executeJavaScript("try {" + script + ";"
183 + script + ";"
184 + " testController.setBooleanValue(false);" 196 + " testController.setBooleanValue(false);"
185 + "} catch (exception) {" 197 + "} catch (exception) {"
186 + " testController.setBooleanValue(true);" 198 + " testController.setBooleanValue(true);"
187 + "}"); 199 + "}");
188 assertTrue(mTestController.waitForBooleanValue()); 200 Assert.assertTrue(mTestController.waitForBooleanValue());
189 } 201 }
190 202
191 @Override 203 @Before
192 protected void setUp() throws Exception { 204 public void setUp() throws Exception {
193 super.setUp();
194 mTestObject = new TestObject(); 205 mTestObject = new TestObject();
195 mTestController = new TestController(); 206 mTestController = new TestController();
196 injectObjectsAndReload(mTestObject, "testObject", mTestController, "test Controller", null); 207 mActivityTestRule.injectObjectsAndReload(
208 mTestObject, "testObject", mTestController, "testController", nu ll);
197 } 209 }
198 210
199 // Test passing a 32-bit integer JavaScript number to a method of an 211 // Test passing a 32-bit integer JavaScript number to a method of an
200 // injected object. Note that JavaScript may choose to represent these 212 // injected object. Note that JavaScript may choose to represent these
201 // values as either 32-bit integers or doubles, though this should not 213 // values as either 32-bit integers or doubles, though this should not
202 // affect the result. 214 // affect the result.
215 @Test
203 @SmallTest 216 @SmallTest
204 @Feature({"AndroidWebView", "Android-JavaBridge"}) 217 @Feature({"AndroidWebView", "Android-JavaBridge"})
205 public void testPassNumberInt32() throws Throwable { 218 public void testPassNumberInt32() throws Throwable {
206 executeJavaScript("testObject.setByteValue(42);"); 219 mActivityTestRule.executeJavaScript("testObject.setByteValue(42);");
207 assertEquals(42, mTestObject.waitForByteValue()); 220 Assert.assertEquals(42, mTestObject.waitForByteValue());
208 executeJavaScript("testObject.setByteValue(" + Byte.MAX_VALUE + " + 42); "); 221 mActivityTestRule.executeJavaScript(
209 assertEquals(Byte.MIN_VALUE + 42 - 1, mTestObject.waitForByteValue()); 222 "testObject.setByteValue(" + Byte.MAX_VALUE + " + 42);");
210 223 Assert.assertEquals(Byte.MIN_VALUE + 42 - 1, mTestObject.waitForByteValu e());
211 executeJavaScript("testObject.setCharValue(42);"); 224
212 assertEquals(42, mTestObject.waitForCharValue()); 225 mActivityTestRule.executeJavaScript("testObject.setCharValue(42);");
213 226 Assert.assertEquals(42, mTestObject.waitForCharValue());
214 executeJavaScript("testObject.setShortValue(42);"); 227
215 assertEquals(42, mTestObject.waitForShortValue()); 228 mActivityTestRule.executeJavaScript("testObject.setShortValue(42);");
216 executeJavaScript("testObject.setShortValue(" + Short.MAX_VALUE + " + 42 );"); 229 Assert.assertEquals(42, mTestObject.waitForShortValue());
217 assertEquals(Short.MIN_VALUE + 42 - 1, mTestObject.waitForShortValue()); 230 mActivityTestRule.executeJavaScript(
218 231 "testObject.setShortValue(" + Short.MAX_VALUE + " + 42);");
219 executeJavaScript("testObject.setIntValue(42);"); 232 Assert.assertEquals(Short.MIN_VALUE + 42 - 1, mTestObject.waitForShortVa lue());
220 assertEquals(42, mTestObject.waitForIntValue()); 233
221 234 mActivityTestRule.executeJavaScript("testObject.setIntValue(42);");
222 executeJavaScript("testObject.setLongValue(42);"); 235 Assert.assertEquals(42, mTestObject.waitForIntValue());
223 assertEquals(42L, mTestObject.waitForLongValue()); 236
224 237 mActivityTestRule.executeJavaScript("testObject.setLongValue(42);");
225 executeJavaScript("testObject.setFloatValue(42);"); 238 Assert.assertEquals(42L, mTestObject.waitForLongValue());
226 assertEquals(42.0f, mTestObject.waitForFloatValue()); 239
227 240 mActivityTestRule.executeJavaScript("testObject.setFloatValue(42);");
228 executeJavaScript("testObject.setDoubleValue(42);"); 241 Assert.assertEquals(42.0f, mTestObject.waitForFloatValue(), ASSERTION_DE LTA);
229 assertEquals(42.0, mTestObject.waitForDoubleValue()); 242
243 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(42);");
244 Assert.assertEquals(42.0, mTestObject.waitForDoubleValue(), ASSERTION_DE LTA);
230 245
231 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number . 246 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number .
232 executeJavaScript("testObject.setObjectValue(42);"); 247 mActivityTestRule.executeJavaScript("testObject.setObjectValue(42);");
233 assertNull(mTestObject.waitForObjectValue()); 248 Assert.assertNull(mTestObject.waitForObjectValue());
234 249
235 // The spec allows the JS engine flexibility in how to format the number . 250 // The spec allows the JS engine flexibility in how to format the number .
236 executeJavaScript("testObject.setStringValue(42);"); 251 mActivityTestRule.executeJavaScript("testObject.setStringValue(42);");
237 String str = mTestObject.waitForStringValue(); 252 String str = mTestObject.waitForStringValue();
238 assertTrue("42".equals(str) || "42.0".equals(str)); 253 Assert.assertTrue("42".equals(str) || "42.0".equals(str));
239 254
240 executeJavaScript("testObject.setBooleanValue(0);"); 255 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(0);");
241 assertFalse(mTestObject.waitForBooleanValue()); 256 Assert.assertFalse(mTestObject.waitForBooleanValue());
242 // LIVECONNECT_COMPLIANCE: Should be true; 257 // LIVECONNECT_COMPLIANCE: Should be true;
243 executeJavaScript("testObject.setBooleanValue(42);"); 258 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(42);");
244 assertFalse(mTestObject.waitForBooleanValue()); 259 Assert.assertFalse(mTestObject.waitForBooleanValue());
245 260
246 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 261 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
247 executeJavaScript("testObject.setCustomTypeValue(42);"); 262 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(42);" );
248 assertNull(mTestObject.waitForCustomTypeValue()); 263 Assert.assertNull(mTestObject.waitForCustomTypeValue());
249 } 264 }
250 265
251 // Test passing a floating-point JavaScript number to a method of an 266 // Test passing a floating-point JavaScript number to a method of an
252 // injected object. JavaScript represents these values as doubles. 267 // injected object. JavaScript represents these values as doubles.
268 @Test
253 @SmallTest 269 @SmallTest
254 @Feature({"AndroidWebView", "Android-JavaBridge"}) 270 @Feature({"AndroidWebView", "Android-JavaBridge"})
255 public void testPassNumberDouble() throws Throwable { 271 public void testPassNumberDouble() throws Throwable {
256 executeJavaScript("testObject.setByteValue(42.1);"); 272 mActivityTestRule.executeJavaScript("testObject.setByteValue(42.1);");
257 assertEquals(42, mTestObject.waitForByteValue()); 273 Assert.assertEquals(42, mTestObject.waitForByteValue());
258 executeJavaScript("testObject.setByteValue(" + Byte.MAX_VALUE + " + 42.1 );"); 274 mActivityTestRule.executeJavaScript(
259 assertEquals(Byte.MIN_VALUE + 42 - 1, mTestObject.waitForByteValue()); 275 "testObject.setByteValue(" + Byte.MAX_VALUE + " + 42.1);");
260 executeJavaScript("testObject.setByteValue(" + Byte.MIN_VALUE + " - 42.1 );"); 276 Assert.assertEquals(Byte.MIN_VALUE + 42 - 1, mTestObject.waitForByteValu e());
261 assertEquals(Byte.MAX_VALUE - 42 + 1, mTestObject.waitForByteValue()); 277 mActivityTestRule.executeJavaScript(
262 executeJavaScript("testObject.setByteValue(" + Integer.MAX_VALUE + " + 4 2.1);"); 278 "testObject.setByteValue(" + Byte.MIN_VALUE + " - 42.1);");
263 assertEquals(-1, mTestObject.waitForByteValue()); 279 Assert.assertEquals(Byte.MAX_VALUE - 42 + 1, mTestObject.waitForByteValu e());
264 executeJavaScript("testObject.setByteValue(" + Integer.MIN_VALUE + " - 4 2.1);"); 280 mActivityTestRule.executeJavaScript(
265 assertEquals(0, mTestObject.waitForByteValue()); 281 "testObject.setByteValue(" + Integer.MAX_VALUE + " + 42.1);");
282 Assert.assertEquals(-1, mTestObject.waitForByteValue());
283 mActivityTestRule.executeJavaScript(
284 "testObject.setByteValue(" + Integer.MIN_VALUE + " - 42.1);");
285 Assert.assertEquals(0, mTestObject.waitForByteValue());
266 286
267 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value. 287 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value.
268 executeJavaScript("testObject.setCharValue(42.1);"); 288 mActivityTestRule.executeJavaScript("testObject.setCharValue(42.1);");
269 assertEquals('\u0000', mTestObject.waitForCharValue()); 289 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
270 290
271 executeJavaScript("testObject.setShortValue(42.1);"); 291 mActivityTestRule.executeJavaScript("testObject.setShortValue(42.1);");
272 assertEquals(42, mTestObject.waitForShortValue()); 292 Assert.assertEquals(42, mTestObject.waitForShortValue());
273 executeJavaScript("testObject.setShortValue(" + Short.MAX_VALUE + " + 42 .1);"); 293 mActivityTestRule.executeJavaScript(
274 assertEquals(Short.MIN_VALUE + 42 - 1, mTestObject.waitForShortValue()); 294 "testObject.setShortValue(" + Short.MAX_VALUE + " + 42.1);");
275 executeJavaScript("testObject.setShortValue(" + Short.MIN_VALUE + " - 42 .1);"); 295 Assert.assertEquals(Short.MIN_VALUE + 42 - 1, mTestObject.waitForShortVa lue());
276 assertEquals(Short.MAX_VALUE - 42 + 1, mTestObject.waitForShortValue()); 296 mActivityTestRule.executeJavaScript(
277 executeJavaScript("testObject.setShortValue(" + Integer.MAX_VALUE + " + 42.1);"); 297 "testObject.setShortValue(" + Short.MIN_VALUE + " - 42.1);");
278 assertEquals(-1, mTestObject.waitForShortValue()); 298 Assert.assertEquals(Short.MAX_VALUE - 42 + 1, mTestObject.waitForShortVa lue());
279 executeJavaScript("testObject.setShortValue(" + Integer.MIN_VALUE + " - 42.1);"); 299 mActivityTestRule.executeJavaScript(
280 assertEquals(0, mTestObject.waitForShortValue()); 300 "testObject.setShortValue(" + Integer.MAX_VALUE + " + 42.1);");
281 301 Assert.assertEquals(-1, mTestObject.waitForShortValue());
282 executeJavaScript("testObject.setIntValue(42.1);"); 302 mActivityTestRule.executeJavaScript(
283 assertEquals(42, mTestObject.waitForIntValue()); 303 "testObject.setShortValue(" + Integer.MIN_VALUE + " - 42.1);");
284 executeJavaScript("testObject.setIntValue(" + Integer.MAX_VALUE + " + 42 .1);"); 304 Assert.assertEquals(0, mTestObject.waitForShortValue());
285 assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntValue()); 305
286 executeJavaScript("testObject.setIntValue(" + Integer.MIN_VALUE + " - 42 .1);"); 306 mActivityTestRule.executeJavaScript("testObject.setIntValue(42.1);");
287 assertEquals(Integer.MIN_VALUE, mTestObject.waitForIntValue()); 307 Assert.assertEquals(42, mTestObject.waitForIntValue());
288 308 mActivityTestRule.executeJavaScript(
289 executeJavaScript("testObject.setLongValue(42.1);"); 309 "testObject.setIntValue(" + Integer.MAX_VALUE + " + 42.1);");
290 assertEquals(42L, mTestObject.waitForLongValue()); 310 Assert.assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntValue());
291 executeJavaScript("testObject.setLongValue(" + Long.MAX_VALUE + " + 42.1 );"); 311 mActivityTestRule.executeJavaScript(
292 assertEquals(Long.MAX_VALUE, mTestObject.waitForLongValue()); 312 "testObject.setIntValue(" + Integer.MIN_VALUE + " - 42.1);");
293 executeJavaScript("testObject.setLongValue(" + Long.MIN_VALUE + " - 42.1 );"); 313 Assert.assertEquals(Integer.MIN_VALUE, mTestObject.waitForIntValue());
294 assertEquals(Long.MIN_VALUE, mTestObject.waitForLongValue()); 314
295 315 mActivityTestRule.executeJavaScript("testObject.setLongValue(42.1);");
296 executeJavaScript("testObject.setFloatValue(42.1);"); 316 Assert.assertEquals(42L, mTestObject.waitForLongValue());
297 assertEquals(42.1f, mTestObject.waitForFloatValue()); 317 mActivityTestRule.executeJavaScript(
298 318 "testObject.setLongValue(" + Long.MAX_VALUE + " + 42.1);");
299 executeJavaScript("testObject.setDoubleValue(42.1);"); 319 Assert.assertEquals(Long.MAX_VALUE, mTestObject.waitForLongValue());
300 assertEquals(42.1, mTestObject.waitForDoubleValue()); 320 mActivityTestRule.executeJavaScript(
321 "testObject.setLongValue(" + Long.MIN_VALUE + " - 42.1);");
322 Assert.assertEquals(Long.MIN_VALUE, mTestObject.waitForLongValue());
323
324 mActivityTestRule.executeJavaScript("testObject.setFloatValue(42.1);");
325 Assert.assertEquals(42.1f, mTestObject.waitForFloatValue(), ASSERTION_DE LTA);
326
327 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(42.1);");
328 Assert.assertEquals(42.1, mTestObject.waitForDoubleValue(), ASSERTION_DE LTA);
301 329
302 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number . 330 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number .
303 executeJavaScript("testObject.setObjectValue(42.1);"); 331 mActivityTestRule.executeJavaScript("testObject.setObjectValue(42.1);");
304 assertNull(mTestObject.waitForObjectValue()); 332 Assert.assertNull(mTestObject.waitForObjectValue());
305 333
306 executeJavaScript("testObject.setStringValue(42.1);"); 334 mActivityTestRule.executeJavaScript("testObject.setStringValue(42.1);");
307 assertEquals("42.1", mTestObject.waitForStringValue()); 335 Assert.assertEquals("42.1", mTestObject.waitForStringValue());
308 336
309 executeJavaScript("testObject.setBooleanValue(0.0);"); 337 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(0.0);");
310 assertFalse(mTestObject.waitForBooleanValue()); 338 Assert.assertFalse(mTestObject.waitForBooleanValue());
311 // LIVECONNECT_COMPLIANCE: Should be true. 339 // LIVECONNECT_COMPLIANCE: Should be true.
312 executeJavaScript("testObject.setBooleanValue(42.1);"); 340 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(42.1);") ;
313 assertFalse(mTestObject.waitForBooleanValue()); 341 Assert.assertFalse(mTestObject.waitForBooleanValue());
314 342
315 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 343 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
316 executeJavaScript("testObject.setCustomTypeValue(42.1);"); 344 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(42.1) ;");
317 assertNull(mTestObject.waitForCustomTypeValue()); 345 Assert.assertNull(mTestObject.waitForCustomTypeValue());
318 } 346 }
319 347
320 // Test passing JavaScript NaN to a method of an injected object. 348 // Test passing JavaScript NaN to a method of an injected object.
349 @Test
321 @SmallTest 350 @SmallTest
322 @Feature({"AndroidWebView", "Android-JavaBridge"}) 351 @Feature({"AndroidWebView", "Android-JavaBridge"})
323 public void testPassNumberNaN() throws Throwable { 352 public void testPassNumberNaN() throws Throwable {
324 executeJavaScript("testObject.setByteValue(Number.NaN);"); 353 mActivityTestRule.executeJavaScript("testObject.setByteValue(Number.NaN) ;");
325 assertEquals(0, mTestObject.waitForByteValue()); 354 Assert.assertEquals(0, mTestObject.waitForByteValue());
326 355
327 executeJavaScript("testObject.setCharValue(Number.NaN);"); 356 mActivityTestRule.executeJavaScript("testObject.setCharValue(Number.NaN) ;");
328 assertEquals('\u0000', mTestObject.waitForCharValue()); 357 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
329 358
330 executeJavaScript("testObject.setShortValue(Number.NaN);"); 359 mActivityTestRule.executeJavaScript("testObject.setShortValue(Number.NaN );");
331 assertEquals(0, mTestObject.waitForShortValue()); 360 Assert.assertEquals(0, mTestObject.waitForShortValue());
332 361
333 executeJavaScript("testObject.setIntValue(Number.NaN);"); 362 mActivityTestRule.executeJavaScript("testObject.setIntValue(Number.NaN); ");
334 assertEquals(0, mTestObject.waitForIntValue()); 363 Assert.assertEquals(0, mTestObject.waitForIntValue());
335 364
336 executeJavaScript("testObject.setLongValue(Number.NaN);"); 365 mActivityTestRule.executeJavaScript("testObject.setLongValue(Number.NaN) ;");
337 assertEquals(0L, mTestObject.waitForLongValue()); 366 Assert.assertEquals(0L, mTestObject.waitForLongValue());
338 367
339 executeJavaScript("testObject.setFloatValue(Number.NaN);"); 368 mActivityTestRule.executeJavaScript("testObject.setFloatValue(Number.NaN );");
340 assertEquals(Float.NaN, mTestObject.waitForFloatValue()); 369 Assert.assertEquals(Float.NaN, mTestObject.waitForFloatValue(), ASSERTIO N_DELTA);
341 370
342 executeJavaScript("testObject.setDoubleValue(Number.NaN);"); 371 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(Number.Na N);");
343 assertEquals(Double.NaN, mTestObject.waitForDoubleValue()); 372 Assert.assertEquals(Double.NaN, mTestObject.waitForDoubleValue(), ASSERT ION_DELTA);
344 373
345 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number . 374 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number .
346 executeJavaScript("testObject.setObjectValue(Number.NaN);"); 375 mActivityTestRule.executeJavaScript("testObject.setObjectValue(Number.Na N);");
347 assertNull(mTestObject.waitForObjectValue()); 376 Assert.assertNull(mTestObject.waitForObjectValue());
348 377
349 executeJavaScript("testObject.setStringValue(Number.NaN);"); 378 mActivityTestRule.executeJavaScript("testObject.setStringValue(Number.Na N);");
350 assertTrue("nan".equalsIgnoreCase(mTestObject.waitForStringValue())); 379 Assert.assertTrue("nan".equalsIgnoreCase(mTestObject.waitForStringValue( )));
351 380
352 executeJavaScript("testObject.setBooleanValue(Number.NaN);"); 381 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(Number.N aN);");
353 assertFalse(mTestObject.waitForBooleanValue()); 382 Assert.assertFalse(mTestObject.waitForBooleanValue());
354 383
355 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 384 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
356 executeJavaScript("testObject.setCustomTypeValue(Number.NaN);"); 385 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(Numbe r.NaN);");
357 assertNull(mTestObject.waitForCustomTypeValue()); 386 Assert.assertNull(mTestObject.waitForCustomTypeValue());
358 } 387 }
359 388
360 // Test passing JavaScript infinity to a method of an injected object. 389 // Test passing JavaScript infinity to a method of an injected object.
390 @Test
361 @SmallTest 391 @SmallTest
362 @Feature({"AndroidWebView", "Android-JavaBridge"}) 392 @Feature({"AndroidWebView", "Android-JavaBridge"})
363 public void testPassNumberInfinity() throws Throwable { 393 public void testPassNumberInfinity() throws Throwable {
364 executeJavaScript("testObject.setByteValue(Infinity);"); 394 mActivityTestRule.executeJavaScript("testObject.setByteValue(Infinity);" );
365 assertEquals(-1, mTestObject.waitForByteValue()); 395 Assert.assertEquals(-1, mTestObject.waitForByteValue());
366 396
367 // LIVECONNECT_COMPLIANCE: Should convert to maximum numeric char value. 397 // LIVECONNECT_COMPLIANCE: Should convert to maximum numeric char value.
368 executeJavaScript("testObject.setCharValue(Infinity);"); 398 mActivityTestRule.executeJavaScript("testObject.setCharValue(Infinity);" );
369 assertEquals('\u0000', mTestObject.waitForCharValue()); 399 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
370 400
371 executeJavaScript("testObject.setShortValue(Infinity);"); 401 mActivityTestRule.executeJavaScript("testObject.setShortValue(Infinity); ");
372 assertEquals(-1, mTestObject.waitForShortValue()); 402 Assert.assertEquals(-1, mTestObject.waitForShortValue());
373 403
374 executeJavaScript("testObject.setIntValue(Infinity);"); 404 mActivityTestRule.executeJavaScript("testObject.setIntValue(Infinity);") ;
375 assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntValue()); 405 Assert.assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntValue());
376 406
377 executeJavaScript("testObject.setLongValue(Infinity);"); 407 mActivityTestRule.executeJavaScript("testObject.setLongValue(Infinity);" );
378 assertEquals(Long.MAX_VALUE, mTestObject.waitForLongValue()); 408 Assert.assertEquals(Long.MAX_VALUE, mTestObject.waitForLongValue());
379 409
380 executeJavaScript("testObject.setFloatValue(Infinity);"); 410 mActivityTestRule.executeJavaScript("testObject.setFloatValue(Infinity); ");
381 assertEquals(Float.POSITIVE_INFINITY, mTestObject.waitForFloatValue()); 411 Assert.assertEquals(
382 412 Float.POSITIVE_INFINITY, mTestObject.waitForFloatValue(), ASSERT ION_DELTA);
383 executeJavaScript("testObject.setDoubleValue(Infinity);"); 413
384 assertEquals(Double.POSITIVE_INFINITY, mTestObject.waitForDoubleValue()) ; 414 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(Infinity) ;");
415 Assert.assertEquals(
416 Double.POSITIVE_INFINITY, mTestObject.waitForDoubleValue(), ASSE RTION_DELTA);
385 417
386 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number . 418 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number .
387 executeJavaScript("testObject.setObjectValue(Infinity);"); 419 mActivityTestRule.executeJavaScript("testObject.setObjectValue(Infinity) ;");
388 assertNull(mTestObject.waitForObjectValue()); 420 Assert.assertNull(mTestObject.waitForObjectValue());
389 421
390 executeJavaScript("testObject.setStringValue(Infinity);"); 422 mActivityTestRule.executeJavaScript("testObject.setStringValue(Infinity) ;");
391 assertTrue("inf".equalsIgnoreCase(mTestObject.waitForStringValue())); 423 Assert.assertTrue("inf".equalsIgnoreCase(mTestObject.waitForStringValue( )));
392 424
393 executeJavaScript("testObject.setBooleanValue(Infinity);"); 425 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(Infinity );");
394 assertFalse(mTestObject.waitForBooleanValue()); 426 Assert.assertFalse(mTestObject.waitForBooleanValue());
395 427
396 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 428 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
397 executeJavaScript("testObject.setCustomTypeValue(Infinity);"); 429 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(Infin ity);");
398 assertNull(mTestObject.waitForCustomTypeValue()); 430 Assert.assertNull(mTestObject.waitForCustomTypeValue());
399 } 431 }
400 432
401 // Test passing a JavaScript boolean to a method of an injected object. 433 // Test passing a JavaScript boolean to a method of an injected object.
434 @Test
402 @SmallTest 435 @SmallTest
403 @Feature({"AndroidWebView", "Android-JavaBridge"}) 436 @Feature({"AndroidWebView", "Android-JavaBridge"})
404 public void testPassBoolean() throws Throwable { 437 public void testPassBoolean() throws Throwable {
405 executeJavaScript("testObject.setBooleanValue(true);"); 438 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(true);") ;
406 assertTrue(mTestObject.waitForBooleanValue()); 439 Assert.assertTrue(mTestObject.waitForBooleanValue());
407 executeJavaScript("testObject.setBooleanValue(false);"); 440 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(false);" );
408 assertFalse(mTestObject.waitForBooleanValue()); 441 Assert.assertFalse(mTestObject.waitForBooleanValue());
409 442
410 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Boolea n. 443 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Boolea n.
411 executeJavaScript("testObject.setObjectValue(true);"); 444 mActivityTestRule.executeJavaScript("testObject.setObjectValue(true);");
412 assertNull(mTestObject.waitForObjectValue()); 445 Assert.assertNull(mTestObject.waitForObjectValue());
413 446
414 executeJavaScript("testObject.setStringValue(false);"); 447 mActivityTestRule.executeJavaScript("testObject.setStringValue(false);") ;
415 assertEquals("false", mTestObject.waitForStringValue()); 448 Assert.assertEquals("false", mTestObject.waitForStringValue());
416 executeJavaScript("testObject.setStringValue(true);"); 449 mActivityTestRule.executeJavaScript("testObject.setStringValue(true);");
417 assertEquals("true", mTestObject.waitForStringValue()); 450 Assert.assertEquals("true", mTestObject.waitForStringValue());
418 451
419 // LIVECONNECT_COMPLIANCE: Should be 1. 452 // LIVECONNECT_COMPLIANCE: Should be 1.
420 executeJavaScript("testObject.setByteValue(true);"); 453 mActivityTestRule.executeJavaScript("testObject.setByteValue(true);");
421 assertEquals(0, mTestObject.waitForByteValue()); 454 Assert.assertEquals(0, mTestObject.waitForByteValue());
422 executeJavaScript("testObject.setByteValue(false);"); 455 mActivityTestRule.executeJavaScript("testObject.setByteValue(false);");
423 assertEquals(0, mTestObject.waitForByteValue()); 456 Assert.assertEquals(0, mTestObject.waitForByteValue());
424 457
425 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value 1. 458 // LIVECONNECT_COMPLIANCE: Should convert to numeric char value 1.
426 executeJavaScript("testObject.setCharValue(true);"); 459 mActivityTestRule.executeJavaScript("testObject.setCharValue(true);");
427 assertEquals('\u0000', mTestObject.waitForCharValue()); 460 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
428 executeJavaScript("testObject.setCharValue(false);"); 461 mActivityTestRule.executeJavaScript("testObject.setCharValue(false);");
429 assertEquals('\u0000', mTestObject.waitForCharValue()); 462 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
430 463
431 // LIVECONNECT_COMPLIANCE: Should be 1. 464 // LIVECONNECT_COMPLIANCE: Should be 1.
432 executeJavaScript("testObject.setShortValue(true);"); 465 mActivityTestRule.executeJavaScript("testObject.setShortValue(true);");
433 assertEquals(0, mTestObject.waitForShortValue()); 466 Assert.assertEquals(0, mTestObject.waitForShortValue());
434 executeJavaScript("testObject.setShortValue(false);"); 467 mActivityTestRule.executeJavaScript("testObject.setShortValue(false);");
435 assertEquals(0, mTestObject.waitForShortValue()); 468 Assert.assertEquals(0, mTestObject.waitForShortValue());
436 469
437 // LIVECONNECT_COMPLIANCE: Should be 1. 470 // LIVECONNECT_COMPLIANCE: Should be 1.
438 executeJavaScript("testObject.setIntValue(true);"); 471 mActivityTestRule.executeJavaScript("testObject.setIntValue(true);");
439 assertEquals(0, mTestObject.waitForIntValue()); 472 Assert.assertEquals(0, mTestObject.waitForIntValue());
440 executeJavaScript("testObject.setIntValue(false);"); 473 mActivityTestRule.executeJavaScript("testObject.setIntValue(false);");
441 assertEquals(0, mTestObject.waitForIntValue()); 474 Assert.assertEquals(0, mTestObject.waitForIntValue());
442 475
443 // LIVECONNECT_COMPLIANCE: Should be 1. 476 // LIVECONNECT_COMPLIANCE: Should be 1.
444 executeJavaScript("testObject.setLongValue(true);"); 477 mActivityTestRule.executeJavaScript("testObject.setLongValue(true);");
445 assertEquals(0L, mTestObject.waitForLongValue()); 478 Assert.assertEquals(0L, mTestObject.waitForLongValue());
446 executeJavaScript("testObject.setLongValue(false);"); 479 mActivityTestRule.executeJavaScript("testObject.setLongValue(false);");
447 assertEquals(0L, mTestObject.waitForLongValue()); 480 Assert.assertEquals(0L, mTestObject.waitForLongValue());
448 481
449 // LIVECONNECT_COMPLIANCE: Should be 1.0. 482 // LIVECONNECT_COMPLIANCE: Should be 1.0.
450 executeJavaScript("testObject.setFloatValue(true);"); 483 mActivityTestRule.executeJavaScript("testObject.setFloatValue(true);");
451 assertEquals(0.0f, mTestObject.waitForFloatValue()); 484 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
452 executeJavaScript("testObject.setFloatValue(false);"); 485 mActivityTestRule.executeJavaScript("testObject.setFloatValue(false);");
453 assertEquals(0.0f, mTestObject.waitForFloatValue()); 486 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
454 487
455 // LIVECONNECT_COMPLIANCE: Should be 1.0. 488 // LIVECONNECT_COMPLIANCE: Should be 1.0.
456 executeJavaScript("testObject.setDoubleValue(true);"); 489 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(true);");
457 assertEquals(0.0, mTestObject.waitForDoubleValue()); 490 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
458 executeJavaScript("testObject.setDoubleValue(false);"); 491 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(false);") ;
459 assertEquals(0.0, mTestObject.waitForDoubleValue()); 492 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
460 493
461 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 494 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
462 executeJavaScript("testObject.setCustomTypeValue(true);"); 495 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(true) ;");
463 assertNull(mTestObject.waitForCustomTypeValue()); 496 Assert.assertNull(mTestObject.waitForCustomTypeValue());
464 } 497 }
465 498
466 // Test passing a JavaScript string to a method of an injected object. 499 // Test passing a JavaScript string to a method of an injected object.
500 @Test
467 @SmallTest 501 @SmallTest
468 @Feature({"AndroidWebView", "Android-JavaBridge"}) 502 @Feature({"AndroidWebView", "Android-JavaBridge"})
469 public void testPassString() throws Throwable { 503 public void testPassString() throws Throwable {
470 executeJavaScript("testObject.setStringValue(\"+042.10\");"); 504 mActivityTestRule.executeJavaScript("testObject.setStringValue(\"+042.10 \");");
471 assertEquals("+042.10", mTestObject.waitForStringValue()); 505 Assert.assertEquals("+042.10", mTestObject.waitForStringValue());
472 506
473 // Make sure that we distinguish between the empty string and NULL. 507 // Make sure that we distinguish between the empty string and NULL.
474 executeJavaScript("testObject.setStringValue(\"\");"); 508 mActivityTestRule.executeJavaScript("testObject.setStringValue(\"\");");
475 assertEquals("", mTestObject.waitForStringValue()); 509 Assert.assertEquals("", mTestObject.waitForStringValue());
476 510
477 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.String . 511 // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.String .
478 executeJavaScript("testObject.setObjectValue(\"+042.10\");"); 512 mActivityTestRule.executeJavaScript("testObject.setObjectValue(\"+042.10 \");");
479 assertNull(mTestObject.waitForObjectValue()); 513 Assert.assertNull(mTestObject.waitForObjectValue());
480 514
481 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 515 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
482 executeJavaScript("testObject.setByteValue(\"+042.10\");"); 516 mActivityTestRule.executeJavaScript("testObject.setByteValue(\"+042.10\" );");
483 assertEquals(0, mTestObject.waitForByteValue()); 517 Assert.assertEquals(0, mTestObject.waitForByteValue());
484 518
485 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 519 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
486 executeJavaScript("testObject.setShortValue(\"+042.10\");"); 520 mActivityTestRule.executeJavaScript("testObject.setShortValue(\"+042.10\ ");");
487 assertEquals(0, mTestObject.waitForShortValue()); 521 Assert.assertEquals(0, mTestObject.waitForShortValue());
488 522
489 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 523 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
490 executeJavaScript("testObject.setIntValue(\"+042.10\");"); 524 mActivityTestRule.executeJavaScript("testObject.setIntValue(\"+042.10\") ;");
491 assertEquals(0, mTestObject.waitForIntValue()); 525 Assert.assertEquals(0, mTestObject.waitForIntValue());
492 526
493 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 527 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
494 executeJavaScript("testObject.setLongValue(\"+042.10\");"); 528 mActivityTestRule.executeJavaScript("testObject.setLongValue(\"+042.10\" );");
495 assertEquals(0L, mTestObject.waitForLongValue()); 529 Assert.assertEquals(0L, mTestObject.waitForLongValue());
496 530
497 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 531 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
498 executeJavaScript("testObject.setFloatValue(\"+042.10\");"); 532 mActivityTestRule.executeJavaScript("testObject.setFloatValue(\"+042.10\ ");");
499 assertEquals(0.0f, mTestObject.waitForFloatValue()); 533 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
500 534
501 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. 535 // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
502 executeJavaScript("testObject.setDoubleValue(\"+042.10\");"); 536 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(\"+042.10 \");");
503 assertEquals(0.0, mTestObject.waitForDoubleValue()); 537 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
504 538
505 // LIVECONNECT_COMPLIANCE: Should decode and convert to numeric char val ue. 539 // LIVECONNECT_COMPLIANCE: Should decode and convert to numeric char val ue.
506 executeJavaScript("testObject.setCharValue(\"+042.10\");"); 540 mActivityTestRule.executeJavaScript("testObject.setCharValue(\"+042.10\" );");
507 assertEquals('\u0000', mTestObject.waitForCharValue()); 541 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
508 542
509 // LIVECONNECT_COMPLIANCE: Non-empty string should convert to true. 543 // LIVECONNECT_COMPLIANCE: Non-empty string should convert to true.
510 executeJavaScript("testObject.setBooleanValue(\"+042.10\");"); 544 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(\"+042.1 0\");");
511 assertFalse(mTestObject.waitForBooleanValue()); 545 Assert.assertFalse(mTestObject.waitForBooleanValue());
512 546
513 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 547 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
514 executeJavaScript("testObject.setCustomTypeValue(\"+042.10\");"); 548 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(\"+04 2.10\");");
515 assertNull(mTestObject.waitForCustomTypeValue()); 549 Assert.assertNull(mTestObject.waitForCustomTypeValue());
516 } 550 }
517 551
518 // Test passing a JavaScript object to a method of an injected object. 552 // Test passing a JavaScript object to a method of an injected object.
553 @Test
519 @SmallTest 554 @SmallTest
520 @Feature({"AndroidWebView", "Android-JavaBridge"}) 555 @Feature({"AndroidWebView", "Android-JavaBridge"})
521 public void testPassJavaScriptObject() throws Throwable { 556 public void testPassJavaScriptObject() throws Throwable {
522 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 557 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
523 executeJavaScript("testObject.setObjectValue({foo: 42});"); 558 mActivityTestRule.executeJavaScript("testObject.setObjectValue({foo: 42} );");
524 assertNull(mTestObject.waitForObjectValue()); 559 Assert.assertNull(mTestObject.waitForObjectValue());
525 560
526 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 561 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
527 executeJavaScript("testObject.setCustomTypeValue({foo: 42});"); 562 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue({foo: 42});");
528 assertNull(mTestObject.waitForCustomTypeValue()); 563 Assert.assertNull(mTestObject.waitForCustomTypeValue());
529 564
530 // LIVECONNECT_COMPLIANCE: Should call toString() on object. 565 // LIVECONNECT_COMPLIANCE: Should call toString() on object.
531 executeJavaScript("testObject.setStringValue({foo: 42});"); 566 mActivityTestRule.executeJavaScript("testObject.setStringValue({foo: 42} );");
532 assertEquals("undefined", mTestObject.waitForStringValue()); 567 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
533 568
534 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 569 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
535 executeJavaScript("testObject.setByteValue({foo: 42});"); 570 mActivityTestRule.executeJavaScript("testObject.setByteValue({foo: 42}); ");
536 assertEquals(0, mTestObject.waitForByteValue()); 571 Assert.assertEquals(0, mTestObject.waitForByteValue());
537 572
538 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 573 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
539 executeJavaScript("testObject.setCharValue({foo: 42});"); 574 mActivityTestRule.executeJavaScript("testObject.setCharValue({foo: 42}); ");
540 assertEquals('\u0000', mTestObject.waitForCharValue()); 575 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
541 576
542 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 577 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
543 executeJavaScript("testObject.setShortValue({foo: 42});"); 578 mActivityTestRule.executeJavaScript("testObject.setShortValue({foo: 42}) ;");
544 assertEquals(0, mTestObject.waitForShortValue()); 579 Assert.assertEquals(0, mTestObject.waitForShortValue());
545 580
546 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 581 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
547 executeJavaScript("testObject.setIntValue({foo: 42});"); 582 mActivityTestRule.executeJavaScript("testObject.setIntValue({foo: 42});" );
548 assertEquals(0, mTestObject.waitForIntValue()); 583 Assert.assertEquals(0, mTestObject.waitForIntValue());
549 584
550 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 585 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
551 executeJavaScript("testObject.setLongValue({foo: 42});"); 586 mActivityTestRule.executeJavaScript("testObject.setLongValue({foo: 42}); ");
552 assertEquals(0L, mTestObject.waitForLongValue()); 587 Assert.assertEquals(0L, mTestObject.waitForLongValue());
553 588
554 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 589 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
555 executeJavaScript("testObject.setFloatValue({foo: 42});"); 590 mActivityTestRule.executeJavaScript("testObject.setFloatValue({foo: 42}) ;");
556 assertEquals(0.0f, mTestObject.waitForFloatValue()); 591 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
557 592
558 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 593 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
559 executeJavaScript("testObject.setDoubleValue({foo: 42});"); 594 mActivityTestRule.executeJavaScript("testObject.setDoubleValue({foo: 42} );");
560 assertEquals(0.0, mTestObject.waitForDoubleValue()); 595 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
561 596
562 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 597 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
563 executeJavaScript("testObject.setBooleanValue({foo: 42});"); 598 mActivityTestRule.executeJavaScript("testObject.setBooleanValue({foo: 42 });");
564 assertFalse(mTestObject.waitForBooleanValue()); 599 Assert.assertFalse(mTestObject.waitForBooleanValue());
565 } 600 }
566 601
567 // Test passing a Java object to a method of an injected object. Note that 602 // Test passing a Java object to a method of an injected object. Note that
568 // this test requires being able to return objects from the methods of 603 // this test requires being able to return objects from the methods of
569 // injected objects. This is tested elsewhere. 604 // injected objects. This is tested elsewhere.
605 @Test
570 @SmallTest 606 @SmallTest
571 @Feature({"AndroidWebView", "Android-JavaBridge"}) 607 @Feature({"AndroidWebView", "Android-JavaBridge"})
572 public void testPassJavaObject() throws Throwable { 608 public void testPassJavaObject() throws Throwable {
573 executeJavaScript("testObject.setObjectValue(testObject.getObjectInstanc e());"); 609 mActivityTestRule.executeJavaScript(
574 assertTrue(mTestObject.getObjectInstance() == mTestObject.waitForObjectV alue()); 610 "testObject.setObjectValue(testObject.getObjectInstance());");
575 executeJavaScript("testObject.setObjectValue(testObject.getCustomTypeIns tance());"); 611 Assert.assertTrue(mTestObject.getObjectInstance() == mTestObject.waitFor ObjectValue());
576 assertTrue(mTestObject.getCustomTypeInstance() == mTestObject.waitForObj ectValue()); 612 mActivityTestRule.executeJavaScript(
613 "testObject.setObjectValue(testObject.getCustomTypeInstance());" );
614 Assert.assertTrue(mTestObject.getCustomTypeInstance() == mTestObject.wai tForObjectValue());
577 615
578 assertRaisesException("testObject.setCustomTypeValue(testObject.getObjec tInstance());"); 616 assertRaisesException("testObject.setCustomTypeValue(testObject.getObjec tInstance());");
579 executeJavaScript("testObject.setCustomTypeValue(testObject.getCustomTyp eInstance());"); 617 mActivityTestRule.executeJavaScript(
580 assertTrue(mTestObject.getCustomTypeInstance() == mTestObject.waitForCus tomTypeValue()); 618 "testObject.setCustomTypeValue(testObject.getCustomTypeInstance( ));");
619 Assert.assertTrue(
620 mTestObject.getCustomTypeInstance() == mTestObject.waitForCustom TypeValue());
581 assertRaisesException( 621 assertRaisesException(
582 "testObject.setCustomTypeValue(testObject.getCustomType2Instance ());"); 622 "testObject.setCustomTypeValue(testObject.getCustomType2Instance ());");
583 623
584 // LIVECONNECT_COMPLIANCE: Should call toString() on object. 624 // LIVECONNECT_COMPLIANCE: Should call toString() on object.
585 executeJavaScript("testObject.setStringValue(testObject.getObjectInstanc e());"); 625 mActivityTestRule.executeJavaScript(
586 assertEquals("undefined", mTestObject.waitForStringValue()); 626 "testObject.setStringValue(testObject.getObjectInstance());");
587 627 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
588 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 628
589 executeJavaScript("testObject.setByteValue(testObject.getObjectInstance( ));"); 629 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
590 assertEquals(0, mTestObject.waitForByteValue()); 630 mActivityTestRule.executeJavaScript(
591 631 "testObject.setByteValue(testObject.getObjectInstance());");
592 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 632 Assert.assertEquals(0, mTestObject.waitForByteValue());
593 executeJavaScript("testObject.setCharValue(testObject.getObjectInstance( ));"); 633
594 assertEquals('\u0000', mTestObject.waitForCharValue()); 634 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
595 635 mActivityTestRule.executeJavaScript(
596 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 636 "testObject.setCharValue(testObject.getObjectInstance());");
597 executeJavaScript("testObject.setShortValue(testObject.getObjectInstance ());"); 637 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
598 assertEquals(0, mTestObject.waitForShortValue()); 638
599 639 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
600 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 640 mActivityTestRule.executeJavaScript(
601 executeJavaScript("testObject.setIntValue(testObject.getObjectInstance() );"); 641 "testObject.setShortValue(testObject.getObjectInstance());");
602 assertEquals(0, mTestObject.waitForIntValue()); 642 Assert.assertEquals(0, mTestObject.waitForShortValue());
603 643
604 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 644 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
605 executeJavaScript("testObject.setLongValue(testObject.getObjectInstance( ));"); 645 mActivityTestRule.executeJavaScript(
606 assertEquals(0L, mTestObject.waitForLongValue()); 646 "testObject.setIntValue(testObject.getObjectInstance());");
607 647 Assert.assertEquals(0, mTestObject.waitForIntValue());
608 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 648
609 executeJavaScript("testObject.setFloatValue(testObject.getObjectInstance ());"); 649 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
610 assertEquals(0.0f, mTestObject.waitForFloatValue()); 650 mActivityTestRule.executeJavaScript(
611 651 "testObject.setLongValue(testObject.getObjectInstance());");
612 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 652 Assert.assertEquals(0L, mTestObject.waitForLongValue());
613 executeJavaScript("testObject.setDoubleValue(testObject.getObjectInstanc e());"); 653
614 assertEquals(0.0, mTestObject.waitForDoubleValue()); 654 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
615 655 mActivityTestRule.executeJavaScript(
616 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. 656 "testObject.setFloatValue(testObject.getObjectInstance());");
617 executeJavaScript("testObject.setBooleanValue(testObject.getObjectInstan ce());"); 657 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
618 assertFalse(mTestObject.waitForBooleanValue()); 658
659 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
660 mActivityTestRule.executeJavaScript(
661 "testObject.setDoubleValue(testObject.getObjectInstance());");
662 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
663
664 // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception.
665 mActivityTestRule.executeJavaScript(
666 "testObject.setBooleanValue(testObject.getObjectInstance());");
667 Assert.assertFalse(mTestObject.waitForBooleanValue());
619 } 668 }
620 669
621 static void assertFileIsReadable(String filePath) { 670 static void assertFileIsReadable(String filePath) {
622 File file = new File(filePath); 671 File file = new File(filePath);
623 try { 672 try {
624 assertTrue("Test file \"" + filePath + "\" is not readable.", file.c anRead()); 673 Assert.assertTrue("Test file \"" + filePath + "\" is not readable.", file.canRead());
625 } catch (SecurityException e) { 674 } catch (SecurityException e) {
626 fail("Got a SecurityException for \"" + filePath + "\": " + e.toStri ng()); 675 Assert.fail("Got a SecurityException for \"" + filePath + "\": " + e .toString());
627 } 676 }
628 } 677 }
629 678
630 // Verifies that classes obtained via custom class loaders can be 679 // Verifies that classes obtained via custom class loaders can be
631 // passed in and out to injected methods. In real life WebView scenarios 680 // passed in and out to injected methods. In real life WebView scenarios
632 // WebView and the app use different class loaders, thus we need to make 681 // WebView and the app use different class loaders, thus we need to make
633 // sure that WebView code doesn't attempt to find an app's class using 682 // sure that WebView code doesn't attempt to find an app's class using
634 // its own class loader. See crbug.com/491800. 683 // its own class loader. See crbug.com/491800.
684 @Test
635 @SmallTest 685 @SmallTest
636 @Feature({"AndroidWebView", "Android-JavaBridge"}) 686 @Feature({"AndroidWebView", "Android-JavaBridge"})
637 public void testPassJavaObjectFromCustomClassLoader() throws Throwable { 687 public void testPassJavaObjectFromCustomClassLoader() throws Throwable {
638 // Compiled bytecode (dex) for the following class: 688 // Compiled bytecode (dex) for the following class:
639 // 689 //
640 // package org.example; 690 // package org.example;
641 // public class SelfConsumingObject { 691 // public class SelfConsumingObject {
642 // public SelfConsumingObject getSelf() { 692 // public SelfConsumingObject getSelf() {
643 // return this; 693 // return this;
644 // } 694 // }
645 // public boolean verifySelf(SelfConsumingObject self) { 695 // public boolean verifySelf(SelfConsumingObject self) {
646 // return this == self; 696 // return this == self;
647 // } 697 // }
648 // } 698 // }
649 final String dexFileName = "content/test/data/android/SelfConsumingObjec t.dex"; 699 final String dexFileName = "content/test/data/android/SelfConsumingObjec t.dex";
650 assertFileIsReadable(UrlUtils.getIsolatedTestFilePath(dexFileName)); 700 assertFileIsReadable(UrlUtils.getIsolatedTestFilePath(dexFileName));
651 final File optimizedDir = File.createTempFile("optimized", ""); 701 final File optimizedDir = File.createTempFile("optimized", "");
652 assertTrue(optimizedDir.delete()); 702 Assert.assertTrue(optimizedDir.delete());
653 assertTrue(optimizedDir.mkdirs()); 703 Assert.assertTrue(optimizedDir.mkdirs());
654 DexClassLoader loader = new DexClassLoader(UrlUtils.getIsolatedTestFileP ath(dexFileName), 704 DexClassLoader loader = new DexClassLoader(UrlUtils.getIsolatedTestFileP ath(dexFileName),
655 optimizedDir.getAbsolutePath(), null, ClassLoader.getSystemClass Loader()); 705 optimizedDir.getAbsolutePath(), null, ClassLoader.getSystemClass Loader());
656 final Object selfConsuming = loader.loadClass( 706 final Object selfConsuming = loader.loadClass(
657 "org.example.SelfConsumingObject").newInstance(); 707 "org.example.SelfConsumingObject").newInstance();
658 runTestOnUiThread(new Runnable() { 708 mActivityTestRule.runOnUiThread(new Runnable() {
659 @Override 709 @Override
660 public void run() { 710 public void run() {
661 getContentViewCore().addPossiblyUnsafeJavascriptInterface( 711 mActivityTestRule.getContentViewCore().addPossiblyUnsafeJavascri ptInterface(
662 selfConsuming, "selfConsuming", null); 712 selfConsuming, "selfConsuming", null);
663 } 713 }
664 }); 714 });
665 synchronousPageReload(); 715 mActivityTestRule.synchronousPageReload();
666 executeJavaScript("testObject.setBooleanValue(" 716 mActivityTestRule.executeJavaScript("testObject.setBooleanValue("
667 + "selfConsuming.verifySelf(selfConsuming.getSelf()));"); 717 + "selfConsuming.verifySelf(selfConsuming.getSelf()));");
668 assertTrue(mTestObject.waitForBooleanValue()); 718 Assert.assertTrue(mTestObject.waitForBooleanValue());
669 } 719 }
670 720
671 // Test passing JavaScript null to a method of an injected object. 721 // Test passing JavaScript null to a method of an injected object.
722 @Test
672 @SmallTest 723 @SmallTest
673 @Feature({"AndroidWebView", "Android-JavaBridge"}) 724 @Feature({"AndroidWebView", "Android-JavaBridge"})
674 public void testPassNull() throws Throwable { 725 public void testPassNull() throws Throwable {
675 executeJavaScript("testObject.setObjectValue(null);"); 726 mActivityTestRule.executeJavaScript("testObject.setObjectValue(null);");
676 assertNull(mTestObject.waitForObjectValue()); 727 Assert.assertNull(mTestObject.waitForObjectValue());
677 728
678 executeJavaScript("testObject.setCustomTypeValue(null);"); 729 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(null) ;");
679 assertNull(mTestObject.waitForCustomTypeValue()); 730 Assert.assertNull(mTestObject.waitForCustomTypeValue());
680 731
681 executeJavaScript("testObject.setStringValue(null);"); 732 mActivityTestRule.executeJavaScript("testObject.setStringValue(null);");
682 assertNull(mTestObject.waitForStringValue()); 733 Assert.assertNull(mTestObject.waitForStringValue());
683 734
684 executeJavaScript("testObject.setByteValue(null);"); 735 mActivityTestRule.executeJavaScript("testObject.setByteValue(null);");
685 assertEquals(0, mTestObject.waitForByteValue()); 736 Assert.assertEquals(0, mTestObject.waitForByteValue());
686 737
687 executeJavaScript("testObject.setCharValue(null);"); 738 mActivityTestRule.executeJavaScript("testObject.setCharValue(null);");
688 assertEquals('\u0000', mTestObject.waitForCharValue()); 739 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
689 740
690 executeJavaScript("testObject.setShortValue(null);"); 741 mActivityTestRule.executeJavaScript("testObject.setShortValue(null);");
691 assertEquals(0, mTestObject.waitForShortValue()); 742 Assert.assertEquals(0, mTestObject.waitForShortValue());
692 743
693 executeJavaScript("testObject.setIntValue(null);"); 744 mActivityTestRule.executeJavaScript("testObject.setIntValue(null);");
694 assertEquals(0, mTestObject.waitForIntValue()); 745 Assert.assertEquals(0, mTestObject.waitForIntValue());
695 746
696 executeJavaScript("testObject.setLongValue(null);"); 747 mActivityTestRule.executeJavaScript("testObject.setLongValue(null);");
697 assertEquals(0L, mTestObject.waitForLongValue()); 748 Assert.assertEquals(0L, mTestObject.waitForLongValue());
698 749
699 executeJavaScript("testObject.setFloatValue(null);"); 750 mActivityTestRule.executeJavaScript("testObject.setFloatValue(null);");
700 assertEquals(0.0f, mTestObject.waitForFloatValue()); 751 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
701 752
702 executeJavaScript("testObject.setDoubleValue(null);"); 753 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(null);");
703 assertEquals(0.0, mTestObject.waitForDoubleValue()); 754 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
704 755
705 executeJavaScript("testObject.setBooleanValue(null);"); 756 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(null);") ;
706 assertFalse(mTestObject.waitForBooleanValue()); 757 Assert.assertFalse(mTestObject.waitForBooleanValue());
707 } 758 }
708 759
709 // Test passing JavaScript undefined to a method of an injected object. 760 // Test passing JavaScript undefined to a method of an injected object.
761 @Test
710 @SmallTest 762 @SmallTest
711 @Feature({"AndroidWebView", "Android-JavaBridge"}) 763 @Feature({"AndroidWebView", "Android-JavaBridge"})
712 public void testPassUndefined() throws Throwable { 764 public void testPassUndefined() throws Throwable {
713 executeJavaScript("testObject.setObjectValue(undefined);"); 765 mActivityTestRule.executeJavaScript("testObject.setObjectValue(undefined );");
714 assertNull(mTestObject.waitForObjectValue()); 766 Assert.assertNull(mTestObject.waitForObjectValue());
715 767
716 executeJavaScript("testObject.setCustomTypeValue(undefined);"); 768 mActivityTestRule.executeJavaScript("testObject.setCustomTypeValue(undef ined);");
717 assertNull(mTestObject.waitForCustomTypeValue()); 769 Assert.assertNull(mTestObject.waitForCustomTypeValue());
718 770
719 // LIVECONNECT_COMPLIANCE: Should be NULL. 771 // LIVECONNECT_COMPLIANCE: Should be NULL.
720 executeJavaScript("testObject.setStringValue(undefined);"); 772 mActivityTestRule.executeJavaScript("testObject.setStringValue(undefined );");
721 assertEquals("undefined", mTestObject.waitForStringValue()); 773 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
722 774
723 executeJavaScript("testObject.setByteValue(undefined);"); 775 mActivityTestRule.executeJavaScript("testObject.setByteValue(undefined); ");
724 assertEquals(0, mTestObject.waitForByteValue()); 776 Assert.assertEquals(0, mTestObject.waitForByteValue());
725 777
726 executeJavaScript("testObject.setCharValue(undefined);"); 778 mActivityTestRule.executeJavaScript("testObject.setCharValue(undefined); ");
727 assertEquals('\u0000', mTestObject.waitForCharValue()); 779 Assert.assertEquals('\u0000', mTestObject.waitForCharValue());
728 780
729 executeJavaScript("testObject.setShortValue(undefined);"); 781 mActivityTestRule.executeJavaScript("testObject.setShortValue(undefined) ;");
730 assertEquals(0, mTestObject.waitForShortValue()); 782 Assert.assertEquals(0, mTestObject.waitForShortValue());
731 783
732 executeJavaScript("testObject.setIntValue(undefined);"); 784 mActivityTestRule.executeJavaScript("testObject.setIntValue(undefined);" );
733 assertEquals(0, mTestObject.waitForIntValue()); 785 Assert.assertEquals(0, mTestObject.waitForIntValue());
734 786
735 executeJavaScript("testObject.setLongValue(undefined);"); 787 mActivityTestRule.executeJavaScript("testObject.setLongValue(undefined); ");
736 assertEquals(0L, mTestObject.waitForLongValue()); 788 Assert.assertEquals(0L, mTestObject.waitForLongValue());
737 789
738 executeJavaScript("testObject.setFloatValue(undefined);"); 790 mActivityTestRule.executeJavaScript("testObject.setFloatValue(undefined) ;");
739 assertEquals(0.0f, mTestObject.waitForFloatValue()); 791 Assert.assertEquals(0.0f, mTestObject.waitForFloatValue(), ASSERTION_DEL TA);
740 792
741 executeJavaScript("testObject.setDoubleValue(undefined);"); 793 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(undefined );");
742 assertEquals(0.0, mTestObject.waitForDoubleValue()); 794 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
743 795
744 executeJavaScript("testObject.setBooleanValue(undefined);"); 796 mActivityTestRule.executeJavaScript("testObject.setBooleanValue(undefine d);");
745 assertFalse(mTestObject.waitForBooleanValue()); 797 Assert.assertFalse(mTestObject.waitForBooleanValue());
746 } 798 }
747 799
748 // Verify that ArrayBuffers are not converted into objects or strings when p assed 800 // Verify that ArrayBuffers are not converted into objects or strings when p assed
749 // to Java. Basically, ArrayBuffers are treated as generic JavaScript object s. 801 // to Java. Basically, ArrayBuffers are treated as generic JavaScript object s.
802 @Test
750 @SmallTest 803 @SmallTest
751 @Feature({"AndroidWebView", "Android-JavaBridge"}) 804 @Feature({"AndroidWebView", "Android-JavaBridge"})
752 public void testPassArrayBuffer() throws Throwable { 805 public void testPassArrayBuffer() throws Throwable {
753 executeJavaScript("buffer = new ArrayBuffer(16);"); 806 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(16);");
754 807
755 executeJavaScript("testObject.setObjectValue(buffer);"); 808 mActivityTestRule.executeJavaScript("testObject.setObjectValue(buffer);" );
756 assertNull(mTestObject.waitForObjectValue()); 809 Assert.assertNull(mTestObject.waitForObjectValue());
757 810
758 executeJavaScript("testObject.setStringValue(buffer);"); 811 mActivityTestRule.executeJavaScript("testObject.setStringValue(buffer);" );
759 assertEquals("undefined", mTestObject.waitForStringValue()); 812 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
760 } 813 }
761 814
762 // Verify that ArrayBufferViewss are not converted into objects or strings w hen passed 815 // Verify that ArrayBufferViewss are not converted into objects or strings w hen passed
763 // to Java. Basically, ArrayBufferViews are treated as generic JavaScript ob jects. 816 // to Java. Basically, ArrayBufferViews are treated as generic JavaScript ob jects.
764 // Here, a DataView is used as an ArrayBufferView instance (since the latter is 817 // Here, a DataView is used as an ArrayBufferView instance (since the latter is
765 // an interface and can't be instantiated directly). 818 // an interface and can't be instantiated directly).
819 @Test
766 @SmallTest 820 @SmallTest
767 @Feature({"AndroidWebView", "Android-JavaBridge"}) 821 @Feature({"AndroidWebView", "Android-JavaBridge"})
768 public void testPassDataView() throws Throwable { 822 public void testPassDataView() throws Throwable {
769 executeJavaScript("buffer = new ArrayBuffer(16);"); 823 mActivityTestRule.executeJavaScript("buffer = new ArrayBuffer(16);");
770 824
771 executeJavaScript("testObject.setObjectValue(new DataView(buffer));"); 825 mActivityTestRule.executeJavaScript("testObject.setObjectValue(new DataV iew(buffer));");
772 assertNull(mTestObject.waitForObjectValue()); 826 Assert.assertNull(mTestObject.waitForObjectValue());
773 827
774 executeJavaScript("testObject.setStringValue(new DataView(buffer));"); 828 mActivityTestRule.executeJavaScript("testObject.setStringValue(new DataV iew(buffer));");
775 assertEquals("undefined", mTestObject.waitForStringValue()); 829 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
776 } 830 }
777 831
778 // Verify that Date objects are not converted into double values, strings or objects. 832 // Verify that Date objects are not converted into double values, strings or objects.
833 @Test
779 @SmallTest 834 @SmallTest
780 @Feature({"AndroidWebView", "Android-JavaBridge"}) 835 @Feature({"AndroidWebView", "Android-JavaBridge"})
781 public void testPassDateObject() throws Throwable { 836 public void testPassDateObject() throws Throwable {
782 executeJavaScript("testObject.setDoubleValue(new Date(2000, 0, 1));"); 837 mActivityTestRule.executeJavaScript("testObject.setDoubleValue(new Date( 2000, 0, 1));");
783 assertEquals(0.0, mTestObject.waitForDoubleValue()); 838 Assert.assertEquals(0.0, mTestObject.waitForDoubleValue(), ASSERTION_DEL TA);
784 839
785 executeJavaScript("testObject.setStringValue(new Date(2000, 0, 1));"); 840 mActivityTestRule.executeJavaScript("testObject.setStringValue(new Date( 2000, 0, 1));");
786 assertEquals("undefined", mTestObject.waitForStringValue()); 841 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
787 842
788 executeJavaScript("testObject.setObjectValue(new Date(2000, 0, 1));"); 843 mActivityTestRule.executeJavaScript("testObject.setObjectValue(new Date( 2000, 0, 1));");
789 assertNull(mTestObject.waitForObjectValue()); 844 Assert.assertNull(mTestObject.waitForObjectValue());
790 } 845 }
791 846
792 // Verify that RegExp objects are not converted into strings or objects. 847 // Verify that RegExp objects are not converted into strings or objects.
848 @Test
793 @SmallTest 849 @SmallTest
794 @Feature({"AndroidWebView", "Android-JavaBridge"}) 850 @Feature({"AndroidWebView", "Android-JavaBridge"})
795 public void testPassRegExpObject() throws Throwable { 851 public void testPassRegExpObject() throws Throwable {
796 executeJavaScript("testObject.setStringValue(/abc/);"); 852 mActivityTestRule.executeJavaScript("testObject.setStringValue(/abc/);") ;
797 assertEquals("undefined", mTestObject.waitForStringValue()); 853 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
798 854
799 executeJavaScript("testObject.setObjectValue(/abc/);"); 855 mActivityTestRule.executeJavaScript("testObject.setObjectValue(/abc/);") ;
800 assertNull(mTestObject.waitForObjectValue()); 856 Assert.assertNull(mTestObject.waitForObjectValue());
801 } 857 }
802 858
803 // Verify that Function objects are not converted into strings or objects. 859 // Verify that Function objects are not converted into strings or objects.
860 @Test
804 @SmallTest 861 @SmallTest
805 @Feature({"AndroidWebView", "Android-JavaBridge"}) 862 @Feature({"AndroidWebView", "Android-JavaBridge"})
806 public void testPassFunctionObject() throws Throwable { 863 public void testPassFunctionObject() throws Throwable {
807 executeJavaScript("func = new Function('a', 'b', 'return a + b');"); 864 mActivityTestRule.executeJavaScript("func = new Function('a', 'b', 'retu rn a + b');");
808 865
809 executeJavaScript("testObject.setStringValue(func);"); 866 mActivityTestRule.executeJavaScript("testObject.setStringValue(func);");
810 assertEquals("undefined", mTestObject.waitForStringValue()); 867 Assert.assertEquals("undefined", mTestObject.waitForStringValue());
811 868
812 executeJavaScript("testObject.setObjectValue(func);"); 869 mActivityTestRule.executeJavaScript("testObject.setObjectValue(func);");
813 assertNull(mTestObject.waitForObjectValue()); 870 Assert.assertNull(mTestObject.waitForObjectValue());
814 } 871 }
815 } 872 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698