Index: chrome/browser/resources/settings/settings_page/settings_page_visibility.js |
diff --git a/chrome/browser/resources/settings/settings_page/settings_page_visibility.js b/chrome/browser/resources/settings/settings_page/settings_page_visibility.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..848d96f9c0ce1b7f5b5a8732b8feee05850aecd5 |
--- /dev/null |
+++ b/chrome/browser/resources/settings/settings_page/settings_page_visibility.js |
@@ -0,0 +1,47 @@ |
+// Copyright 2015 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. |
+ |
+/** |
+ * @fileoverview |
+ * Behavior controlling the visibility of Settings pages. |
+ * |
+ * Example: |
+ * behaviors: [SettingsPageVisibility], |
+ */ |
+ |
+/** |
+ * Set this to true in tests before loading the page (e.g. in preLoad()) so that |
+ * pages do not initially get created. Set this to false BEFORE modifying |
+ * pageVisibility. NOTE: Changing this value after the DOM is loaded will not |
+ * trigger a visibility change, pageVisibility must be modified to trigger data |
+ * binding events. |
+ * @type {boolean} |
+ */ |
+var settingsHidePagesByDefaultForTest; |
+ |
+/** @polymerBehavior */ |
+var SettingsPageVisibility = { |
+ properties: { |
+ /** |
+ * Dictionary defining page visibility. If not set for a page, visibility |
+ * will default to true, unless settingsHidePagesByDefaultForTest is set |
+ * in which case visibility defaults to false. |
+ * @type {Object<boolean>} |
+ */ |
+ pageVisibility: { |
+ type: Object, |
+ value: function() { return {}; }, |
+ }, |
+ }, |
+ |
+ /** |
+ * @param {boolean|undefined} visibility |
+ * @return {boolean} |
+ */ |
+ showPage: function(visibility) { |
+ if (settingsHidePagesByDefaultForTest) |
+ return visibility === true; |
+ return visibility !== false; |
+ }, |
+}; |