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

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

Issue 1139643006: Rename chrome/android/javatests to javatests_shell. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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 2013 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 package org.chromium.chrome.browser;
6
7 import android.test.InstrumentationTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
9
10 import org.chromium.base.test.util.Feature;
11
12 import java.net.URI;
13
14 public class UrlUtilitiesTest extends InstrumentationTestCase {
15 @SmallTest
16 public void testIsAcceptedScheme() {
17 assertTrue(UrlUtilities.isAcceptedScheme("about:awesome"));
18 assertTrue(UrlUtilities.isAcceptedScheme("data:data"));
19 assertTrue(UrlUtilities.isAcceptedScheme(
20 "https://user:pass@:awesome.com:9000/bad-scheme:#fake:"));
21 assertTrue(UrlUtilities.isAcceptedScheme("http://awesome.example.com/")) ;
22 assertTrue(UrlUtilities.isAcceptedScheme("file://awesome.example.com/")) ;
23 assertTrue(UrlUtilities.isAcceptedScheme("inline:skates.co.uk"));
24 assertTrue(UrlUtilities.isAcceptedScheme("javascript:alert(1)"));
25
26 assertFalse(UrlUtilities.isAcceptedScheme("super:awesome"));
27 assertFalse(UrlUtilities.isAcceptedScheme(
28 "ftp://https:password@example.com/"));
29 assertFalse(UrlUtilities.isAcceptedScheme(
30 "ftp://https:password@example.com/?http:#http:"));
31 assertFalse(UrlUtilities.isAcceptedScheme(
32 "google-search://https:password@example.com/?http:#http:"));
33 assertFalse(UrlUtilities.isAcceptedScheme("chrome://http://version"));
34 assertFalse(UrlUtilities.isAcceptedScheme(""));
35 assertFalse(UrlUtilities.isAcceptedScheme(" http://awesome.example.com/ "));
36 assertFalse(UrlUtilities.isAcceptedScheme("ht\ntp://awesome.example.com/ "));
37 }
38
39 @SmallTest
40 public void testIsDownloadableScheme() {
41 assertTrue(UrlUtilities.isDownloadableScheme("data:data"));
42 assertTrue(UrlUtilities.isDownloadableScheme(
43 "https://user:pass@:awesome.com:9000/bad-scheme:#fake:"));
44 assertTrue(UrlUtilities.isDownloadableScheme("http://awesome.example.com /"));
45 assertTrue(UrlUtilities.isDownloadableScheme("filesystem://awesome.examp le.com/"));
46
47 assertFalse(UrlUtilities.isDownloadableScheme("inline:skates.co.uk"));
48 assertFalse(UrlUtilities.isDownloadableScheme("javascript:alert(1)"));
49 assertFalse(UrlUtilities.isDownloadableScheme("file://awesome.example.co m/"));
50 assertFalse(UrlUtilities.isDownloadableScheme("about:awesome"));
51 assertFalse(UrlUtilities.isDownloadableScheme("super:awesome"));
52 assertFalse(UrlUtilities.isDownloadableScheme("ftp://https:password@exam ple.com/"));
53 assertFalse(UrlUtilities.isDownloadableScheme(
54 "ftp://https:password@example.com/?http:#http:"));
55 assertFalse(UrlUtilities.isDownloadableScheme(
56 "google-search://https:password@example.com/?http:#http:"));
57 assertFalse(UrlUtilities.isDownloadableScheme("chrome://http://version") );
58 assertFalse(UrlUtilities.isDownloadableScheme(""));
59 assertFalse(UrlUtilities.isDownloadableScheme(" http://awesome.example. com/"));
60 assertFalse(UrlUtilities.isDownloadableScheme("ht\ntp://awesome.example. com/"));
61 }
62
63 @SmallTest
64 public void testIsValidForIntentFallbackUrl() {
65 assertTrue(UrlUtilities.isValidForIntentFallbackNavigation(
66 "https://user:pass@:awesome.com:9000/bad-scheme:#fake:"));
67 assertTrue(UrlUtilities.isValidForIntentFallbackNavigation("http://aweso me.example.com/"));
68 assertFalse(UrlUtilities.isValidForIntentFallbackNavigation("inline:skat es.co.uk"));
69 assertFalse(UrlUtilities.isValidForIntentFallbackNavigation("javascript: alert(1)"));
70 assertFalse(UrlUtilities.isValidForIntentFallbackNavigation(""));
71 }
72
73 @SmallTest
74 @Feature({"Webapps"})
75 public void testGetOriginForDisplay() {
76 URI uri;
77
78 uri = URI.create("http://chopped.com/is/awesome");
79 assertEquals("http://chopped.com", UrlUtilities.getOriginForDisplay(uri, true));
80 assertEquals("chopped.com", UrlUtilities.getOriginForDisplay(uri, false) );
81
82 uri = URI.create("http://lopped.com");
83 assertEquals("http://lopped.com", UrlUtilities.getOriginForDisplay(uri, true));
84 assertEquals("lopped.com", UrlUtilities.getOriginForDisplay(uri, false)) ;
85
86 uri = URI.create("http://dropped.com?things");
87 assertEquals("http://dropped.com", UrlUtilities.getOriginForDisplay(uri, true));
88 assertEquals("dropped.com", UrlUtilities.getOriginForDisplay(uri, false) );
89
90 uri = URI.create("http://dfalcant@stopped.com:1234");
91 assertEquals("http://stopped.com:1234", UrlUtilities.getOriginForDisplay (uri, true));
92 assertEquals("stopped.com:1234", UrlUtilities.getOriginForDisplay(uri, f alse));
93
94 uri = URI.create("http://dfalcant:secret@stopped.com:9999");
95 assertEquals("http://stopped.com:9999", UrlUtilities.getOriginForDisplay (uri, true));
96 assertEquals("stopped.com:9999", UrlUtilities.getOriginForDisplay(uri, f alse));
97
98 uri = URI.create("chrome://settings:443");
99 assertEquals("chrome://settings:443", UrlUtilities.getOriginForDisplay(u ri, true));
100 assertEquals("settings:443", UrlUtilities.getOriginForDisplay(uri, false ));
101
102 uri = URI.create("about:blank");
103 assertEquals("about:blank", UrlUtilities.getOriginForDisplay(uri, true)) ;
104 assertEquals("about:blank", UrlUtilities.getOriginForDisplay(uri, false) );
105 }
106
107 @SmallTest
108 public void testValidateIntentUrl() {
109 // Valid action, hostname, and (empty) path.
110 assertTrue(UrlUtilities.validateIntentUrl(
111 "intent://10010#Intent;scheme=tel;action=com.google.android.apps ."
112 + "authenticator.AUTHENTICATE;end"));
113 // Valid package, scheme, hostname, and path.
114 assertTrue(UrlUtilities.validateIntentUrl(
115 "intent://scan/#Intent;package=com.google.zxing.client.android;"
116 + "scheme=zxing;end;"));
117 // Valid package, scheme, component, hostname, and path.
118 assertTrue(UrlUtilities.validateIntentUrl(
119 "intent://wump-hey.example.com/#Intent;package=com.example.wump; "
120 + "scheme=yow;component=com.example.PUMPKIN;end;"));
121 // Valid package, scheme, action, hostname, and path.
122 assertTrue(UrlUtilities.validateIntentUrl(
123 "intent://wump-hey.example.com/#Intent;package=com.example.wump; "
124 + "scheme=eeek;action=frighten_children;end;"));
125 // Valid package, component, String extra, hostname, and path.
126 assertTrue(UrlUtilities.validateIntentUrl(
127 "intent://testing/#Intent;package=cybergoat.noodle.crumpet;"
128 + "component=wump.noodle/Crumpet;S.goat=leg;end"));
129
130 // Valid package, component, int extra (with URL-encoded key), String
131 // extra, hostname, and path.
132 assertTrue(UrlUtilities.validateIntentUrl(
133 "intent://testing/#Intent;package=cybergoat.noodle.crumpet;"
134 + "component=wump.noodle/Crumpet;i.pumpkinCount%3D=42;"
135 + "S.goat=leg;end"));
136
137 // Android's Intent.toUri does not generate URLs like this, but
138 // Google Authenticator does, and we must handle them.
139 assertTrue(UrlUtilities.validateIntentUrl(
140 "intent:#Intent;action=com.google.android.apps.chrome."
141 + "TEST_AUTHENTICATOR;category=android.intent.category."
142 + "BROWSABLE;S.inputData=cancelled;end"));
143
144 // Junk after end.
145 assertFalse(UrlUtilities.validateIntentUrl(
146 "intent://10010#Intent;scheme=tel;action=com.google.android.apps ."
147 + "authenticator.AUTHENTICATE;end','*');"
148 + "alert(document.cookie);//"));
149 // component appears twice.
150 assertFalse(UrlUtilities.validateIntentUrl(
151 "intent://wump-hey.example.com/#Intent;package=com.example.wump; "
152 + "scheme=yow;component=com.example.PUMPKIN;"
153 + "component=com.example.AVOCADO;end;"));
154 // scheme contains illegal character.
155 assertFalse(UrlUtilities.validateIntentUrl(
156 "intent://wump-hey.example.com/#Intent;package=com.example.wump; "
157 + "scheme=hello+goodbye;component=com.example.PUMPKIN;end;"));
158 // category contains illegal character.
159 assertFalse(UrlUtilities.validateIntentUrl(
160 "intent://wump-hey.example.com/#Intent;package=com.example.wump; "
161 + "category=42%_by_volume;end"));
162 // Incorrectly URL-encoded.
163 assertFalse(UrlUtilities.validateIntentUrl(
164 "intent://testing/#Intent;package=cybergoat.noodle.crumpet;"
165 + "component=wump.noodle/Crumpet;i.pumpkinCount%%3D=42;"
166 + "S.goat=⋚end"));
167 }
168
169 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698