Index: chrome/browser/ui/views/autofill/save_card_bubble_views.cc |
diff --git a/chrome/browser/ui/views/autofill/save_card_bubble_views.cc b/chrome/browser/ui/views/autofill/save_card_bubble_views.cc |
index 214f508e7316c2e04f5ea2459ded67a8425f03c9..c4fd6e2d2f203f36e7ee0ebd626c958ca65dfdcc 100644 |
--- a/chrome/browser/ui/views/autofill/save_card_bubble_views.cc |
+++ b/chrome/browser/ui/views/autofill/save_card_bubble_views.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/ui/views/autofill/save_card_bubble_views.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "chrome/browser/ui/autofill/autofill_dialog_types.h" |
#include "chrome/browser/ui/autofill/save_card_bubble_controller.h" |
#include "grit/components_strings.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -12,6 +13,8 @@ |
#include "ui/views/controls/button/blue_button.h" |
#include "ui/views/controls/button/label_button.h" |
#include "ui/views/controls/link.h" |
+#include "ui/views/controls/styled_label.h" |
+#include "ui/views/layout/box_layout.h" |
#include "ui/views/layout/grid_layout.h" |
#include "ui/views/layout/layout_constants.h" |
@@ -95,14 +98,27 @@ void SaveCardBubbleViews::LinkClicked(views::Link* source, int event_flags) { |
controller_->OnLearnMoreClicked(); |
} |
-void SaveCardBubbleViews::Init() { |
+void SaveCardBubbleViews::StyledLabelLinkClicked(const gfx::Range& range, |
+ int event_flags) { |
+ controller_->OnLegalMessageLinkClicked(range); |
+} |
+ |
+// Create view containing everything except for the footnote. |
+// ASCII art diagram of view contents: |
+// +---------------------------------------------------------------------------+ |
+// | | |
+// | learn_more_link_ save_button_ cancel_button_ | |
+// | | |
+// +---------------------------------------------------------------------------+ |
+views::View* SaveCardBubbleViews::CreateMainContentView() { |
enum { |
COLUMN_SET_ID_MESSAGE, |
COLUMN_SET_ID_BUTTONS, |
}; |
- GridLayout* layout = new GridLayout(this); |
- SetLayoutManager(layout); |
+ View* view = new View(); |
+ GridLayout* layout = new GridLayout(view); |
+ view->SetLayoutManager(layout); |
// Set up ColumnSet that will contain the full-width message text. |
int horizontal_inset = GetBubbleFrameView()->GetTitleInsets().left(); |
@@ -128,6 +144,7 @@ void SaveCardBubbleViews::Init() { |
// Create "learn more" link and add it to layout. |
learn_more_link_ = new views::Link(l10n_util::GetStringUTF16(IDS_LEARN_MORE)); |
+ learn_more_link_->SetUnderline(false); |
learn_more_link_->set_listener(this); |
layout->StartRow(0, COLUMN_SET_ID_BUTTONS); |
layout->AddView(learn_more_link_); |
@@ -151,8 +168,44 @@ void SaveCardBubbleViews::Init() { |
} |
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); |
+ return view; |
+} |
+ |
+// Create view containing the legal message text. |
+views::View* SaveCardBubbleViews::CreateFootnoteView() { |
+ // Use BoxLayout to provide insets around the label. |
+ View* view = new View(); |
+ int horizontal_inset = GetBubbleFrameView()->GetTitleInsets().left(); |
+ view->SetLayoutManager( |
+ new views::BoxLayout(views::BoxLayout::kHorizontal, horizontal_inset, |
+ views::kRelatedControlVerticalSpacing, 0)); |
+ view->SetBorder( |
+ views::Border::CreateSolidSidedBorder(1, 0, 0, 0, kSubtleBorderColor)); |
+ view->set_background( |
+ views::Background::CreateSolidBackground(kLightShadingColor)); |
+ |
+ // Create the StyledLabel and add all of legal message's links. |
+ views::StyledLabel* label = |
+ new views::StyledLabel(controller_->GetLegalMessage(), this); |
+ const std::vector<gfx::Range>& ranges = |
+ controller_->GetLegalMessageLinkRanges(); |
+ for (size_t i = 0; i < ranges.size(); ++i) { |
+ label->AddStyleRange(ranges[i], |
+ views::StyledLabel::RangeStyleInfo::CreateForLink()); |
+ } |
+ label->SizeToFit(kWidthOfMessageText); |
+ view->AddChildView(label); |
+ |
+ return view; |
+} |
+ |
+void SaveCardBubbleViews::Init() { |
+ SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); |
+ AddChildView(CreateMainContentView()); |
+ if (!controller_->GetLegalMessage().empty()) |
+ AddChildView(CreateFootnoteView()); |
+ |
set_margins(gfx::Insets(1, 0, 1, 0)); |
- Layout(); |
} |
} // namespace autofill |