EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.android_webview.test]

COVERAGE SUMMARY FOR SOURCE FILE [ClientOnPageFinishedTest.java]

nameclass, %method, %block, %line, %
ClientOnPageFinishedTest.java100% (1/1)100% (5/5)96%  (164/171)100% (42.9/43)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ClientOnPageFinishedTest100% (1/1)100% (5/5)96%  (164/171)100% (42.9/43)
testOnPageFinishedNotCalledForValidSubresources (): void 100% (1/1)91%  (71/78)99%  (18.9/19)
ClientOnPageFinishedTest (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (17/17)100% (5/5)
testOnPageFinishedCalledAfterError (): void 100% (1/1)100% (42/42)100% (11/11)
testOnPageFinishedPassesCorrectUrl (): void 100% (1/1)100% (31/31)100% (7/7)

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.MediumTest;
8 
9import org.chromium.android_webview.AwContents;
10import org.chromium.base.test.util.Feature;
11import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
12import org.chromium.net.test.util.TestWebServer;
13 
14import java.util.concurrent.TimeUnit;
15 
16/**
17 * Tests for the ContentViewClient.onPageFinished() method.
18 */
19public class ClientOnPageFinishedTest extends AwTestBase {
20 
21    private TestAwContentsClient mContentsClient;
22    private AwContents mAwContents;
23 
24    @Override
25    public void setUp() throws Exception {
26        super.setUp();
27        mContentsClient = new TestAwContentsClient();
28        final AwTestContainerView testContainerView =
29                createAwTestContainerViewOnMainSync(mContentsClient);
30        mAwContents = testContainerView.getAwContents();
31    }
32 
33    @MediumTest
34    @Feature({"AndroidWebView"})
35    public void testOnPageFinishedPassesCorrectUrl() throws Throwable {
36        TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
37                mContentsClient.getOnPageFinishedHelper();
38 
39        String html = "<html><body>Simple page.</body></html>";
40        int currentCallCount = onPageFinishedHelper.getCallCount();
41        loadDataAsync(mAwContents, html, "text/html", false);
42 
43        onPageFinishedHelper.waitForCallback(currentCallCount);
44        assertEquals("data:text/html," + html, onPageFinishedHelper.getUrl());
45    }
46 
47    @MediumTest
48    @Feature({"AndroidWebView"})
49    public void testOnPageFinishedCalledAfterError() throws Throwable {
50        TestCallbackHelperContainer.OnReceivedErrorHelper onReceivedErrorHelper =
51                mContentsClient.getOnReceivedErrorHelper();
52        TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
53                mContentsClient.getOnPageFinishedHelper();
54 
55        assertEquals(0, onReceivedErrorHelper.getCallCount());
56 
57        String url = "http://localhost:7/non_existent";
58        int onReceivedErrorCallCount = onReceivedErrorHelper.getCallCount();
59        int onPageFinishedCallCount = onPageFinishedHelper.getCallCount();
60        loadUrlAsync(mAwContents, url);
61 
62        onReceivedErrorHelper.waitForCallback(onReceivedErrorCallCount,
63                                              1 /* numberOfCallsToWaitFor */,
64                                              WAIT_TIMEOUT_SECONDS,
65                                              TimeUnit.SECONDS);
66        onPageFinishedHelper.waitForCallback(onPageFinishedCallCount,
67                                              1 /* numberOfCallsToWaitFor */,
68                                              WAIT_TIMEOUT_SECONDS,
69                                              TimeUnit.SECONDS);
70        assertEquals(1, onReceivedErrorHelper.getCallCount());
71    }
72 
73    @MediumTest
74    @Feature({"AndroidWebView"})
75    public void testOnPageFinishedNotCalledForValidSubresources() throws Throwable {
76        TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
77                mContentsClient.getOnPageFinishedHelper();
78 
79        TestWebServer webServer = null;
80        try {
81            webServer = new TestWebServer(false);
82 
83            final String testHtml = "<html><head>Header</head><body>Body</body></html>";
84            final String testPath = "/test.html";
85            final String syncPath = "/sync.html";
86 
87            webServer.setResponse(testPath, testHtml, null);
88            final String syncUrl = webServer.setResponse(syncPath, testHtml, null);
89 
90            assertEquals(0, onPageFinishedHelper.getCallCount());
91            final int pageWithSubresourcesCallCount = onPageFinishedHelper.getCallCount();
92            loadDataAsync(mAwContents,
93                          "<html><iframe src=\"" + testPath + "\" /></html>",
94                          "text/html",
95                          false);
96 
97            onPageFinishedHelper.waitForCallback(pageWithSubresourcesCallCount);
98 
99            // Rather than wait a fixed time to see that an onPageFinished callback isn't issued
100            // we load another valid page. Since callbacks arrive sequentially if the next callback
101            // we get is for the synchronizationUrl we know that the previous load did not schedule
102            // a callback for the iframe.
103            final int synchronizationPageCallCount = onPageFinishedHelper.getCallCount();
104            loadUrlAsync(mAwContents, syncUrl);
105 
106            onPageFinishedHelper.waitForCallback(synchronizationPageCallCount);
107            assertEquals(syncUrl, onPageFinishedHelper.getUrl());
108            assertEquals(2, onPageFinishedHelper.getCallCount());
109 
110        } finally {
111            if (webServer != null) webServer.shutdown();
112        }
113    }
114}

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