| 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 cr.define('settings_main_page', function() { | 5 cr.define('settings_main_page', function() { |
| 6 /** | 6 /** |
| 7 * Extending TestBrowserProxy even though SearchManager is not a browser proxy | 7 * Extending TestBrowserProxy even though SearchManager is not a browser proxy |
| 8 * itself. Essentially TestBrowserProxy can act as a "proxy" for any external | 8 * itself. Essentially TestBrowserProxy can act as a "proxy" for any external |
| 9 * dependency, not just "browser proxies" (and maybe should be renamed to | 9 * dependency, not just "browser proxies" (and maybe should be renamed to |
| 10 * TestProxy). | 10 * TestProxy). |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 | 97 |
| 98 searchManager.resetResolver('search'); | 98 searchManager.resetResolver('search'); |
| 99 return settingsMain.searchContents(expectedQuery3); | 99 return settingsMain.searchContents(expectedQuery3); |
| 100 }).then(function() { | 100 }).then(function() { |
| 101 return searchManager.whenCalled('search'); | 101 return searchManager.whenCalled('search'); |
| 102 }).then(function(query) { | 102 }).then(function(query) { |
| 103 assertEquals(expectedQuery3, query); | 103 assertEquals(expectedQuery3, query); |
| 104 }); | 104 }); |
| 105 }); | 105 }); |
| 106 | 106 |
| 107 /** @return {!HTMLElement} */ |
| 108 function getToggleContainer() { |
| 109 var page = settingsMain.$$('settings-basic-page'); |
| 110 assertTrue(!!page); |
| 111 var toggleContainer = page.$$('#toggleContainer'); |
| 112 assertTrue(!!toggleContainer); |
| 113 return toggleContainer; |
| 114 } |
| 115 |
| 116 /** |
| 117 * Asserts that the Advanced toggle container exists in the combined |
| 118 * settings page and asserts whether it should be visible. |
| 119 * @param {boolean} expectedVisible |
| 120 */ |
| 121 function assertToggleContainerVisible(expectedVisible) { |
| 122 var toggleContainer = getToggleContainer(); |
| 123 if (expectedVisible) |
| 124 assertNotEquals('none', toggleContainer.style.display); |
| 125 else |
| 126 assertEquals('none', toggleContainer.style.display); |
| 127 } |
| 128 |
| 107 test('no results page shows and hides', function() { | 129 test('no results page shows and hides', function() { |
| 108 Polymer.dom.flush(); | 130 Polymer.dom.flush(); |
| 109 var noSearchResults = settingsMain.$.noSearchResults; | 131 var noSearchResults = settingsMain.$.noSearchResults; |
| 110 assertTrue(!!noSearchResults); | 132 assertTrue(!!noSearchResults); |
| 111 assertTrue(noSearchResults.hidden); | 133 assertTrue(noSearchResults.hidden); |
| 112 | 134 |
| 113 var toggleContainer = settingsMain.$$('#toggleContainer'); | 135 assertToggleContainerVisible(true); |
| 114 assertTrue(!!toggleContainer); | |
| 115 assertNotEquals('none', toggleContainer.style.display); | |
| 116 | 136 |
| 117 searchManager.setMatchesFound(false); | 137 searchManager.setMatchesFound(false); |
| 118 return settingsMain.searchContents('Query1').then(function() { | 138 return settingsMain.searchContents('Query1').then(function() { |
| 119 assertFalse(noSearchResults.hidden); | 139 assertFalse(noSearchResults.hidden); |
| 120 assertEquals('none', toggleContainer.style.display); | 140 assertToggleContainerVisible(false); |
| 121 | 141 |
| 122 searchManager.setMatchesFound(true); | 142 searchManager.setMatchesFound(true); |
| 123 return settingsMain.searchContents('Query2'); | 143 return settingsMain.searchContents('Query2'); |
| 124 }).then(function() { | 144 }).then(function() { |
| 125 assertTrue(noSearchResults.hidden); | 145 assertTrue(noSearchResults.hidden); |
| 126 }); | 146 }); |
| 127 }); | 147 }); |
| 128 | 148 |
| 129 // Ensure that when the user clears the search box, the "no results" page | 149 // Ensure that when the user clears the search box, the "no results" page |
| 130 // is hidden and the "advanced page toggle" is visible again. | 150 // is hidden and the "advanced page toggle" is visible again. |
| 131 test('no results page hides on clear', function() { | 151 test('no results page hides on clear', function() { |
| 132 Polymer.dom.flush(); | 152 Polymer.dom.flush(); |
| 133 var noSearchResults = settingsMain.$.noSearchResults; | 153 var noSearchResults = settingsMain.$.noSearchResults; |
| 134 assertTrue(!!noSearchResults); | 154 assertTrue(!!noSearchResults); |
| 135 assertTrue(noSearchResults.hidden); | 155 assertTrue(noSearchResults.hidden); |
| 136 | 156 |
| 137 var toggleContainer = settingsMain.$$('#toggleContainer'); | 157 assertToggleContainerVisible(true); |
| 138 assertTrue(!!toggleContainer); | |
| 139 assertNotEquals('none', toggleContainer.style.display); | |
| 140 | 158 |
| 141 searchManager.setMatchesFound(false); | 159 searchManager.setMatchesFound(false); |
| 142 // Clearing the search box is effectively a search for the empty string. | 160 // Clearing the search box is effectively a search for the empty string. |
| 143 return settingsMain.searchContents('').then(function() { | 161 return settingsMain.searchContents('').then(function() { |
| 144 Polymer.dom.flush(); | 162 Polymer.dom.flush(); |
| 145 assertTrue(noSearchResults.hidden); | 163 assertTrue(noSearchResults.hidden); |
| 146 assertNotEquals('none', toggleContainer.style.display); | 164 assertToggleContainerVisible(true); |
| 147 }); | 165 }); |
| 148 }); | 166 }); |
| 149 | 167 |
| 150 /** | 168 /** |
| 169 * Asserts the visibility of the basic and advanced pages. |
| 170 * @param {string} Expected 'display' value for the basic page. |
| 171 * @param {string} Expected 'display' value for the advanced page. |
| 172 */ |
| 173 function assertPageVisibility(expectedBasic, expectedAdvanced) { |
| 174 Polymer.dom.flush(); |
| 175 var page = settingsMain.$$('settings-basic-page'); |
| 176 assertEquals( |
| 177 expectedBasic, page.$$('#basicPage').style.display); |
| 178 assertEquals( |
| 179 expectedAdvanced, page.$$('#advancedPage').style.display); |
| 180 } |
| 181 |
| 182 // TODO(michaelpg): It would be better not to drill into |
| 183 // settings-basic-page. If search should indeed only work in Settings |
| 184 // (as opposed to Advanced), perhaps some of this logic should be |
| 185 // delegated to settings-basic-page now instead of settings-main. |
| 186 |
| 187 /** |
| 151 * Asserts the visibility of the basic and advanced pages after exiting | 188 * Asserts the visibility of the basic and advanced pages after exiting |
| 152 * search mode. | 189 * search mode. |
| 153 * @param {string} Expected 'display' value for the basic page. | 190 * @param {string} Expected 'display' value for the basic page. |
| 154 * @param {string} Expected 'display' value for the advanced page. | 191 * @param {string} Expected 'display' value for the advanced page. |
| 155 * @return {!Promise} | 192 * @return {!Promise} |
| 156 */ | 193 */ |
| 157 function assertPageVisibilityAfterSearch( | 194 function assertPageVisibilityAfterSearch( |
| 158 expectedBasic, expectedAdvanced) { | 195 expectedBasic, expectedAdvanced) { |
| 159 searchManager.setMatchesFound(true); | 196 searchManager.setMatchesFound(true); |
| 160 return settingsMain.searchContents('Query1').then(function() { | 197 return settingsMain.searchContents('Query1').then(function() { |
| 161 searchManager.setMatchesFound(false); | 198 searchManager.setMatchesFound(false); |
| 162 return settingsMain.searchContents(''); | 199 return settingsMain.searchContents(''); |
| 163 }).then(function() { | 200 }).then(function() { |
| 164 Polymer.dom.flush(); | 201 assertPageVisibility(expectedBasic, expectedAdvanced); |
| 165 assertEquals( | |
| 166 expectedBasic, | |
| 167 settingsMain.$$('settings-basic-page').style.display); | |
| 168 assertEquals( | |
| 169 expectedAdvanced, | |
| 170 settingsMain.$$('settings-advanced-page').style.display); | |
| 171 }); | 202 }); |
| 172 } | 203 } |
| 173 | 204 |
| 174 test('exiting search mode, advanced collapsed', function() { | 205 test('exiting search mode, advanced collapsed', function() { |
| 175 // Simulating searching while the advanced page is collapsed. | 206 // Simulating searching while the advanced page is collapsed. |
| 176 settingsMain.currentRouteChanged(settings.Route.BASIC); | 207 settingsMain.currentRouteChanged(settings.Route.BASIC); |
| 177 Polymer.dom.flush(); | 208 Polymer.dom.flush(); |
| 178 return assertPageVisibilityAfterSearch('', 'none'); | 209 return assertPageVisibilityAfterSearch('', 'none'); |
| 179 }); | 210 }); |
| 180 | 211 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 195 Polymer.dom.flush(); | 226 Polymer.dom.flush(); |
| 196 | 227 |
| 197 searchManager.setMatchesFound(true); | 228 searchManager.setMatchesFound(true); |
| 198 return settingsMain.searchContents('Query1').then(function() { | 229 return settingsMain.searchContents('Query1').then(function() { |
| 199 // Simulate navigating into a subpage. | 230 // Simulate navigating into a subpage. |
| 200 settings.navigateTo(settings.Route.SEARCH_ENGINES); | 231 settings.navigateTo(settings.Route.SEARCH_ENGINES); |
| 201 settingsMain.$$('settings-basic-page').fire('subpage-expand'); | 232 settingsMain.$$('settings-basic-page').fire('subpage-expand'); |
| 202 Polymer.dom.flush(); | 233 Polymer.dom.flush(); |
| 203 | 234 |
| 204 // Simulate clicking the left arrow to go back to the search results. | 235 // Simulate clicking the left arrow to go back to the search results. |
| 205 settingsMain.currentRouteChanged(settings.Route.BASIC); | 236 settings.navigateTo(settings.Route.BASIC); |
| 206 Polymer.dom.flush(); | 237 assertPageVisibility('', ''); |
| 207 assertEquals( | |
| 208 '', settingsMain.$$('settings-basic-page').style.display); | |
| 209 assertEquals( | |
| 210 '', settingsMain.$$('settings-advanced-page').style.display); | |
| 211 }); | 238 }); |
| 212 }); | 239 }); |
| 213 | 240 |
| 241 // TODO(michaelpg): Move these to a new test for settings-basic-page. |
| 214 test('can collapse advanced on advanced section route', function() { | 242 test('can collapse advanced on advanced section route', function() { |
| 215 settings.navigateTo(settings.Route.PRIVACY); | 243 settings.navigateTo(settings.Route.PRIVACY); |
| 216 Polymer.dom.flush(); | 244 Polymer.dom.flush(); |
| 217 | 245 |
| 218 var advancedToggle = settingsMain.$$('#advancedToggle'); | 246 var advancedToggle = |
| 247 getToggleContainer().querySelector('#advancedToggle'); |
| 219 assertTrue(!!advancedToggle); | 248 assertTrue(!!advancedToggle); |
| 220 | 249 |
| 221 MockInteractions.tap(advancedToggle); | 250 MockInteractions.tap(advancedToggle); |
| 222 Polymer.dom.flush(); | 251 Polymer.dom.flush(); |
| 223 | 252 |
| 224 assertFalse(settingsMain.showPages_.advanced); | 253 assertPageVisibility('', 'none'); |
| 225 }); | 254 }); |
| 226 | 255 |
| 227 test('navigating to a basic page does not collapse advanced', function() { | 256 test('navigating to a basic page does not collapse advanced', function() { |
| 228 settings.navigateTo(settings.Route.PRIVACY); | 257 settings.navigateTo(settings.Route.PRIVACY); |
| 229 Polymer.dom.flush(); | 258 Polymer.dom.flush(); |
| 230 | 259 |
| 231 var advancedToggle = settingsMain.$$('#advancedToggle'); | 260 assertToggleContainerVisible(true); |
| 232 assertTrue(!!advancedToggle); | |
| 233 | 261 |
| 234 settings.navigateTo(settings.Route.PEOPLE); | 262 settings.navigateTo(settings.Route.PEOPLE); |
| 235 Polymer.dom.flush(); | 263 Polymer.dom.flush(); |
| 236 | 264 |
| 237 assertTrue(settingsMain.showPages_.advanced); | 265 assertPageVisibility('', ''); |
| 238 }); | 266 }); |
| 239 }); | 267 }); |
| 240 } | 268 } |
| 241 | 269 |
| 242 return { | 270 return { |
| 243 registerTests: registerTests, | 271 registerTests: registerTests, |
| 244 }; | 272 }; |
| 245 }); | 273 }); |
| OLD | NEW |