| Index: chrome/browser/resources/print_preview/print_preview_animations.js
|
| diff --git a/chrome/browser/resources/print_preview/print_preview_animations.js b/chrome/browser/resources/print_preview/print_preview_animations.js
|
| index b717e249be8b283c14ec85ca349f2362ec6e5a5e..87752c637085e32c40e5957331650684d7f35ce8 100644
|
| --- a/chrome/browser/resources/print_preview/print_preview_animations.js
|
| +++ b/chrome/browser/resources/print_preview/print_preview_animations.js
|
| @@ -20,6 +20,18 @@ function addAnimation(code) {
|
| }
|
|
|
| /**
|
| + * Generates css code for fading in an element by animating the height.
|
| + * @param {number} targetHeight The desired height in pixels after the animation
|
| + * ends.
|
| + * @return {string} The css code for the fade in animation.
|
| + */
|
| +function getFadeInAnimationCode(targetHeight) {
|
| + return '0% { opacity: 0; height: 0; } ' +
|
| + '80% { height: ' + (targetHeight + 4) + 'px; }' +
|
| + '100% { opacity: 1; height: ' + targetHeight + 'px; }';
|
| +}
|
| +
|
| +/**
|
| * Fades in an element. Used for both printing options and error messages
|
| * appearing underneath the textfields.
|
| * @param {HTMLElement} el The element to be faded in.
|
| @@ -28,21 +40,17 @@ function fadeInElement(el) {
|
| if (el.classList.contains('visible'))
|
| return;
|
| el.classList.remove('closing');
|
| + el.hidden = false;
|
| el.style.height = 'auto';
|
| var height = el.offsetHeight;
|
| el.style.height = height + 'px';
|
| - var animName = addAnimation(
|
| - '0% { opacity: 0; height: 0; } ' +
|
| - '80% { height: ' + (height + 4) + 'px; }' +
|
| - '100% { opacity: 1; height: ' + height + 'px; }');
|
| + var animName = addAnimation(getFadeInAnimationCode(height));
|
| + var eventTracker = new EventTracker();
|
| + eventTracker.add(el, 'webkitAnimationEnd',
|
| + onFadeInAnimationEnd.bind(el, eventTracker),
|
| + false);
|
| el.style.webkitAnimationName = animName;
|
| el.classList.add('visible');
|
| - el.addEventListener('webkitAnimationEnd', function() {
|
| - el.style.height = '';
|
| - el.style.webkitAnimationName = '';
|
| - fadeInOutCleanup(animName);
|
| - el.removeEventListener('webkitAnimationEnd', arguments.callee, false);
|
| - }, false );
|
| }
|
|
|
| /**
|
| @@ -56,16 +64,41 @@ function fadeOutElement(el) {
|
| el.style.height = 'auto';
|
| var height = el.offsetHeight;
|
| el.style.height = height + 'px';
|
| - var animName = addAnimation(
|
| - '0% { opacity: 1; height: ' + height + 'px; }' +
|
| - '100% { opacity: 1; height: 0; }');
|
| - el.style.webkitAnimationName = animName;
|
| + var animName = addAnimation('');
|
| + var eventTracker = new EventTracker();
|
| + eventTracker.add(el, 'webkitTransitionEnd',
|
| + onFadeOutTransitionEnd.bind(el, animName, eventTracker),
|
| + false );
|
| el.classList.add('closing');
|
| el.classList.remove('visible');
|
| - el.addEventListener('webkitAnimationEnd', function() {
|
| - fadeInOutCleanup(animName);
|
| - el.removeEventListener('webkitAnimationEnd', arguments.callee, false);
|
| - }, false );
|
| +}
|
| +
|
| +/**
|
| + * Executes when a fade out animation ends.
|
| + * @param {string} animationName The name of the animation to be removed.
|
| + * @param {EventTracker} The |EventTracker| object that was used for adding this
|
| + * listener.
|
| + * @param {WebkitTransitionEvent} event The event that triggered this listener.
|
| + */
|
| +function onFadeOutTransitionEnd(animationName, eventTracker, event) {
|
| + if (event.propertyName != 'height')
|
| + return;
|
| + fadeInOutCleanup(animationName);
|
| + eventTracker.remove(this, 'webkitTransitionEnd');
|
| + this.hidden = true;
|
| +}
|
| +
|
| +/**
|
| + * Executes when a fade in animation ends.
|
| + * @param{EventTracker} The |EventTracker| object that was used for adding this
|
| + * listener.
|
| + * @param {WebkitAnimationEvent} event The event that triggered this listener.
|
| + */
|
| +function onFadeInAnimationEnd(eventTracker, event) {
|
| + this.style.height = '';
|
| + this.style.webkitAnimationName = '';
|
| + fadeInOutCleanup(event.animationName);
|
| + eventTracker.remove(this, 'webkitAnimationEnd');
|
| }
|
|
|
| /**
|
|
|