lib/third_party/tracing/extras/rail/rail_ir_finder.js
function(sortedInputEvents) {
      var animationEvents = this.modelHelper.browserHelper.
          getAllAsyncSlicesMatching(function(event) {
            return ((event.title === CSS_ANIMATION_TITLE) &&
                    (event.duration > 0));
      });

      var animationRanges = [];
      animationEvents.forEach(function(event) {
        animationRanges.push({
          min: event.start,
          max: event.end,
          event: event
        });
      });

      function merge(ranges) {
        var protoIR = new ProtoIR(ProtoIR.ANIMATION_TYPE, CSS_IR_NAME);
        ranges.forEach(function(range) {
          protoIR.pushEvent(range.event);
        });
        return protoIR;
      }

      return tr.b.mergeRanges(animationRanges,
                              ANIMATION_MERGE_THRESHOLD_MS,
                              merge);
    }
function(sortedInputEvents) {
      var animationEvents = this.modelHelper.browserHelper.
          getAllAsyncSlicesMatching(function(event) {
            return ((event.title === CSS_ANIMATION_TITLE) &&
                    (event.duration > 0));
      });

      var animationRanges = [];
      animationEvents.forEach(function(event) {
        animationRanges.push({
          min: event.start,
          max: event.end,
          event: event
        });
      });

      function merge(ranges) {
        var protoIR = new ProtoIR(ProtoIR.ANIMATION_TYPE, CSS_IR_NAME);
        ranges.forEach(function(range) {
          protoIR.pushEvent(range.event);
        });
        return protoIR;
      }

      return tr.b.mergeRanges(animationRanges,
                              ANIMATION_MERGE_THRESHOLD_MS,
                              merge);
    }
function ( sortedInputEvents ) { var animationEvents = this . modelHelper . browserHelper . getAllAsyncSlicesMatching ( function ( event ) { return ( ( event . title === CSS_ANIMATION_TITLE ) && ( event . duration > 0 ) ) ; } ) ; var animationRanges = [ ] ; animationEvents . forEach ( function ( event ) { animationRanges . push ( { min : event . start , max : event . end , event : event } ) ; } ) ; function merge ( ranges ) { var protoIR = new ProtoIR ( ProtoIR . ANIMATION_TYPE , CSS_IR_NAME ) ; ranges . forEach ( function ( range ) { protoIR . pushEvent ( range . event ) ; } ) ; return protoIR ; } return tr . b . mergeRanges ( animationRanges , ANIMATION_MERGE_THRESHOLD_MS , merge ) ; }
CSS Animations are merged into Animations when they intersect.
CSS Animations are merged into Animations when they intersect .