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 |