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

Unified Diff: chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc

Issue 10332185: Update behavior of one-click infobar to remove modal dialog, add "undo". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 7 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/sync/one_click_signin_bubble_view.cc
diff --git a/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc b/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
index 0c2281d6419510444472a1f5bf8bd00f4e1dc85a..40a9f01902cfdfaad2d05df44a206b32bacc365d 100644
--- a/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
+++ b/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h"
+#include "base/callback_helpers.h"
#include "base/logging.h"
#include "base/message_loop.h"
#include "chrome/browser/google/google_util.h"
@@ -21,11 +22,9 @@
#include "ui/views/layout/grid_layout.h"
#include "ui/views/layout/layout_constants.h"
-// Minimum width for the fields - they will push out the size of the bubble if
-// necessary. This should be big enough so that the field pushes the right side
-// of the bubble far enough so that the edit button's left edge is to the right
-// of the field's left edge.
-const int kMinimumFieldSize = 240;
+// Minimum width for the mutli-line label.
+const int kMinimumLabelWidth = 240;
+
// BookmarkBubbleView ---------------------------------------------------------
@@ -35,14 +34,12 @@ OneClickSigninBubbleView* OneClickSigninBubbleView::bubble_view_ = NULL;
// static
void OneClickSigninBubbleView::ShowBubble(
views::View* anchor_view,
- const base::Closure& learn_more_callback,
- const base::Closure& advanced_callback) {
+ const BrowserWindow::StartSyncCallback& start_sync) {
if (IsShowing())
return;
bubble_view_ =
- new OneClickSigninBubbleView(anchor_view, learn_more_callback,
- advanced_callback);
+ new OneClickSigninBubbleView(anchor_view, start_sync);
views::BubbleDelegateView::CreateBubble(bubble_view_);
bubble_view_->Show();
}
@@ -60,17 +57,14 @@ void OneClickSigninBubbleView::Hide() {
OneClickSigninBubbleView::OneClickSigninBubbleView(
views::View* anchor_view,
- const base::Closure& learn_more_callback,
- const base::Closure& advanced_callback)
+ const BrowserWindow::StartSyncCallback& start_sync_callback)
: BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
- learn_more_link_(NULL),
advanced_link_(NULL),
- close_button_(NULL),
- learn_more_callback_(learn_more_callback),
- advanced_callback_(advanced_callback),
+ ok_button_(NULL),
+ undo_button_(NULL),
+ start_sync_callback_(start_sync_callback),
message_loop_for_testing_(NULL) {
- DCHECK(!learn_more_callback_.is_null());
- DCHECK(!advanced_callback_.is_null());
+ DCHECK(!start_sync_callback_.is_null());
}
OneClickSigninBubbleView::~OneClickSigninBubbleView() {
@@ -95,35 +89,28 @@ void OneClickSigninBubbleView::Init() {
// Column set for descriptive text and link.
views::ColumnSet* cs = layout->AddColumnSet(kColumnSetFillAlign);
cs->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 0,
- views::GridLayout::USE_PREF, 0, kMinimumFieldSize);
+ views::GridLayout::USE_PREF, 0, kMinimumLabelWidth);
cs = layout->AddColumnSet(kColumnSetControls);
cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
views::GridLayout::USE_PREF, 0, 0);
- cs->AddPaddingColumn(1, 0);
+ cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing);
+ cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
+ views::GridLayout::USE_PREF, 0, 0);
+ cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
views::GridLayout::USE_PREF, 0, 0);
// Add main text description.
views::Label* label = new views::Label(
- l10n_util::GetStringFUTF16(IDS_SYNC_PROMO_NTP_BUBBLE_MESSAGE,
- l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
+ l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_BUBBLE_MESSAGE));
label->SetMultiLine(true);
label->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- label->SizeToFit(kMinimumFieldSize);
+ label->SizeToFit(kMinimumLabelWidth);
layout->StartRow(0, kColumnSetFillAlign);
layout->AddView(label);
- // Add link for user to learn more about sync.
- learn_more_link_= new views::Link(
- l10n_util::GetStringUTF16(IDS_SYNC_PROMO_NTP_BUBBLE_LEARN_MORE));
- learn_more_link_->set_listener(this);
- learn_more_link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
-
- layout->StartRow(0, kColumnSetFillAlign);
- layout->AddView(learn_more_link_);
-
layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing);
// Add link for user to do advanced config of sync.
@@ -133,13 +120,27 @@ void OneClickSigninBubbleView::Init() {
advanced_link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
// Add controls at the bottom.
- close_button_ = new views::NativeTextButton(
- this, l10n_util::GetStringUTF16(IDS_OK));
- close_button_->SetIsDefault(true);
+ ok_button_ = new views::NativeTextButton(this);
+ ok_button_->SetIsDefault(true);
+
+ undo_button_ = new views::NativeTextButton(this);
+
+ // The default size of the buttons is too large. To allow them to be smaller
+ // ignore the minimum default size. Furthermore, to make sure they are the
+ // same size, SetText() is called with both strings on both buttons.
+ ok_button_->set_ignore_minimum_size(true);
+ undo_button_->set_ignore_minimum_size(true);
+ string16 ok_label = l10n_util::GetStringUTF16(IDS_OK);
+ string16 undo_label = l10n_util::GetStringUTF16(IDS_ONE_CLICK_BUBBLE_UNDO);
+ ok_button_->SetText(undo_label);
+ ok_button_->SetText(ok_label);
+ undo_button_->SetText(ok_label);
+ undo_button_->SetText(undo_label);
layout->StartRow(0, kColumnSetControls);
layout->AddView(advanced_link_);
- layout->AddView(close_button_);
+ layout->AddView(ok_button_);
+ layout->AddView(undo_button_);
AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, 0));
}
@@ -150,13 +151,25 @@ void OneClickSigninBubbleView::WindowClosing() {
// before then.
DCHECK(bubble_view_ == this);
bubble_view_ = NULL;
- }
+
+ if (!start_sync_callback_.is_null()) {
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
+ }
+}
bool OneClickSigninBubbleView::AcceleratorPressed(
const ui::Accelerator& accelerator) {
if (accelerator.key_code() == ui::VKEY_RETURN ||
accelerator.key_code() == ui::VKEY_ESCAPE) {
StartFade(false);
+ if (accelerator.key_code() == ui::VKEY_RETURN) {
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
+ } else {
+ start_sync_callback_.Reset();
+ }
+
return true;
}
@@ -166,15 +179,17 @@ bool OneClickSigninBubbleView::AcceleratorPressed(
void OneClickSigninBubbleView::LinkClicked(views::Link* source,
int event_flags) {
StartFade(false);
-
- if (source == learn_more_link_)
- learn_more_callback_.Run();
- else
- advanced_callback_.Run();
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST);
}
void OneClickSigninBubbleView::ButtonPressed(views::Button* sender,
const views::Event& event) {
- DCHECK_EQ(close_button_, sender);
StartFade(false);
+ if (ok_button_ == sender) {
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
+ } else {
+ start_sync_callback_.Reset();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698