| 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();
|
| + }
|
| }
|
|
|