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

COVERAGE SUMMARY FOR SOURCE FILE [ClientAddMessageToConsoleTest.java]

nameclass, %method, %block, %line, %
ClientAddMessageToConsoleTest.java100% (2/2)100% (9/9)100% (253/253)100% (43/43)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ClientAddMessageToConsoleTest100% (1/1)100% (7/7)100% (240/240)100% (41/41)
ClientAddMessageToConsoleTest (): void 100% (1/1)100% (3/3)100% (1/1)
access$000 (ClientAddMessageToConsoleTest): AwContents 100% (1/1)100% (3/3)100% (1/1)
getLogMessageJavaScriptData (String, String): String 100% (1/1)100% (35/35)100% (1/1)
setUp (): void 100% (1/1)100% (24/24)100% (6/6)
testAddMessageToConsoleCalledWithCorrectLevel (): void 100% (1/1)100% (71/71)100% (14/14)
testAddMessageToConsoleCalledWithCorrectLineAndSource (): void 100% (1/1)100% (49/49)100% (8/8)
testAddMessageToConsoleCalledWithCorrectMessage (): void 100% (1/1)100% (55/55)100% (11/11)
     
class ClientAddMessageToConsoleTest$1100% (1/1)100% (2/2)100% (13/13)100% (3/3)
ClientAddMessageToConsoleTest$1 (ClientAddMessageToConsoleTest): void 100% (1/1)100% (6/6)100% (1/1)
run (): void 100% (1/1)100% (7/7)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;
6 
7import android.test.suitebuilder.annotation.SmallTest;
8import android.util.Log;
9 
10import org.chromium.android_webview.AwContents;
11import org.chromium.android_webview.AwWebContentsDelegate;
12import org.chromium.base.test.util.Feature;
13 
14/**
15 * Tests for the ContentViewClient.addMessageToConsole() method.
16 */
17public class ClientAddMessageToConsoleTest extends AwTestBase {
18 
19    // Line number at which the console message is logged in the page returned by the
20    // getLogMessageJavaScriptData method.
21    private static final int LOG_MESSAGE_JAVASCRIPT_DATA_LINE_NUMBER = 4;
22 
23    private static final String TEST_MESSAGE_ONE = "Test message one.";
24    private static final String TEST_MESSAGE_TWO = "The second test message.";
25 
26    private TestAwContentsClient mContentsClient;
27    private AwContents mAwContents;
28 
29    @Override
30    public void setUp() throws Exception {
31        super.setUp();
32        mContentsClient = new TestAwContentsClient();
33        final AwTestContainerView testContainerView =
34                createAwTestContainerViewOnMainSync(mContentsClient);
35        mAwContents = testContainerView.getAwContents();
36 
37        getInstrumentation().runOnMainSync(new Runnable() {
38            @Override
39            public void run() {
40                mAwContents.getSettings().setJavaScriptEnabled(true);
41            }
42        });
43    }
44 
45    private static String getLogMessageJavaScriptData(String consoleLogMethod, String message) {
46        // The %0A sequence is an encoded newline and is needed to test the source line number.
47        return "<html>%0A" +
48                  "<body>%0A" +
49                    "<script>%0A" +
50                      "console." + consoleLogMethod + "('" + message + "');%0A" +
51                    "</script>%0A" +
52                    "<div>%0A" +
53                      "Logging the message [" + message + "] using console." + consoleLogMethod +
54                      " method. " +
55                    "</div>%0A" +
56                 "</body>%0A" +
57               "</html>";
58    }
59 
60    @SmallTest
61    @Feature({"AndroidWebView"})
62    public void testAddMessageToConsoleCalledWithCorrectLevel() throws Throwable {
63        TestAwContentsClient.AddMessageToConsoleHelper addMessageToConsoleHelper =
64                mContentsClient.getAddMessageToConsoleHelper();
65 
66        int callCount = addMessageToConsoleHelper.getCallCount();
67        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
68                     getLogMessageJavaScriptData("error", "msg"),
69                     "text/html", false);
70        addMessageToConsoleHelper.waitForCallback(callCount);
71        assertEquals(AwWebContentsDelegate.LOG_LEVEL_ERROR ,
72                addMessageToConsoleHelper.getLevel());
73 
74        callCount = addMessageToConsoleHelper.getCallCount();
75        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
76                     getLogMessageJavaScriptData("warn", "msg"),
77                     "text/html", false);
78        addMessageToConsoleHelper.waitForCallback(callCount);
79        assertEquals(AwWebContentsDelegate.LOG_LEVEL_WARNING ,
80                addMessageToConsoleHelper.getLevel());
81 
82        callCount = addMessageToConsoleHelper.getCallCount();
83        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
84                     getLogMessageJavaScriptData("log", "msg"),
85                     "text/html", false);
86        addMessageToConsoleHelper.waitForCallback(callCount);
87        assertEquals(AwWebContentsDelegate.LOG_LEVEL_LOG ,
88                addMessageToConsoleHelper.getLevel());
89 
90        // Can't test LOG_LEVEL_TIP as there's no way to generate a message at that log level
91        // directly using JavaScript.
92    }
93 
94    @SmallTest
95    @Feature({"AndroidWebView"})
96    public void testAddMessageToConsoleCalledWithCorrectMessage() throws Throwable {
97        TestAwContentsClient.AddMessageToConsoleHelper addMessageToConsoleHelper =
98                mContentsClient.getAddMessageToConsoleHelper();
99 
100        int callCount = addMessageToConsoleHelper.getCallCount();
101        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
102                     getLogMessageJavaScriptData("log", TEST_MESSAGE_ONE),
103                     "text/html", false);
104        Log.w("test", getLogMessageJavaScriptData("log", TEST_MESSAGE_ONE));
105        addMessageToConsoleHelper.waitForCallback(callCount);
106        assertEquals(TEST_MESSAGE_ONE, addMessageToConsoleHelper.getMessage());
107 
108        callCount = addMessageToConsoleHelper.getCallCount();
109        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
110                     getLogMessageJavaScriptData("log", TEST_MESSAGE_TWO),
111                     "text/html", false);
112        addMessageToConsoleHelper.waitForCallback(callCount);
113        assertEquals(TEST_MESSAGE_TWO, addMessageToConsoleHelper.getMessage());
114    }
115 
116    @SmallTest
117    @Feature({"AndroidWebView"})
118    public void testAddMessageToConsoleCalledWithCorrectLineAndSource() throws Throwable {
119        TestAwContentsClient.AddMessageToConsoleHelper addMessageToConsoleHelper =
120                mContentsClient.getAddMessageToConsoleHelper();
121 
122        int callCount = addMessageToConsoleHelper.getCallCount();
123        String data = getLogMessageJavaScriptData("log", TEST_MESSAGE_ONE);
124        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
125                     data, "text/html", false);
126        addMessageToConsoleHelper.waitForCallback(callCount);
127        assertTrue("Url [" + addMessageToConsoleHelper.getSourceId() + "] expected to end with [" +
128                   data + "].", addMessageToConsoleHelper.getSourceId().endsWith(data));
129        assertEquals(LOG_MESSAGE_JAVASCRIPT_DATA_LINE_NUMBER,
130                     addMessageToConsoleHelper.getLineNumber());
131    }
132}

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