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. |
11 * @constructor | 11 * @constructor |
12 * @param {string} name Options page name, also defines id of the div element | 12 * @param {string} name Options page name, also defines id of the div element |
13 * containing the options view and the name of options page navigation bar | 13 * containing the options view and the name of options page navigation bar |
14 * item as name+'PageNav'. | 14 * item as name+'PageNav'. |
15 * @param {string} title Options page title, used for navigation bar | 15 * @param {string} title Options page title, used for navigation bar |
16 * @extends {EventTarget} | 16 * @extends {EventTarget} |
17 */ | 17 */ |
18 function OptionsPage(name, title, pageDivName) { | 18 function OptionsPage(name, title, pageDivName) { |
19 this.name = name; | 19 this.name = name; |
20 this.title = title; | 20 this.title = title; |
21 this.pageDivName = pageDivName; | 21 this.pageDivName = pageDivName; |
22 this.pageDiv = $(this.pageDivName); | 22 this.pageDiv = $(this.pageDivName); |
23 this.tab = null; | 23 this.tab = null; |
24 this.managed = false; | |
25 } | 24 } |
26 | 25 |
27 const SUBPAGE_SHEET_COUNT = 2; | 26 const SUBPAGE_SHEET_COUNT = 2; |
28 | 27 |
29 /** | 28 /** |
30 * Main level option pages. Maps lower-case page names to the respective page | 29 * Main level option pages. Maps lower-case page names to the respective page |
31 * object. | 30 * object. |
32 * @protected | 31 * @protected |
33 */ | 32 */ |
34 OptionsPage.registeredPages = {}; | 33 OptionsPage.registeredPages = {}; |
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 * @type {OptionsPage} | 800 * @type {OptionsPage} |
802 */ | 801 */ |
803 associatedControls: null, | 802 associatedControls: null, |
804 | 803 |
805 /** | 804 /** |
806 * Initializes page content. | 805 * Initializes page content. |
807 */ | 806 */ |
808 initializePage: function() {}, | 807 initializePage: function() {}, |
809 | 808 |
810 /** | 809 /** |
811 * Sets managed banner visibility state. | |
812 */ | |
813 setManagedBannerVisibility: function(visible) { | |
814 this.managed = visible; | |
815 if (this.visible) { | |
816 this.updateManagedBannerVisibility(); | |
817 } | |
818 }, | |
819 | |
820 /** | |
821 * Updates managed banner visibility state. This function iterates over | 810 * Updates managed banner visibility state. This function iterates over |
822 * all input fields of a window and if any of these is marked as managed | 811 * all input fields of a window and if any of these is marked as managed |
823 * it triggers the managed banner to be visible. The banner can be enforced | 812 * it triggers the managed banner to be visible. The banner can be enforced |
824 * being on through the managed flag of this class but it can not be forced | 813 * being on through the managed flag of this class but it can not be forced |
825 * being off if managed items exist. | 814 * being off if managed items exist. |
826 */ | 815 */ |
827 updateManagedBannerVisibility: function() { | 816 updateManagedBannerVisibility: function() { |
828 var bannerDiv = $('managed-prefs-banner'); | 817 var bannerDiv = $('managed-prefs-banner'); |
829 | 818 |
830 var hasManaged = this.managed; | 819 var controlledByPolicy = false; |
831 if (!hasManaged) { | 820 var controlledByExtension = false; |
832 var inputElements = this.pageDiv.querySelectorAll('input'); | 821 var inputElements = this.pageDiv.querySelectorAll('input[controlledBy]'); |
833 for (var i = 0, len = inputElements.length; i < len; i++) { | 822 for (var i = 0, len = inputElements.length; i < len; i++) { |
834 if (inputElements[i].managed) { | 823 if (inputElements[i].controlledBy == 'policy') |
835 hasManaged = true; | 824 controlledByPolicy = true; |
836 break; | 825 else if (inputElements[i].controlledBy == 'extension') |
837 } | 826 controlledByExtension = true; |
838 } | |
839 } | 827 } |
840 if (hasManaged) { | 828 if (!controlledByPolicy && !controlledByExtension) { |
841 bannerDiv.hidden = false; | |
842 var height = window.getComputedStyle($('managed-prefs-banner')).height; | |
843 $('subpage-backdrop').style.top = height; | |
844 } else { | |
845 bannerDiv.hidden = true; | 829 bannerDiv.hidden = true; |
846 $('subpage-backdrop').style.top = '0'; | 830 $('subpage-backdrop').style.top = '0'; |
| 831 } else { |
| 832 bannerDiv.hidden = false; |
| 833 var height = window.getComputedStyle(bannerDiv).height; |
| 834 $('subpage-backdrop').style.top = height; |
| 835 if (controlledByPolicy && !controlledByExtension) { |
| 836 $('managed-prefs-text').textContent = |
| 837 templateData.policyManagedPrefsBannerText; |
| 838 } else if (!controlledByPolicy && controlledByExtension) { |
| 839 $('managed-prefs-text').textContent = |
| 840 templateData.extensionManagedPrefsBannerText; |
| 841 } else if (controlledByPolicy && controlledByExtension) { |
| 842 $('managed-prefs-text').textContent = |
| 843 templateData.policyAndExtensionManagedPrefsBannerText; |
| 844 } |
847 } | 845 } |
848 }, | 846 }, |
849 | 847 |
850 /** | 848 /** |
851 * Gets page visibility state. | 849 * Gets page visibility state. |
852 */ | 850 */ |
853 get visible() { | 851 get visible() { |
854 return !this.pageDiv.hidden; | 852 return !this.pageDiv.hidden; |
855 }, | 853 }, |
856 | 854 |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1020 canShowPage: function() { | 1018 canShowPage: function() { |
1021 return true; | 1019 return true; |
1022 }, | 1020 }, |
1023 }; | 1021 }; |
1024 | 1022 |
1025 // Export | 1023 // Export |
1026 return { | 1024 return { |
1027 OptionsPage: OptionsPage | 1025 OptionsPage: OptionsPage |
1028 }; | 1026 }; |
1029 }); | 1027 }); |
OLD | NEW |