| Index: chrome/browser/resources/help/help_base_page.js
|
| diff --git a/chrome/browser/resources/help/help_base_page.js b/chrome/browser/resources/help/help_base_page.js
|
| deleted file mode 100644
|
| index 578e260a5e40b731a6a96592644e6c9fb55913db..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/help/help_base_page.js
|
| +++ /dev/null
|
| @@ -1,254 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Helper base class for all help pages and overlays, which controls
|
| -// overlays, focus and scroll. This class is partially based on
|
| -// OptionsPage, but simpler and contains only overlay- and focus-
|
| -// handling logic. As in OptionsPage each page can be an overlay itself,
|
| -// but each page contains its own list of registered overlays which can be
|
| -// displayed over it.
|
| -//
|
| -// TODO (ygorshenin@): crbug.com/313244.
|
| -cr.define('help', function() {
|
| - function HelpBasePage() {
|
| - }
|
| -
|
| - HelpBasePage.prototype = {
|
| - __proto__: HTMLDivElement.prototype,
|
| -
|
| - /**
|
| - * name of the page, should be the same as an id of the
|
| - * corresponding HTMLDivElement.
|
| - */
|
| - name: null,
|
| -
|
| - /**
|
| - * HTML counterpart of this page.
|
| - */
|
| - pageDiv: null,
|
| -
|
| - /**
|
| - * True if current page is overlay.
|
| - */
|
| - isOverlay: false,
|
| -
|
| - /**
|
| - * HTMLElement that was last focused when this page was the
|
| - * topmost.
|
| - */
|
| - lastFocusedElement: null,
|
| -
|
| - /**
|
| - * State of vertical scrollbars when this page was the topmost.
|
| - */
|
| - lastScrollTop: 0,
|
| -
|
| - /**
|
| - * Dictionary of registered overlays.
|
| - */
|
| - registeredOverlays: {},
|
| -
|
| - /**
|
| - * Stores currently focused element.
|
| - * @private
|
| - */
|
| - storeLastFocusedElement_: function() {
|
| - if (this.pageDiv.contains(document.activeElement))
|
| - this.lastFocusedElement = document.activeElement;
|
| - },
|
| -
|
| - /**
|
| - * Restores focus to the last focused element on this page.
|
| - * @private
|
| - */
|
| - restoreLastFocusedElement_: function() {
|
| - if (this.lastFocusedElement)
|
| - this.lastFocusedElement.focus();
|
| - else
|
| - this.focus();
|
| - },
|
| -
|
| - /**
|
| - * Shows or hides current page iff it's an overlay.
|
| - * @param {boolean} visible True if overlay should be displayed.
|
| - * @private
|
| - */
|
| - setOverlayVisible_: function(visible) {
|
| - assert(this.isOverlay);
|
| - this.container.hidden = !visible;
|
| - if (visible)
|
| - this.pageDiv.classList.add('showing');
|
| - else
|
| - this.pageDiv.classList.remove('showing');
|
| - },
|
| -
|
| - /**
|
| - * @return {HTMLDivElement} visible non-overlay page or
|
| - * null, if there are no visible non-overlay pages.
|
| - * @private
|
| - */
|
| - getVisibleNonOverlay_: function() {
|
| - if (this.isOverlay || !this.visible)
|
| - return null;
|
| - return this;
|
| - },
|
| -
|
| - /**
|
| - * @return {HTMLDivElement} Visible overlay page, or null,
|
| - * if there are no visible overlay pages.
|
| - * @private
|
| - */
|
| - getVisibleOverlay_: function() {
|
| - for (var name in this.registeredOverlays) {
|
| - var overlay = this.registeredOverlays[name];
|
| - if (overlay.visible)
|
| - return overlay;
|
| - }
|
| - return null;
|
| - },
|
| -
|
| - /**
|
| - * Freezes current page, makes it impossible to scroll it.
|
| - * @param {boolean} freeze True if the page should be frozen.
|
| - * @private
|
| - */
|
| - freeze_: function(freeze) {
|
| - var scrollLeft = scrollLeftForDocument(document);
|
| - if (freeze) {
|
| - this.lastScrollTop = scrollTopForDocument(document);
|
| - document.body.style.overflow = 'hidden';
|
| - window.scroll(scrollLeft, 0);
|
| - } else {
|
| - document.body.style.overflow = 'auto';
|
| - window.scroll(scrollLeft, this.lastScrollTop);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * Initializes current page.
|
| - * @param {string} name Name of the current page.
|
| - */
|
| - initialize: function(name) {
|
| - this.name = name;
|
| - this.pageDiv = $(name);
|
| - },
|
| -
|
| - /**
|
| - * Called before overlay is displayed.
|
| - */
|
| - onBeforeShow: function() {
|
| - },
|
| -
|
| - /**
|
| - * @return {HTMLDivElement} Topmost visible page, or null, if
|
| - * there are no visible pages.
|
| - */
|
| - getTopmostVisiblePage: function() {
|
| - return this.getVisibleOverlay_() || this.getVisibleNonOverlay_();
|
| - },
|
| -
|
| - /**
|
| - * Registers overlay.
|
| - * @param {HelpBasePage} overlay Overlay that should be registered.
|
| - */
|
| - registerOverlay: function(overlay) {
|
| - this.registeredOverlays[overlay.name] = overlay;
|
| - overlay.isOverlay = true;
|
| - },
|
| -
|
| - /**
|
| - * Shows or hides current page.
|
| - * @param {boolean} visible True if current page should be displayed.
|
| - */
|
| - set visible(visible) {
|
| - if (this.visible == visible)
|
| - return;
|
| -
|
| - if (!visible)
|
| - this.storeLastFocusedElement_();
|
| -
|
| - if (this.isOverlay)
|
| - this.setOverlayVisible_(visible);
|
| - else
|
| - this.pageDiv.hidden = !visible;
|
| -
|
| - if (visible)
|
| - this.restoreLastFocusedElement_();
|
| -
|
| - if (visible)
|
| - this.onBeforeShow();
|
| - },
|
| -
|
| - /**
|
| - * Returns true if current page is visible.
|
| - * @return {boolean} True if current page is visible.
|
| - */
|
| - get visible() {
|
| - if (this.isOverlay)
|
| - return this.pageDiv.classList.contains('showing');
|
| - return !this.pageDiv.hidden;
|
| - },
|
| -
|
| - /**
|
| - * This method returns overlay container, it should be called only
|
| - * on overlays.
|
| - * @return {HTMLDivElement} overlay container.
|
| - */
|
| - get container() {
|
| - assert(this.isOverlay);
|
| - return this.pageDiv.parentNode;
|
| - },
|
| -
|
| - /**
|
| - * Shows registered overlay.
|
| - * @param {string} name Name of registered overlay to show.
|
| - */
|
| - showOverlay: function(name) {
|
| - var currentPage = this.getTopmostVisiblePage();
|
| - currentPage.storeLastFocusedElement_();
|
| - currentPage.freeze_(true);
|
| -
|
| - var overlay = this.registeredOverlays[name];
|
| - if (!overlay)
|
| - return;
|
| - overlay.visible = true;
|
| - },
|
| -
|
| - /**
|
| - * Hides currently displayed overlay.
|
| - */
|
| - closeOverlay: function() {
|
| - var overlay = this.getVisibleOverlay_();
|
| - if (!overlay)
|
| - return;
|
| - overlay.visible = false;
|
| -
|
| - var currentPage = this.getTopmostVisiblePage();
|
| - currentPage.restoreLastFocusedElement_();
|
| - currentPage.freeze_(false);
|
| - },
|
| -
|
| - /**
|
| - * If the page does not contain focused elements, focuses on the
|
| - * first appropriate.
|
| - */
|
| - focus: function() {
|
| - if (this.pageDiv.contains(document.activeElement))
|
| - return;
|
| - var elements = this.pageDiv.querySelectorAll(
|
| - 'input, list, select, textarea, button');
|
| - for (var i = 0; i < elements.length; i++) {
|
| - var element = elements[i];
|
| - element.focus();
|
| - if (document.activeElement == element)
|
| - return;
|
| - }
|
| - },
|
| - };
|
| -
|
| - // Export
|
| - return {
|
| - HelpBasePage: HelpBasePage
|
| - };
|
| -});
|
|
|