| 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 /** | 5 /** |
| 6 * Calls |readyTest| repeatedly until it returns true, then calls | 6 * Calls |readyTest| repeatedly until it returns true, then calls |
| 7 * |readyCallback|. | 7 * |readyCallback|. |
| 8 * @param {function():boolean} readyTest | 8 * @param {function():boolean} readyTest |
| 9 * @param {!Function} readyCallback | 9 * @param {!Function} readyCallback |
| 10 */ | 10 */ |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 } | 81 } |
| 82 | 82 |
| 83 var promise; | 83 var promise; |
| 84 var expandedSection = /** @type {?SettingsSectionElement} */( | 84 var expandedSection = /** @type {?SettingsSectionElement} */( |
| 85 this.$$('settings-section.expanded')); | 85 this.$$('settings-section.expanded')); |
| 86 if (expandedSection) { | 86 if (expandedSection) { |
| 87 // If the section shouldn't be expanded, collapse it. | 87 // If the section shouldn't be expanded, collapse it. |
| 88 if (!currentRoute.isSubpage() || expandedSection != currentSection) { | 88 if (!currentRoute.isSubpage() || expandedSection != currentSection) { |
| 89 promise = this.collapseSection_(expandedSection); | 89 promise = this.collapseSection_(expandedSection); |
| 90 // Scroll to the collapsed section. | 90 // Scroll to the collapsed section. |
| 91 if (currentSection) | 91 if (currentSection && !settings.lastRouteChangeWasPopstate()) |
| 92 currentSection.scrollIntoView(); | 92 currentSection.scrollIntoView(); |
| 93 } | 93 } |
| 94 } else if (currentSection) { | 94 } else if (currentSection) { |
| 95 // Expand the section into a subpage or scroll to it on the main page. | 95 // Expand the section into a subpage or scroll to it on the main page. |
| 96 if (currentRoute.isSubpage()) | 96 if (currentRoute.isSubpage()) |
| 97 promise = this.expandSection_(currentSection); | 97 promise = this.expandSection_(currentSection); |
| 98 else | 98 else if (!settings.lastRouteChangeWasPopstate()) |
| 99 currentSection.scrollIntoView(); | 99 currentSection.scrollIntoView(); |
| 100 } | 100 } |
| 101 | 101 |
| 102 // When this animation ends, another may be necessary. Call this function | 102 // When this animation ends, another may be necessary. Call this function |
| 103 // again after the promise resolves. | 103 // again after the promise resolves. |
| 104 if (promise) | 104 if (promise) |
| 105 promise.then(this.tryTransitionToSection_.bind(this)); | 105 promise.then(this.tryTransitionToSection_.bind(this)); |
| 106 }, | 106 }, |
| 107 | 107 |
| 108 /** | 108 /** |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 return Promise.resolve(); | 221 return Promise.resolve(); |
| 222 } | 222 } |
| 223 | 223 |
| 224 // Play the actual collapse animation. | 224 // Play the actual collapse animation. |
| 225 return new Promise(function(resolve, reject) { | 225 return new Promise(function(resolve, reject) { |
| 226 // Wait for the other sections to show up so we can scroll properly. | 226 // Wait for the other sections to show up so we can scroll properly. |
| 227 setTimeout(function() { | 227 setTimeout(function() { |
| 228 var newSection = settings.getCurrentRoute().section && | 228 var newSection = settings.getCurrentRoute().section && |
| 229 this.getSection(settings.getCurrentRoute().section); | 229 this.getSection(settings.getCurrentRoute().section); |
| 230 | 230 |
| 231 // Scroll to the section if indicated by the route. TODO(michaelpg): Is | 231 this.scroller.scrollTop = this.origScrollTop_; |
| 232 // this the right behavior, or should we return to the previous scroll | |
| 233 // position? | |
| 234 if (newSection) | |
| 235 newSection.scrollIntoView(); | |
| 236 else | |
| 237 this.scroller.scrollTop = this.origScrollTop_; | |
| 238 | 232 |
| 239 this.currentAnimation_ = section.animateCollapse( | 233 this.currentAnimation_ = section.animateCollapse( |
| 240 /** @type {!HTMLElement} */(this.scroller)); | 234 /** @type {!HTMLElement} */(this.scroller)); |
| 241 | 235 |
| 242 this.currentAnimation_.finished.catch(function() { | 236 this.currentAnimation_.finished.catch(function() { |
| 243 // The collapse was canceled, so the page is showing a subpage still. | 237 // The collapse was canceled, so the page is showing a subpage still. |
| 244 this.fire('subpage-expand'); | 238 this.fire('subpage-expand'); |
| 245 }.bind(this)).then(function() { | 239 }.bind(this)).then(function() { |
| 246 // Clean up after the animation succeeds or cancels. | 240 // Clean up after the animation succeeds or cancels. |
| 247 section.setFrozen(false); | 241 section.setFrozen(false); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 this.scroller.style.width = 'calc(100% - ' + scrollbarWidth + 'px)'; | 292 this.scroller.style.width = 'calc(100% - ' + scrollbarWidth + 'px)'; |
| 299 } | 293 } |
| 300 } | 294 } |
| 301 }; | 295 }; |
| 302 | 296 |
| 303 /** @polymerBehavior */ | 297 /** @polymerBehavior */ |
| 304 var MainPageBehavior = [ | 298 var MainPageBehavior = [ |
| 305 settings.RouteObserverBehavior, | 299 settings.RouteObserverBehavior, |
| 306 MainPageBehaviorImpl, | 300 MainPageBehaviorImpl, |
| 307 ]; | 301 ]; |
| OLD | NEW |