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

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

Issue 12225095: Interactive autofill: Adds footnote view to accept legal documents in the UI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 10 months 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/autofill_dialog_views.cc
diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
index c4786fbe95711f1c4cb9145e9b10f4d9c593cd8b..db687d507060f11295127e3100a65aabb39daa21 100644
--- a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
+++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
@@ -332,6 +332,7 @@ void AutofillDialogViews::SuggestionView::ShowTextfield(
}
// AutofilDialogViews::AutocheckoutProgressBar ---------------------------------
+
AutofillDialogViews::AutocheckoutProgressBar::AutocheckoutProgressBar() {}
gfx::Size AutofillDialogViews::AutocheckoutProgressBar::GetPreferredSize() {
@@ -365,6 +366,9 @@ AutofillDialogViews::AutofillDialogViews(AutofillDialogController* controller)
save_in_chrome_checkbox_(NULL),
autocheckout_progress_bar_view_(NULL),
autocheckout_progress_bar_(NULL),
+ footnote_view_(NULL),
+ terms_of_service_link_(NULL),
+ privacy_policy_link_(NULL),
focus_manager_(NULL) {
DCHECK(controller);
detail_groups_.insert(std::make_pair(SECTION_EMAIL,
@@ -385,6 +389,7 @@ void AutofillDialogViews::Show() {
InitChildViews();
UpdateAccountChooser();
UpdateNotificationArea();
+ UpdateFootnote();
// Ownership of |contents_| is handed off by this call. The
// WebContentsModalDialog will take care of deleting itself after calling
@@ -479,6 +484,17 @@ void AutofillDialogViews::UpdateProgressBar(double value) {
autocheckout_progress_bar_->SetValue(value);
}
+void AutofillDialogViews::UpdateFootnote() {
+ footnote_view_->SetVisible(controller_->IsFootnoteShowing());
+ footnote_view_->SetSize(
Evan Stade 2013/02/08 15:38:53 You shouldn't have to explicitly set the size.
Dan Beam 2013/02/08 20:53:06 I did when I wanted to make this wrap, otherwise i
+ gfx::Size(contents_->width(), footnote_view_->height()));
+
+ if (GetWidget())
+ GetWidget()->SetSize(GetWidget()->non_client_view()->GetPreferredSize());
+
+ contents_->Layout();
+}
+
string16 AutofillDialogViews::GetWindowTitle() const {
return controller_->DialogTitle();
}
@@ -520,8 +536,7 @@ views::View* AutofillDialogViews::GetExtraView() {
}
views::View* AutofillDialogViews::GetFootnoteView() {
- // TODO(estade): add a view to contain the terms of service.
- return NULL;
+ return footnote_view_;
}
bool AutofillDialogViews::Cancel() {
@@ -602,18 +617,20 @@ void AutofillDialogViews::OnDidChangeFocus(
views::View* focused_now) {}
void AutofillDialogViews::LinkClicked(views::Link* source, int event_flags) {
- // Sign in link.
if (source == sign_in_link_) {
controller_->StartSignInFlow();
- return;
- }
-
- // Edit links.
- for (DetailGroupMap::iterator iter = detail_groups_.begin();
- iter != detail_groups_.end(); ++iter) {
- if (iter->second.suggested_info->Contains(source)) {
- controller_->EditClickedForSection(iter->first);
- return;
+ } else if (source == terms_of_service_link_) {
+ controller_->ShowTermsOfService();
+ } else if (source == privacy_policy_link_) {
+ controller_->ShowPrivacyPolicy();
+ } else {
+ // Edit links.
+ for (DetailGroupMap::iterator iter = detail_groups_.begin();
+ iter != detail_groups_.end(); ++iter) {
+ if (iter->second.suggested_info->Contains(source)) {
+ controller_->EditClickedForSection(iter->first);
+ return;
+ }
}
}
}
@@ -647,6 +664,95 @@ void AutofillDialogViews::InitChildViews() {
new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
contents_->AddChildView(CreateMainContainer());
contents_->AddChildView(CreateSignInContainer());
+
+ footnote_view_ = new views::View();
Evan Stade 2013/02/08 15:38:53 Can you pull this new code into a separate functio
Dan Beam 2013/02/08 20:53:06 Done.
+ footnote_view_->set_border(views::Border::CreateEmptyBorder(
+ views::kUnrelatedControlVerticalSpacing, 0, 0, 0));
+
+ views::BoxLayout* box_layout =
+ new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0);
+ box_layout->set_spread_blank_space(true);
+ footnote_view_->SetLayoutManager(box_layout);
+
+ // TODO(dbeam): pull out hardcoded colors / theme?
+ views::View* footnote_padding = new views::View();
+ footnote_padding->set_background(views::Background::CreateSolidBackground(
+ SkColorSetRGB(0xf3, 0xf3, 0xf4)));
+ footnote_padding->set_border(views::Border::CreateSolidSidedBorder(
+ 1, 0, 0, 0, SkColorSetRGB(0xea, 0xea, 0xeb)));
+
+ footnote_view_->AddChildView(footnote_padding);
+
+ views::GridLayout* padding_layout = new views::GridLayout(footnote_padding);
+ footnote_padding->SetLayoutManager(padding_layout);
+
+ const std::pair<std::vector<string16>, string16>& footnote_parts =
+ controller_->FootnoteTextParts();
+
+ const int links_column_set = 1;
+ views::ColumnSet* column_set = padding_layout->AddColumnSet(links_column_set);
+
+ for (size_t i = 0; i < footnote_parts.first.size(); ++i) {
+ column_set->AddColumn(views::GridLayout::LEADING,
+ views::GridLayout::FILL,
+ 1,
+ views::GridLayout::USE_PREF,
+ 0,
+ 0);
+ }
+
+ column_set->AddColumn(views::GridLayout::FILL,
+ views::GridLayout::FILL,
+ 1,
+ views::GridLayout::USE_PREF,
+ 0,
+ 0);
+
+ // Padding between border and slew of labels/links.
+ padding_layout->StartRowWithPadding(
+ 0, links_column_set, 0, views::kUnrelatedControlVerticalSpacing);
+
+ // ""
+ padding_layout->AddView(new views::Label(footnote_parts.first[0]));
+
+ // "Google Wallet Terms of Service" (link).
+ terms_of_service_link_ = new views::Link(footnote_parts.first[1]);
+ terms_of_service_link_->set_listener(this);
+ padding_layout->AddView(terms_of_service_link_);
+
+ // " and ".
+ padding_layout->AddView(new views::Label(footnote_parts.first[2]));
+
+ // "Privacy Policy" (link).
+ privacy_policy_link_ = new views::Link(footnote_parts.first[3]);
+ privacy_policy_link_->set_listener(this);
+ padding_layout->AddView(privacy_policy_link_);
+
+ // " have been updated.".
+ padding_layout->AddView(new views::Label(footnote_parts.first[4]));
+
+ // TODO(dbeam): make this padding column work.
Evan Stade 2013/02/08 15:38:53 Please fix this instead of leaving a todo
Dan Beam 2013/02/08 20:53:06 Done. (that sucked)
+ padding_layout->SkipColumns(1);
+
+ const int full_width = 2;
Evan Stade 2013/02/08 15:38:53 full_width_column_set
Dan Beam 2013/02/08 20:53:06 Done.
+ padding_layout->AddColumnSet(full_width)->AddColumn(
+ views::GridLayout::FILL,
+ views::GridLayout::FILL,
+ 1,
+ views::GridLayout::USE_PREF,
+ 0,
+ 0);
+
+ // "By clicking submit you verify that you accept these changes.".
+ views::Label* accept_these_changes = new views::Label(footnote_parts.second);
+ accept_these_changes->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+
+ padding_layout->StartRowWithPadding(
+ 0, full_width, 0, views::kRelatedControlVerticalSpacing);
+ padding_layout->AddView(accept_these_changes);
+
+ padding_layout->StartRowWithPadding(
+ 0, full_width, 0, views::kUnrelatedControlVerticalSpacing);
}
views::View* AutofillDialogViews::CreateSignInContainer() {

Powered by Google App Engine
This is Rietveld 408576698