| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 /** | 5 /** |
| 6 * @typedef {{about: boolean, basic: boolean, advanced: boolean}} | 6 * @typedef {{about: boolean, basic: boolean, advanced: boolean}} |
| 7 */ | 7 */ |
| 8 var MainPageVisibility; | 8 var MainPageVisibility; |
| 9 | 9 |
| 10 /** | 10 /** |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 * content so that the last element may align with the top of the content | 172 * content so that the last element may align with the top of the content |
| 173 * area. | 173 * area. |
| 174 * @return {number} | 174 * @return {number} |
| 175 * @private | 175 * @private |
| 176 */ | 176 */ |
| 177 overscrollHeight_: function() { | 177 overscrollHeight_: function() { |
| 178 var route = settings.getCurrentRoute(); | 178 var route = settings.getCurrentRoute(); |
| 179 if (route.isSubpage() || this.showPages_.about) | 179 if (route.isSubpage() || this.showPages_.about) |
| 180 return 0; | 180 return 0; |
| 181 | 181 |
| 182 var query = 'settings-section[section="' + route.section + '"]'; | 182 var page = this.getPage_(route); |
| 183 var topSection = this.$$('settings-basic-page').$$(query); | 183 var topSection = page && page.getSection(route.section); |
| 184 if (!topSection && this.showPages_.advanced) | |
| 185 topSection = this.$$('settings-advanced-page').$$(query); | |
| 186 | |
| 187 if (!topSection || !topSection.offsetParent) | 184 if (!topSection || !topSection.offsetParent) |
| 188 return 0; | 185 return 0; |
| 189 | 186 |
| 190 // Offset to the selected section (relative to the scrolling window). | 187 // Offset to the selected section (relative to the scrolling window). |
| 191 let sectionTop = topSection.offsetParent.offsetTop + topSection.offsetTop; | 188 let sectionTop = topSection.offsetParent.offsetTop + topSection.offsetTop; |
| 192 // The height of the selected section and remaining content (sections). | 189 // The height of the selected section and remaining content (sections). |
| 193 let heightOfShownSections = this.$.overscroll.offsetTop - sectionTop; | 190 let heightOfShownSections = this.$.overscroll.offsetTop - sectionTop; |
| 194 return Math.max(0, this.parentNode.scrollHeight - heightOfShownSections); | 191 return Math.max(0, this.parentNode.scrollHeight - heightOfShownSections); |
| 195 }, | 192 }, |
| 196 | 193 |
| 197 /** @private */ | 194 /** @private */ |
| 198 toggleAdvancedPage_: function() { | 195 toggleAdvancedPage_: function() { |
| 199 this.fire('toggle-advanced-page', !this.advancedToggleExpanded_); | 196 this.fire('toggle-advanced-page', !this.advancedToggleExpanded_); |
| 200 }, | 197 }, |
| 201 | 198 |
| 202 /** | 199 /** |
| 200 * Returns the root page (if it exists) for a route. |
| 201 * @param {!settings.Route} route |
| 202 * @return {(?SettingsAboutPageElement|?SettingsAdvancedPageElement| |
| 203 * ?SettingsBasicPageElement)} |
| 204 */ |
| 205 getPage_: function(route) { |
| 206 if (settings.Route.ABOUT.contains(route)) { |
| 207 return /** @type {?SettingsAboutPageElement} */( |
| 208 this.$$('settings-about-page')); |
| 209 } |
| 210 if (settings.Route.ADVANCED.contains(route)) { |
| 211 return /** @type {?SettingsAdvancedPageElement} */( |
| 212 this.$$('settings-advanced-page')); |
| 213 } |
| 214 if (settings.Route.BASIC.contains(route)) { |
| 215 return /** @type {?SettingsBasicPageElement} */( |
| 216 this.$$('settings-basic-page')); |
| 217 } |
| 218 assertNotReached(); |
| 219 }, |
| 220 |
| 221 /** |
| 203 * Navigates to the default search page (if necessary). | 222 * Navigates to the default search page (if necessary). |
| 204 * @private | 223 * @private |
| 205 */ | 224 */ |
| 206 ensureInDefaultSearchPage_: function() { | 225 ensureInDefaultSearchPage_: function() { |
| 207 if (settings.getCurrentRoute() != settings.Route.BASIC) | 226 if (settings.getCurrentRoute() != settings.Route.BASIC) |
| 208 settings.navigateTo(settings.Route.BASIC); | 227 settings.navigateTo(settings.Route.BASIC); |
| 209 }, | 228 }, |
| 210 | 229 |
| 211 /** | 230 /** |
| 212 * @param {string} query | 231 * @param {string} query |
| 213 * @return {!Promise} A promise indicating that searching finished. | 232 * @return {!Promise} A promise indicating that searching finished. |
| 214 */ | 233 */ |
| 215 searchContents: function(query) { | 234 searchContents: function(query) { |
| 216 if (!this.previousShowPages_) { | 235 if (!this.previousShowPages_) { |
| 217 // Store which pages are shown before search, so that they can be restored | 236 // Store which pages are shown before search, so that they can be restored |
| 218 // after the user clears the search results. | 237 // after the user clears the search results. |
| 219 this.previousShowPages_ = this.showPages_; | 238 this.previousShowPages_ = this.showPages_; |
| 220 } | 239 } |
| 221 | 240 |
| 222 this.ensureInDefaultSearchPage_(); | 241 this.ensureInDefaultSearchPage_(); |
| 223 this.toolbarSpinnerActive = true; | 242 this.toolbarSpinnerActive = true; |
| 224 | 243 |
| 225 // Trigger rendering of the basic and advanced pages and search once ready. | 244 // Trigger rendering of the basic and advanced pages and search once ready. |
| 226 this.showPages_ = {about: false, basic: true, advanced: true}; | 245 this.showPages_ = {about: false, basic: true, advanced: true}; |
| 227 | 246 |
| 228 return new Promise(function(resolve, reject) { | 247 return new Promise(function(resolve, reject) { |
| 229 setTimeout(function() { | 248 setTimeout(function() { |
| 230 var whenSearchDone = settings.getSearchManager().search( | 249 var whenSearchDone = settings.getSearchManager().search( |
| 231 query, assert(this.$$('settings-basic-page'))); | 250 query, assert(this.getPage_(settings.Route.BASIC))); |
| 232 assert( | 251 assert( |
| 233 whenSearchDone === | 252 whenSearchDone === |
| 234 settings.getSearchManager().search( | 253 settings.getSearchManager().search( |
| 235 query, assert(this.$$('settings-advanced-page')))); | 254 query, assert(this.getPage_(settings.Route.ADVANCED)))); |
| 236 | 255 |
| 237 whenSearchDone.then(function(request) { | 256 whenSearchDone.then(function(request) { |
| 238 resolve(); | 257 resolve(); |
| 239 if (!request.finished) { | 258 if (!request.finished) { |
| 240 // Nothing to do here. A previous search request was canceled | 259 // Nothing to do here. A previous search request was canceled |
| 241 // because a new search request was issued before the first one | 260 // because a new search request was issued before the first one |
| 242 // completed. | 261 // completed. |
| 243 return; | 262 return; |
| 244 } | 263 } |
| 245 | 264 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 260 | 279 |
| 261 /** | 280 /** |
| 262 * @param {(boolean|undefined)} visibility | 281 * @param {(boolean|undefined)} visibility |
| 263 * @return {boolean} True unless visibility is false. | 282 * @return {boolean} True unless visibility is false. |
| 264 * @private | 283 * @private |
| 265 */ | 284 */ |
| 266 showAdvancedSettings_: function(visibility) { | 285 showAdvancedSettings_: function(visibility) { |
| 267 return visibility !== false; | 286 return visibility !== false; |
| 268 }, | 287 }, |
| 269 }); | 288 }); |
| OLD | NEW |