1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/location_bar/location_bar_util.h"
#include "base/feature_list.h"
#include "chrome/browser/ui/color/chrome_color_id.h"
#include "components/omnibox/common/omnibox_features.h"
#include "components/user_education/common/user_education_class_properties.h"
#include "ui/base/ui_base_features.h"
#include "ui/views/animation/flood_fill_ink_drop_ripple.h"
#include "ui/views/animation/ink_drop.h"
#include "ui/views/animation/ink_drop_highlight.h"
#include "ui/views/animation/ink_drop_host.h"
#include "ui/views/animation/ink_drop_impl.h"
#include "ui/views/animation/ink_drop_ripple.h"
void ConfigureInkDropForRefresh2023(views::View* const view,
const ChromeColorIds hover_color_id,
const ChromeColorIds ripple_color_id) {
views::InkDrop::Get(view)->SetMode(views::InkDropHost::InkDropMode::ON);
views::InkDrop::Get(view)->SetLayerRegion(views::LayerRegion::kAbove);
views::InkDrop::Get(view)->SetCreateRippleCallback(base::BindRepeating(
[](views::View* view, ChromeColorIds ripple_color_id)
-> std::unique_ptr<views::InkDropRipple> {
const SkColor pressed_color =
view->GetColorProvider()->GetColor(ripple_color_id);
const float pressed_alpha = SkColorGetA(pressed_color);
return std::make_unique<views::FloodFillInkDropRipple>(
views::InkDrop::Get(view), view->size(),
views::InkDrop::Get(view)->GetInkDropCenterBasedOnLastEvent(),
SkColorSetA(pressed_color, SK_AlphaOPAQUE),
pressed_alpha / SK_AlphaOPAQUE);
},
view, ripple_color_id));
views::InkDrop::Get(view)->SetCreateHighlightCallback(base::BindRepeating(
[](views::View* view, ChromeColorIds hover_color_id) {
const auto* color_provider = view->GetColorProvider();
SkColor hover_color = color_provider->GetColor(hover_color_id);
// override the hover color if this is triggered by `user_education`.
if (view->GetProperty(user_education::kHasInProductHelpPromoKey)) {
hover_color = color_provider->GetColor(
ui::kColorButtonFeatureAttentionHighlight);
}
const float hover_alpha = SkColorGetA(hover_color);
auto ink_drop_highlight = std::make_unique<views::InkDropHighlight>(
gfx::SizeF(view->size()), SkColorSetA(hover_color, SK_AlphaOPAQUE));
ink_drop_highlight->set_visible_opacity(hover_alpha / SK_AlphaOPAQUE);
return ink_drop_highlight;
},
view, hover_color_id));
}
|