Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(793)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/UrlSchemeTest.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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
5 /**
6 * Test suite for different Android URL schemes.
7 */
8
9 package org.chromium.chrome.browser;
10
11 import android.content.Context;
12 import android.net.Uri;
13 import android.test.suitebuilder.annotation.MediumTest;
14
15 import org.chromium.base.ThreadUtils;
16 import org.chromium.base.test.util.Feature;
17 import org.chromium.base.test.util.TestFileUtil;
18 import org.chromium.base.test.util.UrlUtils;
19 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
20 import org.chromium.chrome.test.TestContentProvider;
21
22 import java.io.IOException;
23 import java.io.InputStream;
24 import java.util.concurrent.Callable;
25
26 public class UrlSchemeTest extends ChromeActivityTestCaseBase<ChromeActivity> {
27
28 public UrlSchemeTest() {
29 super(ChromeActivity.class);
30 }
31
32 /**
33 * Test that resource request count in the content provider works.
34 * This is to make sure that attempts to access the content provider
35 * will be detected.
36 */
37 @MediumTest
38 @Feature({"Navigation"})
39 public void testContentProviderResourceRequestCount() throws IOException {
40 String resource = "test_reset";
41 resetResourceRequestCountInContentProvider(resource);
42 ensureResourceRequestCountInContentProvider(resource, 0);
43 // Make a request to the content provider.
44 Uri uri = Uri.parse(createContentUrl(resource));
45 Context context = getInstrumentation().getContext();
46 InputStream inputStream = null;
47 try {
48 inputStream = context.getContentResolver().openInputStream(uri);
49 assertNotNull(inputStream);
50 } finally {
51 if (inputStream != null) inputStream.close();
52 }
53 ensureResourceRequestCountInContentProvider(resource, 1);
54 resetResourceRequestCountInContentProvider(resource);
55 ensureResourceRequestCountInContentProvider(resource, 0);
56 }
57
58 /**
59 * Make sure content URL access works.
60 */
61 @MediumTest
62 @Feature({"Navigation"})
63 public void testContentUrlAccess() throws InterruptedException {
64 String resource = "content_disabled_by_default";
65 resetResourceRequestCountInContentProvider(resource);
66 loadUrl(createContentUrl(resource));
67 ensureResourceRequestCountInContentProviderNotLessThan(resource, 1);
68 }
69
70 private String getTitleOnUiThread() {
71 return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<String> () {
72 @Override
73 public String call() throws Exception {
74 return getActivity().getActivityTab().getTitle();
75 }
76 });
77 }
78
79 /**
80 * Test that a content URL is allowed within a data URL.
81 */
82 @MediumTest
83 @Feature({"Navigation"})
84 public void testContentUrlFromData() throws InterruptedException {
85 final String target = "content_from_data";
86 resetResourceRequestCountInContentProvider(target);
87 loadUrl(UrlUtils.encodeHtmlDataUri(
88 "<img src=\"" + createContentUrl(target) + "\">"));
89 ensureResourceRequestCountInContentProviderNotLessThan(target, 1);
90 }
91
92 /**
93 * Test that a content URL is allowed within a local file.
94 */
95 @MediumTest
96 @Feature({"Navigation"})
97 public void testContentUrlFromFile() throws InterruptedException, IOExceptio n {
98 final String target = "content_from_file";
99 final String fileName = "/sdcard/" + target + ".html";
100 try {
101 TestFileUtil.createNewHtmlFile(
102 fileName, target, "<img src=\"" + createContentUrl(target) + "\">");
103 resetResourceRequestCountInContentProvider(target);
104 loadUrl("file:///" + fileName);
105 ensureResourceRequestCountInContentProviderNotLessThan(target, 1);
106 } finally {
107 TestFileUtil.deleteFile(fileName);
108 }
109 }
110
111 /**
112 * Test that the browser can be navigated to a file URL.
113 */
114 @MediumTest
115 @Feature({"Navigation"})
116 public void testFileUrlNavigation() throws InterruptedException, IOException {
117 final String target = "/sdcard/url_navigation_test.html";
118
119 try {
120 TestFileUtil.createNewHtmlFile(target, "File", null);
121 loadUrl("file://" + target);
122 assertEquals("File", getTitleOnUiThread());
123 } finally {
124 TestFileUtil.deleteFile(target);
125 }
126 }
127
128 /**
129 * Verifies the number of resource requests made to the content provider.
130 * @param resource Resource name
131 * @param expectedCount Expected resource requests count
132 */
133 private void ensureResourceRequestCountInContentProvider(String resource, in t expectedCount) {
134 Context context = getInstrumentation().getTargetContext();
135 int actualCount = TestContentProvider.getResourceRequestCount(context, r esource);
136 assertEquals(expectedCount, actualCount);
137 }
138
139 /**
140 * Verifies the number of resource requests made to the content provider.
141 * @param resource Resource name
142 * @param expectedMinimalCount Expected minimal resource requests count
143 */
144 private void ensureResourceRequestCountInContentProviderNotLessThan(
145 String resource, int expectedMinimalCount) {
146 Context context = getInstrumentation().getTargetContext();
147 int actualCount = TestContentProvider.getResourceRequestCount(context, r esource);
148 assertTrue("Minimal expected: " + expectedMinimalCount + ", actual: " + actualCount,
149 actualCount >= expectedMinimalCount);
150 }
151
152 private void resetResourceRequestCountInContentProvider(String resource) {
153 Context context = getInstrumentation().getTargetContext();
154 TestContentProvider.resetResourceRequestCount(context, resource);
155 }
156
157 private String createContentUrl(final String target) {
158 return TestContentProvider.createContentUrl(target);
159 }
160
161 @Override
162 public void startMainActivity() throws InterruptedException {
163 startMainActivityFromLauncher();
164 }
165 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698