Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4660)

Unified Diff: chrome/browser/ui/views/autofill/save_card_bubble_views.cc

Issue 1407093007: Autofill: Add legal message footer to save credit card bubble. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address estade@ comments for patch set 12. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 64d7ae5915fc910753422c294294510b1c10c552..31367ade6fca669e9abac98394a06fc4b9ed30dc 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"
@@ -31,6 +34,20 @@ const bool kIsOkButtonOnLeftSide = true;
const bool kIsOkButtonOnLeftSide = false;
#endif
+views::StyledLabel* CreateLegalMessageLineLabel(
Evan Stade 2015/11/18 00:21:13 return scoped_ptr
bondd 2015/11/18 01:59:40 Done.
+ const autofill::SaveCardBubbleController::LegalMessageLine& line,
+ views::StyledLabelListener* listener) {
+ views::StyledLabel* label = new views::StyledLabel(line.text, listener);
+ const std::vector<autofill::SaveCardBubbleController::LegalMessageLine::Link>&
Evan Stade 2015/11/18 00:21:13 this anonymous namespace should be inside the auto
bondd 2015/11/18 01:59:40 Done.
+ links = line.links;
+ for (size_t i = 0; i < links.size(); ++i) {
+ label->AddStyleRange(links[i].range,
+ views::StyledLabel::RangeStyleInfo::CreateForLink());
+ }
+ label->SizeToFit(kWidthOfMessageText);
+ return label;
+}
+
} // namespace
namespace autofill {
@@ -91,14 +108,38 @@ void SaveCardBubbleViews::LinkClicked(views::Link* source, int event_flags) {
controller_->OnLearnMoreClicked();
}
-void SaveCardBubbleViews::Init() {
+void SaveCardBubbleViews::StyledLabelLinkClicked(views::StyledLabel* label,
+ const gfx::Range& range,
+ int event_flags) {
+ // Index of |label| within its parent's view hierarchy is the same as the
+ // legal message line index. DCHECK this assumption to guard against future
+ // layout changes.
+ DCHECK(static_cast<size_t>(label->parent()->child_count()) ==
Evan Stade 2015/11/18 00:21:13 DCHECK_EQ
bondd 2015/11/18 01:59:40 Done.
+ controller_->GetLegalMessageLines().size());
+ int line_index = label->parent()->GetIndexOf(label);
Evan Stade 2015/11/18 00:21:13 don't need this local variable
bondd 2015/11/18 01:59:40 Done. Sometimes I prefer breaking a line up with a
Evan Stade 2015/11/18 22:01:18 my reasoning is that saving it as a local variable
+
+ const std::vector<SaveCardBubbleController::LegalMessageLine::Link>& links =
+ controller_->GetLegalMessageLines()[line_index].links;
+ for (size_t i = 0; i < links.size(); ++i) {
+ if (links[i].range == range) {
+ controller_->OnLegalMessageLinkClicked(links[i].url);
+ return;
+ }
+ }
Evan Stade 2015/11/18 00:21:13 nit: \n
bondd 2015/11/18 01:59:40 Done.
+ // |range| was not found.
+ NOTREACHED();
+}
+
+// Create view containing everything except for the footnote.
+scoped_ptr<views::View> SaveCardBubbleViews::CreateMainContentView() {
enum {
COLUMN_SET_ID_MESSAGE,
COLUMN_SET_ID_BUTTONS,
};
- GridLayout* layout = new GridLayout(this);
- SetLayoutManager(layout);
+ scoped_ptr<View> view(new View());
+ GridLayout* layout = new GridLayout(view.get());
+ view->SetLayoutManager(layout);
// Set up ColumnSet that will contain the full-width message text.
int horizontal_inset = GetBubbleFrameView()->GetTitleInsets().left();
@@ -124,6 +165,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_);
@@ -147,8 +189,39 @@ void SaveCardBubbleViews::Init() {
}
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
+ return view;
+}
+
+// Create view containing the legal message text.
+scoped_ptr<views::View> SaveCardBubbleViews::CreateFootnoteView() {
+ // Use BoxLayout to provide insets around the label.
+ scoped_ptr<View> view(new View());
+ int horizontal_inset = GetBubbleFrameView()->GetTitleInsets().left();
Evan Stade 2015/11/18 00:21:13 don't need this local var
bondd 2015/11/18 01:59:40 Done.
+ view->SetLayoutManager(
+ new views::BoxLayout(views::BoxLayout::kVertical, horizontal_inset,
+ views::kRelatedControlVerticalSpacing, 0));
+ view->SetBorder(
+ views::Border::CreateSolidSidedBorder(1, 0, 0, 0, kSubtleBorderColor));
+ view->set_background(
+ views::Background::CreateSolidBackground(kLightShadingColor));
+
+ // Add a StyledLabel for each line of the legal message.
+ for (size_t i = 0; i < controller_->GetLegalMessageLines().size(); ++i) {
+ views::StyledLabel* label = CreateLegalMessageLineLabel(
+ controller_->GetLegalMessageLines()[i], this);
Evan Stade 2015/11/18 00:21:13 no need for a local var for this
bondd 2015/11/18 01:59:40 Done.
+ view->AddChildView(label);
+ }
+
+ return view;
+}
+
+void SaveCardBubbleViews::Init() {
+ SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
+ AddChildView(CreateMainContentView().release());
+ if (!controller_->GetLegalMessageLines().empty())
+ AddChildView(CreateFootnoteView().release());
+
set_margins(gfx::Insets(1, 0, 1, 0));
- Layout();
}
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698