#include "chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h"
#include <algorithm>
#include <ios>
#include <limits>
#include <memory>
#include <optional>
#include <string>
#include "base/containers/lru_cache.h"
#include "base/memory/raw_ptr.h"
#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_macros.h"
#include "build/build_config.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/ui/color/chrome_color_id.h"
#include "chrome/browser/ui/tabs/tab_renderer_data.h"
#include "chrome/browser/ui/tabs/tab_style.h"
#include "chrome/browser/ui/thumbnails/thumbnail_image.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/chrome_typography.h"
#include "chrome/browser/ui/views/tabs/fade_label_view.h"
#include "chrome/browser/ui/views/tabs/filename_elider.h"
#include "chrome/browser/ui/views/tabs/tab.h"
#include "chrome/browser/ui/views/tabs/tab_style_views.h"
#include "chrome/grit/generated_resources.h"
#include "components/url_formatter/url_formatter.h"
#include "ui/accessibility/ax_enums.mojom.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/base/mojom/dialog_button.mojom.h"
#include "ui/base/ui_base_features.h"
#include "ui/color/color_id.h"
#include "ui/color/color_provider.h"
#include "ui/compositor/layer.h"
#include "ui/gfx/animation/linear_animation.h"
#include "ui/gfx/animation/slide_animation.h"
#include "ui/gfx/animation/tween.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/geometry/rounded_corners_f.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/text_constants.h"
#include "ui/resources/grit/ui_resources.h"
#include "ui/views/accessibility/view_accessibility.h"
#include "ui/views/background.h"
#include "ui/views/border.h"
#include "ui/views/bubble/bubble_frame_view.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/fill_layout.h"
#include "ui/views/layout/flex_layout.h"
#include "ui/views/layout/layout_provider.h"
#include "ui/views/style/typography.h"
#include "ui/views/view_class_properties.h"
#include "ui/views/widget/widget.h"
namespace {
constexpr int kHoverCardTitleMaxLines = …;
constexpr int kTitleDomainSpacing = …;
constexpr auto kTextMargins = …;
gfx::Size GetPreviewImageSize(gfx::Size preview_size,
gfx::Size preferred_size) { … }
}
class TabHoverCardBubbleView::ThumbnailView
: public views::View,
public views::AnimationDelegateViews { … };
BEGIN_METADATA(…)
END_METADATA
constexpr base::TimeDelta TabHoverCardBubbleView::kHoverCardSlideDuration;
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(TabHoverCardBubbleView,
kHoverCardBubbleElementId);
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(TabHoverCardBubbleView,
kHoverCardDomainLabelElementId);
TabHoverCardBubbleView::TabHoverCardBubbleView(Tab* tab,
const InitParams& params)
: … { … }
TabHoverCardBubbleView::~TabHoverCardBubbleView() = default;
void TabHoverCardBubbleView::UpdateCardContent(const Tab* tab) { … }
void TabHoverCardBubbleView::SetTextFade(double percent) { … }
void TabHoverCardBubbleView::SetTargetTabImage(gfx::ImageSkia preview_image) { … }
void TabHoverCardBubbleView::SetPlaceholderImage() { … }
std::u16string TabHoverCardBubbleView::GetTitleTextForTesting() const { … }
std::u16string TabHoverCardBubbleView::GetDomainTextForTesting() const { … }
views::View* TabHoverCardBubbleView::GetThumbnailViewForTesting() { … }
FooterView* TabHoverCardBubbleView::GetFooterViewForTesting() { … }
std::optional<double> TabHoverCardBubbleView::GetPreviewImageCrossfadeStart() { … }
gfx::Size TabHoverCardBubbleView::CalculatePreferredSize(
const views::SizeBounds& available_size) const { … }
BEGIN_METADATA(…)