| 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..34d11a7faea1bd4493ea72bf35f3895743752722 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"
|
| @@ -27,6 +28,11 @@
|
| // of the field's left edge.
|
| const int kMinimumFieldSize = 240;
|
|
|
| +// Button width. The default width of NativeTextButtons is too large for this
|
| +// bubble.
|
| +const int kButtonWidth = 64;
|
| +
|
| +
|
| // BookmarkBubbleView ---------------------------------------------------------
|
|
|
| // static
|
| @@ -35,14 +41,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 OneClickSigninBubbleCallback& 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 +64,14 @@ void OneClickSigninBubbleView::Hide() {
|
|
|
| OneClickSigninBubbleView::OneClickSigninBubbleView(
|
| views::View* anchor_view,
|
| - const base::Closure& learn_more_callback,
|
| - const base::Closure& advanced_callback)
|
| + const OneClickSigninBubbleCallback& 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() {
|
| @@ -102,12 +103,14 @@ void OneClickSigninBubbleView::Init() {
|
| views::GridLayout::USE_PREF, 0, 0);
|
| cs->AddPaddingColumn(1, 0);
|
| cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| + views::GridLayout::FIXED, kButtonWidth, 0);
|
| + cs->AddPaddingColumn(0, 5);
|
| + cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| + views::GridLayout::FIXED, kButtonWidth, 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);
|
| @@ -115,16 +118,7 @@ void OneClickSigninBubbleView::Init() {
|
| 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);
|
| + layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing);
|
|
|
| // Add link for user to do advanced config of sync.
|
| advanced_link_= new views::Link(
|
| @@ -133,13 +127,17 @@ void OneClickSigninBubbleView::Init() {
|
| advanced_link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
|
|
|
| // Add controls at the bottom.
|
| - close_button_ = new views::NativeTextButton(
|
| + ok_button_ = new views::NativeTextButton(
|
| this, l10n_util::GetStringUTF16(IDS_OK));
|
| - close_button_->SetIsDefault(true);
|
| + ok_button_->SetIsDefault(true);
|
| +
|
| + undo_button_ = new views::NativeTextButton(
|
| + this, l10n_util::GetStringUTF16(IDS_ONE_CLICK_BUBBLE_UNDO));
|
|
|
| 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 +148,22 @@ void OneClickSigninBubbleView::WindowClosing() {
|
| // before then.
|
| DCHECK(bubble_view_ == this);
|
| bubble_view_ = NULL;
|
| - }
|
| +
|
| + if (!start_sync_callback_.is_null())
|
| + base::ResetAndReturn(&start_sync_callback_).Run(true);
|
| +}
|
|
|
| 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(true);
|
| + } else {
|
| + start_sync_callback_.Reset();
|
| + }
|
| +
|
| return true;
|
| }
|
|
|
| @@ -166,15 +173,15 @@ 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(false);
|
| }
|
|
|
| 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(true);
|
| + } else {
|
| + start_sync_callback_.Reset();
|
| + }
|
| }
|
|
|