OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 suite('route', function() { | 5 suite('route', function() { |
6 /** | 6 /** |
7 * Returns a new promise that resolves after a window 'popstate' event. | 7 * Returns a new promise that resolves after a window 'popstate' event. |
8 * @return {!Promise} | 8 * @return {!Promise} |
9 */ | 9 */ |
10 function whenPopState(causeEvent) { | 10 function whenPopState(causeEvent) { |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 assertTrue(SITE_SETTINGS_ALL.isSubpage()); | 82 assertTrue(SITE_SETTINGS_ALL.isSubpage()); |
83 | 83 |
84 // Test a non-subpage child of ADVANCED. | 84 // Test a non-subpage child of ADVANCED. |
85 var CLEAR_BROWSER_DATA = ADVANCED.createChild('/clearBrowserData'); | 85 var CLEAR_BROWSER_DATA = ADVANCED.createChild('/clearBrowserData'); |
86 assertFalse(CLEAR_BROWSER_DATA.isSubpage()); | 86 assertFalse(CLEAR_BROWSER_DATA.isSubpage()); |
87 assertEquals('', CLEAR_BROWSER_DATA.section); | 87 assertEquals('', CLEAR_BROWSER_DATA.section); |
88 }); | 88 }); |
89 | 89 |
90 test('no duplicate routes', function() { | 90 test('no duplicate routes', function() { |
91 var paths = new Set(); | 91 var paths = new Set(); |
92 Object.values(settings.Route).forEach(function(route) { | 92 Object.values(settings.routes).forEach(function(route) { |
93 assertFalse(paths.has(route.path), route.path); | 93 assertFalse(paths.has(route.path), route.path); |
94 paths.add(route.path); | 94 paths.add(route.path); |
95 }); | 95 }); |
96 }); | 96 }); |
97 | 97 |
98 test('navigate back to parent previous route', function() { | 98 test('navigate back to parent previous route', function() { |
99 return testNavigateBackUsesHistory( | 99 return testNavigateBackUsesHistory( |
100 settings.Route.BASIC, | 100 settings.routes.BASIC, settings.routes.PEOPLE, settings.routes.BASIC); |
101 settings.Route.PEOPLE, | |
102 settings.Route.BASIC); | |
103 }); | 101 }); |
104 | 102 |
105 test('navigate back to non-ancestor shallower route', function() { | 103 test('navigate back to non-ancestor shallower route', function() { |
106 return testNavigateBackUsesHistory( | 104 return testNavigateBackUsesHistory( |
107 settings.Route.ADVANCED, | 105 settings.routes.ADVANCED, settings.routes.PEOPLE, |
108 settings.Route.PEOPLE, | 106 settings.routes.BASIC); |
109 settings.Route.BASIC); | |
110 }); | 107 }); |
111 | 108 |
112 test('navigate back to sibling route', function() { | 109 test('navigate back to sibling route', function() { |
113 return testNavigateBackUsesHistory( | 110 return testNavigateBackUsesHistory( |
114 settings.Route.APPEARANCE, | 111 settings.routes.APPEARANCE, settings.routes.PEOPLE, |
115 settings.Route.PEOPLE, | 112 settings.routes.APPEARANCE); |
116 settings.Route.APPEARANCE); | |
117 }); | 113 }); |
118 | 114 |
119 test('navigate back to parent when previous route is deeper', function() { | 115 test('navigate back to parent when previous route is deeper', function() { |
120 settings.navigateTo(settings.Route.SYNC); | 116 settings.navigateTo(settings.routes.SYNC); |
121 settings.navigateTo(settings.Route.PEOPLE); | 117 settings.navigateTo(settings.routes.PEOPLE); |
122 settings.navigateToPreviousRoute(); | 118 settings.navigateToPreviousRoute(); |
123 assertEquals(settings.Route.BASIC, settings.getCurrentRoute()); | 119 assertEquals(settings.routes.BASIC, settings.getCurrentRoute()); |
124 }); | 120 }); |
125 | 121 |
126 test('navigate back to BASIC when going back from root pages', function() { | 122 test('navigate back to BASIC when going back from root pages', function() { |
127 settings.navigateTo(settings.Route.PEOPLE); | 123 settings.navigateTo(settings.routes.PEOPLE); |
128 settings.navigateTo(settings.Route.ADVANCED); | 124 settings.navigateTo(settings.routes.ADVANCED); |
129 settings.navigateToPreviousRoute(); | 125 settings.navigateToPreviousRoute(); |
130 assertEquals(settings.Route.BASIC, settings.getCurrentRoute()); | 126 assertEquals(settings.routes.BASIC, settings.getCurrentRoute()); |
131 }); | 127 }); |
132 | 128 |
133 test('navigateTo respects removeSearch optional parameter', function() { | 129 test('navigateTo respects removeSearch optional parameter', function() { |
134 var params = new URLSearchParams('search=foo'); | 130 var params = new URLSearchParams('search=foo'); |
135 settings.navigateTo(settings.Route.BASIC, params); | 131 settings.navigateTo(settings.routes.BASIC, params); |
136 assertEquals(params.toString(), settings.getQueryParameters().toString()); | 132 assertEquals(params.toString(), settings.getQueryParameters().toString()); |
137 | 133 |
138 settings.navigateTo( | 134 settings.navigateTo( |
139 settings.Route.SITE_SETTINGS, null, /* removeSearch */ false); | 135 settings.routes.SITE_SETTINGS, null, |
| 136 /* removeSearch */ false); |
140 assertEquals(params.toString(), settings.getQueryParameters().toString()); | 137 assertEquals(params.toString(), settings.getQueryParameters().toString()); |
141 | 138 |
142 settings.navigateTo( | 139 settings.navigateTo( |
143 settings.Route.SEARCH_ENGINES, null, /* removeSearch */ true); | 140 settings.routes.SEARCH_ENGINES, null, |
| 141 /* removeSearch */ true); |
144 assertEquals('', settings.getQueryParameters().toString()); | 142 assertEquals('', settings.getQueryParameters().toString()); |
145 }); | 143 }); |
146 | 144 |
147 test('navigateTo ADVANCED forwards to BASIC', function() { | 145 test('navigateTo ADVANCED forwards to BASIC', function() { |
148 settings.navigateTo(settings.Route.ADVANCED); | 146 settings.navigateTo(settings.routes.ADVANCED); |
149 assertEquals(settings.Route.BASIC, settings.getCurrentRoute()); | 147 assertEquals(settings.routes.BASIC, settings.getCurrentRoute()); |
150 }); | 148 }); |
151 | 149 |
152 test('popstate flag works', function() { | 150 test('popstate flag works', function() { |
153 settings.navigateTo(settings.Route.BASIC); | 151 settings.navigateTo(settings.routes.BASIC); |
154 assertFalse(settings.lastRouteChangeWasPopstate()); | 152 assertFalse(settings.lastRouteChangeWasPopstate()); |
155 | 153 |
156 settings.navigateTo(settings.Route.PEOPLE); | 154 settings.navigateTo(settings.routes.PEOPLE); |
157 assertFalse(settings.lastRouteChangeWasPopstate()); | 155 assertFalse(settings.lastRouteChangeWasPopstate()); |
158 | 156 |
159 return whenPopState(function() { | 157 return whenPopState(function() { |
160 window.history.back(); | 158 window.history.back(); |
161 }).then(function() { | 159 }) |
162 assertEquals(settings.Route.BASIC, settings.getCurrentRoute()); | 160 .then(function() { |
163 assertTrue(settings.lastRouteChangeWasPopstate()); | 161 assertEquals(settings.routes.BASIC, settings.getCurrentRoute()); |
| 162 assertTrue(settings.lastRouteChangeWasPopstate()); |
164 | 163 |
165 settings.navigateTo(settings.Route.ADVANCED); | 164 settings.navigateTo(settings.routes.ADVANCED); |
166 assertFalse(settings.lastRouteChangeWasPopstate()); | 165 assertFalse(settings.lastRouteChangeWasPopstate()); |
167 }); | 166 }); |
168 }); | 167 }); |
169 | 168 |
170 test('getRouteForPath trailing slashes', function() { | 169 test('getRouteForPath trailing slashes', function() { |
171 assertEquals(settings.Route.BASIC, settings.getRouteForPath('/')); | 170 assertEquals(settings.routes.BASIC, settings.getRouteForPath('/')); |
172 assertEquals(null, settings.getRouteForPath('//')); | 171 assertEquals(null, settings.getRouteForPath('//')); |
173 | 172 |
174 // Simple path. | 173 // Simple path. |
175 assertEquals(settings.Route.PEOPLE, settings.getRouteForPath('/people/')); | 174 assertEquals(settings.routes.PEOPLE, settings.getRouteForPath('/people/')); |
176 assertEquals(settings.Route.PEOPLE, settings.getRouteForPath('/people')); | 175 assertEquals(settings.routes.PEOPLE, settings.getRouteForPath('/people')); |
177 | 176 |
178 // Path with a slash. | 177 // Path with a slash. |
179 assertEquals( | 178 assertEquals( |
180 settings.Route.SITE_SETTINGS_COOKIES, | 179 settings.routes.SITE_SETTINGS_COOKIES, |
181 settings.getRouteForPath('/content/cookies')); | 180 settings.getRouteForPath('/content/cookies')); |
182 assertEquals( | 181 assertEquals( |
183 settings.Route.SITE_SETTINGS_COOKIES, | 182 settings.routes.SITE_SETTINGS_COOKIES, |
184 settings.getRouteForPath('/content/cookies/')); | 183 settings.getRouteForPath('/content/cookies/')); |
185 | 184 |
186 if (cr.isChromeOS) { | 185 if (cr.isChromeOS) { |
187 // Path with a dash. | 186 // Path with a dash. |
188 assertEquals( | 187 assertEquals( |
189 settings.Route.KEYBOARD, | 188 settings.routes.KEYBOARD, |
190 settings.getRouteForPath('/keyboard-overlay')); | 189 settings.getRouteForPath('/keyboard-overlay')); |
191 assertEquals( | 190 assertEquals( |
192 settings.Route.KEYBOARD, | 191 settings.routes.KEYBOARD, |
193 settings.getRouteForPath('/keyboard-overlay/')); | 192 settings.getRouteForPath('/keyboard-overlay/')); |
194 } | 193 } |
195 }); | 194 }); |
196 | 195 |
197 test('isNavigableDialog', function() { | 196 test('isNavigableDialog', function() { |
198 assertTrue(settings.Route.CLEAR_BROWSER_DATA.isNavigableDialog); | 197 assertTrue(settings.routes.CLEAR_BROWSER_DATA.isNavigableDialog); |
199 assertTrue(settings.Route.IMPORT_DATA.isNavigableDialog); | 198 assertTrue(settings.routes.IMPORT_DATA.isNavigableDialog); |
200 assertTrue(settings.Route.RESET_DIALOG.isNavigableDialog); | 199 assertTrue(settings.routes.RESET_DIALOG.isNavigableDialog); |
201 assertTrue(settings.Route.SIGN_OUT.isNavigableDialog); | 200 assertTrue(settings.routes.SIGN_OUT.isNavigableDialog); |
202 assertTrue(settings.Route.TRIGGERED_RESET_DIALOG.isNavigableDialog); | 201 assertTrue(settings.routes.TRIGGERED_RESET_DIALOG.isNavigableDialog); |
203 | 202 |
204 assertFalse(settings.Route.PRIVACY.isNavigableDialog); | 203 assertFalse(settings.routes.PRIVACY.isNavigableDialog); |
205 assertFalse(settings.Route.DEFAULT_BROWSER.isNavigableDialog); | 204 assertFalse(settings.routes.DEFAULT_BROWSER.isNavigableDialog); |
| 205 }); |
| 206 |
| 207 test('pageVisibility affects route availability', function() { |
| 208 settings.pageVisibility = { |
| 209 advancedSettings: false, |
| 210 appearance: false, |
| 211 defaultBrowser: false, |
| 212 onStartup: false, |
| 213 passwordsAndForms: false, |
| 214 people: false, |
| 215 reset: false, |
| 216 }; |
| 217 |
| 218 var router = new settings.Router(); |
| 219 var hasRoute = route => router.getRoutes().hasOwnProperty(route); |
| 220 |
| 221 assertTrue(hasRoute('BASIC')); |
| 222 |
| 223 assertFalse(hasRoute('ADVANCED')); |
| 224 assertFalse(hasRoute('APPEARANCE')); |
| 225 assertFalse(hasRoute('DEFAULT_BROWSER')); |
| 226 assertFalse(hasRoute('ON_STARTUP')); |
| 227 assertFalse(hasRoute('PASSWORDS')); |
| 228 assertFalse(hasRoute('PEOPLE')); |
| 229 assertFalse(hasRoute('RESET')); |
206 }); | 230 }); |
207 }); | 231 }); |
OLD | NEW |