chromium/chrome/browser/ui/views/flying_indicator.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_UI_VIEWS_FLYING_INDICATOR_H_
#define CHROME_BROWSER_UI_VIEWS_FLYING_INDICATOR_H_

#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/scoped_observation.h"
#include "ui/gfx/animation/animation_delegate.h"
#include "ui/gfx/animation/multi_animation.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/size.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_observer.h"

namespace gfx {
struct VectorIcon;
}

namespace views {
class View;
}

// Shows a flying indicator with an icon that takes a curved path from a
// starting position to a target view. This can be used to indicate a link
// opening in the background, an item flying to the downloads tray, etc.
//
// The indicator is a bubble with a fixed trajectory curve that fades in, cannot
// be interacted with, flies to the target, and fades out.
class FlyingIndicator : public views::WidgetObserver,
                        public gfx::AnimationDelegate {};

#endif  // CHROME_BROWSER_UI_VIEWS_FLYING_INDICATOR_H_