EMMA Coverage Report (generated Tue Aug 20 10:07:21 PDT 2013)
[all classes][org.chromium.android_webview.test.util]

COVERAGE SUMMARY FOR SOURCE FILE [JSUtils.java]

nameclass, %method, %block, %line, %
JSUtils.java100% (4/4)89%  (8/9)88%  (131/149)72%  (13/18)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class JSUtils$1100% (1/1)100% (2/2)72%  (38/53)43%  (3/7)
isSatisfied (): boolean 100% (1/1)61%  (23/38)33%  (2/6)
JSUtils$1 (InstrumentationTestCase, AwContents, TestCallbackHelperContainer$O... 100% (1/1)100% (15/15)100% (1/1)
     
class JSUtils100% (1/1)67%  (2/3)93%  (39/42)88%  (7/8)
JSUtils (): void 0%   (0/1)0%   (0/3)0%   (0/1)
clickOnLinkUsingJs (InstrumentationTestCase, AwContents, TestCallbackHelperCo... 100% (1/1)100% (20/20)100% (3/3)
executeJavaScriptAndWaitForResult (InstrumentationTestCase, AwContents, TestC... 100% (1/1)100% (19/19)100% (4/4)
     
class JSUtils$2100% (1/1)100% (2/2)100% (33/33)100% (3/3)
JSUtils$2 (AwContents, String): void 100% (1/1)100% (9/9)100% (1/1)
run (): void 100% (1/1)100% (24/24)100% (2/2)
     
class JSUtils$3100% (1/1)100% (2/2)100% (21/21)100% (3/3)
JSUtils$3 (TestCallbackHelperContainer$OnEvaluateJavaScriptResultHelper, AwCo... 100% (1/1)100% (12/12)100% (1/1)
run (): void 100% (1/1)100% (9/9)100% (2/2)

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.android_webview.test.util;
6 
7import android.test.InstrumentationTestCase;
8import android.util.Log;
9 
10import junit.framework.Assert;
11 
12import org.chromium.android_webview.AwContents;
13import org.chromium.content.browser.test.util.CallbackHelper;
14import org.chromium.content.browser.test.util.Criteria;
15import org.chromium.content.browser.test.util.CriteriaHelper;
16import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper;
17 
18import java.util.concurrent.atomic.AtomicInteger;
19 
20// Collection of functions for JavaScript-based interactions with a page.
21public class JSUtils {
22    private static final int WAIT_TIMEOUT_SECONDS = 2;
23    private static final int CHECK_INTERVAL = 100;
24 
25    public static void clickOnLinkUsingJs(
26            final InstrumentationTestCase testCase,
27            final AwContents awContents,
28            final OnEvaluateJavaScriptResultHelper onEvaluateJavaScriptResultHelper,
29            final String linkId) throws Exception {
30 
31        Assert.assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
32            @Override
33            public boolean isSatisfied() {
34                try {
35                    String linkIsNotNull = executeJavaScriptAndWaitForResult(testCase, awContents,
36                        onEvaluateJavaScriptResultHelper,
37                        "document.getElementById('" + linkId + "') != null");
38                    return linkIsNotNull.equals("true");
39                } catch (Throwable t) {
40                    t.printStackTrace();
41                    Assert.fail("Failed to check if DOM is loaded: " + t.toString());
42                    return false;
43                }
44            }
45        }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL));
46 
47        testCase.getInstrumentation().runOnMainSync(new Runnable() {
48            @Override
49            public void run() {
50                awContents.getContentViewCore().evaluateJavaScript(
51                    "var evObj = document.createEvent('Events'); " +
52                    "evObj.initEvent('click', true, false); " +
53                    "document.getElementById('" + linkId + "').dispatchEvent(evObj);" +
54                    "console.log('element with id [" + linkId + "] clicked');",
55                    null);
56            }
57        });
58    }
59 
60    public static String executeJavaScriptAndWaitForResult(
61            InstrumentationTestCase testCase,
62            final AwContents awContents,
63            final OnEvaluateJavaScriptResultHelper onEvaluateJavaScriptResultHelper,
64            final String code) throws Exception {
65        testCase.getInstrumentation().runOnMainSync(new Runnable() {
66            @Override
67            public void run() {
68                onEvaluateJavaScriptResultHelper.evaluateJavaScript(
69                        awContents.getContentViewCore(), code);
70            }
71        });
72        onEvaluateJavaScriptResultHelper.waitUntilHasValue();
73        Assert.assertTrue("Failed to retrieve JavaScript evaluation results.",
74                onEvaluateJavaScriptResultHelper.hasValue());
75        return onEvaluateJavaScriptResultHelper.getJsonResultAndClear();
76    }
77}

[all classes][org.chromium.android_webview.test.util]
EMMA 2.0.5312 (C) Vladimir Roubtsov