Index: chrome/browser/resources/settings/settings_main/settings_main.js |
diff --git a/chrome/browser/resources/settings/settings_main/settings_main.js b/chrome/browser/resources/settings/settings_main/settings_main.js |
index 75daea44da83eb7a5e91e6f11fb9a2c469abc85b..89feb7da7b425f5f23e71cd6f8cdebd490204500 100644 |
--- a/chrome/browser/resources/settings/settings_main/settings_main.js |
+++ b/chrome/browser/resources/settings/settings_main/settings_main.js |
@@ -10,12 +10,6 @@ Polymer({ |
is: 'settings-main', |
properties: { |
- /** @private */ |
- isAdvancedMenuOpen_: { |
- type: Boolean, |
- value: false, |
- }, |
- |
/** |
* Preferences state. |
*/ |
@@ -35,27 +29,34 @@ Polymer({ |
}, |
/** @private */ |
- showAdvancedPage_: { |
+ advancedToggleExpanded_: { |
type: Boolean, |
value: false, |
}, |
/** @private */ |
- showAdvancedToggle_: { |
+ inSubpage_: { |
+ type: Boolean, |
+ computed: 'computeInSubpage_(currentRoute.subpage)', |
+ }, |
+ |
+ /** @private */ |
+ showAboutPage_: { |
type: Boolean, |
- value: true, |
+ computed: 'computeShowAboutPage_(currentRoute.page)', |
}, |
/** @private */ |
showBasicPage_: { |
type: Boolean, |
- value: true, |
+ computed: 'computeShowBasicPage_(currentRoute.page, inSubpage_)', |
}, |
/** @private */ |
- showAboutPage_: { |
+ showAdvancedPage_: { |
type: Boolean, |
- value: false, |
+ computed: 'computeShowAdvancedPage_(' + |
+ 'currentRoute.page, advancedToggleExpanded_, inSubpage_)', |
}, |
}, |
@@ -68,14 +69,13 @@ Polymer({ |
attached: function() { |
document.addEventListener('toggle-advanced-page', function(e) { |
- this.showAdvancedPage_ = e.detail; |
- this.isAdvancedMenuOpen_ = e.detail; |
+ this.advancedToggleExpanded_ = e.detail; |
this.currentRoute = { |
- page: this.isAdvancedMenuOpen_ ? 'advanced' : 'basic', |
+ page: this.advancedToggleExpanded_ ? 'advanced' : 'basic', |
section: '', |
subpage: [], |
}; |
- if (this.showAdvancedPage_) { |
+ if (this.advancedToggleExpanded_) { |
doWhenReady( |
function() { |
var advancedPage = this.$$('settings-advanced-page'); |
@@ -101,7 +101,7 @@ Polymer({ |
* @param {boolean} opened Whether the menu is expanded. |
* @return {string} Which icon to use. |
* @private |
- * */ |
+ */ |
arrowState_: function(opened) { |
return opened ? 'settings:arrow-drop-up' : 'cr:arrow-drop-down'; |
}, |
@@ -111,24 +111,16 @@ Polymer({ |
* @private |
*/ |
currentRouteChanged_: function(newRoute) { |
- var isSubpage = !!newRoute.subpage.length; |
+ // If we navigated to an advanced section, ensure the toggle is opened. |
+ if (newRoute.page == 'advanced') |
+ this.advancedToggleExpanded_ = true; |
- this.showAboutPage_ = newRoute.page == 'about'; |
- |
- this.showAdvancedToggle_ = !this.showAboutPage_ && !isSubpage; |
- |
- this.showBasicPage_ = this.showAdvancedToggle_ || newRoute.page == 'basic'; |
- |
- this.showAdvancedPage_ = |
- (this.isAdvancedMenuOpen_ && this.showAdvancedToggle_) || |
- newRoute.page == 'advanced'; |
- |
- this.style.height = isSubpage ? '100%' : ''; |
+ this.style.height = this.inSubpage_ ? '100%' : ''; |
}, |
/** @private */ |
toggleAdvancedPage_: function() { |
- this.fire('toggle-advanced-page', !this.isAdvancedMenuOpen_); |
+ this.fire('toggle-advanced-page', !this.advancedToggleExpanded_); |
}, |
/** |
@@ -162,4 +154,45 @@ Polymer({ |
settings.search(query, assert(this.$$('settings-advanced-page'))); |
}.bind(this), 0); |
}, |
+ |
+ /** |
+ * @return {boolean} |
+ * @param {!Array<string>} subpage |
+ * @private |
+ */ |
+ computeInSubpage_: function(subpage) { |
+ return !!subpage.length; |
+ }, |
+ |
+ /** |
+ * @param {string} page |
+ * @return {boolean} |
+ * @private |
+ */ |
+ computeShowAboutPage_: function(page) { |
+ return page == 'about'; |
+ }, |
+ |
+ /** |
+ * @param {string} page |
+ * @param {boolean} inSubpage |
+ * @return {boolean} |
+ * @private |
+ */ |
+ computeShowBasicPage_: function(page, inSubpage) { |
+ return page == 'basic' || |
+ (page == 'advanced' && !inSubpage); |
+ }, |
+ |
+ /** |
+ * @param {string} page |
+ * @param {boolean} advancedToggleExpanded |
+ * @param {boolean} inSubpage |
+ * @return {boolean} |
+ * @private |
+ */ |
+ computeShowAdvancedPage_: function(page, advancedToggleExpanded, inSubpage) { |
+ return page == 'advanced' || |
+ (page == 'basic' && advancedToggleExpanded && !inSubpage); |
+ }, |
}); |