Index: chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc |
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc |
index f8f08d6fbd6dae7c821836692877af401d427336..d74dc3800d11f0a6ff24b00be3ce0ea014aeea35 100644 |
--- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc |
+++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc |
@@ -24,6 +24,7 @@ |
#include "ui/views/controls/button/blue_button.h" |
#include "ui/views/controls/button/label_button.h" |
#include "ui/views/controls/combobox/combobox.h" |
+#include "ui/views/controls/styled_label.h" |
#include "ui/views/layout/fill_layout.h" |
#include "ui/views/layout/grid_layout.h" |
#include "ui/views/layout/layout_constants.h" |
@@ -50,6 +51,11 @@ enum ColumnSetType { |
// Used for buttons at the bottom of the bubble which should occupy |
// the corners. |
LINK_BUTTON_COLUMN_SET = 2, |
+ |
+ // | | (TRAILING, CENTER) | | |
+ // Used when there is only one button which should next at the bottom-right |
+ // corner. |
+ SINGLE_BUTTON_COLUMN_SET = 3, |
}; |
// Construct an appropriate ColumnSet for the given |type|, and add it |
@@ -98,6 +104,13 @@ void BuildColumnSet(views::GridLayout* layout, ColumnSetType type) { |
0, |
0); |
break; |
+ case SINGLE_BUTTON_COLUMN_SET: |
+ column_set->AddColumn(views::GridLayout::TRAILING, |
+ views::GridLayout::CENTER, |
+ 1, |
+ views::GridLayout::USE_PREF, |
+ 0, |
+ 0); |
} |
column_set->AddPaddingColumn(0, views::kPanelHorizMargin); |
} |
@@ -130,8 +143,7 @@ void ShowManagePasswordsBubble(content::WebContents* web_contents) { |
ManagePasswordsUIController::FromWebContents(web_contents); |
ManagePasswordsBubbleView::ShowBubble( |
web_contents, |
- controller->state() == |
- password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE |
+ password_manager::ui::IsAutomaticDisplayState(controller->state()) |
? ManagePasswordsBubbleView::AUTOMATIC |
: ManagePasswordsBubbleView::USER_ACTION); |
} |
@@ -297,7 +309,7 @@ ManagePasswordsBubbleView::ManageView::ManageView( |
// them to the user for management. Otherwise, render a "No passwords for |
// this site" message. |
if (!parent_->model()->best_matches().empty()) { |
- for (autofill::PasswordFormMap::const_iterator i( |
+ for (autofill::ConstPasswordFormMap::const_iterator i( |
parent_->model()->best_matches().begin()); |
i != parent_->model()->best_matches().end(); |
++i) { |
@@ -427,6 +439,62 @@ void ManagePasswordsBubbleView::BlacklistedView::ButtonPressed( |
parent_->Close(); |
} |
+// ManagePasswordsBubbleView::SaveConfirmationView ---------------------------- |
+ |
+ManagePasswordsBubbleView::SaveConfirmationView::SaveConfirmationView( |
+ ManagePasswordsBubbleView* parent) |
+ : parent_(parent) { |
+ views::GridLayout* layout = new views::GridLayout(this); |
+ layout->set_minimum_size(gfx::Size(kDesiredBubbleWidth, 0)); |
+ SetLayoutManager(layout); |
+ |
+ BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET); |
+ AddTitleRow(layout, parent_->model()); |
+ |
+ views::StyledLabel* confirmation = |
+ new views::StyledLabel(parent_->model()->save_confirmation_text(), this); |
+ confirmation->SetBaseFontList( |
+ ui::ResourceBundle::GetSharedInstance().GetFontList( |
+ ui::ResourceBundle::SmallFont)); |
+ confirmation->AddStyleRange( |
+ parent_->model()->save_confirmation_link_range(), |
+ views::StyledLabel::RangeStyleInfo::CreateForLink()); |
+ |
+ layout->StartRow(0, SINGLE_VIEW_COLUMN_SET); |
+ layout->AddView(confirmation); |
+ |
+ ok_button_ = |
+ new views::LabelButton(this, l10n_util::GetStringUTF16(IDS_OK)); |
+ ok_button_->SetStyle(views::Button::STYLE_BUTTON); |
+ ok_button_->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList( |
+ ui::ResourceBundle::SmallFont)); |
+ |
+ BuildColumnSet(layout, SINGLE_BUTTON_COLUMN_SET); |
+ layout->StartRowWithPadding( |
+ 0, SINGLE_BUTTON_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing); |
+ layout->AddView(ok_button_); |
+ |
+ // Extra padding for visual awesomeness. |
+ layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); |
+} |
+ |
+ManagePasswordsBubbleView::SaveConfirmationView::~SaveConfirmationView() { |
+} |
+ |
+void ManagePasswordsBubbleView::SaveConfirmationView::StyledLabelLinkClicked( |
+ const gfx::Range& range, int event_flags) { |
+ DCHECK_EQ(range, parent_->model()->save_confirmation_link_range()); |
+ parent_->model()->OnRemoteManageLinkClicked(); |
+ parent_->Close(); |
+} |
+ |
+void ManagePasswordsBubbleView::SaveConfirmationView::ButtonPressed( |
+ views::Button* sender, const ui::Event& event) { |
+ DCHECK_EQ(sender, ok_button_); |
+ parent_->model()->OnOKClicked(); |
+ parent_->Close(); |
+} |
+ |
// ManagePasswordsBubbleView -------------------------------------------------- |
// static |
@@ -546,6 +614,8 @@ void ManagePasswordsBubbleView::Refresh() { |
AddChildView(new PendingView(this)); |
} else if (model()->state() == password_manager::ui::BLACKLIST_STATE) { |
AddChildView(new BlacklistedView(this)); |
+ } else if (model()->state() == password_manager::ui::CONFIRMATION_STATE) { |
+ AddChildView(new SaveConfirmationView(this)); |
} else { |
AddChildView(new ManageView(this)); |
} |