Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: chrome/browser/resources/options/options_page.js

Issue 6480039: chrome://settings - Provide method for pages to prevent themselves being shown. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: other cases Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 25 matching lines...) Expand all
36 */ 36 */
37 OptionsPage.registeredOverlayPages = {}; 37 OptionsPage.registeredOverlayPages = {};
38 38
39 /** 39 /**
40 * Whether or not |initialize| has been called. 40 * Whether or not |initialize| has been called.
41 * @private 41 * @private
42 */ 42 */
43 OptionsPage.initialized_ = false; 43 OptionsPage.initialized_ = false;
44 44
45 /** 45 /**
46 * Gets the default page (to be shown on initial load).
47 */
48 OptionsPage.getDefaultPage = function() {
49 return BrowserOptions.getInstance();
50 };
51
52 /**
46 * Shows the default page. 53 * Shows the default page.
47 */ 54 */
48 OptionsPage.showDefaultPage = function() { 55 OptionsPage.showDefaultPage = function() {
49 this.navigateToPage(BrowserOptions.getInstance().name); 56 this.navigateToPage(this.getDefaultPage().name);
50 }; 57 };
51 58
52 /** 59 /**
53 * "Navigates" to a page, meaning that the page will be shown and the 60 * "Navigates" to a page, meaning that the page will be shown and the
54 * appropriate entry is placed in the history. 61 * appropriate entry is placed in the history.
55 * @param {string} pageName Page name. 62 * @param {string} pageName Page name.
56 */ 63 */
57 OptionsPage.navigateToPage = function(pageName) { 64 OptionsPage.navigateToPage = function(pageName) {
58 this.showPageByName(pageName, true); 65 this.showPageByName(pageName, true);
59 }; 66 };
60 67
61 /** 68 /**
62 * Shows a registered page. This handles both top-level pages and sub-pages. 69 * Shows a registered page. This handles both top-level pages and sub-pages.
63 * @param {string} pageName Page name. 70 * @param {string} pageName Page name.
64 * @param {boolean} updateHistory True if we should update the history after 71 * @param {boolean} updateHistory True if we should update the history after
65 * showing the page. 72 * showing the page.
66 * @private 73 * @private
67 */ 74 */
68 OptionsPage.showPageByName = function(pageName, updateHistory) { 75 OptionsPage.showPageByName = function(pageName, updateHistory) {
69 var targetPage = this.registeredPages[pageName]; 76 var targetPage = this.registeredPages[pageName];
70 if (!targetPage) { 77 if (!targetPage || !targetPage.canShowPage()) {
71 this.showOverlay_(pageName); 78 // If it's not a page, try it as an overlay.
72 if (updateHistory) 79 if (this.showOverlay_(pageName)) {
stuartmorgan 2011/02/12 01:09:06 Change to |if (!targetPage && this.showOverlay_(pa
Evan Stade 2011/02/12 03:06:42 Done.
73 this.updateHistoryState_(); 80 if (updateHistory)
74 return; 81 this.updateHistoryState_();
82 return;
83 } else {
84 targetPage = this.getDefaultPage();
85 }
75 } 86 }
76 87
88 pageName = targetPage.name;
stuartmorgan 2011/02/12 01:09:06 Setting paramaters generally makes code harder to
Evan Stade 2011/02/12 03:06:42 on the other hand, I don't want someone coming in
89
77 // Determine if the root page is 'sticky', meaning that it 90 // Determine if the root page is 'sticky', meaning that it
78 // shouldn't change when showing a sub-page. This can happen for special 91 // shouldn't change when showing a sub-page. This can happen for special
79 // pages like Search. 92 // pages like Search.
80 var rootPage = null; 93 var rootPage = null;
81 for (var name in this.registeredPages) { 94 for (var name in this.registeredPages) {
82 var page = this.registeredPages[name]; 95 var page = this.registeredPages[name];
83 if (page.visible && !page.parentPage) { 96 if (page.visible && !page.parentPage) {
84 rootPage = page; 97 rootPage = page;
85 break; 98 break;
86 } 99 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 // Override this with the new page. 155 // Override this with the new page.
143 var historyFunction = path ? window.history.pushState : 156 var historyFunction = path ? window.history.pushState :
144 window.history.replaceState; 157 window.history.replaceState;
145 historyFunction.call(window.history, 158 historyFunction.call(window.history,
146 {pageName: page.name}, 159 {pageName: page.name},
147 page.title, 160 page.title,
148 '/' + page.name); 161 '/' + page.name);
149 }; 162 };
150 163
151 /** 164 /**
152 * Called on load. Dispatch the URL hash to the given page's handleHash
153 * function.
154 * @param {string} pageName The string name of the (registered) options page.
155 * @param {string} hash The value of the hash component of the URL.
156 */
157 OptionsPage.handleHashForPage = function(pageName, hash) {
158 var page = this.registeredPages[pageName];
159 page.handleHash(hash);
160 };
161
162 /**
163 * Shows a registered Overlay page. Does not update history. 165 * Shows a registered Overlay page. Does not update history.
164 * @param {string} overlayName Page name. 166 * @param {string} overlayName Page name.
167 * @return {boolean} whether we showed an overlay.
165 */ 168 */
166 OptionsPage.showOverlay_ = function(overlayName) { 169 OptionsPage.showOverlay_ = function(overlayName) {
167 var overlay = this.registeredOverlayPages[overlayName]; 170 var overlay = this.registeredOverlayPages[overlayName];
171 if (!overlay || !overlay.canShowPage())
172 return false;
168 173
169 if (overlay.parentPage) 174 if (overlay.parentPage)
170 this.showPageByName(overlay.parentPage.name, false); 175 this.showPageByName(overlay.parentPage.name, false);
171 176
172 this.registeredOverlayPages[overlayName].visible = true; 177 this.registeredOverlayPages[overlayName].visible = true;
178 return true;
173 }; 179 };
174 180
175 /** 181 /**
176 * Returns whether or not an overlay is visible. 182 * Returns whether or not an overlay is visible.
177 * @return {boolean} True if an overlay is visible. 183 * @return {boolean} True if an overlay is visible.
178 * @private 184 * @private
179 */ 185 */
180 OptionsPage.isOverlayVisible_ = function() { 186 OptionsPage.isOverlayVisible_ = function() {
181 return this.getVisibleOverlay_() != null; 187 return this.getVisibleOverlay_() != null;
182 }; 188 };
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 var parent = page.parentPage; 725 var parent = page.parentPage;
720 while (parent) { 726 while (parent) {
721 if (parent == this) 727 if (parent == this)
722 return true; 728 return true;
723 parent = parent.parentPage; 729 parent = parent.parentPage;
724 } 730 }
725 return false; 731 return false;
726 }, 732 },
727 733
728 /** 734 /**
729 * Handles a hash value in the URL (such as bar in 735 * Whether it should be possible to show the page.
730 * chrome://options/foo#bar). Called on page load. 736 * @return {boolean} True if the page should be shown
731 * @param {string} hash The hash value.
732 */ 737 */
733 handleHash: function(hash) { 738 canShowPage: function() {
739 return true;
734 }, 740 },
735 }; 741 };
736 742
737 // Export 743 // Export
738 return { 744 return {
739 OptionsPage: OptionsPage 745 OptionsPage: OptionsPage
740 }; 746 };
741 }); 747 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698