1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package org.chromium.content.browser; 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.test.suitebuilder.annotation.LargeTest; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.test.util.Feature; 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.test.util.UrlUtils; 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.content.browser.test.util.DOMUtils; 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.content_shell_apk.ContentShellTestBase; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public class TestsJavaScriptEvalTest extends ContentShellTestBase { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private static final String JSTEST_URL = UrlUtils.encodeHtmlDataUri( 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "<html><head><script>" + 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " function foobar() { return 'foobar'; }" + 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "</script></head>" + 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "<body><button id=\"test\">Test button</button></body></html>"); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public TestsJavaScriptEvalTest() { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Tests that evaluation of JavaScript for test purposes (using JavaScriptUtils, DOMUtils etc) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * works even in presence of "background" (non-test-initiated) JavaScript evaluation activity. 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @LargeTest 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Feature({"Browser"}) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void testJavaScriptEvalIsCorrectlyOrdered() 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) throws InterruptedException, Exception, Throwable { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) launchContentShellWithUrl(JSTEST_URL); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading()); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch final ContentViewCore contentViewCore = getContentViewCore(); 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) for (int i = 0; i < 30; ++i) { 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) for (int j = 0; j < 10; ++j) { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Start evaluation of a JavaScript script -- we don't need a result. 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch contentViewCore.evaluateJavaScript("foobar();", null); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // DOMUtils does need to evaluate a JavaScript and get its result to get DOM bounds. 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assertNotNull("Failed to get bounds", 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch DOMUtils.getNodeBounds(contentViewCore, "test")); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 47