| Index: ash/wm/window_animations.cc
|
| diff --git a/ash/wm/window_animations.cc b/ash/wm/window_animations.cc
|
| index 95fd82097f85c831621d4ea0607158a0714b4086..95d75013c6c36aa8fe6210149a57a305d0424b43 100644
|
| --- a/ash/wm/window_animations.cc
|
| +++ b/ash/wm/window_animations.cc
|
| @@ -15,8 +15,10 @@
|
| #include "ash/wm/workspace_controller.h"
|
| #include "ash/wm_window.h"
|
| #include "base/i18n/rtl.h"
|
| +#include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "base/stl_util.h"
|
| #include "base/time/time.h"
|
| #include "ui/aura/client/aura_constants.h"
|
| @@ -84,6 +86,22 @@ base::TimeDelta GetCrossFadeDuration(aura::Window* window,
|
| Round64(kCrossFadeDurationMinMs + (factor * kRange)));
|
| }
|
|
|
| +class CrossFadeMetricsReporter : public ui::AnimationMetricsReporter {
|
| + public:
|
| + CrossFadeMetricsReporter() = default;
|
| + ~CrossFadeMetricsReporter() override = default;
|
| +
|
| + void Report(int value) override {
|
| + UMA_HISTOGRAM_PERCENTAGE("Ash.Window.AnimationSmoothness.CrossFade", value);
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(CrossFadeMetricsReporter);
|
| +};
|
| +
|
| +base::LazyInstance<CrossFadeMetricsReporter>::Leaky g_reporter_cross_fade =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| } // namespace
|
|
|
| const int kCrossFadeDurationMS = 200;
|
| @@ -319,6 +337,8 @@ base::TimeDelta CrossFadeAnimation(
|
| new CrossFadeObserver(window, std::move(old_layer_owner)));
|
| settings.SetTransitionDuration(duration);
|
| settings.SetTweenType(tween_type);
|
| + // Only add reporter to |old_layer|.
|
| + settings.SetAnimationMetricsReporter(g_reporter_cross_fade.Pointer());
|
| gfx::Transform out_transform;
|
| float scale_x = static_cast<float>(new_bounds.width()) /
|
| static_cast<float>(old_bounds.width());
|
|
|