Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(610)

Unified Diff: third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js

Issue 2386533002: MD History: update iron-list and dependencies for better scroll performance (Closed)
Patch Set: test "fixes" Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js
diff --git a/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js
index 7f3da40051d844bb6c1f67892b7fdaa74aff46ef..a0eb5395ade23a2ef37c922d100082a83666c470 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js
+++ b/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js
@@ -59,15 +59,18 @@
'_scrollTargetChanged(scrollTarget, isAttached)'
],
+ /**
+ * True if the event listener should be installed.
+ */
+ _shouldHaveListener: true,
+
_scrollTargetChanged: function(scrollTarget, isAttached) {
var eventTarget;
if (this._oldScrollTarget) {
- eventTarget = this._oldScrollTarget === this._doc ? window : this._oldScrollTarget;
- eventTarget.removeEventListener('scroll', this._boundScrollHandler);
+ this._toggleScrollListener(false, this._oldScrollTarget);
this._oldScrollTarget = null;
}
-
if (!isAttached) {
return;
}
@@ -83,11 +86,10 @@
} else if (this._isValidScrollTarget()) {
- eventTarget = scrollTarget === this._doc ? window : scrollTarget;
this._boundScrollHandler = this._boundScrollHandler || this._scrollHandler.bind(this);
this._oldScrollTarget = scrollTarget;
+ this._toggleScrollListener(this._shouldHaveListener, scrollTarget);
- eventTarget.addEventListener('scroll', this._boundScrollHandler);
}
},
@@ -214,5 +216,29 @@
*/
_isValidScrollTarget: function() {
return this.scrollTarget instanceof HTMLElement;
+ },
+
+ _toggleScrollListener: function(yes, scrollTarget) {
+ if (!this._boundScrollHandler) {
+ return;
+ }
+ var eventTarget = scrollTarget === this._doc ? window : scrollTarget;
+
+ if (yes) {
+ eventTarget.addEventListener('scroll', this._boundScrollHandler);
+ } else {
+ eventTarget.removeEventListener('scroll', this._boundScrollHandler);
+ }
+ },
+
+ /**
+ * Enables or disables the scroll event listener.
+ *
+ * @param {boolean} yes True to add the event, False to remove it.
+ */
+ toggleScrollListener: function(yes) {
+ this._shouldHaveListener = yes;
+ this._toggleScrollListener(yes, this.scrollTarget);
}
+
};

Powered by Google App Engine
This is Rietveld 408576698