OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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('options', function() { | 5 cr.define('options', function() { |
6 ///////////////////////////////////////////////////////////////////////////// | 6 ///////////////////////////////////////////////////////////////////////////// |
7 // OptionsPage class: | 7 // OptionsPage class: |
8 | 8 |
9 /** | 9 /** |
10 * Base class for options page. | 10 * Base class for options page. |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 if (!targetPage && this.showOverlay_(pageName, rootPage)) { | 93 if (!targetPage && this.showOverlay_(pageName, rootPage)) { |
94 if (updateHistory) | 94 if (updateHistory) |
95 this.updateHistoryState_(); | 95 this.updateHistoryState_(); |
96 return; | 96 return; |
97 } else { | 97 } else { |
98 targetPage = this.getDefaultPage(); | 98 targetPage = this.getDefaultPage(); |
99 } | 99 } |
100 } | 100 } |
101 | 101 |
102 pageName = targetPage.name.toLowerCase(); | 102 pageName = targetPage.name.toLowerCase(); |
| 103 var targetPageWasVisible = targetPage.visible; |
103 | 104 |
104 // Determine if the root page is 'sticky', meaning that it | 105 // Determine if the root page is 'sticky', meaning that it |
105 // shouldn't change when showing a sub-page. This can happen for special | 106 // shouldn't change when showing a sub-page. This can happen for special |
106 // pages like Search. | 107 // pages like Search. |
107 var isRootPageLocked = | 108 var isRootPageLocked = |
108 rootPage && rootPage.sticky && targetPage.parentPage; | 109 rootPage && rootPage.sticky && targetPage.parentPage; |
109 | 110 |
110 // Notify pages if they will be hidden. | 111 // Notify pages if they will be hidden. |
111 for (var name in this.registeredPages) { | 112 for (var name in this.registeredPages) { |
112 var page = this.registeredPages[name]; | 113 var page = this.registeredPages[name]; |
113 if (!page.parentPage && isRootPageLocked) | 114 if (!page.parentPage && isRootPageLocked) |
114 continue; | 115 continue; |
115 if (page.willHidePage && name != pageName && | 116 if (page.willHidePage && name != pageName && |
116 !page.isAncestorOfPage(targetPage)) | 117 !page.isAncestorOfPage(targetPage)) |
117 page.willHidePage(); | 118 page.willHidePage(); |
118 } | 119 } |
119 | 120 |
120 var prevVisible = false; | |
121 | |
122 // Update visibilities to show only the hierarchy of the target page. | 121 // Update visibilities to show only the hierarchy of the target page. |
123 for (var name in this.registeredPages) { | 122 for (var name in this.registeredPages) { |
124 var page = this.registeredPages[name]; | 123 var page = this.registeredPages[name]; |
125 if (!page.parentPage && isRootPageLocked) | 124 if (!page.parentPage && isRootPageLocked) |
126 continue; | 125 continue; |
127 prevVisible = page.visible; | |
128 page.visible = name == pageName || | 126 page.visible = name == pageName || |
129 (!document.documentElement.classList.contains('hide-menu') && | 127 (!document.documentElement.classList.contains('hide-menu') && |
130 page.isAncestorOfPage(targetPage)); | 128 page.isAncestorOfPage(targetPage)); |
131 } | 129 } |
132 | 130 |
133 // Update the history and current location. | 131 // Update the history and current location. |
134 if (updateHistory) | 132 if (updateHistory) |
135 this.updateHistoryState_(); | 133 this.updateHistoryState_(); |
136 | 134 |
137 // Always update the page title. | 135 // Always update the page title. |
138 document.title = targetPage.title; | 136 document.title = targetPage.title; |
139 | 137 |
140 // Notify pages if they were shown. | 138 // Notify pages if they were shown. |
141 for (var name in this.registeredPages) { | 139 for (var name in this.registeredPages) { |
142 var page = this.registeredPages[name]; | 140 var page = this.registeredPages[name]; |
143 if (!page.parentPage && isRootPageLocked) | 141 if (!page.parentPage && isRootPageLocked) |
144 continue; | 142 continue; |
145 if (!prevVisible && page.didShowPage && (name == pageName || | 143 if (!targetPageWasVisible && page.didShowPage && (name == pageName || |
146 page.isAncestorOfPage(targetPage))) | 144 page.isAncestorOfPage(targetPage))) |
147 page.didShowPage(); | 145 page.didShowPage(); |
148 } | 146 } |
149 }; | 147 }; |
150 | 148 |
151 /** | 149 /** |
152 * Updates the visibility and stacking order of the subpage backdrop | 150 * Updates the visibility and stacking order of the subpage backdrop |
153 * according to which subpage is topmost and visible. | 151 * according to which subpage is topmost and visible. |
154 * @private | 152 * @private |
155 */ | 153 */ |
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1058 canShowPage: function() { | 1056 canShowPage: function() { |
1059 return true; | 1057 return true; |
1060 }, | 1058 }, |
1061 }; | 1059 }; |
1062 | 1060 |
1063 // Export | 1061 // Export |
1064 return { | 1062 return { |
1065 OptionsPage: OptionsPage | 1063 OptionsPage: OptionsPage |
1066 }; | 1064 }; |
1067 }); | 1065 }); |
OLD | NEW |