| 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 500c70144907d218abcc2e341e3531b5dd47087e..0fc5a0dd2053a8a72fbb4762a05af0fffb468bcc 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
|
| @@ -7,7 +7,6 @@
|
| #include "base/callback_helpers.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop.h"
|
| -#include "base/utf_string_conversions.h"
|
| #include "chrome/browser/google/google_util.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/sync/one_click_signin_helper.h"
|
| @@ -30,7 +29,7 @@
|
| #include "ui/views/layout/layout_constants.h"
|
| #include "ui/views/widget/widget.h"
|
|
|
| -// Minimum width for the mutli-line label.
|
| +// Minimum width for the multi-line label.
|
| const int kMinimumDialogLabelWidth = 400;
|
| const int kMinimumLabelWidth = 240;
|
| const int kDialogMargin = 16;
|
| @@ -44,227 +43,8 @@ enum OneClickSigninBubbleColumnTypes {
|
| COLUMN_SET_CONTROLS,
|
| COLUMN_SET_TITLE_BAR
|
| };
|
| -
|
| -class OneClickSigninDialogView : public OneClickSigninBubbleView {
|
| - public:
|
| - OneClickSigninDialogView(
|
| - content::WebContents* web_content,
|
| - views::View* anchor_view,
|
| - const string16& email,
|
| - const BrowserWindow::StartSyncCallback& start_sync_callback);
|
| -
|
| - private:
|
| - // Overridden from views::WidgetDelegate:
|
| - virtual ui::ModalType GetModalType() const OVERRIDE;
|
| -
|
| - // Overridden from OneClickSigninBubbleView:
|
| - virtual void InitContent(views::GridLayout* layout) OVERRIDE;
|
| - virtual void GetButtons(views::LabelButton** ok_button,
|
| - views::LabelButton** undo_button) OVERRIDE;
|
| - virtual views::Link* CreateAdvancedLink() OVERRIDE;
|
| -
|
| - // Overridden from views::LinkListener:
|
| - virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
|
| -
|
| - // Overridden from views::ButtonListener:
|
| - virtual void ButtonPressed(views::Button* sender,
|
| - const ui::Event& event) OVERRIDE;
|
| -
|
| - // views::View method:
|
| - virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
|
| -
|
| - const string16 email_;
|
| - content::WebContents* web_content_;
|
| - views::Link* learn_more_link_;
|
| - views::ImageButton* close_button_;
|
| -
|
| - bool clicked_learn_more_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(OneClickSigninDialogView);
|
| -};
|
| -
|
| -OneClickSigninDialogView::OneClickSigninDialogView(
|
| - content::WebContents* web_content,
|
| - views::View* anchor_view,
|
| - const string16& email,
|
| - const BrowserWindow::StartSyncCallback& start_sync_callback)
|
| - : OneClickSigninBubbleView(anchor_view, start_sync_callback),
|
| - email_(email),
|
| - web_content_(web_content),
|
| - learn_more_link_(NULL),
|
| - close_button_(NULL),
|
| - clicked_learn_more_(false) {
|
| - set_arrow(views::BubbleBorder::NONE);
|
| - set_anchor_view_insets(gfx::Insets(0, 0, anchor_view->height() / 2, 0));
|
| - set_close_on_deactivate(false);
|
| - set_margins(gfx::Insets(kDialogMargin, kDialogMargin, kDialogMargin,
|
| - kDialogMargin));
|
| -}
|
| -
|
| -ui::ModalType OneClickSigninDialogView::GetModalType() const {
|
| - return ui::MODAL_TYPE_CHILD;
|
| -}
|
| -
|
| -void OneClickSigninDialogView::InitContent(views::GridLayout* layout) {
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - one_click_signin::HISTOGRAM_CONFIRM_SHOWN);
|
| -
|
| - // Column set for title bar.
|
| - views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_TITLE_BAR);
|
| - cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| - cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing);
|
| - cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| -
|
| - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| -
|
| - {
|
| - layout->StartRow(0, COLUMN_SET_TITLE_BAR);
|
| -
|
| - views::Label* label = new views::Label(email_.empty() ?
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE) :
|
| - l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW,
|
| - email_));
|
| - label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - label->SetFont(label->font().DeriveFont(3, gfx::Font::BOLD));
|
| - layout->AddView(label);
|
| -
|
| - close_button_ = new views::ImageButton(this);
|
| - close_button_->SetImage(views::ImageButton::STATE_NORMAL,
|
| - rb.GetImageNamed(IDR_CLOSE_2).ToImageSkia());
|
| - close_button_->SetImage(views::ImageButton::STATE_HOVERED,
|
| - rb.GetImageNamed(IDR_CLOSE_2_H).ToImageSkia());
|
| - close_button_->SetImage(views::ImageButton::STATE_PRESSED,
|
| - rb.GetImageNamed(IDR_CLOSE_2_P).ToImageSkia());
|
| - layout->AddView(close_button_);
|
| - }
|
| -
|
| - layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| -
|
| - {
|
| - layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| -
|
| - views::Label* label = new views::Label(email_.empty() ?
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE) :
|
| - l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE_NEW,
|
| - email_));
|
| - label->SetMultiLine(true);
|
| - label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - label->SizeToFit(kMinimumDialogLabelWidth);
|
| - layout->AddView(label);
|
| -
|
| - layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| -
|
| - learn_more_link_ = new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_LEARN_MORE));
|
| - learn_more_link_->set_listener(this);
|
| - learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - layout->AddView(learn_more_link_, 1, 1, views::GridLayout::TRAILING,
|
| - views::GridLayout::CENTER);
|
| - }
|
| -
|
| - layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| -}
|
| -
|
| -void OneClickSigninDialogView::GetButtons(views::LabelButton** ok_button,
|
| - views::LabelButton** undo_button) {
|
| - *ok_button = new views::LabelButton(this, string16());
|
| - (*ok_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| -
|
| - *undo_button = new views::LabelButton(this, string16());
|
| - (*undo_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| -
|
| - // 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_min_size(gfx::Size());
|
| - (*undo_button)->set_min_size(gfx::Size());
|
| - string16 ok_label =
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_OK_BUTTON);
|
| - string16 undo_label =
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_UNDO_BUTTON);
|
| - (*ok_button)->SetText(undo_label);
|
| - (*ok_button)->SetText(ok_label);
|
| - (*undo_button)->SetText(ok_label);
|
| - (*undo_button)->SetText(undo_label);
|
| -}
|
| -
|
| -views::Link* OneClickSigninDialogView::CreateAdvancedLink() {
|
| - views::Link* advanced_link= new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED));
|
| - advanced_link->set_listener(this);
|
| - advanced_link->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - return advanced_link;
|
| -}
|
| -
|
| -void OneClickSigninDialogView::LinkClicked(views::Link* source,
|
| - int event_flags) {
|
| - if (source == learn_more_link_) {
|
| - if (!clicked_learn_more_) {
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE);
|
| - clicked_learn_more_ = true;
|
| - }
|
| - content::OpenURLParams params(
|
| - GURL(chrome::kChromeSyncLearnMoreURL), content::Referrer(),
|
| - NEW_WINDOW, content::PAGE_TRANSITION_LINK, false);
|
| - web_content_->OpenURL(params);
|
| - return;
|
| - }
|
| -
|
| - if (source == GetAdvancedLink())
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - clicked_learn_more_ ?
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_ADVANCED :
|
| - one_click_signin::HISTOGRAM_CONFIRM_ADVANCED);
|
| -
|
| - OneClickSigninBubbleView::LinkClicked(source, event_flags);
|
| -}
|
| -
|
| -void OneClickSigninDialogView::ButtonPressed(views::Button* sender,
|
| - const ui::Event& event) {
|
| - if (sender == GetOkButton())
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - clicked_learn_more_ ?
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_OK :
|
| - one_click_signin::HISTOGRAM_CONFIRM_OK);
|
| -
|
| - if (sender == GetUndoButton())
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - clicked_learn_more_ ?
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_UNDO :
|
| - one_click_signin::HISTOGRAM_CONFIRM_UNDO);
|
| -
|
| - if (sender == close_button_)
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - clicked_learn_more_ ?
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_CLOSE :
|
| - one_click_signin::HISTOGRAM_CONFIRM_CLOSE);
|
| -
|
| -
|
| - OneClickSigninBubbleView::ButtonPressed(sender, event);
|
| -}
|
| -
|
| -bool OneClickSigninDialogView::AcceleratorPressed(
|
| - const ui::Accelerator& accelerator) {
|
| - if (accelerator.key_code() == ui::VKEY_RETURN)
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - clicked_learn_more_ ?
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_RETURN :
|
| - one_click_signin::HISTOGRAM_CONFIRM_RETURN);
|
| - if (accelerator.key_code() == ui::VKEY_ESCAPE)
|
| - OneClickSigninHelper::LogConfirmHistogramValue(
|
| - clicked_learn_more_ ?
|
| - one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_ESCAPE :
|
| - one_click_signin::HISTOGRAM_CONFIRM_ESCAPE);
|
| - return OneClickSigninBubbleView::AcceleratorPressed(accelerator);
|
| -}
|
| -
|
| } // namespace
|
|
|
| -// OneClickSigninBubbleView ----------------------------------------------------
|
| -
|
| // static
|
| OneClickSigninBubbleView* OneClickSigninBubbleView::bubble_view_ = NULL;
|
|
|
| @@ -272,6 +52,7 @@ OneClickSigninBubbleView* OneClickSigninBubbleView::bubble_view_ = NULL;
|
| void OneClickSigninBubbleView::ShowBubble(
|
| BrowserWindow::OneClickSigninBubbleType type,
|
| const string16& email,
|
| + const string16& error_message,
|
| ToolbarView* toolbar_view,
|
| const BrowserWindow::StartSyncCallback& start_sync) {
|
| if (IsShowing())
|
| @@ -279,18 +60,19 @@ void OneClickSigninBubbleView::ShowBubble(
|
|
|
| switch (type) {
|
| case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE:
|
| - bubble_view_ = new OneClickSigninBubbleView(toolbar_view->app_menu(),
|
| - start_sync);
|
| + bubble_view_ = new OneClickSigninBubbleView(
|
| + toolbar_view->GetWebContents(), toolbar_view->app_menu(),
|
| + error_message, string16(), start_sync, false);
|
| break;
|
| case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG:
|
| - bubble_view_ = new OneClickSigninDialogView(
|
| + bubble_view_ = new OneClickSigninBubbleView(
|
| toolbar_view->GetWebContents(), toolbar_view->location_bar(),
|
| - string16(), start_sync);
|
| + string16(), string16(), start_sync, true);
|
| break;
|
| case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_SAML_MODAL_DIALOG:
|
| - bubble_view_ = new OneClickSigninDialogView(
|
| + bubble_view_ = new OneClickSigninBubbleView(
|
| toolbar_view->GetWebContents(), toolbar_view->location_bar(),
|
| - email, start_sync);
|
| + string16(), email, start_sync, true);
|
| break;
|
| }
|
|
|
| @@ -309,20 +91,42 @@ void OneClickSigninBubbleView::Hide() {
|
| }
|
|
|
| OneClickSigninBubbleView::OneClickSigninBubbleView(
|
| + content::WebContents* web_contents,
|
| views::View* anchor_view,
|
| - const BrowserWindow::StartSyncCallback& start_sync_callback)
|
| + const string16& error_message,
|
| + const string16& email,
|
| + const BrowserWindow::StartSyncCallback& start_sync_callback,
|
| + bool is_sync_dialog)
|
| : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
|
| + web_contents_(web_contents),
|
| + error_message_(error_message),
|
| + email_(email),
|
| + start_sync_callback_(start_sync_callback),
|
| + is_sync_dialog_(is_sync_dialog),
|
| advanced_link_(NULL),
|
| + learn_more_link_(NULL),
|
| ok_button_(NULL),
|
| undo_button_(NULL),
|
| - start_sync_callback_(start_sync_callback),
|
| + close_button_(NULL),
|
| + clicked_learn_more_(false),
|
| message_loop_for_testing_(NULL) {
|
| - DCHECK(!start_sync_callback_.is_null());
|
| + if (is_sync_dialog_) {
|
| + DCHECK(!start_sync_callback_.is_null());
|
| + set_arrow(views::BubbleBorder::NONE);
|
| + set_anchor_view_insets(gfx::Insets(0, 0, anchor_view->height() / 2, 0));
|
| + set_close_on_deactivate(false);
|
| + set_margins(gfx::Insets(kDialogMargin, kDialogMargin, kDialogMargin,
|
| + kDialogMargin));
|
| + }
|
| }
|
|
|
| OneClickSigninBubbleView::~OneClickSigninBubbleView() {
|
| }
|
|
|
| +ui::ModalType OneClickSigninBubbleView::GetModalType() const {
|
| + return is_sync_dialog_? ui::MODAL_TYPE_CHILD : ui::MODAL_TYPE_NONE;
|
| +}
|
| +
|
| void OneClickSigninBubbleView::AnimationEnded(const ui::Animation* animation) {
|
| views::BubbleDelegateView::AnimationEnded(animation);
|
| if (message_loop_for_testing_)
|
| @@ -350,33 +154,106 @@ void OneClickSigninBubbleView::Init() {
|
| cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| views::GridLayout::USE_PREF, 0, 0);
|
|
|
| - InitContent(layout);
|
| + is_sync_dialog_ ? InitDialogContent(layout) : InitBubbleContent(layout);
|
|
|
| // Add controls at the bottom.
|
| - advanced_link_= CreateAdvancedLink();
|
| - GetButtons(&ok_button_, &undo_button_);
|
| - ok_button_->SetIsDefault(true);
|
| + InitAdvancedLink();
|
|
|
| layout->StartRow(0, COLUMN_SET_CONTROLS);
|
| layout->AddView(advanced_link_);
|
| - layout->AddView(ok_button_);
|
| - layout->AddView(undo_button_);
|
| +
|
| + InitButtons(layout);
|
| + ok_button_->SetIsDefault(true);
|
|
|
| AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, 0));
|
| }
|
|
|
| -void OneClickSigninBubbleView::InitContent(views::GridLayout* layout) {
|
| +void OneClickSigninBubbleView::InitBubbleContent(views::GridLayout* layout) {
|
| // Add main text description.
|
| - views::Label* label = new views::Label(
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_BUBBLE_MESSAGE));
|
| + layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| +
|
| + views::Label* label = !error_message_.empty() ?
|
| + new views::Label(error_message_) :
|
| + new views::Label(
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_BUBBLE_MESSAGE));
|
| +
|
| label->SetMultiLine(true);
|
| label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| label->SizeToFit(kMinimumLabelWidth);
|
| -
|
| - layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| layout->AddView(label);
|
|
|
| - layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing);
|
| + layout->StartRow(0, COLUMN_SET_CONTROLS);
|
| +
|
| + InitLearnMoreLink();
|
| + layout->AddView(learn_more_link_);
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::InitDialogContent(views::GridLayout* layout) {
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + one_click_signin::HISTOGRAM_CONFIRM_SHOWN);
|
| +
|
| + // Column set for title bar.
|
| + views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_TITLE_BAR);
|
| + cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
|
| + views::GridLayout::USE_PREF, 0, 0);
|
| + cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing);
|
| + cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| + views::GridLayout::USE_PREF, 0, 0);
|
| +
|
| + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| +
|
| + {
|
| + layout->StartRow(0, COLUMN_SET_TITLE_BAR);
|
| +
|
| + views::Label* label = new views::Label(email_.empty() ?
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE) :
|
| + l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW,
|
| + email_));
|
| + label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + label->SetFont(label->font().DeriveFont(3, gfx::Font::BOLD));
|
| + layout->AddView(label);
|
| +
|
| + close_button_ = new views::ImageButton(this);
|
| + close_button_->SetImage(views::ImageButton::STATE_NORMAL,
|
| + rb.GetImageNamed(IDR_CLOSE_2).ToImageSkia());
|
| + close_button_->SetImage(views::ImageButton::STATE_HOVERED,
|
| + rb.GetImageNamed(IDR_CLOSE_2_H).ToImageSkia());
|
| + close_button_->SetImage(views::ImageButton::STATE_PRESSED,
|
| + rb.GetImageNamed(IDR_CLOSE_2_P).ToImageSkia());
|
| +
|
| + layout->AddView(close_button_);
|
| + }
|
| +
|
| + layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| +
|
| + {
|
| + layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| +
|
| + views::Label* label = new views::Label(email_.empty() ?
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE) :
|
| + l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE_NEW,
|
| + email_));
|
| + label->SetMultiLine(true);
|
| + label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + label->SizeToFit(kMinimumDialogLabelWidth);
|
| + layout->AddView(label);
|
| +
|
| + layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| +
|
| + InitLearnMoreLink();
|
| + layout->AddView(learn_more_link_, 1, 1, views::GridLayout::TRAILING,
|
| + views::GridLayout::CENTER);
|
| + }
|
| +
|
| + layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::InitButtons(views::GridLayout* layout) {
|
| + GetButtons(&ok_button_, &undo_button_);
|
| + layout->AddView(ok_button_);
|
| +
|
| + if (is_sync_dialog_)
|
| + layout->AddView(undo_button_);
|
| }
|
|
|
| void OneClickSigninBubbleView::GetButtons(views::LabelButton** ok_button,
|
| @@ -384,53 +261,74 @@ void OneClickSigninBubbleView::GetButtons(views::LabelButton** ok_button,
|
| *ok_button = new views::LabelButton(this, string16());
|
| (*ok_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
|
|
| - *undo_button = new views::LabelButton(this, string16());
|
| - (*undo_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| -
|
| // 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.
|
| + // ignore the minimum default size.,
|
| (*ok_button)->set_min_size(gfx::Size());
|
| - (*undo_button)->set_min_size(gfx::Size());
|
| - 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);
|
| -}
|
|
|
| -views::Link* OneClickSigninBubbleView::CreateAdvancedLink() {
|
| - views::Link* advanced_link= new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_SYNC_PROMO_NTP_BUBBLE_ADVANCED));
|
| - advanced_link->set_listener(this);
|
| - advanced_link->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - return advanced_link;
|
| + string16 ok_label;
|
| +
|
| + if (is_sync_dialog_) {
|
| + *undo_button = new views::LabelButton(this, string16());
|
| + (*undo_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| + (*undo_button)->set_min_size(gfx::Size());
|
| +
|
| + ok_label = l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_OK_BUTTON);
|
| + string16 undo_label =
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_UNDO_BUTTON);
|
| +
|
| + // To make sure they are the same size, SetText() is called
|
| + // with both strings on both buttons.
|
| + (*ok_button)->SetText(undo_label);
|
| + (*ok_button)->SetText(ok_label);
|
| + (*undo_button)->SetText(ok_label);
|
| + (*undo_button)->SetText(undo_label);
|
| + } else {
|
| + ok_label = l10n_util::GetStringUTF16(IDS_OK);
|
| + (*ok_button)->SetText(ok_label);
|
| + }
|
| }
|
|
|
| -void OneClickSigninBubbleView::WindowClosing() {
|
| - // We have to reset |bubble_view_| here, not in our destructor, because
|
| - // we'll be destroyed asynchronously and the shown state will be checked
|
| - // before then.
|
| - DCHECK_EQ(bubble_view_, this);
|
| - bubble_view_ = NULL;
|
| +void OneClickSigninBubbleView::InitAdvancedLink() {
|
| + advanced_link_ = is_sync_dialog_ ?
|
| + new views::Link(
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED)):
|
| + new views::Link(
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED));
|
|
|
| - if (!start_sync_callback_.is_null()) {
|
| - base::ResetAndReturn(&start_sync_callback_).Run(
|
| - OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
|
| - }
|
| + advanced_link_->set_listener(this);
|
| + advanced_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::InitLearnMoreLink() {
|
| + learn_more_link_ = new views::Link(
|
| + l10n_util::GetStringUTF16(IDS_LEARN_MORE));
|
| + learn_more_link_->set_listener(this);
|
| + learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| }
|
|
|
| bool OneClickSigninBubbleView::AcceleratorPressed(
|
| - const ui::Accelerator& accelerator) {
|
| + 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(
|
| + OneClickSigninBubbleView::Hide();
|
| +
|
| + if (is_sync_dialog_) {
|
| + if (accelerator.key_code() == ui::VKEY_RETURN) {
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + clicked_learn_more_ ?
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_RETURN :
|
| + one_click_signin::HISTOGRAM_CONFIRM_RETURN);
|
| +
|
| + base::ResetAndReturn(&start_sync_callback_).Run(
|
| OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
|
| - } else {
|
| - start_sync_callback_.Reset();
|
| + } else if (accelerator.key_code() == ui::VKEY_ESCAPE) {
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + clicked_learn_more_ ?
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_ESCAPE :
|
| + one_click_signin::HISTOGRAM_CONFIRM_ESCAPE);
|
| +
|
| + start_sync_callback_.Reset();
|
| + }
|
| }
|
|
|
| return true;
|
| @@ -439,29 +337,84 @@ bool OneClickSigninBubbleView::AcceleratorPressed(
|
| return BubbleDelegateView::AcceleratorPressed(accelerator);
|
| }
|
|
|
| -views::Link* OneClickSigninBubbleView::GetAdvancedLink() {
|
| - return advanced_link_;
|
| -}
|
| +void OneClickSigninBubbleView::LinkClicked(views::Link* source,
|
| + int event_flags) {
|
| + if (source == learn_more_link_) {
|
| + if (is_sync_dialog_ && !clicked_learn_more_) {
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE);
|
| + clicked_learn_more_ = true;
|
| + }
|
|
|
| -views::Button* OneClickSigninBubbleView::GetOkButton() {
|
| - return ok_button_;
|
| -}
|
| + WindowOpenDisposition location =
|
| + is_sync_dialog_ ? NEW_WINDOW : NEW_FOREGROUND_TAB;
|
|
|
| -views::Button* OneClickSigninBubbleView::GetUndoButton() {
|
| - return undo_button_;
|
| -}
|
| + content::OpenURLParams params(
|
| + GURL(chrome::kChromeSyncLearnMoreURL), content::Referrer(),
|
| + location, content::PAGE_TRANSITION_LINK, false);
|
| + web_contents_->OpenURL(params);
|
| +
|
| + // don't hide the modal dialog, as this is an informational link
|
| + if (is_sync_dialog_)
|
| + return;
|
| + } else if (source == advanced_link_) {
|
| + if (is_sync_dialog_) {
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + clicked_learn_more_ ?
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_ADVANCED :
|
| + one_click_signin::HISTOGRAM_CONFIRM_ADVANCED);
|
|
|
| -void OneClickSigninBubbleView::LinkClicked(views::Link* source,
|
| - int event_flags) {
|
| - StartFade(false);
|
| - base::ResetAndReturn(&start_sync_callback_).Run(
|
| + base::ResetAndReturn(&start_sync_callback_).Run(
|
| OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST);
|
| + } else {
|
| + content::OpenURLParams params(
|
| + GURL(chrome::kChromeUISettingsURL), content::Referrer(),
|
| + CURRENT_TAB, content::PAGE_TRANSITION_LINK, false);
|
| + web_contents_->OpenURL(params);
|
| + }
|
| + }
|
| +
|
| + Hide();
|
| }
|
|
|
| void OneClickSigninBubbleView::ButtonPressed(views::Button* sender,
|
| const ui::Event& event) {
|
| - StartFade(false);
|
| - base::ResetAndReturn(&start_sync_callback_).Run((sender == ok_button_) ?
|
| + Hide();
|
| +
|
| + if (is_sync_dialog_) {
|
| + if (sender == ok_button_)
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + clicked_learn_more_ ?
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_OK :
|
| + one_click_signin::HISTOGRAM_CONFIRM_OK);
|
| +
|
| + if (sender == undo_button_)
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + clicked_learn_more_ ?
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_UNDO :
|
| + one_click_signin::HISTOGRAM_CONFIRM_UNDO);
|
| +
|
| + if (sender == close_button_)
|
| + OneClickSigninHelper::LogConfirmHistogramValue(
|
| + clicked_learn_more_ ?
|
| + one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_CLOSE :
|
| + one_click_signin::HISTOGRAM_CONFIRM_CLOSE);
|
| +
|
| + base::ResetAndReturn(&start_sync_callback_).Run((sender == ok_button_) ?
|
| OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS :
|
| OneClickSigninSyncStarter::UNDO_SYNC);
|
| + }
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::WindowClosing() {
|
| + // We have to reset |bubble_view_| here, not in our destructor, because
|
| + // we'll be destroyed asynchronously and the shown state will be checked
|
| + // before then.
|
| + DCHECK_EQ(bubble_view_, this);
|
| + bubble_view_ = NULL;
|
| +
|
| + if (is_sync_dialog_ && !start_sync_callback_.is_null()) {
|
| + base::ResetAndReturn(&start_sync_callback_).Run(
|
| + OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
|
| + }
|
| }
|
|
|