Index: chrome/browser/resources/settings/global_scroll_target_behavior.js |
diff --git a/chrome/browser/resources/settings/global_scroll_target_behavior.js b/chrome/browser/resources/settings/global_scroll_target_behavior.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..80623632864d0c234cd6ba31255fef1c7a8f4d0a |
--- /dev/null |
+++ b/chrome/browser/resources/settings/global_scroll_target_behavior.js |
@@ -0,0 +1,45 @@ |
+// Copyright 2016 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 |GlobalScrollTargetBehavior| allows an element to be aware of |
+ * the global scroll target. |scrollTarget| will be populated async by |
+ * |setGlobalScrollTarget|. |setGlobalScrollTarget| should only be called once. |
+ */ |
+ |
+cr.define('settings', function() { |
+ var scrollTargetResolver = new PromiseResolver(); |
+ |
+ /** @polymerBehavior */ |
+ var GlobalScrollTargetBehavior = { |
+ properties: { |
+ /** |
+ * Read only property for the scroll target. |
+ * @type {HTMLElement} |
+ */ |
+ scrollTarget: { |
+ type: Object, |
+ readOnly: true, |
+ }, |
+ }, |
+ |
+ /** @override */ |
+ attached: function() { |
+ scrollTargetResolver.promise.then(this._setScrollTarget.bind(this)); |
+ }, |
+ }; |
+ |
+ /** |
+ * This should only be called once. |
+ * @param {HTMLElement} scrollTarget |
+ */ |
+ var setGlobalScrollTarget = function(scrollTarget) { |
+ scrollTargetResolver.resolve(scrollTarget); |
+ }; |
+ |
+ return { |
+ GlobalScrollTargetBehavior: GlobalScrollTargetBehavior, |
+ setGlobalScrollTarget: setGlobalScrollTarget, |
+ }; |
+}); |