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

COVERAGE SUMMARY FOR SOURCE FILE [GetTitleTest.java]

nameclass, %method, %block, %line, %
GetTitleTest.java100% (2/2)92%  (12/13)91%  (203/223)90%  (45.8/51)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class GetTitleTest100% (1/1)92%  (11/12)91%  (194/214)89%  (41.8/47)
testGetTitleWithWriteln (): void 0%   (0/1)0%   (0/13)0%   (0/5)
loadFromUrlAndGetTitle (String, String): GetTitleTest$PageInfo 100% (1/1)85%  (39/46)97%  (5.8/6)
GetTitleTest (): void 100% (1/1)100% (3/3)100% (1/1)
getHtml (String): String 100% (1/1)100% (30/30)100% (6/6)
loadFromDataAndGetTitle (String): String 100% (1/1)100% (15/15)100% (2/2)
setUp (): void 100% (1/1)100% (17/17)100% (5/5)
testGetTitleOnDataContainingEmptyTitle (): void 100% (1/1)100% (21/21)100% (5/5)
testGetTitleOnDataContainingNoTitle (): void 100% (1/1)100% (21/21)100% (5/5)
testGetTitleOnLoadUrlFileContainingEmptyTitle (): void 100% (1/1)100% (13/13)100% (3/3)
testGetTitleOnLoadUrlFileContainingNoTitle (): void 100% (1/1)100% (13/13)100% (3/3)
testLoadDataGetTitle (): void 100% (1/1)100% (10/10)100% (3/3)
testLoadUrlGetTitle (): void 100% (1/1)100% (12/12)100% (3/3)
     
class GetTitleTest$PageInfo100% (1/1)100% (1/1)100% (9/9)100% (4/4)
GetTitleTest$PageInfo (String, String): void 100% (1/1)100% (9/9)100% (4/4)

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.test.suitebuilder.annotation.Smoke;
9 
10import org.chromium.android_webview.AwContents;
11import org.chromium.base.test.util.Feature;
12import org.chromium.base.test.util.DisabledTest;
13import org.chromium.net.test.util.TestWebServer;
14 
15/**
16 * A test suite for ContentView.getTitle().
17 */
18public class GetTitleTest extends AwTestBase {
19    private static final String TITLE = "TITLE";
20 
21    private static final String GET_TITLE_TEST_PATH = "/get_title_test.html";
22    private static final String GET_TITLE_TEST_EMPTY_PATH = "/get_title_test_empty.html";
23    private static final String GET_TITLE_TEST_NO_TITLE_PATH = "/get_title_test_no_title.html";
24 
25    private TestAwContentsClient mContentsClient;
26    private AwContents mAwContents;
27 
28    private static class PageInfo {
29        public final String mTitle;
30        public final String mUrl;
31 
32        public PageInfo(String title, String url) {
33            mTitle = title;
34            mUrl = url;
35        }
36    };
37 
38    @Override
39    public void setUp() throws Exception {
40        super.setUp();
41        mContentsClient = new TestAwContentsClient();
42        final AwTestContainerView testContainerView =
43                createAwTestContainerViewOnMainSync(mContentsClient);
44        mAwContents = testContainerView.getAwContents();
45    }
46 
47    private static final String getHtml(String title) {
48        StringBuilder html = new StringBuilder();
49        html.append("<html><head>");
50        if (title != null) {
51            html.append("<title>" + title + "</title>");
52        }
53        html.append("</head><body>BODY</body></html>");
54        return html.toString();
55    }
56 
57    private String loadFromDataAndGetTitle(String html) throws Throwable {
58        loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
59                html, "text/html", false);
60        return getTitleOnUiThread(mAwContents);
61    }
62 
63    private PageInfo loadFromUrlAndGetTitle(String html, String filename) throws Throwable {
64        TestWebServer webServer = null;
65        try {
66            webServer = new TestWebServer(false);
67 
68            final String url = webServer.setResponse(filename, html, null);
69            loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
70            return new PageInfo(getTitleOnUiThread(mAwContents),
71                url.replaceAll("http:\\/\\/", ""));
72 
73        } finally {
74            if (webServer != null) webServer.shutdown();
75        }
76    }
77 
78    /**
79     * When the data has title info, the page title is set to it.
80     * @throws Throwable
81     */
82    @Smoke
83    @SmallTest
84    @Feature({"AndroidWebView", "Main"})
85    public void testLoadDataGetTitle() throws Throwable {
86        final String title = loadFromDataAndGetTitle(getHtml(TITLE));
87        assertEquals("Title should be " + TITLE, TITLE, title);
88    }
89 
90    /**
91     * When the data has empty title, the page title is set to the loaded content.
92     * @throws Throwable
93     */
94    @SmallTest
95    @Feature({"AndroidWebView"})
96    public void testGetTitleOnDataContainingEmptyTitle() throws Throwable {
97        final String content = getHtml("");
98        final String expectedTitle = "data:text/html," + content;
99        final String title = loadFromDataAndGetTitle(content);
100        assertEquals("Title should be set to the loaded data:text/html content", expectedTitle,
101                     title);
102    }
103 
104    /**
105     * When the data has no title, the page title is set to the loaded content.
106     * @throws Throwable
107     */
108    @SmallTest
109    @Feature({"AndroidWebView"})
110    public void testGetTitleOnDataContainingNoTitle() throws Throwable {
111        final String content = getHtml(null);
112        final String expectedTitle = "data:text/html," + content;
113        final String title = loadFromDataAndGetTitle(content);
114        assertEquals("Title should be set to the data:text/html content", expectedTitle, title);
115    }
116 
117    /**
118     * When url-file has the title info, the page title is set to it.
119     * @throws Throwable
120     */
121    @SmallTest
122    @Feature({"AndroidWebView"})
123    public void testLoadUrlGetTitle() throws Throwable {
124        final PageInfo info = loadFromUrlAndGetTitle(getHtml(TITLE), GET_TITLE_TEST_PATH);
125        assertEquals("Title should be " + TITLE, TITLE, info.mTitle);
126    }
127 
128    /**
129     * When the loaded file has empty title, the page title is set to the url it loads from.
130     * It also contains: hostName, portNumber information if its part of the loaded URL.
131     * @throws Throwable
132     */
133    @SmallTest
134    @Feature({"AndroidWebView"})
135    public void testGetTitleOnLoadUrlFileContainingEmptyTitle() throws Throwable {
136        final PageInfo info = loadFromUrlAndGetTitle(getHtml(""), GET_TITLE_TEST_EMPTY_PATH);
137        assertEquals("Incorrect title :: " , info.mUrl, info.mTitle);
138    }
139 
140    /**
141     * When the loaded file has no title, the page title is set to the urk it loads from.
142     * It also contains: hostName, portNumber information if its part of the loaded URL.
143     * @throws Throwable
144     */
145    @SmallTest
146    @Feature({"AndroidWebView"})
147    public void testGetTitleOnLoadUrlFileContainingNoTitle() throws Throwable {
148        final PageInfo info = loadFromUrlAndGetTitle(getHtml(null), GET_TITLE_TEST_NO_TITLE_PATH);
149        assertEquals("Incorrect title :: " , info.mUrl, info.mTitle);
150    }
151 
152    /**
153     * A subtle bug started to appear after the merge to r157579. If document.writeln is
154     * used in the page's script then the page's title is reported incorrectly.
155     * Bug: crbug.com/151012
156     * @SmallTest
157     * @Feature({"AndroidWebView"})
158     */
159    @DisabledTest
160    public void testGetTitleWithWriteln() throws Throwable {
161        final String expectedTitle = "Expected";
162        final String page =
163                // Note: document.title="...";document.writeln(document.title); also fails.
164                "<html>" +
165                "<body onload='document.writeln(document.title=\"" + expectedTitle + "\")'>" +
166                "</body></html>";
167        final String title = loadFromDataAndGetTitle(page);
168        assertEquals("Incorrect title :: ", expectedTitle, title);
169    }
170}

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