| Index: chrome/browser/resources/options/options_page.js
|
| ===================================================================
|
| --- chrome/browser/resources/options/options_page.js (revision 68355)
|
| +++ chrome/browser/resources/options/options_page.js (working copy)
|
| @@ -24,20 +24,27 @@
|
| this.managed = false;
|
| }
|
|
|
| - OptionsPage.registeredPages_ = {};
|
| + /**
|
| + * Main level option pages.
|
| + * @protected
|
| + */
|
| + OptionsPage.registeredPages = {};
|
|
|
| /**
|
| - * Pages which are nested under a main page.
|
| + * Pages which are nested under a main level page.
|
| + * @protected
|
| */
|
| - OptionsPage.registeredSubPages_ = {};
|
| + OptionsPage.registeredSubPages = {};
|
|
|
| /**
|
| * Pages which are meant to behave like modal dialogs.
|
| + * @protected
|
| */
|
| - OptionsPage.registeredOverlayPages_ = {};
|
| + OptionsPage.registeredOverlayPages = {};
|
|
|
| /**
|
| * Whether or not |initialize| has been called.
|
| + * @private
|
| */
|
| OptionsPage.initialized_ = false;
|
|
|
| @@ -46,17 +53,34 @@
|
| * @param {string} pageName Page name.
|
| */
|
| OptionsPage.showPageByName = function(pageName) {
|
| - for (var name in OptionsPage.registeredPages_) {
|
| - var page = OptionsPage.registeredPages_[name];
|
| + // Notify main pages if they will be hidden.
|
| + for (var name in this.registeredPages) {
|
| + var page = this.registeredPages[name];
|
| + if (name != pageName && page.willHidePage)
|
| + page.willHidePage();
|
| + }
|
| +
|
| + // Update the visibility attribute for main pages.
|
| + for (var name in this.registeredPages) {
|
| + var page = this.registeredPages[name];
|
| page.visible = name == pageName;
|
| }
|
| - for (var name in OptionsPage.registeredSubPages_) {
|
| - var pageInfo = OptionsPage.registeredSubPages_[name];
|
| +
|
| + // Update the visibility attribute for sub-pages.
|
| + for (var name in this.registeredSubPages) {
|
| + var pageInfo = this.registeredSubPages[name];
|
| var match = name == pageName;
|
| if (match)
|
| pageInfo.parentPage.visible = true;
|
| pageInfo.page.visible = match;
|
| }
|
| +
|
| + // Notify main pages if they were shown.
|
| + for (var name in this.registeredPages) {
|
| + var page = this.registeredPages[name];
|
| + if (name == pageName && page.didShowPage)
|
| + page.didShowPage();
|
| + }
|
| };
|
|
|
| /**
|
| @@ -66,9 +90,9 @@
|
| * @param {string} hash The value of the hash component of the URL.
|
| */
|
| OptionsPage.handleHashForPage = function(pageName, hash) {
|
| - var page = OptionsPage.registeredPages_[pageName];
|
| + var page = this.registeredPages[pageName];
|
| if (!page) {
|
| - page = OptionsPage.registeredSubPages_[pageName].page;
|
| + page = this.registeredSubPages[pageName].page;
|
| }
|
| page.handleHash(hash);
|
| };
|
| @@ -78,8 +102,8 @@
|
| * @param {string} overlayName Page name.
|
| */
|
| OptionsPage.showOverlay = function(overlayName) {
|
| - if (OptionsPage.registeredOverlayPages_[overlayName]) {
|
| - OptionsPage.registeredOverlayPages_[overlayName].visible = true;
|
| + if (this.registeredOverlayPages[overlayName]) {
|
| + this.registeredOverlayPages[overlayName].visible = true;
|
| }
|
| };
|
|
|
| @@ -87,20 +111,20 @@
|
| * Clears overlays (i.e. hide all overlays).
|
| */
|
| OptionsPage.clearOverlays = function() {
|
| - for (var name in OptionsPage.registeredOverlayPages_) {
|
| - var page = OptionsPage.registeredOverlayPages_[name];
|
| + for (var name in this.registeredOverlayPages) {
|
| + var page = this.registeredOverlayPages[name];
|
| page.visible = false;
|
| }
|
| };
|
|
|
| /**
|
| - * Clears overlays if the key event is ESC.
|
| + * Handle 'keydown' events.
|
| * @param {Event} e Key event.
|
| * @private
|
| */
|
| - OptionsPage.clearOverlaysOnEsc_ = function(e) {
|
| + OptionsPage.onKeyDown_ = function(e) {
|
| if (e.keyCode == 27) { // Esc
|
| - OptionsPage.clearOverlays();
|
| + this.clearOverlays();
|
| }
|
| };
|
|
|
| @@ -108,8 +132,8 @@
|
| * Closes any currently-open subpage.
|
| */
|
| OptionsPage.closeSubPage = function() {
|
| - for (var name in OptionsPage.registeredSubPages_) {
|
| - var pageInfo = OptionsPage.registeredSubPages_[name];
|
| + for (var name in this.registeredSubPages) {
|
| + var pageInfo = this.registeredSubPages[name];
|
| if (pageInfo.page.visible) {
|
| pageInfo.page.visible = false;
|
| // Since the managed pref banner lives outside the overlay, and the
|
| @@ -149,7 +173,7 @@
|
| * @param {OptionsPage} page Page to register.
|
| */
|
| OptionsPage.register = function(page) {
|
| - OptionsPage.registeredPages_[page.name] = page;
|
| + this.registeredPages[page.name] = page;
|
| // Create and add new page <li> element to navbar.
|
| var pageNav = document.createElement('li');
|
| pageNav.id = page.name + 'PageNav';
|
| @@ -177,7 +201,7 @@
|
| * @param {OptionsPage} page Page to register.
|
| */
|
| OptionsPage.registerSubPage = function(subPage, parentPage) {
|
| - OptionsPage.registeredSubPages_[subPage.name] = {
|
| + this.registeredSubPages[subPage.name] = {
|
| page: subPage, parentPage: parentPage };
|
| subPage.tab = undefined;
|
| subPage.isSubPageSheet = true;
|
| @@ -190,7 +214,7 @@
|
| * OptionsPage.
|
| */
|
| OptionsPage.registerOverlay = function(page) {
|
| - OptionsPage.registeredOverlayPages_[page.name] = page;
|
| + this.registeredOverlayPages[page.name] = page;
|
| page.tab = undefined;
|
| page.isOverlay = true;
|
| page.initializePage();
|
| @@ -202,7 +226,7 @@
|
| */
|
| OptionsPage.setState = function(data) {
|
| if (data && data.pageName) {
|
| - OptionsPage.showPageByName(data.pageName);
|
| + this.showPageByName(data.pageName);
|
| }
|
| };
|
|
|
| @@ -218,7 +242,7 @@
|
| // should close the overlay, not fall through to the parent page.
|
| $('subpage-sheet-container').onclick = function(event) {
|
| if (!$('subpage-sheet').contains(event.target))
|
| - OptionsPage.closeSubPage();
|
| + this.closeSubPage();
|
| event.stopPropagation();
|
| }
|
| };
|
| @@ -284,8 +308,7 @@
|
| this.pageDiv.classList.remove('hidden');
|
| if (this.isOverlay) {
|
| $('overlay').classList.remove('hidden');
|
| - document.addEventListener('keydown',
|
| - OptionsPage.clearOverlaysOnEsc_);
|
| + document.addEventListener('keydown', OptionsPage.onKeyDown_);
|
| } else {
|
| if (this.isSubPageSheet)
|
| $('subpage-sheet-container').classList.remove('hidden');
|
| @@ -302,8 +325,7 @@
|
| this.pageDiv.classList.add('hidden');
|
| if (this.isOverlay) {
|
| $('overlay').classList.add('hidden');
|
| - document.removeEventListener('keydown',
|
| - OptionsPage.clearOverlaysOnEsc_);
|
| + document.removeEventListener('keydown', OptionsPage.onKeyDown_);
|
| } else if (this.isSubPageSheet) {
|
| $('subpage-sheet-container').classList.add('hidden');
|
| }
|
|
|