OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 | 411 |
412 /** | 412 /** |
413 * Hides the currently visible bubble, if any. | 413 * Hides the currently visible bubble, if any. |
414 */ | 414 */ |
415 OptionsPage.hideBubble = function() { | 415 OptionsPage.hideBubble = function() { |
416 if (OptionsPage.bubble_) | 416 if (OptionsPage.bubble_) |
417 OptionsPage.bubble_.hide(); | 417 OptionsPage.bubble_.hide(); |
418 }; | 418 }; |
419 | 419 |
420 /** | 420 /** |
421 * Updates managed banner visibility state based on the topmost page. | |
422 */ | |
423 OptionsPage.updateManagedBannerVisibility = function() { | |
424 var topPage = this.getTopmostVisiblePage(); | |
425 if (topPage) | |
426 topPage.updateManagedBannerVisibility(); | |
427 }; | |
428 | |
429 /** | |
430 * Shows the tab contents for the given navigation tab. | 421 * Shows the tab contents for the given navigation tab. |
431 * @param {!Element} tab The tab that the user clicked. | 422 * @param {!Element} tab The tab that the user clicked. |
432 */ | 423 */ |
433 OptionsPage.showTab = function(tab) { | 424 OptionsPage.showTab = function(tab) { |
434 // Search parents until we find a tab, or the nav bar itself. This allows | 425 // Search parents until we find a tab, or the nav bar itself. This allows |
435 // tabs to have child nodes, e.g. labels in separately-styled spans. | 426 // tabs to have child nodes, e.g. labels in separately-styled spans. |
436 while (tab && !tab.classList.contains('subpages-nav-tabs') && | 427 while (tab && !tab.classList.contains('subpages-nav-tabs') && |
437 !tab.classList.contains('tab')) { | 428 !tab.classList.contains('tab')) { |
438 tab = tab.parentNode; | 429 tab = tab.parentNode; |
439 } | 430 } |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 * @type {OptionsPage} | 699 * @type {OptionsPage} |
709 */ | 700 */ |
710 associatedControls: null, | 701 associatedControls: null, |
711 | 702 |
712 /** | 703 /** |
713 * Initializes page content. | 704 * Initializes page content. |
714 */ | 705 */ |
715 initializePage: function() {}, | 706 initializePage: function() {}, |
716 | 707 |
717 /** | 708 /** |
718 * Updates managed banner visibility state. This function iterates over | |
719 * all input fields of a page and if any of these is marked as managed | |
720 * it triggers the managed banner to be visible. The banner can be enforced | |
721 * being on through the managed flag of this class but it can not be forced | |
722 * being off if managed items exist. | |
723 */ | |
724 updateManagedBannerVisibility: function() { | |
725 var bannerDiv = this.pageDiv.querySelector('.managed-prefs-banner'); | |
726 // Create a banner for the overlay if we don't have one. | |
727 if (!bannerDiv) { | |
728 bannerDiv = $('managed-prefs-banner').cloneNode(true); | |
729 bannerDiv.id = null; | |
730 | |
731 if (this.isOverlay) { | |
732 var content = this.pageDiv.querySelector('.content-area'); | |
733 content.parentElement.insertBefore(bannerDiv, content); | |
734 } else { | |
735 bannerDiv.classList.add('main-page-banner'); | |
736 var header = this.pageDiv.querySelector('header'); | |
737 header.appendChild(bannerDiv); | |
738 } | |
739 } | |
740 | |
741 var controlledByPolicy = false; | |
742 var controlledByExtension = false; | |
743 var inputElements = this.pageDiv.querySelectorAll('input[controlled-by]'); | |
744 for (var i = 0; i < inputElements.length; i++) { | |
745 if (inputElements[i].controlledBy == 'policy') | |
746 controlledByPolicy = true; | |
747 else if (inputElements[i].controlledBy == 'extension') | |
748 controlledByExtension = true; | |
749 } | |
750 | |
751 if (!controlledByPolicy && !controlledByExtension) { | |
752 this.pageDiv.classList.remove('showing-banner'); | |
753 } else { | |
754 this.pageDiv.classList.add('showing-banner'); | |
755 | |
756 var text = bannerDiv.querySelector('#managed-prefs-text'); | |
757 if (controlledByPolicy && !controlledByExtension) { | |
758 text.textContent = | |
759 loadTimeData.getString('policyManagedPrefsBannerText'); | |
760 } else if (!controlledByPolicy && controlledByExtension) { | |
761 text.textContent = | |
762 loadTimeData.getString('extensionManagedPrefsBannerText'); | |
763 } else if (controlledByPolicy && controlledByExtension) { | |
764 text.textContent = loadTimeData.getString( | |
765 'policyAndExtensionManagedPrefsBannerText'); | |
766 } | |
767 } | |
768 }, | |
769 | |
770 /** | |
771 * Gets the container div for this page if it is an overlay. | 709 * Gets the container div for this page if it is an overlay. |
772 * @type {HTMLElement} | 710 * @type {HTMLElement} |
773 */ | 711 */ |
774 get container() { | 712 get container() { |
775 assert(this.isOverlay); | 713 assert(this.isOverlay); |
776 return this.pageDiv.parentNode; | 714 return this.pageDiv.parentNode; |
777 }, | 715 }, |
778 | 716 |
779 /** | 717 /** |
780 * Gets page visibility state. | 718 * Gets page visibility state. |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 } | 823 } |
886 }, | 824 }, |
887 | 825 |
888 /** | 826 /** |
889 * Called when a page is shown or hidden to update the root options page | 827 * Called when a page is shown or hidden to update the root options page |
890 * based on this page's visibility. | 828 * based on this page's visibility. |
891 * @private | 829 * @private |
892 */ | 830 */ |
893 onVisibilityChanged_: function() { | 831 onVisibilityChanged_: function() { |
894 OptionsPage.updateRootPageFreezeState(); | 832 OptionsPage.updateRootPageFreezeState(); |
895 OptionsPage.updateManagedBannerVisibility(); | |
896 | 833 |
897 if (this.isOverlay && !this.visible) | 834 if (this.isOverlay && !this.visible) |
898 OptionsPage.updateScrollPosition_(); | 835 OptionsPage.updateScrollPosition_(); |
899 }, | 836 }, |
900 | 837 |
901 /** | 838 /** |
902 * The nesting level of this page. | 839 * The nesting level of this page. |
903 * @type {number} The nesting level of this page (0 for top-level page) | 840 * @type {number} The nesting level of this page (0 for top-level page) |
904 */ | 841 */ |
905 get nestingLevel() { | 842 get nestingLevel() { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 canShowPage: function() { | 881 canShowPage: function() { |
945 return true; | 882 return true; |
946 }, | 883 }, |
947 }; | 884 }; |
948 | 885 |
949 // Export | 886 // Export |
950 return { | 887 return { |
951 OptionsPage: OptionsPage | 888 OptionsPage: OptionsPage |
952 }; | 889 }; |
953 }); | 890 }); |
OLD | NEW |