From 9750e82fb3acc2848374de22031416fcdd4a8e32 Mon Sep 17 00:00:00 2001 From: Simon Hong Date: Thu, 19 May 2022 14:30:51 +0900 Subject: [PATCH] Brave search conversion promotion - UI part Implement BraveOmniboxResultView by subclassing OmniboxResultView to provide promotion specfic views. BraveOmniboxResultView controls visibility upstream children and promotion children based on match. When promotion match is set, upstream children are all hidden and promotion children get visible. --- app/brave_generated_resources.grd | 28 + app/theme/brave_theme_resources.grd | 3 + ...brave_search_conversion_banner_graphic.png | Bin 0 -> 14854 bytes ..._search_conversion_banner_graphic_dark.png | Bin 0 -> 16647 bytes .../brave_search_logo_in_search_promotion.png | Bin 0 -> 702 bytes ...brave_search_conversion_banner_graphic.png | Bin 0 -> 45751 bytes ..._search_conversion_banner_graphic_dark.png | Bin 0 -> 54030 bytes .../brave_search_logo_in_search_promotion.png | Bin 0 -> 1394 bytes browser/themes/theme_properties.cc | 46 ++ browser/themes/theme_properties.h | 9 + browser/ui/BUILD.gn | 5 + .../omnibox/brave_omnibox_result_view.cc | 103 +++ .../views/omnibox/brave_omnibox_result_view.h | 43 ++ .../brave_search_conversion_promotion_view.cc | 587 ++++++++++++++++++ .../brave_search_conversion_promotion_view.h | 81 +++ .../omnibox/omnibox_popup_contents_view.cc | 8 + .../ui/views/omnibox/omnibox_result_view.h | 20 + ...nibox-omnibox_popup_contents_view.cc.patch | 13 + 18 files changed, 946 insertions(+) create mode 100644 app/theme/default_100_percent/brave/brave_search_conversion_banner_graphic.png create mode 100644 app/theme/default_100_percent/brave/brave_search_conversion_banner_graphic_dark.png create mode 100644 app/theme/default_100_percent/brave/brave_search_logo_in_search_promotion.png create mode 100644 app/theme/default_200_percent/brave/brave_search_conversion_banner_graphic.png create mode 100644 app/theme/default_200_percent/brave/brave_search_conversion_banner_graphic_dark.png create mode 100644 app/theme/default_200_percent/brave/brave_search_logo_in_search_promotion.png create mode 100644 browser/ui/views/omnibox/brave_omnibox_result_view.cc create mode 100644 browser/ui/views/omnibox/brave_omnibox_result_view.h create mode 100644 browser/ui/views/omnibox/brave_search_conversion_promotion_view.cc create mode 100644 browser/ui/views/omnibox/brave_search_conversion_promotion_view.h create mode 100644 chromium_src/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc create mode 100644 chromium_src/chrome/browser/ui/views/omnibox/omnibox_result_view.h create mode 100644 patches/chrome-browser-ui-views-omnibox-omnibox_popup_contents_view.cc.patch diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index 19da17af3bd..05620305181 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -574,6 +574,34 @@ Or change later at $2brave://settings/ext Don't ask me again + + + - Brave Search + + + Support independent search with better privacy. Brave search doesn't track you, your queries, or your clicks. + + + Support independent search with better privacy. + + + Support independent search with better privacy + + + Brave search doesn't track you, your queries, or your clicks. + + + Try Brave Search + + + Dismiss brave search conversion + + + Dismiss + + "> + Dismiss brave search conversion, press Enter to remove this suggestion + diff --git a/app/theme/brave_theme_resources.grd b/app/theme/brave_theme_resources.grd index af2c3a86588..9512f0fd120 100644 --- a/app/theme/brave_theme_resources.grd +++ b/app/theme/brave_theme_resources.grd @@ -95,7 +95,10 @@ + + + diff --git a/app/theme/default_100_percent/brave/brave_search_conversion_banner_graphic.png b/app/theme/default_100_percent/brave/brave_search_conversion_banner_graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..d46ba8bbeef4c11a1a5794cb4c753cf91540813d GIT binary patch literal 14854 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 literal 0 HcmV?d00001 diff --git a/app/theme/default_100_percent/brave/brave_search_conversion_banner_graphic_dark.png b/app/theme/default_100_percent/brave/brave_search_conversion_banner_graphic_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..da573973e247ab4cb045520c54f757810dd627f0 GIT binary patch literal 16647 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 literal 0 HcmV?d00001 diff --git a/app/theme/default_200_percent/brave/brave_search_conversion_banner_graphic.png b/app/theme/default_200_percent/brave/brave_search_conversion_banner_graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..b0706ec768f79ca186b881df27a63a1f9f689cff GIT binary patch literal 45751 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%0ABV3hz^?T_F9nBHdX#8}=- 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 literal 0 HcmV?d00001 diff --git a/app/theme/default_200_percent/brave/brave_search_conversion_banner_graphic_dark.png b/app/theme/default_200_percent/brave/brave_search_conversion_banner_graphic_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8d62a3230b809a97c636b19f3f6d5677161041af GIT binary patch literal 54030 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 z z7;I(Si?o&J+Ui^>h(GlgOn|e_EzQD2vZ3%FQANpp6a%Uc9Z+ppd0%!Lr?wT<55N1p zL+^d>1IJ?L$gyi(jd8`UoIUr`i)TOn@d~%``OiOl&*7tQy5DYcYLdo$_|CH@{``)u z+8Jd((!(Em@{^lc{Yevu?I6lomlQIrCcwCqj3jBM_fDXw2Z|XVVuJP&1<>5PBs243 zLttzwwYdBrN*_HYucZJ^{eub9BoBgisePcZAM|Mm>8uhg!Fjq z#a=x_Sa>ZbgVD?yE&Vx38%=VNZt5OFZyXKB-t(*MUW|F)b;q@K+63Mcw)Z!JsjzjF zhyF=fsR(mFP*oU=(QuE{c=z*ePX^st^Rf-!oxlH{cmLsUx>W8^kMTUbl=9J!zVrE; z{lKuX=I@>P!I=Ya?&v@kX%U4cmJs!SX`p7#@mg-U$y8gs(p9_lOmo*GY#XtfW^n2s+kZPiO1%3W9Db zE?I|cZI;c@n@aH6Ty|sZ`E+jCWvsBf>E;MoapW&TuN6a1wjYt;++_p-YFuS}c4tsA z&`qYR53K+_6hXxjc>d-J;O6BqiSdK^hqo20PSsA1e1M$A!O9DJUVgmo0J_D@*!U+6 zjPE~m@$zeaHT&4HJ0AGL7yf%VcC#KBHm&)}#lufO`smx9`P8TWWM8F~ZA;(Tfb>TA zeM%fj#(Va{%8_X)C&XcZq!*Mf(@gest;s!9K_pUj{exP#IbCC=#8tNevH)8yWxDK} z7^R*hG$XrQE*GfO&>}AoWe2!Cxk9byDCeONXK=$~WXLvhm_igAVJ}{L| zGe&@>0cslxOsgGqss%RSsFi*_RxckQuE5pDvT<#CP?d|WOTcLU8 zNWkn>b01^!x=%D~I7$D!I8T4u^I~wy4=Otti zmd4Ny$}j9`zWVbjB8Kd{>G=D+}!@3 zYkv<<;}dyvQs&v76Sac`ck4)ScKn?}L0;j@1}$K9Edp84A!oKJNcQq$fXpS$tJMqU zBL^!*!N}TpO|d(0LhcOKf5z&9-tN@3_hN9TZszMBMyEg4zp$K?8o-3Ht(RAw3GoiD zSajYdS>=!{lAq{>EMEyTm*1glQU0)UBCB7{OOAUnVAn?!T3==D3plH*VkE=feU%CO zP8!?q^@0l;SKzDyRE-2GjRi=zlf-e|qs>i64mY4brpHd4@T(X9_g6o)>yVn1F}-Pe zwgGcn*L)yn{ATGp-}w8FZSL{U<${eC8oQDv@~9^N<$<`wJpt`Ob2@e|D)is1rNFyH>d(SLC@A0s=xnLerdT?F_TF^i1EE zY#Fbm-?FY#8&}gT4&ZBm2yGA7oyTUh>@k12ItT3ImK?RsaA107*qo IM6N<$f)WNP&;S4c literal 0 HcmV?d00001 diff --git a/app/theme/default_200_percent/brave/brave_search_logo_in_search_promotion.png b/app/theme/default_200_percent/brave/brave_search_logo_in_search_promotion.png new file mode 100644 index 0000000000000000000000000000000000000000..6687e7fe258da583339e3623ac9b7f95c7e19fa1 GIT binary patch literal 1394 zcmV-&1&#WNP)k97eLHY;9NKs z0F@iwWe=kOxL97Ers8cF%apSE=Z_IG2)qPpYu@GhPymvfrQbz&b{HD7+NJUb4Zh}8 ze-IN10JQ$WAm#ELsx)Z<`~3Kw&mVmLp$N%%5GV;Bog+YW7(26T-h1sdfPAF<{e_UW zxNvg_o(*T^Po2wd1 zWWA^SJkDTD+~?>fC(1D{fRjbru>(@P#r?0>&w0KDn~i%Sal2{Pb@VpdIN z)B(CL@-qnl>fFO-x`I61L9&hG*a_fo8{F;!P^FuXStE{f?h0e8Tr~jV(EFQVM9Q-X z00DyD&WtSA)K-65ibh%uV9I9RS6twmjc9JAF7bsr?qV-I31JH$f3?Ua696!{8Af(n zz}li2QP$rlsC6c{RVvhhr_l4;s~HuL-(kp>=k?l&PE)EKkbyC*>qEc0V`zPuseY0S zEH6sD$>4m+HEUHMM$B&>rI4B)#=q%;gC6ZF6~`wTk{#}7tMJ6cWQ6iJANZv$@KY>g zUOXjxDnjPsiXbMBh{W1+MFEU~Ww@6n#rOhLBN z0#u?4`>Uy9#WAQ<#xp3>Zor{-!NZ<=?@-xCJQaVDw9o2>0c*OxBW%`-w^*WUr01Lv zRp^_Xy%Tzyo7z1!8mDg^{r-VE&P_?&s7uIL1WVbblr8jI@2Wm8xq2o5(+TXQAr>xG zK1{em+~zGOs8LrA-@@`FEXp5L?SA%khHECS7lir6JNp?U$Y?T%0<$B z4~|qq&!)4UvYd5*x|+=$1E+LUW!0CnGYZm%LO*P2cCoU&B&4jt)|51;!b+%-maW)U z1|L}!lRhOR#(=5$pF+2tzB4Yc&|spONtW=eq-lA)3}cC=SaHK|RVxnsV`3sWSB=={ zHD#Fwku}G$l{~s$8fa8=T8ON^hWcw}DkgoF-2uy(D& MaybeGetDefaultColorForBraveLightUi(int id) { case BraveThemeProperties::COLOR_BRAVE_VPN_BUTTON_TEXT_DISCONNECTED: return SkColorSetRGB(0x86, 0x8E, 0x96); #endif + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BANNER_TYPE_DESC_TEXT: + return SkColorSetRGB(0x2E, 0x30, 0x39); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_BORDER: + return SkColorSetRGB(0xE2, 0xE3, 0xF8); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_FROM: + return SkColorSetARGB(104, 0xFF, 0xFF, 0xFF); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_TO: + return SkColorSetARGB(104, 0xEF, 0xEF, 0xFB); + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_INPUT_APPEND: + return SkColorSetRGB(0x58, 0x5C, 0x6D); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_NORMAL: + return SkColorSetRGB(0xED, 0xEE, 0xFA); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_HOVERED: + return SkColorSetRGB(0xE2, 0xE3, 0xF8); + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_NORMAL: + return SkColorSetRGB(0x44, 0x4d, 0xd0); + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_HOVERED: + return SkColorSetRGB(0x1F, 0x25, 0x7A); case BraveThemeProperties::COLOR_FOR_TEST: return BraveThemeProperties::kLightColorForTest; default: @@ -194,6 +217,29 @@ absl::optional MaybeGetDefaultColorForBraveDarkUi(int id) { case BraveThemeProperties::COLOR_BRAVE_VPN_BUTTON_TEXT_DISCONNECTED: return SkColorSetRGB(0xF0, 0xF2, 0xFF); #endif + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BANNER_TYPE_DESC_TEXT: + return SkColorSetRGB(0xE2, 0xE3, 0xE7); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_BORDER: + return SkColorSetRGB(0x1F, 0x25, 0x7A); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_FROM: + return SkColorSetARGB(104, 0x17, 0x19, 0x1E); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_TO: + return SkColorSetARGB(104, 0x1F, 0x25, 0x7A); + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_INPUT_APPEND: + return SkColorSetRGB(0xAC, 0xAF, 0xBB); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_NORMAL: + return SkColorSetRGB(0x1A, 0x1C, 0x3B); + case BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_HOVERED: + return SkColorSetRGB(0x1F, 0x25, 0x7A); + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_NORMAL: + return SkColorSetRGB(0xA6, 0xAB, 0xE9); + case BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_HOVERED: + return SkColorSetRGB(0xE2, 0xE3, 0xF8); case BraveThemeProperties::COLOR_FOR_TEST: return BraveThemeProperties::kDarkColorForTest; default: diff --git a/browser/themes/theme_properties.h b/browser/themes/theme_properties.h index 5b6da1ce681..a691957a9a4 100644 --- a/browser/themes/theme_properties.h +++ b/browser/themes/theme_properties.h @@ -57,6 +57,15 @@ enum ThemeProperties { COLOR_BRAVE_VPN_BUTTON_TEXT_CONNECTED, COLOR_BRAVE_VPN_BUTTON_TEXT_DISCONNECTED, #endif + COLOR_SEARCH_CONVERSION_BANNER_TYPE_DESC_TEXT, + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_BORDER, + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_FROM, + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_TO, + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_INPUT_APPEND, + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_NORMAL, + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_HOVERED, + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_NORMAL, + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_HOVERED, COLOR_ICON_BASE, BRAVE_THEME_PROPERTIES_LAST = COLOR_ICON_BASE, }; diff --git a/browser/ui/BUILD.gn b/browser/ui/BUILD.gn index 2392e804a06..11d3287e2b6 100644 --- a/browser/ui/BUILD.gn +++ b/browser/ui/BUILD.gn @@ -178,6 +178,10 @@ source_set("ui") { "views/frame/brave_opaque_browser_frame_view.h", "views/frame/brave_window_frame_graphic.cc", "views/frame/brave_window_frame_graphic.h", + "views/omnibox/brave_omnibox_result_view.cc", + "views/omnibox/brave_omnibox_result_view.h", + "views/omnibox/brave_search_conversion_promotion_view.cc", + "views/omnibox/brave_search_conversion_promotion_view.h", "views/rounded_separator.cc", "views/rounded_separator.h", "views/tabs/brave_browser_tab_strip_controller.cc", @@ -287,6 +291,7 @@ source_set("ui") { "//brave/components/brave_rewards/resources:page_generated_resources", "//brave/components/brave_rewards/resources:tip_generated_resources", "//brave/components/brave_search/common", + "//brave/components/brave_search_conversion", "//brave/components/brave_shields/browser", "//brave/components/brave_vpn/buildflags", "//brave/components/brave_wayback_machine:buildflags", diff --git a/browser/ui/views/omnibox/brave_omnibox_result_view.cc b/browser/ui/views/omnibox/brave_omnibox_result_view.cc new file mode 100644 index 00000000000..421a63d9385 --- /dev/null +++ b/browser/ui/views/omnibox/brave_omnibox_result_view.cc @@ -0,0 +1,103 @@ +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "brave/browser/ui/views/omnibox/brave_omnibox_result_view.h" + +#include + +#include "base/time/time.h" +#include "brave/browser/ui/views/omnibox/brave_search_conversion_promotion_view.h" +#include "brave/components/brave_search_conversion/types.h" +#include "brave/components/brave_search_conversion/utils.h" +#include "brave/components/omnibox/browser/promotion_utils.h" +#include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h" +#include "chrome/browser/ui/views/omnibox/omnibox_suggestion_button_row_view.h" +#include "components/omnibox/browser/autocomplete_controller.h" +#include "components/omnibox/browser/autocomplete_match.h" +#include "components/omnibox/browser/autocomplete_provider_client.h" +#include "components/omnibox/browser/autocomplete_result.h" +#include "components/omnibox/browser/omnibox_edit_model.h" +#include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/base/window_open_disposition.h" +#include "ui/views/controls/button/image_button.h" + +using brave_search_conversion::ConversionType; +using brave_search_conversion::GetConversionType; +using brave_search_conversion::SetDismissed; + +BraveOmniboxResultView::~BraveOmniboxResultView() = default; + +void BraveOmniboxResultView::ResetChildrenVisibility() { + // Reset children visibility. Their visibility could be configured later + // based on |match_| and current input. + suggestion_container_->SetVisible(true); + button_row_->SetVisible(true); + if (brave_search_promotion_view_) { + brave_search_promotion_view_->SetVisible(false); + } +} + +void BraveOmniboxResultView::SetMatch(const AutocompleteMatch& match) { + ResetChildrenVisibility(); + OmniboxResultView::SetMatch(match); + + UpdateForBraveSearchConversion(); +} + +void BraveOmniboxResultView::OnSelectionStateChanged() { + OmniboxResultView::OnSelectionStateChanged(); + + HandleSelectionStateChangedForPromotionView(); +} + +void BraveOmniboxResultView::OpenMatch() { + popup_contents_view_->OpenMatch( + model_index_, WindowOpenDisposition::CURRENT_TAB, base::TimeTicks::Now()); +} + +void BraveOmniboxResultView::Dismiss() { + auto* controller = model_->autocomplete_controller(); + auto* prefs = controller->autocomplete_provider_client()->GetPrefs(); + SetDismissed(prefs); + + // To refresh autocomplete result after dismiss, start again with current + // input. Then, popup gets same autocomplete matches w/o promotion match. + controller->Start(controller->input()); +} + +void BraveOmniboxResultView::HandleSelectionStateChangedForPromotionView() { + if (brave_search_promotion_view_ && IsBraveSearchPromotion()) { + brave_search_promotion_view_->OnSelectionStateChanged( + GetMatchSelected() && popup_contents_view_->GetSelection().state == + OmniboxPopupSelection::NORMAL); + } +} + +void BraveOmniboxResultView::UpdateForBraveSearchConversion() { + const bool is_brave_search_promotion = IsBraveSearchPromotion(); + if (!is_brave_search_promotion) + return; + + // Hide upstream children and show our promotion view. + suggestion_container_->SetVisible(false); + button_row_->SetVisible(false); + + if (!brave_search_promotion_view_) { + brave_search_promotion_view_ = AddChildView( + std::make_unique(this)); + } + + brave_search_promotion_view_->SetVisible(true); + brave_search_promotion_view_->SetTypeAndInput( + GetConversionType(), model_->autocomplete_controller()->input().text()); +} + +bool BraveOmniboxResultView::IsBraveSearchPromotion() const { + const auto input = model_->autocomplete_controller()->input(); + return IsBraveSearchPromotionMatch(match_, input.text()); +} + +BEGIN_METADATA(BraveOmniboxResultView, OmniboxResultView) +END_METADATA diff --git a/browser/ui/views/omnibox/brave_omnibox_result_view.h b/browser/ui/views/omnibox/brave_omnibox_result_view.h new file mode 100644 index 00000000000..6d809a2dc03 --- /dev/null +++ b/browser/ui/views/omnibox/brave_omnibox_result_view.h @@ -0,0 +1,43 @@ +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_OMNIBOX_RESULT_VIEW_H_ +#define BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_OMNIBOX_RESULT_VIEW_H_ + +#include "base/memory/raw_ptr.h" +#include "chrome/browser/ui/views/omnibox/omnibox_result_view.h" +#include "ui/base/metadata/metadata_header_macros.h" + +class BraveSearchConversionPromotionView; + +// This will render brave specific matches such as braver search conversion +// promotion. +class BraveOmniboxResultView : public OmniboxResultView { + public: + METADATA_HEADER(BraveOmniboxResultView); + using OmniboxResultView::OmniboxResultView; + BraveOmniboxResultView(const BraveOmniboxResultView&) = delete; + BraveOmniboxResultView& operator=(const BraveOmniboxResultView&) = delete; + ~BraveOmniboxResultView() override; + + // OmniboxResultView overrides: + void SetMatch(const AutocompleteMatch& match) override; + void OnSelectionStateChanged() override; + + void OpenMatch(); + void Dismiss(); + + private: + bool IsBraveSearchPromotion() const; + void ResetChildrenVisibility(); + void UpdateForBraveSearchConversion(); + void HandleSelectionStateChangedForPromotionView(); + + // Brave search conversion promotion + raw_ptr brave_search_promotion_view_ = + nullptr; +}; + +#endif // BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_OMNIBOX_RESULT_VIEW_H_ diff --git a/browser/ui/views/omnibox/brave_search_conversion_promotion_view.cc b/browser/ui/views/omnibox/brave_search_conversion_promotion_view.cc new file mode 100644 index 00000000000..4a069ef72b6 --- /dev/null +++ b/browser/ui/views/omnibox/brave_search_conversion_promotion_view.cc @@ -0,0 +1,587 @@ +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "brave/browser/ui/views/omnibox/brave_search_conversion_promotion_view.h" + +#include + +#include "base/logging.h" +#include "brave/browser/themes/theme_properties.h" +#include "brave/browser/ui/views/omnibox/brave_omnibox_result_view.h" +#include "brave/components/l10n/common/locale_util.h" +#include "brave/grit/brave_generated_resources.h" +#include "brave/grit/brave_theme_resources.h" +#include "cc/paint/paint_flags.h" +#include "chrome/browser/ui/layout_constants.h" +#include "chrome/browser/ui/omnibox/omnibox_theme.h" +#include "chrome/browser/ui/views/chrome_typography.h" +#include "components/strings/grit/components_strings.h" +#include "components/vector_icons/vector_icons.h" +#include "third_party/skia/include/core/SkPath.h" +#include "ui/accessibility/ax_enums.mojom.h" +#include "ui/accessibility/ax_node_data.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/base/models/image_model.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/base/theme_provider.h" +#include "ui/gfx/canvas.h" +#include "ui/gfx/geometry/insets.h" +#include "ui/gfx/geometry/skia_conversions.h" +#include "ui/gfx/range/range.h" +#include "ui/gfx/skia_paint_util.h" +#include "ui/views/background.h" +#include "ui/views/cascading_property.h" +#include "ui/views/controls/button/image_button.h" +#include "ui/views/controls/button/image_button_factory.h" +#include "ui/views/controls/button/label_button.h" +#include "ui/views/controls/button/md_text_button.h" +#include "ui/views/controls/focus_ring.h" +#include "ui/views/controls/highlight_path_generator.h" +#include "ui/views/controls/image_view.h" +#include "ui/views/controls/label.h" +#include "ui/views/layout/box_layout.h" +#include "ui/views/layout/fill_layout.h" +#include "ui/views/layout/flex_layout.h" + +using brave_search_conversion::ConversionType; + +namespace { + +constexpr int kBannerTypeMargin = 12; +// Use small margin because omnibox popup has its own bottom padding. +constexpr int kBannerTypeMarginBottom = 4; +constexpr int kBannerTypeRadius = 8; + +gfx::FontList GetFont(int font_size, gfx::Font::Weight weight) { + gfx::FontList font_list; + return font_list.DeriveWithSizeDelta(font_size - font_list.GetFontSize()) + .DeriveWithWeight(weight); +} + +// Draw graphic over gradient background for banner type. +class HorizontalGradientBackground : public views::Background { + public: + using Background::Background; + ~HorizontalGradientBackground() override = default; + HorizontalGradientBackground(const HorizontalGradientBackground&) = delete; + HorizontalGradientBackground& operator=(const HorizontalGradientBackground&) = + delete; + + void Paint(gfx::Canvas* canvas, views::View* view) const override { + // Fill with base color first. + canvas->DrawColor(GetOmniboxColor(view->GetThemeProvider(), + OmniboxPart::RESULTS_BACKGROUND)); + + SkColor from_color = gfx::kPlaceholderColor; + SkColor to_color = gfx::kPlaceholderColor; + if (auto* tp = view->GetThemeProvider()) { + from_color = tp->GetColor( + BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_FROM); + to_color = tp->GetColor( + BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_GRADIENT_TO); + } + + cc::PaintFlags flags; + SkPoint points[2] = {SkPoint::Make(0, 0), SkPoint::Make(view->width(), 0)}; + SkColor colors[2] = {from_color, to_color}; + SkScalar positions[2] = {0.196f, 1.f}; + flags.setShader(cc::PaintShader::MakeLinearGradient( + points, colors, positions, 2, SkTileMode::kClamp)); + flags.setStyle(cc::PaintFlags::kFill_Style); + gfx::RectF bounds(view->GetLocalBounds()); + canvas->DrawRect(bounds, flags); + + auto& bundle = ui::ResourceBundle::GetSharedInstance(); + const auto* graphic = bundle.GetImageSkiaNamed( + ui::NativeTheme::GetInstanceForNativeUi()->ShouldUseDarkColors() + ? IDR_BRAVE_SEARCH_CONVERSION_BANNER_GRAPHIC_DARK + : IDR_BRAVE_SEARCH_CONVERSION_BANNER_GRAPHIC); + canvas->DrawImageInt(*graphic, bounds.width() - graphic->width(), 0); + } +}; + +class TryButton : public views::MdTextButton { + public: + METADATA_HEADER(TryButton); + using MdTextButton::MdTextButton; + TryButton(const TryButton&) = delete; + TryButton& operator=(const TryButton&) = delete; + + void SetFontSize(int size) { + label()->SetFontList(GetFont(size, gfx::Font::Weight::SEMIBOLD)); + } +}; + +BEGIN_METADATA(TryButton, views::MdTextButton) +END_METADATA + +class BannerTypeDismissButton : public views::LabelButton { + public: + METADATA_HEADER(BannerTypeDismissButton); + using LabelButton::LabelButton; + BannerTypeDismissButton(const BannerTypeDismissButton&) = delete; + BannerTypeDismissButton& operator=(const BannerTypeDismissButton&) = delete; + + void SetFontSize(int size) { + label()->SetFontList(GetFont(size, gfx::Font::Weight::SEMIBOLD)); + } +}; + +BEGIN_METADATA(BannerTypeDismissButton, views::LabelButton) +END_METADATA + +class ButtonTypeDismissButton : public views::ImageButton { + public: + METADATA_HEADER(ButtonTypeDismissButton); + explicit ButtonTypeDismissButton(PressedCallback callback = PressedCallback()) + : ImageButton(std::move(callback)) { + views::ConfigureVectorImageButton(this); + } + ButtonTypeDismissButton(const ButtonTypeDismissButton&) = delete; + ButtonTypeDismissButton& operator=(const ButtonTypeDismissButton&) = delete; + + void GetAccessibleNodeData(ui::AXNodeData* node_data) override { + node_data->SetName(brave_l10n::GetLocalizedResourceUTF16String( + IDS_ACC_BRAVE_SEARCH_CONVERSION_DISMISS_BUTTON)); + // Although this appears visually as a button, expose as a list box option + // so that it matches the other options within its list box container. + node_data->role = ax::mojom::Role::kListBoxOption; + } +}; + +BEGIN_METADATA(ButtonTypeDismissButton, views::ImageButton) +END_METADATA + +// For rounded. +class BannerTypeContainer : public views::View { + public: + METADATA_HEADER(BannerTypeContainer); + using View::View; + BannerTypeContainer(const BannerTypeContainer&) = delete; + BannerTypeContainer& operator=(const BannerTypeContainer&) = delete; + + // views::View overrides: + void OnPaint(gfx::Canvas* canvas) override { + SkPath mask; + mask.addRoundRect(gfx::RectToSkRect(GetLocalBounds()), kBannerTypeRadius, + kBannerTypeRadius); + canvas->ClipPath(mask, true); + + View::OnPaint(canvas); + } +}; + +BEGIN_METADATA(BannerTypeContainer, views::View) +END_METADATA + +//////////////////////////////////////////////////////////////////////////////// +// OmniboxResultSelectionIndicator + +class BraveOmniboxResultSelectionIndicator : public views::View { + public: + METADATA_HEADER(BraveOmniboxResultSelectionIndicator); + + static constexpr int kStrokeThickness = 3; + + explicit BraveOmniboxResultSelectionIndicator( + BraveSearchConversionPromotionView* parent_view) + : parent_view_(parent_view) { + SetPreferredSize({kStrokeThickness, 0}); + } + + // views::View: + void OnPaint(gfx::Canvas* canvas) override { + SkPath path = GetPath(); + cc::PaintFlags flags; + flags.setAntiAlias(true); + flags.setColor(color_); + flags.setStyle(cc::PaintFlags::kFill_Style); + canvas->DrawPath(path, flags); + } + + // views::View: + void OnThemeChanged() override { + views::View::OnThemeChanged(); + + color_ = views::GetCascadingAccentColor(parent_view_); + } + + private: + SkColor color_; + + // Pointer to the parent view. + const raw_ptr parent_view_; + + // The focus bar is a straight vertical line with half-rounded endcaps. Since + // this geometry is nontrivial to represent using primitives, it's instead + // represented using a fill path. This matches the style and implementation + // used in Tab Groups. + SkPath GetPath() const { + SkPath path; + + path.moveTo(0, 0); + path.arcTo(kStrokeThickness, kStrokeThickness, 0, SkPath::kSmall_ArcSize, + SkPathDirection::kCW, kStrokeThickness, kStrokeThickness); + path.lineTo(kStrokeThickness, height() - kStrokeThickness); + path.arcTo(kStrokeThickness, kStrokeThickness, 0, SkPath::kSmall_ArcSize, + SkPathDirection::kCW, 0, height()); + path.close(); + + return path; + } +}; + +BEGIN_METADATA(BraveOmniboxResultSelectionIndicator, views::View) +END_METADATA + +} // namespace + +BraveSearchConversionPromotionView::BraveSearchConversionPromotionView( + BraveOmniboxResultView* result_view) + : result_view_(result_view), + mouse_enter_exit_handler_(base::BindRepeating( + &BraveSearchConversionPromotionView::UpdateHoverState, + base::Unretained(this))) { + SetLayoutManager(std::make_unique()); +} + +BraveSearchConversionPromotionView::~BraveSearchConversionPromotionView() = + default; + +void BraveSearchConversionPromotionView::ResetChildrenVisibility() { + // Reset all children visibility and configure later based on type. + if (button_type_container_) + button_type_container_->SetVisible(false); + + if (banner_type_container_) + banner_type_container_->SetVisible(false); +} + +void BraveSearchConversionPromotionView::SetTypeAndInput( + brave_search_conversion::ConversionType type, + const std::u16string& input) { + DCHECK_NE(ConversionType::kNone, type); + + type_ = type; + input_ = input; + selected_ = false; + + ResetChildrenVisibility(); + + if (type_ == ConversionType::kButton) { + ConfigureForButtonType(); + } else { + ConfigureForBannerType(); + } + + UpdateState(); +} + +void BraveSearchConversionPromotionView::OnSelectionStateChanged( + bool selected) { + selected_ = selected; + UpdateState(); +} + +void BraveSearchConversionPromotionView::UpdateState() { + if (type_ == ConversionType::kButton) { + UpdateButtonTypeState(); + } else { + UpdateBannerTypeState(); + } +} + +void BraveSearchConversionPromotionView::OpenMatch() { + result_view_->OpenMatch(); +} + +void BraveSearchConversionPromotionView::Dismiss() { + result_view_->Dismiss(); +} + +void BraveSearchConversionPromotionView::UpdateButtonTypeState() { + if (!button_type_container_) + return; + + button_type_container_->SetVisible(true); + button_type_selection_indicator_->SetVisible(selected_); + button_type_contents_input_->SetText(input_); + if (auto* tp = GetThemeProvider()) { + auto desc_color_id = + BraveThemeProperties::COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_NORMAL; + if (IsMouseHovered()) { + desc_color_id = BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_DESC_HOVERED; + } + button_type_description_->SetEnabledColor(tp->GetColor(desc_color_id)); + append_for_input_->SetEnabledColor( + tp->GetColor(BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_INPUT_APPEND)); + } + + SetBackground(GetButtonTypeBackground()); +} + +void BraveSearchConversionPromotionView::UpdateBannerTypeState() { + if (!banner_type_container_) + return; + + banner_type_container_->SetVisible(true); + SkColor desc_color = gfx::kPlaceholderColor; + SkColor border_color = gfx::kPlaceholderColor; + if (auto* tp = GetThemeProvider()) { + desc_color = tp->GetColor( + BraveThemeProperties::COLOR_SEARCH_CONVERSION_BANNER_TYPE_DESC_TEXT); + border_color = + tp->GetColor(BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BANNER_TYPE_BACKGROUND_BORDER); + } + banner_type_container_->SetBorder( + views::CreateRoundedRectBorder(1, kBannerTypeRadius, border_color)); + banner_type_description_->SetEnabledColor(desc_color); + + SetBackground(views::CreateSolidBackground( + GetOmniboxColor(GetThemeProvider(), OmniboxPart::RESULTS_BACKGROUND))); + banner_type_container_->SetBackground( + std::make_unique()); +} + +void BraveSearchConversionPromotionView::ConfigureForButtonType() { + if (button_type_container_) + return; + + button_type_container_ = AddChildView(std::make_unique()); + button_type_container_->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kUnbounded)); + + button_type_container_ + ->SetLayoutManager(std::make_unique()) + ->SetOrientation(views::LayoutOrientation::kHorizontal); + + auto* selection_container = + button_type_container_->AddChildView(std::make_unique()); + selection_container->SetPreferredSize(gfx::Size(3, height())); + selection_container->SetLayoutManager(std::make_unique()); + button_type_selection_indicator_ = selection_container->AddChildView( + std::make_unique(this)); + + auto& bundle = ui::ResourceBundle::GetSharedInstance(); + auto* icon_view = + button_type_container_->AddChildView(std::make_unique( + ui::ImageModel::FromImageSkia(*bundle.GetImageSkiaNamed( + IDR_BRAVE_SEARCH_LOGO_IN_SEARCH_PROMOTION)))); + icon_view->SetProperty(views::kMarginsKey, gfx::Insets::TLBR(14, 12, 36, 8)); + + auto* contents_container = + button_type_container_->AddChildView(std::make_unique()); + contents_container->SetProperty(views::kMarginsKey, + gfx::Insets::TLBR(12, 12, 12, 0)); + contents_container->SetLayoutManager(std::make_unique( + views::BoxLayout::Orientation::kVertical, gfx::Insets(), 2)); + + auto* input_container = + contents_container->AddChildView(std::make_unique()); + input_container->SetLayoutManager(std::make_unique( + views::BoxLayout::Orientation::kHorizontal, gfx::Insets(), 8)); + + // Use 14px font size for input text. + views::Label::CustomFont emphasized_font = { + GetFont(14, gfx::Font::Weight::SEMIBOLD)}; + button_type_contents_input_ = input_container->AddChildView( + std::make_unique(input_, emphasized_font)); + button_type_contents_input_->SetAutoColorReadabilityEnabled(false); + button_type_contents_input_->SetHorizontalAlignment(gfx::ALIGN_LEFT); + + views::Label::CustomFont normal_font = { + GetFont(14, gfx::Font::Weight::NORMAL)}; + append_for_input_ = + input_container->AddChildView(std::make_unique( + brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_INPUT_APPEND_LABEL), + normal_font)); + append_for_input_->SetAutoColorReadabilityEnabled(false); + append_for_input_->SetHorizontalAlignment(gfx::ALIGN_LEFT); + + // Configure description + const std::u16string first_part = brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_PROMOTION_DESC_LABEL_FIRST_PART); + const std::u16string desc_label = brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_PROMOTION_DESC_LABEL); + + button_type_description_ = contents_container->AddChildView( + std::make_unique(desc_label, normal_font)); + button_type_description_->SetAutoColorReadabilityEnabled(false); + button_type_description_->SetHorizontalAlignment(gfx::ALIGN_LEFT); + button_type_description_->SetTextStyleRange( + ChromeTextStyle::STYLE_EMPHASIZED, gfx::Range(0, first_part.length())); + + contents_container->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kUnbounded) + .WithOrder(2)); + + auto* try_button = button_type_container_->AddChildView( + std::make_unique(views::Button::PressedCallback( + base::BindRepeating(&BraveSearchConversionPromotionView::OpenMatch, + base::Unretained(this))))); + try_button->SetProperty(views::kMarginsKey, gfx::Insets::TLBR(17, 0, 17, 0)); + try_button->SetProminent(true); + try_button->SetText(brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_TRY_BUTTON_LABEL)); + try_button->SetFontSize(12); + + auto* dismiss_button = button_type_container_->AddChildView( + std::make_unique(views::Button::PressedCallback( + base::BindRepeating(&BraveSearchConversionPromotionView::Dismiss, + base::Unretained(this))))); + views::SetImageFromVectorIconWithColor( + dismiss_button, vector_icons::kCloseRoundedIcon, + GetLayoutConstant(LOCATION_BAR_ICON_SIZE), + SkColorSetRGB(0x6B, 0x70, 0x84), gfx::kPlaceholderColor); + views::InstallCircleHighlightPathGenerator(dismiss_button); + views::FocusRing::Install(dismiss_button); + dismiss_button->SetProperty(views::kMarginsKey, gfx::Insets::VH(25, 8)); + dismiss_button->SetTooltipText(brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_DISMISS_BUTTON_TOOLTIP)); + + mouse_enter_exit_handler_.ObserveMouseEnterExitOn(button_type_container_); +} + +void BraveSearchConversionPromotionView::ConfigureForBannerType() { + if (banner_type_container_) + return; + + banner_type_container_ = + AddChildView(std::make_unique()); + banner_type_container_->SetProperty( + views::kMarginsKey, + gfx::Insets::TLBR(kBannerTypeMargin, kBannerTypeMargin, + kBannerTypeMarginBottom, kBannerTypeMargin)); + banner_type_container_->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kUnbounded)); + + banner_type_container_ + ->SetLayoutManager(std::make_unique()) + ->SetOrientation(views::LayoutOrientation::kHorizontal); + + // contents has title/label and buttons. + auto* banner_contents = + banner_type_container_->AddChildView(std::make_unique()); + banner_contents->SetLayoutManager(std::make_unique()) + ->SetOrientation(views::LayoutOrientation::kVertical); + banner_contents->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kUnbounded) + .WithOrder(2)); + banner_contents->SetProperty(views::kMarginsKey, + gfx::Insets::TLBR(16, 16, 0, 0)); + + const std::u16string title_label = + brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_PROMOTION_BANNER_TITLE); + views::Label::CustomFont title_font = { + GetFont(16, gfx::Font::Weight::SEMIBOLD)}; + auto* banner_title = banner_contents->AddChildView( + std::make_unique(title_label, title_font)); + banner_title->SetAutoColorReadabilityEnabled(false); + banner_title->SetHorizontalAlignment(gfx::ALIGN_LEFT); + + const std::u16string desc_label = brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_PROMOTION_BANNER_DESC); + views::Label::CustomFont desc_font = {GetFont(14, gfx::Font::Weight::NORMAL)}; + banner_type_description_ = banner_contents->AddChildView( + std::make_unique(desc_label, desc_font)); + banner_type_description_->SetProperty(views::kMarginsKey, + gfx::Insets::TLBR(4, 0, 0, 0)); + banner_type_description_->SetAutoColorReadabilityEnabled(false); + banner_type_description_->SetHorizontalAlignment(gfx::ALIGN_LEFT); + + auto* button_row = + banner_contents->AddChildView(std::make_unique()); + button_row->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kPreferred)); + button_row->SetProperty(views::kMarginsKey, gfx::Insets::TLBR(12, 0, 0, 0)); + button_row->SetLayoutManager(std::make_unique()) + ->SetOrientation(views::LayoutOrientation::kHorizontal); + auto* try_button = button_row->AddChildView( + std::make_unique(views::Button::PressedCallback( + base::BindRepeating(&BraveSearchConversionPromotionView::OpenMatch, + base::Unretained(this))))); + try_button->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kPreferred)); + try_button->SetProminent(true); + try_button->SetText(brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_TRY_BUTTON_LABEL)); + try_button->SetFontSize(14); + + auto* dismiss_button = button_row->AddChildView( + std::make_unique(views::Button::PressedCallback( + base::BindRepeating(&BraveSearchConversionPromotionView::Dismiss, + base::Unretained(this))))); + dismiss_button->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kPreferred)); + dismiss_button->SetText(brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_DISMISS_BUTTON_LABEL)); + dismiss_button->SetFontSize(14); + dismiss_button->SetTextColor(views::Button::STATE_NORMAL, + SkColorSetRGB(0xff, 0x76, 0x54)); + dismiss_button->SetTextColor(views::Button::STATE_PRESSED, + SkColorSetRGB(0xff, 0x76, 0x54)); + dismiss_button->SetTextColor(views::Button::STATE_HOVERED, + SkColorSetRGB(0xff, 0x97, 0x7d)); + dismiss_button->SetProperty(views::kMarginsKey, + gfx::Insets::TLBR(0, 13, 0, 0)); + dismiss_button->SetTooltipText(brave_l10n::GetLocalizedResourceUTF16String( + IDS_BRAVE_SEARCH_CONVERSION_DISMISS_BUTTON_TOOLTIP)); +} + +std::unique_ptr +BraveSearchConversionPromotionView::GetButtonTypeBackground() { + SkColor bg = gfx::kPlaceholderColor; + if (auto* tp = GetThemeProvider()) { + auto bg_color_id = BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_NORMAL; + if (IsMouseHovered()) { + bg_color_id = BraveThemeProperties:: + COLOR_SEARCH_CONVERSION_BUTTON_TYPE_BACKGROUND_HOVERED; + } + bg = tp->GetColor(bg_color_id); + } + + return views::CreateSolidBackground(bg); +} + +gfx::Size BraveSearchConversionPromotionView::CalculatePreferredSize() const { + const int height = type_ == ConversionType::kButton ? 66 : 132; + return gfx::Size(0, height); +} + +void BraveSearchConversionPromotionView::OnThemeChanged() { + View::OnThemeChanged(); + + UpdateState(); +} + +void BraveSearchConversionPromotionView::UpdateHoverState() { + UpdateState(); +} + +BEGIN_METADATA(BraveSearchConversionPromotionView, views::View) +END_METADATA diff --git a/browser/ui/views/omnibox/brave_search_conversion_promotion_view.h b/browser/ui/views/omnibox/brave_search_conversion_promotion_view.h new file mode 100644 index 00000000000..d0f1f3ff20e --- /dev/null +++ b/browser/ui/views/omnibox/brave_search_conversion_promotion_view.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_SEARCH_CONVERSION_PROMOTION_VIEW_H_ +#define BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_SEARCH_CONVERSION_PROMOTION_VIEW_H_ + +#include +#include + +#include "base/memory/raw_ptr.h" +#include "brave/components/brave_search_conversion/types.h" +#include "chrome/browser/ui/views/omnibox/omnibox_mouse_enter_exit_handler.h" +#include "ui/base/metadata/metadata_header_macros.h" +#include "ui/views/view.h" + +class BraveOmniboxResultView; + +namespace views { +class Background; +class Label; +} // namespace views + +class BraveSearchConversionPromotionView : public views::View { + public: + METADATA_HEADER(BraveSearchConversionPromotionView); + + explicit BraveSearchConversionPromotionView( + BraveOmniboxResultView* result_view); + BraveSearchConversionPromotionView( + const BraveSearchConversionPromotionView&) = delete; + BraveSearchConversionPromotionView& operator=( + const BraveSearchConversionPromotionView&) = delete; + ~BraveSearchConversionPromotionView() override; + + void SetTypeAndInput(brave_search_conversion::ConversionType type, + const std::u16string& input); + void OnSelectionStateChanged(bool selected); + + // views::View overrides: + gfx::Size CalculatePreferredSize() const override; + void OnThemeChanged() override; + + private: + void ConfigureForButtonType(); + void UpdateButtonTypeState(); + void ConfigureForBannerType(); + void UpdateBannerTypeState(); + void ResetChildrenVisibility(); + void UpdateHoverState(); + void UpdateState(); + void OpenMatch(); + void Dismiss(); + + // Gives buttton type background based on selected or hovered state. + std::unique_ptr GetButtonTypeBackground(); + + raw_ptr result_view_ = nullptr; + + // Children for button type promotion. + raw_ptr button_type_container_ = nullptr; + raw_ptr button_type_selection_indicator_ = nullptr; + raw_ptr button_type_description_ = nullptr; + raw_ptr button_type_contents_input_ = nullptr; + raw_ptr append_for_input_ = nullptr; + + // Children for banner type promotion. + raw_ptr banner_type_container_ = nullptr; + raw_ptr banner_type_description_ = nullptr; + + brave_search_conversion::ConversionType type_ = + brave_search_conversion::ConversionType::kNone; + bool selected_ = false; + std::u16string input_; + + // Keeps track of mouse-enter and mouse-exit events of child Views. + OmniboxMouseEnterExitHandler mouse_enter_exit_handler_; +}; + +#endif // BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_SEARCH_CONVERSION_PROMOTION_VIEW_H_ diff --git a/chromium_src/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc b/chromium_src/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc new file mode 100644 index 00000000000..b49d2f55d7b --- /dev/null +++ b/chromium_src/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc @@ -0,0 +1,8 @@ +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "brave/browser/ui/views/omnibox/brave_omnibox_result_view.h" + +#include "src/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc" diff --git a/chromium_src/chrome/browser/ui/views/omnibox/omnibox_result_view.h b/chromium_src/chrome/browser/ui/views/omnibox/omnibox_result_view.h new file mode 100644 index 00000000000..12ebdb699c0 --- /dev/null +++ b/chromium_src/chrome/browser/ui/views/omnibox/omnibox_result_view.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ +#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ + +#define SetMatch \ + virtual SetMatch(const AutocompleteMatch& match); \ + friend class BraveOmniboxResultView; \ + void SetMatchUnUsed +#define OnSelectionStateChanged virtual OnSelectionStateChanged + +#include "src/chrome/browser/ui/views/omnibox/omnibox_result_view.h" + +#undef OnSelectionStateChanged +#undef SetMatch + +#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_RESULT_VIEW_H_ diff --git a/patches/chrome-browser-ui-views-omnibox-omnibox_popup_contents_view.cc.patch b/patches/chrome-browser-ui-views-omnibox-omnibox_popup_contents_view.cc.patch new file mode 100644 index 00000000000..15c6d4db123 --- /dev/null +++ b/patches/chrome-browser-ui-views-omnibox-omnibox_popup_contents_view.cc.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc b/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc +index a5405c946c95ec09f66df6ffc279a6d7bba5d212..5ca0e49f440fac12d2916f1c6ee7582718a468a8 100644 +--- a/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc ++++ b/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc +@@ -348,7 +348,7 @@ void OmniboxPopupContentsView::UpdatePopupAppearance() { + if (children().size() == i) { + AddChildView(std::make_unique( + i, edit_model_, +- std::make_unique(this, edit_model_, i), ++ std::make_unique(this, edit_model_, i), + pref_service)); + } +