Chromium Code Reviews| 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(); | |
|
dpapad
2017/07/07 21:19:30
Nit (optional): Maybe avoid repetition as follows?
scottchen
2017/07/07 22:15:30
Done.
| |
| 219 assertTrue(router.getRoutes().hasOwnProperty('BASIC')); | |
| 220 | |
| 221 assertFalse(router.getRoutes().hasOwnProperty('ADVANCED')); | |
| 222 assertFalse(router.getRoutes().hasOwnProperty('APPEARANCE')); | |
| 223 assertFalse(router.getRoutes().hasOwnProperty('DEFAULT_BROWSER')); | |
| 224 assertFalse(router.getRoutes().hasOwnProperty('ON_STARTUP')); | |
| 225 assertFalse(router.getRoutes().hasOwnProperty('PASSWORDS')); | |
| 226 assertFalse(router.getRoutes().hasOwnProperty('PEOPLE')); | |
| 227 assertFalse(router.getRoutes().hasOwnProperty('RESET')); | |
| 206 }); | 228 }); |
| 207 }); | 229 }); |
| OLD | NEW |