1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package org.chromium.content.browser; 6 7import android.test.suitebuilder.annotation.SmallTest; 8 9import org.chromium.base.test.util.Feature; 10 11/** 12 * Part of the test suite for the WebView's Java Bridge. 13 * 14 * Ensures that injected objects are exposed to child frames as well as the 15 * main frame. 16 */ 17public class JavaBridgeChildFrameTest extends JavaBridgeTestBase { 18 private class TestController extends Controller { 19 private String mStringValue; 20 21 public synchronized void setStringValue(String x) { 22 mStringValue = x; 23 notifyResultIsReady(); 24 } 25 public synchronized String waitForStringValue() { 26 waitForResult(); 27 return mStringValue; 28 } 29 } 30 31 TestController mTestController; 32 33 @Override 34 protected void setUp() throws Exception { 35 super.setUp(); 36 mTestController = new TestController(); 37 setUpContentView(mTestController, "testController"); 38 } 39 40 @SmallTest 41 @Feature({"AndroidWebView", "Android-JavaBridge"}) 42 public void testInjectedObjectPresentInChildFrame() throws Throwable { 43 // In the case that the test fails (i.e. the child frame doesn't get the injected object, 44 // the call to testController.setStringValue in the child frame's onload handler will 45 // not be made. 46 loadDataSync(getContentView(), 47 "<html><head></head><body>" + 48 "<iframe id=\"childFrame\" onload=\"testController.setStringValue('PASS');\" />" + 49 "</body></html>", "text/html", false); 50 assertEquals("PASS", mTestController.waitForStringValue()); 51 } 52} 53