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

Unified Diff: third_party/pkg/angular/lib/animate/animation_optimizer.dart

Issue 256553002: Revert "Update all Angular libs (run update_all.sh)." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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/pkg/angular/lib/animate/animation_optimizer.dart
diff --git a/third_party/pkg/angular/lib/animate/animation_optimizer.dart b/third_party/pkg/angular/lib/animate/animation_optimizer.dart
deleted file mode 100644
index 843e219478bc78914983e3e9b55982fd3b8dbab8..0000000000000000000000000000000000000000
--- a/third_party/pkg/angular/lib/animate/animation_optimizer.dart
+++ /dev/null
@@ -1,163 +0,0 @@
-part of angular.animate;
-
-/**
- * The optimizer tracks elements and running animations. It's used to control
- * and optionally skip certain animations that are deemed "expensive" such as
- * running animations on child elements while the dom parent is also running an
- * animation.
- */
-@Injectable()
-class AnimationOptimizer {
- final Map<dom.Element, Set<Animation>> _elements = new Map<dom.Element,
- Set<Animation>>();
- final Map<Animation, dom.Element> _animations = new Map<Animation,
- dom.Element>();
-
- final Map<dom.Node, bool> _alwaysAnimate = new Map<dom.Node, bool>();
- final Map<dom.Node, bool> _alwaysAnimateChildren = new Map<dom.Node, bool>();
-
- Expando _expando;
-
- AnimationOptimizer(this._expando);
-
- /**
- * Track an animation that is running against a dom element. Usually, this
- * should occur when an animation starts.
- */
- void track(Animation animation, dom.Element forElement) {
- if (forElement != null) {
- var animations = _elements.putIfAbsent(forElement, () =>
- new Set<Animation>());
- animations.add(animation);
- _animations[animation] = forElement;
- }
- }
-
- /**
- * Stop tracking an animation. If it's the last tracked animation on an
- * element forget about that element as well.
- */
- void forget(Animation animation) {
- var element = _animations.remove(animation);
- if (element != null) {
- var animationsOnElement = _elements[element];
- animationsOnElement.remove(animation);
- // It may be more efficient just to keep sets around even after
- // animations complete.
- if (animationsOnElement.length == 0) {
- _elements.remove(element);
- }
- }
- }
-
- /**
- * Since we can't overload forget...
- */
- void detachAlwaysAnimateOptions(dom.Element element) {
- _alwaysAnimate.remove(element);
- _alwaysAnimateChildren.remove(element);
- }
-
- /**
- * Control animation for a specific element, ignoring every other option.
- * [mode] "always" will always animate this element.
- * [mode] "never" will never animate this element.
- * [mode] "auto" will detect if a parent animation is running or has child animations set.
- */
- void alwaysAnimate(dom.Element element, String mode) {
- if (mode == "always") {
- _alwaysAnimate[element] = true;
- } else if (mode == "never") {
- _alwaysAnimate[element] = false;
- } else if (mode == "auto") {
- _alwaysAnimate.remove(element);
- }
- }
-
- /**
- * Control animation for child elements, ignoring running animations unless 'auto' is provided as an option.
- * [mode] "always" will always animate children, unless it is specifically marked not to by [alwaysAnimate].
- * [mode] "never" will never animate children.
- * [mode] "auto" will detect if a parent animation is running or has child animations set.
- */
- void alwaysAnimateChildren(dom.Element element, String mode) {
- if (mode == "always") {
- _alwaysAnimateChildren[element] = true;
- } else if (mode == "never") {
- _alwaysAnimateChildren[element] = false;
- } else if (mode == "auto") {
- _alwaysAnimateChildren.remove(element);
- }
- }
-
- /**
- * Returns true if there is tracked animation on the given element.
- */
- bool _isAnimating(dom.Element element) {
- return _elements.containsKey(element);
- }
-
- /**
- * Given all the information this optimizer knows about currently executing
- * animations, return [true] if this element can be animated in an ideal case
- * and [false] if the optimizer thinks that it should not execute.
- */
- bool shouldAnimate(dom.Node node) {
- bool alwaysAnimate = _alwaysAnimate[node];
- if (alwaysAnimate != null) {
- return alwaysAnimate;
- }
-
- // If there are 'always allow' or 'always prevent' animations declared,
- // fallback to the automatic detection of running parent animations. By
- // default, we assume that we can run.
- bool autoDecision = true;
-
- node = node.parentNode;
- while (node != null) {
- // Does this node give us animation information about our children?
- alwaysAnimate = _alwaysAnimateChildren[node];
- if (alwaysAnimate != null) {
- return alwaysAnimate;
- }
-
- // If we hit a running parent animation, we still need to continue up
- // the dom tree to see if there is or is not an 'alwaysAnimateChildren'
- // decision somewhere.
- if (autoDecision
- && node.nodeType == dom.Node.ELEMENT_NODE
- && _isAnimating(node)) {
- // If there is an already running animation, don't animate.
- autoDecision = false;
- }
-
- // If we hit a null parent, try to break out of shadow dom.
- if (node.parentNode == null) {
- var probe = _findElementProbe(node);
- if (probe != null && probe.parent != null) {
- // Escape shadow dom!
- node = probe.parent.element;
- } else {
- // If we can't go any further, return the auto decision because we
- // havent hit any other more important optimizations.
- return autoDecision;
- }
- } else {
- node = node.parentNode;
- }
- }
-
- return autoDecision;
- }
-
- // Search and find the element probe for a given node.
- ElementProbe _findElementProbe(dom.Node node) {
- while (node != null) {
- if (_expando[node] != null) {
- return _expando[node];
- }
- node = node.parentNode;
- }
- return null;
- }
-}
« no previous file with comments | « third_party/pkg/angular/lib/animate/animation_loop.dart ('k') | third_party/pkg/angular/lib/animate/animations.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698