Index: chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
index 49617312ca41df86300bae0cb5a93f208ed5d8ad..0e8c261e3a902436d472a5d049443203c147a18e 100644 |
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
@@ -35,10 +35,17 @@ |
#include "ui/views/controls/label.h" |
#include "ui/views/controls/link.h" |
#include "ui/views/controls/textfield/textfield.h" |
+#include "ui/views/layout/fill_layout.h" |
#include "ui/views/layout/grid_layout.h" |
#include "ui/views/layout/layout_constants.h" |
#include "ui/views/widget/widget.h" |
+#if defined(OS_WIN) |
+#include "chrome/browser/sync/profile_sync_service_factory.h" |
+#include "chrome/browser/ui/views/desktop_ios_promotion/desktop_ios_promotion_bubble_view.h" |
+#include "components/browser_sync/profile_sync_service.h" |
+#endif |
+ |
using base::UserMetricsAction; |
using bookmarks::BookmarkModel; |
using bookmarks::BookmarkNode; |
@@ -171,8 +178,10 @@ void BookmarkBubbleView::Init() { |
parent_combobox_->SetAccessibleName( |
l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_FOLDER_TEXT)); |
- GridLayout* layout = new GridLayout(this); |
- SetLayoutManager(layout); |
+ SetLayoutManager(new views::FillLayout); |
+ bookmark_details_view_ = base::MakeUnique<View>(); |
+ GridLayout* layout = new GridLayout(bookmark_details_view_.get()); |
+ bookmark_details_view_->SetLayoutManager(layout); |
// This column set is used for the labels and textfields as well as the |
// buttons at the bottom. |
@@ -220,9 +229,32 @@ void BookmarkBubbleView::Init() { |
AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)); |
AddAccelerator(ui::Accelerator(ui::VKEY_E, ui::EF_ALT_DOWN)); |
AddAccelerator(ui::Accelerator(ui::VKEY_R, ui::EF_ALT_DOWN)); |
+ |
+ AddChildView(bookmark_details_view_.get()); |
+} |
+ |
+gfx::ImageSkia BookmarkBubbleView::GetWindowIcon() { |
+#if defined(OS_WIN) |
+ if (is_showing_ios_promotion_) { |
+ return desktop_ios_promotion::GetPromoImage( |
+ GetNativeTheme()->GetSystemColor( |
+ ui::NativeTheme::kColorId_TextfieldDefaultColor)); |
+ } |
+#endif |
+ return gfx::ImageSkia(); |
+} |
+ |
+bool BookmarkBubbleView::ShouldShowWindowIcon() const { |
+ return is_showing_ios_promotion_; |
} |
base::string16 BookmarkBubbleView::GetWindowTitle() const { |
+#if defined(OS_WIN) |
+ if (is_showing_ios_promotion_) { |
+ return desktop_ios_promotion::GetPromoTitle( |
+ desktop_ios_promotion::PromotionEntryPoint::BOOKMARKS_BUBBLE); |
+ } |
+#endif |
return l10n_util::GetStringUTF16(newly_bookmarked_ |
? IDS_BOOKMARK_BUBBLE_PAGE_BOOKMARKED |
: IDS_BOOKMARK_BUBBLE_PAGE_BOOKMARK); |
@@ -268,8 +300,10 @@ BookmarkBubbleView::BookmarkBubbleView( |
close_button_(nullptr), |
title_tf_(nullptr), |
parent_combobox_(nullptr), |
+ ios_promo_view_(nullptr), |
remove_bookmark_(false), |
- apply_edits_(true) {} |
+ apply_edits_(true), |
+ is_showing_ios_promotion_(false) {} |
base::string16 BookmarkBubbleView::GetTitle() { |
BookmarkModel* bookmark_model = |
@@ -314,7 +348,20 @@ void BookmarkBubbleView::HandleButtonPressed(views::Button* sender) { |
ShowEditor(); |
} else { |
DCHECK_EQ(close_button_, sender); |
+#if defined(OS_WIN) |
+ PrefService* prefs = profile_->GetPrefs(); |
+ const browser_sync::ProfileSyncService* sync_service = |
+ ProfileSyncServiceFactory::GetForProfile(profile_); |
+ if (desktop_ios_promotion::IsEligibleForIOSPromotion( |
+ prefs, sync_service, |
+ desktop_ios_promotion::PromotionEntryPoint::BOOKMARKS_BUBBLE)) { |
+ ShowIOSPromotion(); |
+ } else { |
+ GetWidget()->Close(); |
+ } |
+#else |
GetWidget()->Close(); |
+#endif |
} |
} |
@@ -353,3 +400,17 @@ void BookmarkBubbleView::ApplyEdits() { |
parent_model_.MaybeChangeParent(node, parent_combobox_->selected_index()); |
} |
} |
+ |
+#if defined(OS_WIN) |
+void BookmarkBubbleView::ShowIOSPromotion() { |
+ DCHECK(!is_showing_ios_promotion_); |
+ RemoveChildView(bookmark_details_view_.get()); |
+ is_showing_ios_promotion_ = true; |
+ ios_promo_view_ = new DesktopIOSPromotionBubbleView( |
+ profile_, desktop_ios_promotion::PromotionEntryPoint::BOOKMARKS_BUBBLE); |
+ AddChildView(ios_promo_view_); |
+ GetWidget()->UpdateWindowIcon(); |
+ GetWidget()->UpdateWindowTitle(); |
+ SizeToContents(); |
+} |
+#endif |